로컬 바이너리를 사용하여 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특정 도커 컨테이너 내에서 실행됩니다.

이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까?

관련 정보