在 ubuntu 14.04.3(Linux 内核 3.16.53)上。
UI终端(具有创建CTR+ ALT+T设置) shopt -s huponexit不产生SIGHUP时,我们键入exit。
当我们点击“X”关闭终端时,它会正确发送这个信号
但是它在 tty1 上工作正常。
这是一种记录在案的行为,来自man bash:
如果 huponexit shell 选项已使用 shopt 设置,则 bash 会在交互式登录shell 退出时向所有作业发送 SIGHUP 。
重要的词是“交互”和“登录”。
当你打开一个终端Ctrl+ Alt+ T,你正在发起一个交互式的,非登录外壳的实例,因此huponexit不会按预期方式工作。
在另一方面,在与如打开一个TTY Ctrl+ Alt+ F1,你正在发起的互动,登录会话bash,所以huponexit会在这种情况下工作。
另一方面,当您按下X终端上的按钮将其关闭时,内核中的终端驱动程序会发送SIGHUP到外壳程序,外壳程序又会将SIGHUP会话的所有前台和后台进程组从技术上讲发送到所有作业。