在启用作业控制并关闭标准输入的情况下在后台运行 bash 脚本将退出PARENT shell。怎么会这样?
为了演示这个background_bash_script
:
#!/bin/bash
set -m
ruby -e "puts :here"
然后在 bash 中运行它——它会退出你运行它的 shell。ruby 命令无关紧要,尽管它看起来必须是一个命令而不是内置的 bash(例如awk --version
可以工作但true
不能)。为了看得更清楚,我一直在另一个 bash 实例中运行它。一个完整的会话看起来像这样。
parent: PS1='child: ' bash
child: ./background_bash_script <&- &
[1] 3893
child: here
exit
parent:
令人困惑!