当我投入时which npm
,我得到了/usr/local/bin/npm
。当我投入时command -v npm
,我得到了/usr/bin/npm
。
这是为什么?有什么不同?man which
说which
“返回将在当前环境中执行的文件名的路径名”。我发现如果我运行which -a npm
,它会返回上面提到的两条路径。
那么为什么它在没有 的情况下运行时选择第一个-a
,而command -v npm
返回第二个呢?
答案1
which
是来自时代的外部命令csh
,与 Bourne 兼容 shell 无关。
因此,除非您使用csh
.
所以最好使用内置的 shell 命令......
command
是来自 POSIX 兼容 shell 的内置命令,与其他内置命令一起为type
类似于 Bourne Shell 的 shell 返回正确的结果。