当我在没有指定可执行文件的完整路径的情况下执行程序时,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
.
如何清除可执行文件路径的缓存?
我正在将我的文件从一台 Debian 机器移动到另一台机器,以便我可以将旧机器用于不同的目的。我不想错过任何文件,因为我将无法恢复地格式化旧机器的硬盘。
仔细想想,我意识到我需要复制的所有文件和文件夹都不是由任何已安装的 Debian 软件包维护的。有没有一种简单的方法来列出这些文件和文件夹?