bash和ash shell为同一命令返回不同的错误消息

时间:2014-03-08 08:25:34

标签: linux bash ash

我在我的嵌入式系统中使用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返回错误消息。

1 个答案:

答案 0 :(得分:7)

  

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

因为kill是shell-builtin(至少在bash上)。这意味着正在使用bash,说kill ...将执行shell内置而不是可能位于/bin/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内置来禁用enable中的shell-builtins:

$ 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。)