bash:kill $$不起作用?

Yis*_*ang 2 linux bash kill

该命令kill $$应该杀死当前的bash,但似乎它不起作用:

$ ps -p $$
  PID TTY          TIME CMD
18179 pts/4    00:00:00 bash
$ kill $$
$ ps -p $$
  PID TTY          TIME CMD
18179 pts/4    00:00:00 bash
Run Code Online (Sandbox Code Playgroud)

为什么?

dev*_*ull 8

我不确定为什么人们想要kill当前的shell.不过...

kill PIDSIGTERM在没有指定信号时发送. bash忽略SIGTERM并且SIGQUIT没有任何陷阱.

如果你要说,你将达到预期的效果

kill -9 $$
Run Code Online (Sandbox Code Playgroud)

要么

kill -SIGKILL $$
Run Code Online (Sandbox Code Playgroud)

引自手册:

当Bash是交互式的时候,在没有任何陷阱的情况下,它会忽略 SIGTERM(因此' kill 0'不会杀死交互式shell),并且 SIGINT被捕获和处理(以便等待内置是可中断的).当Bash收到a时SIGINT,它会突破任何正在执行的循环.在所有情况下,Bash都会忽略SIGQUIT.

  • 我偶尔`kill -9 $$`,以避免在历史文件中追加命令列表.我可以手动编辑历史文件,但这有时会变成简写.这是一种肮脏的方式. (4认同)