Bash
‘cat’ 是內置的外殼程序還是外部程序?
當我使用該
type
命令來確定cat
是 shell 內置程序還是外部程序時,我得到以下輸出:-$ type cat cat is hashed (/bin/cat) -$
這是否意味著這
cat
是一個外部程序/bin/cat
?我很困惑,因為當我檢查下面的輸出時,
echo
我發現它既是一個built-in
程序,也是一個程序/bin/echo
-$ type echo echo is a shell builtin -$ which echo /bin/echo -$
所以我不能使用
/bin/cat
必然意味著外部程序的邏輯,因為 echo/bin/echo
仍然是內置的。那我怎麼知道
cat
是什麼?內置還是外置?
type
告訴你 shell 會使用什麼。例如:$ type echo echo is a shell builtin $ type /bin/echo /bin/echo is /bin/echo
這意味著如果在 bash 提示符下鍵入
echo
,您將獲得內置的。如果您指定路徑,如 中/bin/echo
,您將獲得外部命令。
which
,相比之下,它是一個外部程序,它對 shell 將做什麼沒有特別的了解。在類似 debian 的系統上,which
是一個在 PATH 中搜尋執行檔的 shell 腳本。因此,即使外殼程序使用內置的,它也會為您提供外部執行檔的名稱。如果命令僅作為內置命令可用,
which
則不會返回任何內容:$ type help help is a shell builtin $ which help $
現在,讓我們看看
cat
:$ type cat cat is hashed (/bin/cat) $ which cat /bin/cat
cat
是一個外部執行檔,而不是一個內置的 shell。