bash 类似于 tcsh 中的 --init-file

bash 类似于 tcsh 中的 --init-file

场景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以交互模式继续(!)

所以,最后我得到了

  • 分离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.tcshwin2.tcsh等,内容如下:

echo Starting win1
setenv WINDOW 1
exec tcsh

将其调用为tcsh -c 'source win1.tcsh',然后执行tcshrc以下操作:

if ( $WINDOW == "1" ); then
   # My custom commands...
endif

相关内容