2011-08-30 89 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

相关问题