Bash

內置命令 cd 和 cd 有什麼區別?

  • January 20, 2019

我遇到了一個 Linux 命令,builtin cd.

builtin cd命令和有什麼區別cd

事實上,我對這種差異進行了一些研究,但我找不到對此有顯著意義的解釋。

cd命令是內置的,因此通常builtin cd會執行與cd. 但是如果cd被重新定義為函式或別名則有所不同,在這種情況下cd將呼叫函式/別名但builtin cd仍會更改目錄(換句話說,即使被函式破壞,也會保持內置可訪問性。)

例如:

user:~$ cd () { echo "I won't let you change directories"; }
user:~$ cd mysubdir
I won't let you change directories
user:~$ builtin cd mysubdir
user:~/mysubdir$ unset -f cd  # undefine function

或使用別名:

user:~$ alias cd='echo Trying to cd to'
user:~$ cd mysubdir
Trying to cd to mysubdir
user:~$ builtin cd mysubdir
user:~/mysubdir$ unalias cd  # undefine alias

usingbuiltin也是定義cd執行某些操作更改目錄的函式的好方法(因為cd從它呼叫只會在無休止的遞歸中再次呼叫該函式。)

例如:

user:~ $ cd () { echo "Changing directory to ${1-home}"; builtin cd "$@"; }
user:~ $ cd mysubdir
Changing directory to mysubdir
user:~/mysubdir $ cd
Changing directory to home
user:~ $ unset -f cd  # undefine function

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