bash命令’which’ vs ‘command -v’

'which' vs 'command -v' in Bash

本问题已经有最佳答案,请猛点这里访问。

我刚才在一些bash常见问题解答中读到(我不记得了),应该避免使用which,而首选command -v

为什么会这样?两者的优点和缺点是什么?


好。。。

command可能内置于shell中,使用-v选项,可以告诉您shell将如何调用指定为其选项的命令。

which是一个外部二进制文件,位于/usr/bin/which上,它逐步通过$PATH环境变量并检查文件的存在。

选择前者而不是后者的一个原因是,它避免了对外壳之外的东西的依赖。

这两个命令执行不同的操作,您应该选择一个更符合您的需要的命令。例如,如果command内置在shell中,command -v command将用它的输出(通过不存在路径)来表示这一点,但which command将尝试指向路径上的文件,而不管shell如何解释command