关于拒绝内置选项 -h 的 Bash 文档的澄清

关于拒绝内置选项 -h 的 Bash 文档的澄清

根据文档:

为了防止 shell 向特定作业发送 SIGHUP 信号,应该使用 disown 内置函数将其从作业表中删除 或者使用 disown -h 标记为不接收 SIGHUP。

https://www.gnu.org/software/bash/manual/html_node/Signals.html

请注意或者在报价中。

我可以确认,只需使用disownwithout-h并重新记录该进程就不会退出:

#!/bin/bash

( sleep 10s; echo 1 > b ) &
disown

好像这个-h选项没有必要吧?如果没有它也能工作,那么它的目的是什么?

答案1

如果没有,-h该作业将从活动作业表中删除,如果没有-h,则不会。

一切都在手册中:

 disown [-ar] [-h] [jobspec ...]

       (...)
       If the -h option is given, each jobspec is not removed
       from the table, but is marked so that SIGHUP is not sent to the
       job  if  the shell  receives  a SIGHUP.

jobs要查看使用和不使用 否认工作后运行的差异-h

相关内容