为什么“kill”看起来不是 Bash 内置函数? (应该是)

为什么“kill”看起来不是 Bash 内置函数? (应该是)

互联网上一致认为:killBash 是内置的。Bash 变更日志说同样的。

然而我的其他内置函数显然不这么认为:

$ builtin kill
bash: builtin: kill: not a shell builtin
$ type kill
kill is /bin/kill
$ command -V kill
kill is /bin/kill

即使在“SHELL BUILTIN COMMANDS”部分中help kill提供了文档和man bash提及kill(但是,如果我们开始解释符号,在手册的其他地方,它仅被称为“kill 命令”,而已确认的内置函数被称为“wait内置函数”)。

这里发生了什么?这是计划的一部分吗?我在 Linux 上运行 Bash 5.0.2。

答案1

kill一直以来都是一个内置实用程序,bash就像 Korn shell 中一样。它需要是内置的,以便能够杀死 shell 作业(例如使用kill %1),因为这些作业编号是 shell 内部表中的索引,外部kill无法了解任何信息。

内置实用程序可能是残疾人使用该enable命令及其-n选项。

很明显来自评论你曾经拥有过的

enable -n kill

kill在 shell 的启动文件之一中,这将禁用该实用程序的内置变体并强制 shell 使用/bin/kill.

要解决您的问题,请从该命令所在的任何 shell 启动文件中删除该命令。

相关内容