当寻找的路径,可执行文件或检查,如果你在Unix shell中输入命令的名称会发生什么,有不同的公用事业过多(which
,type
,command
,whence
,where
,whereis
,whatis
,hash
,等)。
我们经常听说which
应该避免。为什么?我们应该用什么来代替?
当我在没有指定可执行文件的完整路径的情况下执行程序时,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
.
如何清除可执行文件路径的缓存?