在命令行上我会输入(例如)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 ,那么这个问题可能是另一个问题的重复。我不知道他们是不是。