在我了解到$$
特殊变量保存了 shell 的进程号后,我也尝试通过简单地杀死 shell:kill <pid obtained by echo $$>
,但这不起作用,我也尝试了一些变体,但它们也没有效果。
答案1
检查 bash 手册:
当 bash 是交互式的时,在没有任何陷阱的情况下,它会忽略 SIGTERM
https://www.gnu.org/software/bash/manual/bashref.html#Signals
检查kill
帮助文本(help kill
在 bash 提示符下):
如果 SIGSPEC 和 SIGNUM 都不存在,则假定为 SIGTERM。
https://www.gnu.org/software/bash/manual/bashref.html#index-kill
答案2
你可以,但是 shell 会努力不死,除非它完全确定这就是所需要的。
SIGHUP 有效(和 SIGKILL 一样),你可以尝试这个 -
kill -HUP $$
(如果您更喜欢数字信号标识符,HUP
可以将其替换为1
。)
起作用的原因SIGHUP
是,这是当调制解调器上的串行线路连接终止时发送的信号 - 例如,如果电话线挂断。