0

我在我的嵌入式系统中使用 ash 和 bash shell,对于使用这两个 shell 的同一命令,我收到以下错误消息

For ash shell
$ kill -9
sh: you need to specify whom to kill

For bash shell
$ kill -9
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]

所以,我的问题是为什么在两个不同的 shell 中有两个不同的错误信息?我的理解是从命令而不是从 shell 返回错误消息。

4

1 回答 1

7

我的问题是为什么在两个不同的 shell 中相同的命令有两个不同的错误消息?

因为kill是一个shell-builtin(至少在bash)。这意味着正在使用bash,说kill ...将执行内置的 shell 而不是可能驻留在/binor中的二进制文件/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改为调用系统。)

于 2014-03-08T08:29:52.990 回答