Bash:哪个<app>返回的位置与预期不同

ima*_*hat 3 macos bash which

任何人都可以向我解释为什么会发生以下情况?

[$] pip
-bash: /usr/local/bin/pip: No such file or directory
[$] which pip
/bin/pip
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

应用程序查找被缓存.重置pip条目:

hash pip
Run Code Online (Sandbox Code Playgroud)

引用man bash:

如果名称既不是shell函数也不是内置函数,并且不包含斜杠,则bash会在PATH的每个元素中搜索包含该名称的可执行文件的目录.Bash使用哈希表来记住可执行文件的完整路径名(请参阅下面的SHELL BUILTIN命令下的哈希).仅当在散列表中找不到该命令时,才会执行PATH中目录的完整搜索.

hash相同文件中的条目:

hash [-lr] [-p filename] [-dt] [name]
对于每个名称,命令的完整文件名是通过搜索$ PATH中的目录并记住来确定的.

which 无论散列条目如何,始终搜索您的路径.