Bash

如何專門執行 shell 內置命令

  • March 2, 2018

考慮一下我在目前 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

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