Linux 查找是否';其中';命令通过BASH在系统上可用
在编写BASH脚本时,我通常使用Linux机器(其中Linux机器指基于桌面的Linux操作系统,如Ubuntu、Fedora、OpenSUSE)的Linux 查找是否';其中';命令通过BASH在系统上可用,linux,bash,shell,Linux,Bash,Shell,在编写BASH脚本时,我通常使用Linux机器(其中Linux机器指基于桌面的Linux操作系统,如Ubuntu、Fedora、OpenSUSE)的which命令来查找其他二进制文件的路径或可用性。我知道可以搜索路径变量集中存在的二进制文件(命令) 现在,我无法理解在机器上不存在命令的情况下如何继续 我的意图是创建一个shell脚本(BASH),它可以在机器上运行,如果环境不合适(比如脚本中使用的某些命令丢失),它应该能够正常退出 有没有人在这方面有什么建议。我知道可以使用locate或find
which
命令来查找其他二进制文件的路径或可用性。我知道可以搜索路径
变量集中存在的二进制文件(命令)
现在,我无法理解在机器上不存在命令的情况下如何继续
我的意图是创建一个shell脚本(BASH),它可以在机器上运行,如果环境不合适(比如脚本中使用的某些命令丢失),它应该能够正常退出
有没有人在这方面有什么建议。我知道可以使用locate
或find
等方法,但同样,如果它们都不可用怎么办。我已经知道的另一个选项是,我在标准路径上查找一个,它是/usr/bin/
或/bin/
或/usr/local/bin/
之类的二进制文件。还有其他可能吗
提前谢谢
type which
type
是一个bash内置命令,因此它在bash中始终可用。有关它的详细信息,请参见manbash
请注意,这也将识别别名:
$ alias la='ls -l -a'
$ type la
la is aliased to 'ls -l -a'
type
是一个bash内置命令,因此它在bash中始终可用。有关它的详细信息,请参见manbash
请注意,这也将识别别名:
$ alias la='ls -l -a'
$ type la
la is aliased to 'ls -l -a'
(更多的是评论,因为Boldewyn的回答非常完美,但这是对这个问题的另一种看法,可能会引起一些人的兴趣。)
如果您担心有人弄乱了您的bash安装并以某种方式删除了,那么我认为理论上,当您实际调用该命令时,您将得到127的退出代码
考虑
$ sdgsdg
-bash: sdgsdg: command not found
$ echo $?
127
bash中的退出代码:
当然,如果有人删除了其中的,那么我也不会相信退出代码。(更多的评论是因为Boldewyn回答得很好,但这是对一些人可能感兴趣的问题的另一种看法。)
如果您担心有人弄乱了您的bash安装并以某种方式删除了,那么我认为理论上,当您实际调用该命令时,您将得到127的退出代码
考虑
$ sdgsdg
-bash: sdgsdg: command not found
$ echo $?
127
bash中的退出代码:
当然,如果有人删除了其中的,那么我也不会相信退出代码。这太棒了:)-我从来不知道这件事。非常感谢@Boldewyn。这太棒了:)-我从来不知道这件事。非常感谢@Boldewyn。