Bash
為什麼’kill -l’在fish和bash中給出不同的輸出
在閱讀有關 kill 命令時,我正在使用 fish-shell。魚的 kill -l 命令的輸出是
HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM ....
在 bash 中呼叫相同的命令時,我有
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP ....
我用whereis檢查了kill,並且有有效的程序路徑/usr/bin/kill。我還檢查了 man bash 的 kill ,並沒有發現任何與 kill 本身相關的東西 :(,所以它不是 bash 內置的。我還在 tcsh 上嘗試了 kill -l 並且輸出再次不同。這對我來說不是很重要的問題,但我真的很好奇為什麼會這樣。我正在使用RHEL7複製。
即使沒有記錄,它仍然可以是內置的 shell:
~ (101) bash tom@vmw-debian7-64:~$ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX tom@vmw-debian7-64:~$ type kill kill is a shell builtin tom@vmw-debian7-64:~$
配魚:
tom@vmw-debian7-64:~$ fish Welcome to fish, the friendly interactive shell Type help for instructions on how to use fish tom@vmw-debian7-64 ~> kill -l HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS tom@vmw-debian7-64 ~> type kill kill is /bin/kill tom@vmw-debian7-64 ~>
用 zsh
tom@vmw-debian7-64:~$ zsh vmw-debian7-64% kill -l HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS vmw-debian7-64% type kill kill is a shell builtin
用 tcsh
tom@vmw-debian7-64:~$ tcsh ~ (101) kill -l HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS RTMIN RTMIN+1 RTMIN+2 RTMIN+3 RTMAX-3 RTMAX-2 RTMAX-1 RTMAX ~ (102) type kill type: Command not found. ~ (103) which kill kill: shell built-in command. ~ (104) which which which: shell built-in command.
它也是 dash 的內置功能,但列表是單列…
... RTMAX-8 RTMAX-7 RTMAX-6 RTMAX-5 RTMAX-4 RTMAX-3 RTMAX-2 RTMAX-1 RTMAX $ type kill kill is a shell builtin $ which kill /bin/kill $ /bin/kill -l HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH POLL PWR SYS
對於其他系統,我會得到類似的結果(可移植程式碼的好處)。至於
whereis
,手冊頁說WHEREIS(1) 使用者命令 WHEREIS(1) 姓名 whereis - 查找 com- 的二進製文件、源文件和手冊頁文件 男人
請注意二進製文件(它不會嘗試查找 shell 內置程序或別名)。