Bash
在 bash 中啟動的執行檔的順序
如果我
test
在 bash 中執行命令,test
(評估條件表達式)內置實用程序將啟動:$ type test test is a shell builtin $ type -a test test is a shell builtin test is /usr/local/bin/test test is /usr/bin/test $
但是,如
type -a test
上面的輸出所示,test
/usr/local/bin 目錄中還有另一個,/usr/bin 目錄中還有另一個。執行檔是如何排序的,即內置命令總是首選,然後其餘命令取決於 $PATH 變數中的目錄順序?此外,是否可以更改啟動的執行檔的順序,例如,如果我輸入test
,則 /usr/bin/test 會啟動而不是 bash-builtintest
?
最高優先級是 bash 別名,然後是特殊內置函式(僅在 POSIX 模式下),然後是函式,然後是內置函式,然後是
$PATH
.要執行內置命令,請使用
builtin test
.要執行外部應用程序,請使用顯式路徑:
/bin/test
.要忽略函式和別名,請使用
command test
.要繞過別名,使用
\test
或任何其他類型的擴展。可以使用
enable test
.(根據下面的評論更新)
(修復了 bash
disable
內置的不正確的管理員編輯 - 事實上,只有enable
)