周一早上,我登录到一个盒子ssh
并运行以下命令:
tail -f /var/log/foo/bar.log | grep something_interesting &
当天晚些时候,我按 Ctrl+D 注销了。
周五,我登录到同一个盒子,发现tail
进程仍在运行。当我退出时,我以为他们已经退出了。
经过进一步挖掘,似乎在该机器上以及我尝试过的所有其他 Linux 机器上以及我尝试过的 Mac OS X 机器上都shopt huponexit
设置为。off
从什么时候开始默认为off
, 而不是on
?
答案1
在 bash 2.02 中引入时它默认为关闭:
@@ -119,6 +123,10 @@ int interactive = 0;
/* Non-zero means that the shell was started as an interactive shell. */
int interactive_shell = 0;
+/* Non-zero means to send a SIGHUP to all jobs when an interactive login
+ shell exits. */
+int hup_on_exit = 0;
+
http://git.savannah.gnu.org/cgit/bash.git/commit/shell.c?id=cce855bc5b117cb7ae70064131120687bc69fac0