3

可能重复:
找出 POSIX 系统上是否存在命令
如何在 bash 中找到可用的可执行文件

在命令行上我会输入(例如)type vimdiff(或者which vimdiff如果type在机器上不可用)。但是在脚本中,检查实用程序然后根据其可用性采取一些操作的最可靠方法是什么。

thediff手头的目的(如果有帮助的话)是我正在编写一个函数(对于 OS X 和 Windows/Cygwin 环境),如果不可用,则尝试vimdiff使用它,如果不可用,则默认diff使用我的首选选项(例如--side-by-side --suppress-common-lines --ignore-space-change')。

由于which它给出的反馈形式是出了名的不可靠,我不确定如果没有安装相关实用程序,我是否可以指望$?它。1但另一方面,我不确定我是否可以依赖type安装。

看起来很笨拙,但是尝试第一个实用程序怎么样,如果$?不为零,那么尝试下一个,等等。

这个一般是怎么处理的?

更新

尽管我确实用“bash”标记了这个,但这只是为了引起关注 bash 标记的人的注意,因为他们很可能知道答案。我并不是要暗示我只使用过 bash,或者我可以假设 bash 将出现在我使用的所有系统上。事实上,我不得不在脾气暴躁的系统管理员使除了 Korn shell 之外的任何东西都难以使用的系统上工作。并且(只要可用)我使用 zsh 而不是 bash。所以这不是如何在 bash 中找到可用的可执行文件的完全相同的副本,因为这需要 bash。所以问题是不同的。此外,我明确表示我必须使用type不可用的系统。所有的关闭者显然都忽略了这个事实。

如果我提到的所有系统实际上都符合 POSIX ,那么这个问题可能是另一个问题的重复。我不知道他们是不是。

4

0 回答 0