`which 和有什么不一样` 和 ` 命令 -v`?

`which 和有什么不一样` 和 ` 命令 -v`?

当我投入时which npm,我得到了/usr/local/bin/npm。当我投入时command -v npm,我得到了/usr/bin/npm

这是为什么?有什么不同?man whichwhich“返回将在当前环境中执行的文件名的路径名”。我发现如果我运行which -a npm,它会返回上面提到的两条路径。

那么为什么它在没有 的情况下运行时选择第一个-a,而command -v npm返回第二个呢?

答案1

which是来自时代的外部命令csh,与 Bourne 兼容 shell 无关。

因此,除非您使用csh.

所以最好使用内置的 shell 命令......

command是来自 POSIX 兼容 shell 的内置命令,与其他内置命令一起为type类似于 Bourne Shell 的 shell 返回正确的结果。

相关内容