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