【问题标题】:bash and ash shell returns different error message for same commandbash 和 ash shell 为同一命令返回不同的错误消息
【发布时间】:2014-03-08 08:25:34
【问题描述】:

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

【问题讨论】:

    标签: linux bash ash


    【解决方案1】:

    我的问题是为什么有两个不同的错误消息 在两个不同的 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 ...
    

    您可以通过使用 enable 内置函数来禁用 bash 中的 shell 内置函数:

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

    【讨论】:

    • 非常好的答案 devnull。
    • 感谢您的洞察力!!
    猜你喜欢
    • 1970-01-01
    • 2016-08-18
    • 2012-05-06
    • 2013-07-07
    • 2018-01-31
    • 2014-04-12
    • 2017-02-17
    • 1970-01-01
    • 2019-09-21
    相关资源
    最近更新 更多