gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:45:27 24 4
gpt4 key购买 nike

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

最佳答案

My question is why there are two different error messages for same command in two different 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。)

关于linux - bash 和 ash shell 对同一命令返回不同的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22266971/

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