2016-05-05 76 views
0

前段時間我讀過一些bash FAQ(我不記得了),應該避免whichcommand -v首選。bash:哪個vs命令-v

這是爲什麼?兩者的優點和缺點是什麼?

+0

什麼?爲什麼? 'which'告訴你程序的可執行文件在哪裏,而'command -v'通常顯示可執行文件的_version_。 – ForceBru

+4

這裏是鏈接:[檢查程序是否存在於Bash腳本中](http:// stackoverflow。 com/questions/592620/check-if-a-program-exists-a-bash-script) – anishsane

+2

@anishsane - 這個問題是「哪個更好」,而不是「我該怎麼做......」。雖然其他問題的答案確實解釋了這種差異,但問題本身卻不同。 – ghoti

回答

6

嗯......

command很可能內置在你的shell,並與-v選項會告訴你,你的shell將如何調用指定的選項的命令。

which是一個外部二進制文件,位於/usr/bin/which,該文件逐步遍歷$PATH環境變量並檢查是否存在文件。

選擇前者的原因是它避免了對shell外部某些東西的依賴。

這兩個命令做不同的事情,你應該選擇一個更接近你的需求。例如,如果command內置在您的shell中,則command -v command將通過其輸出(通過不存在路徑)指示此情況,但which command將嘗試指向路徑上的文件,無論command將如何解釋你的外殼。