Bash的哈希功能是一个优化机制,当第一次执行一个命令时,Shell会在 PATH 环境变量指定的目录中搜索这个命令的完整路径(例如 /bin/ls)。找到后,它会将这个路径记在一张哈希表中。下次再执行 ls 时,Shell会直接从这个哈希表中取出路径并执行,不需要再次搜索 PATH环境变量,大大加快了命令的查找速度。哈希表随着Shell进程的创建而生成,随着Shell的退出而自动销毁。每个Shell会话(如每个终端窗口)都拥有自己独立的哈希表,互不影响。
可以使用hash命令来查看和管理它。
查看当前哈希表的内容:
在终端直接输入hash命令。它会列出所有被缓存起来的命令,以及它们被调用的次数。
删除特定命令的记录:
使用hash -d <命令名>。比如hash -d ls就只删除ls命令的缓存。
清空整个哈希表:
使用hash -r。
保存当前表到文件:
如果你想保留当前会话的哈希状态,可以用hash -l > hash_table_backup把列表导出到一个文本文件中。之后可以用source hash_table_backup来恢复它。