bash的`which`显示错误的应用程序路径

时间:2013-05-16 08:59:39

标签: linux bash which

让我们说,我有以下结构:

/usr/bin/app
/home/me/bin/app

$/usr/bin/app --version - > v1$/home/me/bin/app --version - > v2

所以,当我执行一些命令时,说$app --version,它会返回v1,但我的$which app会给我/home/me/bin/app,因此,我认为必须执行第二个应用程序,并返回v2。为什么不发生?

换句话说,构造$app是否等同于$$(which app),并且因此不适用?

1 个答案:

答案 0 :(得分:5)

由于whichlinux hash table获取散列值,因此当您安装具有相同名称的新可执行文件时,shell仍会继续使用旧表,因此会带来冲突。我相信你也可以使用rehash命令,而不是使用hash -d <appname>(有效)。 (你也应该使用zsh,非常酷:))

相关问题