我的问题是为什么在两个不同的 shell 中相同的命令有两个不同的错误消息?
因为kill
是一个shell-builtin(至少在bash
)。这意味着正在使用bash
,说kill ...
将执行内置的 shell 而不是可能驻留在/bin
or中的二进制文件/usr/bin
。
$ echo $SHELL
/bin/bash
$ type kill
kill is a shell builtin
$ kill
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
$ which kill
/bin/kill
$ /bin/kill
usage: kill [-s signal_name] pid ...
kill -l [exit_status]
kill -signal_name pid ...
kill -signal_number pid ...
bash
您可以通过使用内置禁用 shell-builtins enable
:
$ enable -n kill
$ kill
usage: kill [-s signal_name] pid ...
kill -l [exit_status]
kill -signal_name pid ...
kill -signal_number pid ...
(kill
在禁用内置函数后调用会/bin/kill
改为调用系统。)