【发布时间】:2013-09-07 10:45:54
【问题描述】:
在启用作业控制并关闭标准输入的情况下在后台运行 bash 脚本将退出 PARENT shell。怎么会这样?
为了演示做这个background_bash_script:
#!/bin/bash
set -m
ruby -e "puts :here"
然后在 bash 中运行它 - 它会退出你运行它的 shell。ruby 命令无关紧要,尽管它看起来必须是命令而不是 bash 内置(例如 awk --version 有效,但 @987654324 @ 才不是)。为了看得更清楚,我一直在另一个 bash 实例中运行它。完整的会话如下所示。
parent: PS1='child: ' bash
child: ./background_bash_script <&- &
[1] 3893
child: here
exit
parent:
令人困惑!
【问题讨论】:
-
即使没有关闭标准输入,我也会得到这种行为。
-
您是否在某个时候运行过
trap exit CHLD? :) -
@dannysauer - 哈,不。没有自找的有趣的事情:)