在同一个 bash 中运行分离的屏幕会话但不终止

在同一个 bash 中运行分离的屏幕会话但不终止

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

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

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

不幸的是,这对我来说不起作用,因为

  • 使用script$BASHPID 变量来做某事
  • 运行script将永远运行,例如需要使用 CTRL-C 终止它
  • 终止后我必须相同的shell 运行script(相同$BASHPID

因此,问题是:

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

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

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

完成上述操作后,我可以执行

  • 重新附加 ( screen -ARR)
  • Ctrl-C
  • 并可以继续...用同样的方式
  • echo $BASHPID#将产生与上面相同的结果

有什么想法吗?(正在考虑-X但是没有用,我可能在某个地方犯了错误)

答案1

看起来 答案在这里 适用于您的用例。简而言之:

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

相关内容