bash
有一个名为 的内部命令kill
,并且在 Linux 中,还有一个名为 的外部命令(程序)kill
。
当我执行kill
in时bash
,内部命令kill
被执行。
我有两个问题:
- 是否可以更改设置以使默认情况下执行外部命令而不是内部命令(当然不指定外部命令的完整路径)。
- 在所有(主要)shell 中默认执行内部命令而不是外部命令是标准行为,还是只是一个
bash
问题?
答案1
用于
env
调用它。$ env kill kill: not enough arguments $ kill kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
所有 shell 和命令处理器。
答案2
对于您的第一个问题:是的,有一个设置可以使默认情况下执行外部命令而不是内部命令。
您可以通过以下方式关闭内置功能
enable -n COMMAND
您可以通过以下方式打开内置功能
enable COMMAND
或者您可以更改命令的优先级。 bash命令的优先级是:
- 别名,最高
- 功能
- 内置
- $PATH 中的外部命令
对于你的第二个问题:我认为你总是可以假设内部命令优先于外部命令。这不仅仅是一个bash的事情。