"kill -l"がfishとbashで異なる出力を提供する理由

"kill -l"がfishとbashで異なる出力を提供する理由

私はkillコマンドについて読むときにfish-shellを使用しています。 fishの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クローンを使用するのか本当に疑問に思います。

答え1

文書化されていない場合でも、シェル組み込みの可能性があります。

~ (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.

ダッシュも組み込まれていますが、リストは単一列です。

...
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 バイナリ、ソース、およびマニュアルページファイルの検索
           必要

参考にしてくださいバイナリ(シェル組み込みまたはエイリアスを見つけようとしません)。

答え2

kill はい内蔵ハウジング:

$ type kill
kill is a shell builtin

...他のシェルで少し異なる実装を説明します。

which(およびwhereis)それ自体はシェル組み込み機能ではないため、他のコマンドが実際にシェル組み込み機能であるかどうかは確かにわかりません。いいえ内蔵されたもの。

関連情報