当我在没有指定可执行文件的完整路径的情况下执行程序时,Bash 必须搜索其中的目录$PATH
才能找到二进制文件,似乎 Bash 会记住某种缓存中的路径。例如,我安装了从源代码到 的 Subversion 版本/usr/local
,然后svnsync help
在 Bash 提示符下键入。Bash 找到了/usr/local/bin/svnsync
“svnsync”的二进制文件并执行了它。然后当我删除 Subversion 中的安装/usr/local
并重新运行时svnsync help
,Bash 响应:
bash: /usr/local/bin/svnsync: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但是,当我启动一个新的 Bash 实例时,它会找到并执行/usr/bin/svnsync
.
如何清除可执行文件路径的缓存?
至少让我对桌面 Linux 感到困惑的一件事是,几乎所有东西都在我的 PATH 中。我的意思是所有桌面应用程序,包括 gnome-character-map 和 glchess 之类的东西。这些没有命令行界面可言,所以我想不出我会定期从终端启动这些的情况 - 在这种不太可能的情况下,我无法想象需要输入完整的内容会带来不便路径。它看起来很杂乱,但也许有一个很好的理由。
那么,为什么会发生这种情况呢?对性能或可维护性有什么显着影响吗?