4

/bin/rm私は、スクリプトによって検出された特定の条件下でプログラムに信号を送るための簡単なbashスクリプトを作成しようとしています。習慣によって、と/bin/killの代わりにrm、いくつかのbinutilsへのフルパスを使用していkillます。ただし、kill特に、送信できる有効な信号の違いに気づき、混乱を招きました。

[root@linux]# which kill
/bin/kill

[root@linux]# /bin/kill -l
HUP INT QUIT ILL ABRT FPE KILL SEGV PIPE ALRM TERM USR1 USR2 CHLD CONT
STOP TSTP TTIN TTOU TRAP IOT BUS SYS STKFLT URG IO POLL CLD XCPU XFSZ
VTALRM PROF PWR WINCH UNUSED

[root@linux]# 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

私もkillのエイリアスを持っていません:

[root@linux]# alias 
alias cp='cp -i'
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias mv='mv -i'
alias rm='rm -i'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

明らかに、修正は単に使用することですが、とにかく 解決したkill場合、なぜそれらは異なるのですか?which kill/bin/kill

4

1 に答える 1

10

killbash 組み込みです。残念ながら、bash にはビルトインがなくwhich( zshkill がビルトインのシェル コマンドであることがすぐ/usr/bin/whichにわかります)、シェルのビルトインを知る方法がありません。bash(コマンドが組み込みかどうかをすばやくチェックするために同等のものがあることを願っていhelp killます。ただし、インタラクティブな使用には成功で十分です)。

コメントで @chepner が説明したように、次の任意のディレクトリにあるビルトイン、エイリアス、関数、およびバイナリtype -a COMMANDの利用可能なバリアントのリストを取得するために使用できます。COMMANDPATH

$ type -a kill
kill is a shell builtin
kill is /bin/kill
于 2013-02-07T16:47:24.397 に答える