互联网上一致认为:kill
Bash 是内置的。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 启动文件中删除该命令。