"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) 자체는 쉘 내장 기능이 아니므로 다른 명령이 실제로 쉘 내장 기능인지 여부를 확실하게 알 수 없으며 해당 명령의 복사본을 찾을 수 있는지 여부(그리고 어디서)만 알 수 있습니다.아니요내장된 것.

관련 정보