为什么没有使用 $PATH 中的第一个可执行文件?

Nat*_*ong 6 path

我有一个调用的脚本jsl/usr/local/bin。运行which jsl在那里找到它。

我想暂时使用一个不同的版本,当echo $PATH我看到它/usr/bin在路径的早期。所以我添加了一个jsl在该文件夹中调用的脚本,并且我已经验证它是可执行的并且在使用完整路径调用时可以正确运行。

但是,which jsl仍然找到第一个版本,并且jsl仍然运行它。

为什么我的新人jsl没有which被姓名发现或被处决?

小智 10

shell 可能正在缓存命令的位置。例如 zsh 执行此操作,并具有rehash清除缓存的命令。

  • 在 bash 和其他 bourne shell 中,清除路径缓存是“hash -r”。bash 的内置帮助有更多详细信息 - 输入 `help hash` (6认同)