【发布时间】:2016-08-31 13:43:07
【问题描述】:
不久前我读过一些 bash 常见问题解答(我不记得了),应该避免使用 which 而首选 command -v。
为什么会这样?两者各有什么优缺点?
【问题讨论】:
-
什么?为什么?
which告诉您程序的可执行文件所在的位置,而command -v通常显示可执行文件的版本 -
@anishsane - 这个问题是“哪个更好”,而不是“我怎么......”。虽然其他问题的答案确实解释了差异,但问题本身是不同的。
-
另一个你可以使用的内置函数是
type -p。which没有任何问题,它在大多数发行版中默认提供,但它不是内置的 shell。 -
在某些情况下
which将返回与command -v不同的值,即使是二进制文件也是如此。which总是扫描$PATH变量,但是 bash 可能会散列命令,而不是每次都扫描它,因此如果在这些位置的任何位置添加/删除它,它将忽略它。运行hash以查看哪些命令已被散列,或者例如type ls用于特定程序
标签: bash