我有一个类似设置的“虚拟环境”,其中脚本将一堆本地可执行文件添加到$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 容器内运行。
我可以做什么来防止这种情况发生?