在什么情况下,PATH
bash 会重新散列?我搞不清楚什么时候需要调用hash -r
,什么时候会自动调用。我能想到的最好的办法是,只要输入了找不到的命令,PATH 就会重新散列。
答案1
bash 不会哈希所有内容PATH
。它只有一个哈希表,其中包含用过的在此会话期间(即在此 shell 进程中)。例如:
$哈希 命中命令 1 /主页/grawity/code/bin/todo $ ls 启动/dev/etc/home/usr/... $哈希 命中命令 1 /usr/bin/ls 1 /主页/grawity/code/bin/todo
因此,hash -r
只有当你用过的在当前 shell 中至少运行过一次程序,然后将其移到其他地方。