场景bash/screen
:
screen -dmS sessionname -c /path/to/screenrc
/path/to/screenrc
例如包含
screen -t windowtitle1 bash --init-file /path/to/window1.bashinit
screen -t windowtitle2 bash --init-file /path/to/window2.bashinit
screen -t windowtitle3 bash --init-file /path/to/window3.bashinit
例如
screen
以分离模式启动会话- 执行
screen
定义的screenrc
- 来自
screenrc
- 启动 3 个不同的交互
bash
窗口 - 并且每个 bash 执行定义的内容
init-file
- 执行完这些之后,
bash
以交互模式继续(!)
- 启动 3 个不同的交互
所以,最后我得到了
- 分离
screen
会话 bash
以交互模式运行 3x- 并且每个命令都已执行了一些命令(在它们的 中定义
init-file
)
如何实现相同的功能tcsh
?
答案1
您无需强制tcsh
执行screen
可以为您完成的工作。只需启动 3 个窗口:
cat <<\! >/path/to/screenrc
screen -t windowtitle1 tcsh
screen -t windowtitle2 tcsh
screen -t windowtitle3 tcsh
!
screen -dmS sessionname -c /path/to/screenrc
然后将 init 命令塞入(即“输入”)每个窗口:
screen -p windowtitle1 -X stuff 'source /path/to/window1.tcshinit\n'
screen -p windowtitle2 -X stuff 'source /path/to/window2.tcshinit\n'
screen -p windowtitle3 -X stuff 'source /path/to/window3.tcshinit\n'
答案2
据我所知你不能,无论如何不能直接这样做。
您可以创建win1.tcsh
、win2.tcsh
等,内容如下:
echo Starting win1
setenv WINDOW 1
exec tcsh
将其调用为tcsh -c 'source win1.tcsh'
,然后执行tcshrc
以下操作:
if ( $WINDOW == "1" ); then
# My custom commands...
endif