运行分离的屏幕会话,但没有终止在同一个bash

这里已经有很多这样的问题 ,但是每个人都推荐以下解决scheme(变体):

screen -dmS somename bash -c "/path/to/script; bash -l" 

例如script结束时,运行一个新的bash

不幸的是,这不适合我,因为

  • script使用$ BASHPIDvariables的东西
  • script运行永远运行,例如需要用CTRL-C来终止它
  • 和终止后, 我必须相同的 shell运行script (相同的$BASHPID

所以,问题是:

  • 如何以分离模式启动screen (例如在启动时) – 通常这是由-dm完成的
  • 它必须启动shell
    • 最好,如果它可以启动它作为“login”shell,例如什么读取我的.profile ,但是这可以通过script本身的source ~/.profile来克服
    • script启动一些其他(二进制)程序什么会运行,直到CTRL-C
  • 并在script终止后,我必须得到相同的bash (与$BASHPID相同(因为需要运行另一个脚本什么是依赖于它)

总之需要模拟下面的交互工作:

  • 开始screen
  • echo $BASHPID
  • 运行一些命令在屏幕内(最后一个运行,直到CTRL-C) – 例如运行/path/to/script
  • 分离(ctrl-a d)

以上,后来我可以做

  • 重新连接( screen -ARR
  • CTRL-C
  • 并可以继续…相同
  • echo $BASHPID #将产生与上面相同的结果

任何想法? (想想-X但它不工作,我可能犯了一个错误的地方)

看来这里的答案是针对你的用例的。 简而言之:

 bash --init-file <(echo "yourcommand")