Bash
如何專門執行 shell 內置命令
考慮一下我在目前 shell 中執行這些命令或將它們放入其中的情況
.bashrc
:alias source='echo hi' alias .='echo hi' alias unalias='echo hi'
或
function source(){ echo hi; }
等。在二進制命令的情況下,我們可以使用絕對路徑,例如:
/bin/ls
,但是如何在目前 shell 中專門執行這些 shell 內置命令中的任何一個?
Bash 有這樣的命令
builtin
:builtin: builtin [shell-builtin [arg ...]] Execute shell builtins. Execute SHELL-BUILTIN with arguments ARGs without performing command lookup.
例如
$ cat > hello.sh echo hello $ source() { echo x ; } $ source hello.sh x $ builtin source hello.sh hello
但是,沒有什麼可以阻止您覆蓋
builtin
.另一種解決別名(但不是函式)的方法是引用(部分)這個詞:
$ alias source="echo x" $ source hello.sh x hello.sh $ \source hello.sh hello