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

Nec*_*cto 3 linux bash which

比方说,我有以下结构:

/usr/bin/app
/home/me/bin/app
Run Code Online (Sandbox Code Playgroud)

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

所以,当我执行一些命令时,比如说$app --version,它会返回v1,但是我$which app给了我/home/me/bin/app,所以,我想,它必须执行第二个应用程序,然后返回v2.为什么不发生?

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

ard*_*u07 5

由于whichlinux哈希表中获取哈希值,当您安装具有相同名称的新可执行文件时,shell仍然继续使用旧表,因此它会带来冲突.而不是使用hash -d <appname>(哪个工作),你也可以使用rehash命令,我相信.(你也应该使用zsh,这很酷:))