회답到底是內建指令還是外部程式?

1743 단어 linuxbash
在 껍데기執行指令時, 有的指令是 껍데기內建, 但有的是外部的程式, 但是倒底哪些是內建指令?哪些又是外部程式呢?我們來看一看.
在 들이치다中提供有 타입指令, 可以告訴你究竟某個指令是 껍데기內建還是外部程式, 例如:
$ type type
type is a shell builtin
$ type echo
echo is a shell builtin
$ type cat
cat is /bin/cat
就可以看出來 회답是內建指令, 而 고양이是外部程式.不過以 회답來說, 你可能會覺得疑惑, 若是用 어느檢查, 會發現系統上的確有個外部程式叫做 메아리:
$ which echo
/bin/echo
$ /bin/echo "hello"
hello
那麼到底我們執行 회답的時候, 是執行內建的指令還是外部的程式呢?這可以透過加上 -하나選項的 타입指令來查證:
$ type -a echo
echo is a shell builtin
echo is /bin/echo
你可以看到 타입會告訴你 회답是內建指令, 也是一個外部程式, 當你執行 회답時, 껍데기會以這個列表中的第一項優先執行, 所以執行的就是內建的指令.
如果你真的對執行到外部程式很感冒, 也可以在同時有內建指令與同名的外部程式時使用 내장했어指令強制執行內建的指令, 例如:
$ builtin echo "hello"
hello
$ builtin cat .profile
bash: builtin: cat: not a shell builtin
如果要求 내장했어執行的不是內建指令, 它會明確告知, 而且不會嘗試用外部同名的程式來取代.
如果想知道到底 들이치다有哪些內建的指令, 可以參考 Bash Builtin Commands .

좋은 웹페이지 즐겨찾기