Bash

在 bash 中啟動的執行檔的順序

  • January 19, 2021

如果我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-builtin test

最高優先級是 bash 別名,然後是特殊內置函式(僅在 POSIX 模式下),然後是函式,然後是內置函式,然後是$PATH.

要執行內置命令,請使用builtin test.

要執行外部應用程序,請使用顯式路徑:/bin/test.

要忽略函式和別名,請使用command test.

要繞過別名,使用\test或任何其他類型的擴展。

可以使用enable test.

(根據下面的評論更新)

(修復了 bashdisable內置的不正確的管理員編輯 - 事實上,只有enable

引用自:https://unix.stackexchange.com/questions/132623