这个问题在这里已有答案:
我刚才读过一些bash常见问题解答(我不记得了),应该避免使用which
并且首选command -v
。
为什么会这样?任何一个的优点和缺点是什么?
好...
command
可能内置在你的shell中,使用-v
选项会告诉你shell如何调用指定的命令作为它的选项。
which
是一个外部二进制文件,位于/usr/bin/which
,它遍历$PATH
环境变量并检查文件是否存在。
选择前者而不是后者的一个原因是它避免了对shell之外的东西的依赖。
这两个命令做了不同的事情,你应该选择一个更符合你需求的命令。例如,如果command
内置在你的shell中,command -v command
会用它的输出(通过路径不存在)表明这一点,但是which command
将尝试指向你路径上的文件,无论command
如何被解释为你的壳。