在编写BASH脚本时,我通常使用Linux机器的which
命令(Linux机器指的是基于桌面的Linux操作系统,如Ubuntu,Fedora,OpenSUSE)来查找其他二进制文件的路径或可用性。我了解which
可以搜索PATH
变量集中存在的二进制文件(命令)。
现在,如果该机器上没有which
命令本身,我无法理解如何继续。
我的目的是创建一个可以在机器上运行的shell脚本(BASH),如果环境不够(比如缺少脚本中使用的某些命令),它应该能够正常退出。 / p>
有没有人在这方面有任何建议。我知道可以使用locate
或find
等方法 - 但是,即使它们不可用,也会如此。我已经知道的另一个选项是我在which
或/usr/bin/
或/bin/
这样的标准路径上寻找/usr/local/bin/
二进制文件。还有其他可能性吗?
提前致谢。
答案 0 :(得分:8)
type which
type
是一个bash内置命令,所以它总是在bash中可用。有关详细信息,请参阅man bash
。
注意,这也会识别别名:
$ alias la='ls -l -a'
$ type la
la is aliased to 'ls -l -a'
答案 1 :(得分:2)
(更多的评论是因为Boldewyn回答得很完美,但这是对某些人可能感兴趣的问题的另一种看法。)
如果您担心某人可能已经搞乱了您的bash安装并以某种方式删除了which
,那么我认为理论上,当您实际调用该命令时,您将获得127的退出代码。
考虑
$ sdgsdg
-bash: sdgsdg: command not found
$ echo $?
127
bash中的退出代码:http://tldp.org/LDP/abs/html/exitcodes.html
当然,如果有人删除了which
,那么我也不会相信退出代码。