內建的 echo 指令和 /bin/echo 有什麼不同?

內建的 echo 指令和 /bin/echo 有什麼不同?

我在擺弄typewhich命令時發現了一些奇怪的事情。

typewhich要么返迴路徑,要么表示命令是內建的 Bash exittype

奇怪的是,type echo正如我所料,echo 是內建的。

which echo將 /bin/echo 作為 echo 可執行檔的路徑。對於任何其他內建命令似乎都不會發生這種情況。

我想知道兩者之間有什麼不同,Bash 選擇在腳本和命令列中執行哪一個,以及這兩個迴聲背後的故事是什麼。

我的系統是Ubuntu桌面12.04

答案1

有一個內建函數echo和一個命令echo。用於type -a echo查看所有這些。

因為type它本身就是一個 shell 內建函數,所以它能夠了解其他內建函數。

並且which只是一個通常的命令。因此它不知道您正在使用哪個 shell,而只告訴您磁碟上的命令。

通常type是正確的命令來告訴您如果在 shell 中輸入某個單字會發生什麼。

相關內容