2011-08-30 82 views
1

在編寫BASH腳本時,我通常使用Linux機器的which命令(其中Linux機器指Ubuntu,Fedora,OpenSUSE等基於桌面的Linux操作系統)其他二進制文件的路徑或可用性。我明白which可以搜索變量集中存在的二進制文件(命令)。通過BASH查找系統上是否有哪個命令可用

現在,我無法理解如何在which命令本身不存在於該機器上的情況下繼續。

我的意圖是創建一個shell腳本(BASH),它可以在機器上運行,並且在環境不夠用的情況下(如腳本中使用的某些命令丟失),它應該能夠正常退出。

有沒有人在這方面有任何建議。我知道可以有像使用locatefind等方式 - 但再次,如果即使他們不可用。我已經知道的另一個選項是,我尋找在/usr/bin//bin//usr/local/bin/之類的標準路徑上存在which二進制。還有其他可能嗎?

在此先感謝。

回答

8
type which 

type是內置命令一個bash,所以它總是在bash可用。有關詳細信息,請參閱man bash

注意,這也將認識別名:

$ alias la='ls -l -a' 
$ type la 
la is aliased to 'ls -l -a' 
+0

這真是太棒了:) - 從來不知道這件事。非常感謝@Boldewyn。 – Shrey

+0

不客氣:-) – Boldewyn

2

(更多評論,因爲Boldewyn回答完美,但它是另一種承擔,可能會感興趣的一些問題。)

如果你是擔心有人可能會與你的bash安裝混亂,不知怎麼去除which,那麼我想從理論上講,當你真正調用的命令,你會得到127

退出代碼考慮

$ sdgsdg 
-bash: sdgsdg: command not found 
$ echo $? 
127 

在bash退出代碼:http://tldp.org/LDP/abs/html/exitcodes.html

當然,如果有人刪除which,那麼我也不會相信的退出代碼,無論是。

+0

好的補充。 +1 – Boldewyn

相關問題