如何以编程方式检查程序的存在?

时间:2011-10-05 00:02:12

标签: unix language-agnostic

假设我正在写一些依赖外部程序的东西,比如svn。如何自动检查它们的存在,以便在它们不存在时打印出有用的错误消息?迭代PATH是可能的,但很难优雅和高效。有更清洁的解决方案吗?

我在bootstrapping脚本中看到过这种行为,虽然我不记得在哪里。它看起来有点像这样:

checking for gcc... yes

2 个答案:

答案 0 :(得分:2)

如果您使用bash,则可以使用type内置:

$ type -f svn
svn is /usr/bin/svn

如果要在脚本中使用它:

$ type -f svn &>/dev/null; echo $?
0
$ type -f svn_doesnt_exist &>/dev/null; echo $?
1

答案 1 :(得分:0)

尝试实际调用它。

最有意义的是用-V或其他任何使程序报告其版本的选项来调用它;大多数时候你希望程序至少是这样的版本。

如果您的程序是shell脚本,which也是您的朋友。