gpt4 book ai didi

bash - 为什么/bin/kill 的有效信号与 kill 不同?

转载 作者:行者123 更新时间:2023-11-29 09:09:43 30 4
gpt4 key购买 nike

我正在尝试编写一个快速的 bash 脚本,以在脚本检测到的特定条件下向程序发出信号,并且出于习惯,我正在使用某些 bin 实用程序的完整路径,即 /bin/rm /bin/kill 代替 rmkill。但是,特别是使用 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,为什么它们会有所不同呢?

最佳答案

kill 是一个内置的 bash。不幸的是,bash 没有内置的 which(比如 zsh,它立即告诉我 kill 是一个内置的 shell 命令)和 /usr/bin/which 无法知道您的 shell 内置函数。 (我希望 bash 有一些等效的东西来快速检查命令是否是内置的。不过,成功的 help kill 足以用于交互式使用)。

正如@chepner 在评论中所解释的,type -a COMMAND 可用于获取 COMMAND 的可用变体列表:内置函数、别名、 PATH任何 目录中的函数和二进制文件:

$ type -a kill
kill is a shell builtin
kill is /bin/kill

关于bash - 为什么/bin/kill 的有效信号与 kill 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14756247/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com