这是对这个问题的更深层次的解释。
我的目标是:
启动一个配置了一组环境变量但在后台运行的 bash shell。
发射约五屏幕bash shell 中的命令,每个命令都执行自己的命令,但使用 bash shell 中设置的环境变量。
screen
所有命令都应排列在 bash 窗口中,最好平铺。稍后调用 bash shell,
screen
显示所有命令。screen
完成后关闭 bash shell 和相关内容。
答案1
好吧,经过一段时间的思考,我得出了以下一些结论:
第 2 行:命令应该全部排列在 bash 窗口中,最好是平铺是不可能的,因为当分离时,没有窗户。
因此,当您重新连接时,您将始终只看到一个伪终端。
但要大致完成要求的操作,请尝试以下操作:
首先创建一个 RCfile,输入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 是screenRc测试屏幕(移至constancescreenSplitTest
中的隐藏文件之后$HOME/.screenSplitTest
):
[ "$TERM.$MyVariable" == "screen.Test" ] && \
trap '[ $(tput lines) == 60 ] && [ $(tput cols) == 160 ] && $HOME/.screenSplitTest' WINCH
答案2
据我所知,您无法平铺屏幕实例,但可以平铺 tmux 实例。您可以做的是为共享环境设置创建一个 rc 文件,然后使用将其加载到 5 个 bash shell 中的每一个bash --rcfile <your file here>
。
启动 tmux 即可启动 bash shell,在内部执行某些命令来为每个 bash 实例创建一个新的分割(例如,使用标准设置按 Ctrl+b% 进行垂直分割)。