
這是對這個問題的更深入的解釋。
我的目標是:
啟動配置了一組環境變數但在背景執行的 bash shell。
推出約五螢幕bash shell 中的命令,每個命令執行自己的命令,但使用 bash shell 中設定的環境變數。指令
screen
應該全部排列在 bash 視窗中,最好是平舖的。稍後呼叫 bash shell,
screen
顯示所有指令。screen
完成後關閉 bash shell 和關聯的 shell 。
答案1
好吧,經過一段時間的研究你的問題,有一些觀察:
第 2 行:指令應該全部排列在 bash 視窗中,最好是平舖的是不可能的,因為當分離時,沒有窗戶。
因此,當您重新連接時,您將始終只看到一個偽tty。
但要大致完成要求的操作,請嘗試以下操作:
首先建立一個 RC 文件,輸入:cat >screenRcTest
其中包含以下內容:
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
這將在背景運行一個新的螢幕會話(如果尚不存在)。
用於建築平鋪的演示文稿,準備另一個 shell 腳本作為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 是螢幕測試畫面(在移動screenSplitTest
到康斯坦斯的隱藏檔案後$HOME/.screenSplitTest
):
[ "$TERM.$MyVariable" == "screen.Test" ] && \
trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && $HOME/.screenSplitTest' WINCH
答案2
據我所知,您不能平鋪螢幕實例,但可以平鋪 tmux 實例。您可以做的是為共享環境設定建立一個 rc 文件,然後使用bash --rcfile <your file here>
.
bash shell 將透過啟動 tmux 來啟動,並在內部執行一些指令來為每個 bash 實例建立一個新的分割(例如 Ctrl+b % 用於垂直分割,使用標準設定)。