在我移动最近执行的可执行文件后(或者更常见的是,在我从某处卸载某些内容并在其他地方安装不同版本之后),bash 找不到它,即使它仍在 PATH 上。
例子:
find
sudo mv /usr/bin/find /usr/local/bin
find
Run Code Online (Sandbox Code Playgroud)
结果是:
bash: /usr/bin/find: No such file or directory
Run Code Online (Sandbox Code Playgroud)
这真的很烦人,因为它在我身上发生了几十次。我怎样才能阻止这种情况发生?
要清除眼前的问题:
hash -r
Run Code Online (Sandbox Code Playgroud)
要阻止它再次发生:
set +h
Run Code Online (Sandbox Code Playgroud)
禁用散列(即内存缓存)。
这可以放在 bash 启动文件中,例如/etc/bashrc.
此解决方案的缺点是,如果您在 PATH 上安装了较慢的网络文件系统,它会稍微减慢速度。
确实,在我看来,这是一个古老的 bash 错误,应该在几年前就已修复,这只是一种解决方法。
| 归档时间: |
|
| 查看次数: |
355 次 |
| 最近记录: |