bash 没有终止

bash 没有终止

我正在用我的外壳尝试一些东西。这包括以下命令:

kill $$

我的期望是 shell 会将我注销并自行终止。但相反,bash 仍然没有改变。

知道为什么吗?
我在不同的环境(archlinux、debian)上运行了这个命令。行为总是一样的。

答案1

经过一番搜索,我发现了一些说法:

当 bash 是交互式的时,在没有任何陷阱的情况下,它会忽略 SIGTERM (以便 Kill 0 不会杀死交互式 shell),并且 SIGINT 会被捕获并处理(以便 wait 内置命令是可中断的)。在所有情况下,bash 都会忽略 SIGQUIT。如果作业控制有效,bash 会忽略 SIGTTIN、SIGTTOU 和 SIGTSTP

因此,我有一个交互式 shell,可以简单地让其bash忽略信号。

不管怎样,谢谢你的帮助!

答案2

shell 捕获许多信号,这SIGTERM也适用于 发送的默认信号kill

如果您确实想通过 终止 shell kill,请使用kill -KILL $$

相关内容