何时使用 bash 重新哈希 $PATH 中的可执行文件?

何时使用 bash 重新哈希 $PATH 中的可执行文件?

Bash shell 有一个内置命令hash -r用于重置可执行文件的内部$PATH缓存。

什么时候需要使用这个命令?

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

答案1

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

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

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

hash name

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

hash -d name

仅删除该缓存条目。这些操作不会影响其他所有缓存条目。

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

答案2

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

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

阅读有关这个​​好答案的更多信息在 Unix stackexchange 上

相关内容