如何避免使用本地二进制文件在 zsh 中不断重新哈希?

如何避免使用本地二进制文件在 zsh 中不断重新哈希?

我有一个类似设置的“虚拟环境”,其中脚本将一堆本地可执行文件添加到$PATH.设置完所有内容后,脚本调用hash -r.在 bash 中,这完美地工作:

source venv/bin/activate
foo # foo is venv/bin/foo
bar # bar is venv/bin/bar

一旦环境设置完毕,它就会一直保留在那里,直到您调用为止deactivate。在 zsh 中,环境最初设置得很好,但一段时间后(延迟似乎是不确定的)它将停止工作,直到rehash被调用:

source venv/bin/activate
foo # foo is venv/bin/foo
bar # bar is venv/bin/bar
bar # bar is /usr/bin/bar ??
rehash
bar # bar is /venv/bin/bar

如果相关的话,venv/bin/foo是一个指向脚本的链接,该脚本在 上调度$0,调用另一个脚本并最终foo在特定的 docker 容器内运行。

我可以做什么来防止这种情况发生?

相关内容