什么时候用bash重新哈希$ PATH中的可执行文件?


9

Bash Shell具有内置命令hash -r,可$PATH为可执行文件重置内部缓存。

什么时候需要使用此命令?

相关:如何使用bash重新哈希$ PATH中的可执行文件


1
...例如,当您有一个刚刚重新编译的程序...具有相同的名称...可能在不同的路径中...
Hastur 2015年

@哈斯特:我不确定你的评论是问题还是陈述。如果声明,请发表。
kevinarpe

Answers:


7

hash是bash内置命令。哈希表是bash的一项功能,可防止每次键入命令时都通过将结果缓存在内存中来搜索$ PATH。

因此,当缓存/存储的信息不再更新或有效时,您可能需要重置它。

阅读更多有关Unix stackexchange这个不错的答案的信息


4

如果您以前曾在该Shell调用中运行过某个程序,然后在$PATH搜索列表的较早目录中安装了该程序的另一个版本,则需要重置该哈希值,以便它将在新位置找到它。否则,它将使用缓存在旧位置查找程序。

如果您的中的2个目录中都安装了程序,则还需要重置哈希$PATH,并在运行该副本后将其从较早的位置删除。否则,它将尝试在该位置找到它,并报告“没有这样的文件或目录”(个人而言,我认为它应自动清除哈希值,并在发生这种情况时进行完整搜索,但在我尝试时并没有发生)。

请注意,您实际上不必重置整个哈希,可以使用:

hash name

强制其仅更新该名称的高速缓存条目,或者:

hash -d name

删除该缓存条目。这些将其他所有缓存条目保留下来。

hash -r修改后无需使用,完成后会$PATH自动重置。


关于安装部分和路径的要点。
kevinarpe 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.