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