以下是已经有很多问题了像这样,但每个人都推荐以下解决方案(的变体):
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 运行
- 最好,如果它可以作为“登录”shell 启动它,例如读取我的
- 并且在终止后
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")