tmuxを使ったBashスクリプトによる4ペインウィンドウの起動
質問
どなたか
tmux
,
bash
そして
exec
? 私は4ペインのウィンドウでtmuxセッションをセットアップしようとしています。理想的には、私は3つのペインでコマンドを実行したいです:例えば、Ruby ThinサーバといくつかのRubyデーモンです。これは、私が今のところ持っているものです。
~/.bin/tmux-foo
:
#!/bin/sh
tmux new-session -d -s foo 'exec pfoo "bundle exec thin start"'
tmux rename-window 'Foo'
tmux select-window -t foo:0
tmux split-window -h 'exec pfoo "bundle exec compass watch"'
tmux split-window -v -t 0 'exec pfoo "rake ts:start"'
tmux split-window -v -t 1 'exec pfoo'
tmux -2 attach-session -t foo
~/.bin/pfoo
:
#!/bin/bash
cd ~/projects/foo
rvm use ree
# here I want to execute command1 2 3 or 4...
exec $SHELL
すべてうまくいく... しかし
ctlr-c
を実行すると、シン・サーバーを停止し、シェルに戻ります。しかし、コマンドは履歴に残りません。つまり、私がアップキーを押しても、私は
bundle exec thin start
コマンドは出てきません...。bashの履歴から他のコマンドが表示されます。私は、bash の履歴にあるコマンドを取得するようにこれらのスクリプトを手配する方法があるかどうか疑問に思っています。
また... 私は多くの組み合わせを試しました。
exec
,
exec $SHELL -s ...
そして
exec $SHELL -s ... -I
となっていて、何が何だかよくわからないのですが...。
で何が起こっているのか、誰か一般的な説明をするのを手伝ってくれませんか?
tmux
と
bash
そして
exec
の2種類があります。
どのように解決するのですか?
他の方がおっしゃっているように、コマンドはシェルスクリプトである
の前に
を起動する前に
$SHELL
のインスタンスは一般的な方法ではありません。
$SHELL
のインスタンスは、それを起動する前にその親が何を実行したかを知ることができる一般的な方法はありません。
初期コマンド" をシェルの履歴に入れるには、コマンドのキーストロークを直接
$SHELL
のインスタンスに直接与える必要があります (もちろん、起動された後です)。他のコンテキストでは、小さな Expect プログラムを使って
$SHELL
のインスタンスを生成し、それにキーストロークを与え、次に
interact
を使用して、tty を
期待する
-スポーンされた
$SHELL
.
しかし、文脈上
tmux
では、単に
send-keys
:
#!/bin/sh
tmux new-session -d -s foo 'exec pfoo'
tmux send-keys 'bundle exec thin start' 'C-m'
tmux rename-window 'Foo'
tmux select-window -t foo:0
tmux split-window -h 'exec pfoo'
tmux send-keys 'bundle exec compass watch' 'C-m'
tmux split-window -v -t 0 'exec pfoo'
tmux send-keys 'rake ts:start' 'C-m'
tmux split-window -v -t 1 'exec pfoo'
tmux -2 attach-session -t foo
関連
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] Bashで変数で定義された数値の範囲を反復処理するにはどうすればよいですか?
-
[解決済み] Bashで文字列の配列をループする?
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] パラメータを取るBashのエイリアスを作る?
-
[解決済み] Bashで文字列を小文字に変換する方法は?
-
[解決済み】Bashでファイル名と拡張子を抽出する。
-
tmuxのスプリットペイン切り替え:1コマンドにつき1回切り替え
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Bashで引用符で囲まれた文字列の中で環境変数を使用する方法
-
[解決済み] Makefileでシェルコマンドを使用する方法
-
[解決済み] Bashはどのように異なるディレクトリコンテキストでコマンドを実行できますか?
-
[解決済み] bashでHMAC-SHA1
-
[解決済み] bashでファイル(引数)を編集しているコマンドを "その場 "で実行するには?
-
[解決済み] 空のディレクトリの検索
-
[解決済み] 指定された時間/日付まで眠る
-
[解決済み] sed を使ってファイルの名前を大量に変更する
-
[解決済み] BashやShellスクリプトで関数の前方宣言を行うには?
-
[解決済み] 予期しないbashの終了時に作成された一時ファイルを削除する