
これは質問に対するより深い説明です。
私の目標は:
環境変数のセットが設定された bash シェルを起動し、バックグラウンドで実行します。
約5分で打ち上げ画面bash シェルのコマンドはそれぞれ独自のコマンドを実行しますが、bash シェルで設定された環境変数を使用します。コマンドは
screen
すべて bash ウィンドウ内に配置され、できればタイル状に表示されます。後で、すべてのコマンドを表示した状態で bash シェルを呼び出します
screen
。完了したら、bash シェルと関連を閉じます
screen
。
答え1
さて、あなたの質問についてしばらく考えた結果、いくつかの観察結果があります。
2行目:コマンドはすべてbashウィンドウ内に並べ、できれば並べて表示します。分離した場合のように不可能である、窓がない。
再度接続すると、常に1つだけ表示されます疑似端末。
しかし、要求されたことをほぼ実行するには、次の操作を試してください。
cat >screenRcTest
まず、次のように入力して RCfile を作成します。
setenv MyVariable Test
screen -t Top top
screen -t VMStat vmstat -n 1
screen -t OpenPorts watch -n 2 'netstat -tan | grep LISTEN'
screen -t IF-Configs watch -n2 'ip -s link show | grep -v "^ *[RT]X: bytes"'
screen -t "Bourne Again Shell" /bin/bash -i
次に、run
次のようにラッパーを準備します。
screen -ls | grep -q screenTest || screen -dmS screenTest -c ./screenRcTest
まだ存在しない場合は、バックグラウンドで新しいスクリーン セッションが実行されます。
建物用タイル張りプレゼンテーション用に別のシェルスクリプトを用意するcat >screenSplitTest
#!/bin/bash
while read line ;do
screen -X $line
done <<eof
split
split
resize 20
split -v
resize 82
select 0
focus
select 1
focus
split -v
select 2
focus
select 3
focus
select 4
eof
そして忘れないでくださいchmod +x screenSplitTest
。
最後に、表示コマンドとして:
xterm -fn 9x15 -geom 160x60 -exec screen -DrS screenTest
これにより、準備完了のみを示す新しいウィンドウが開きますbash
。
この内側bash の場合は、単に次のように入力します。
./screenSplitTest
これにより、ウィンドウが分割され、bash セッションで再び準備できるようになります。
今すぐ入力:
echo $MyVariable
Test
環境変数が子 bash にどのように渡されるかがわかります。
編集追加:
すべてが完了したら、次の操作を実行できます。内側バッシュ:
trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && ./screenSplitTest' WINCH
したがって、次のように入力して切断できます。Ctrl-A d
次にxterm
同じ引数とジオメトリで実行すると、スクリプト screenSplitTest が自動的に開始されます。
編集2
そして今、これtrap
を にインストールすることもできます.bashrc
。 を使って、MyVariable
bashが の子であることを保証できます。スクリーンRcテスト画面( for constancescreenSplitTest
の隠しファイルに移動した後$HOME/.screenSplitTest
):
[ "$TERM.$MyVariable" == "screen.Test" ] && \
trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && $HOME/.screenSplitTest' WINCH
答え2
私の知る限り、画面インスタンスをタイル表示することはできませんが、tmux インスタンスをタイル表示することはできます。共有環境設定用の rc ファイルを作成し、 . を使用してこれを 5 つの bash シェルのそれぞれにロードすることができますbash --rcfile <your file here>
。
bash シェルは tmux を起動することによって開始され、内部では、各 bash インスタンスに対して新しい分割を作成するためのコマンド (たとえば、標準設定を使用して垂直分割する場合は Ctrl+b %) を実行します。