如何清除Bash是可执行文件的缓存?

当我在没有为可执行文件定义完整过程的情况下执行程序时,Bash也必须查看$PATH中的目录站点以找到二进制文件,看起来Bash牢记某种类型的缓存中的过程。 作为一个例子,我将一个Subversion的构造从资源安装到/usr/local,然后在Bash准时的svnsync help中键入。 Bash将二进制/usr/local/bin/svnsync用于“svnsync”并实现了它。 之后,当我在/usr/local中删除了Subversion的部分并重新运行svnsync help时,Bash做出了反应:

bash: /usr/local/bin/svnsync: No such file or directory

但是,当我启动一个新的Bash实例时,它会定位并实现/usr/bin/svnsync

我如何清除可执行文件的课程缓存?

0
2019-05-13 03:35:30
资源 分享
答案: 2

要清除一个访问权限,您需要使用各种标志:

hash -d svnsync

-r标志不带参数,并且肯定会不断删除整个缓存。
(至少在Debian Lenny的bash 3.2.39中)

0
2019-12-02 00:01:55
资源

bash会将完整的课程缓存到命令中。 您可以使用type命令验证您尝试执行的命令是否已经过哈希处理:

$ type svnsync
svnsync is hashed (/usr/local/bin/svnsync)

要清除整个缓存:

$ hash -r

或者只是一次访问:

$ hash -d svnsync

有关更多详细信息,请与help hash以及man bash联系。

0
2019-05-17 14:11:45
资源