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的事情。