![로컬 바이너리를 사용하여 zsh에서 지속적인 재해싱을 피하는 방법은 무엇입니까?](https://linux55.com/image/226626/%EB%A1%9C%EC%BB%AC%20%EB%B0%94%EC%9D%B4%EB%84%88%EB%A6%AC%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20zsh%EC%97%90%EC%84%9C%20%EC%A7%80%EC%86%8D%EC%A0%81%EC%9D%B8%20%EC%9E%AC%ED%95%B4%EC%8B%B1%EC%9D%84%20%ED%94%BC%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
스크립트가 여러 로컬 실행 파일을 추가하는 "가상 환경"이 설정되어 있습니다 $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
특정 도커 컨테이너 내에서 실행됩니다.
이런 일이 발생하지 않도록 하려면 어떻게 해야 합니까?