该命令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)
为什么?
我不确定为什么人们想要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.