
내가 할 때
which pip3
알겠어요
/usr/local/bin/pip3
그런데 실행하려고 하면 pip3
다음과 같은 오류가 발생합니다.
bash: /usr/bin/pip3: No such file or directory
최근에 파일을 삭제했기 때문입니다. 이제 which
명령이 다른 버전을 가리키지 pip3
만 /usr/local/bin
셸은 여전히 잘못된 경로를 기억합니다. 어떻게 하면 그 경로를 잊게 만들 수 있나요?
설명서 which
에 따르면
which returns the pathnames of the files (or links) which would be executed in the current environment, had its arguments been given as commands in
a strictly POSIX-conformant shell. It does this by searching the PATH for executable files matching the names of the arguments. It does not follow
symbolic links.
/usr/local/bin
/usr/bin
둘 다 내 PATH
변수 에 있으며 /usr/local/bin/pip3
심볼릭 링크가 아니라 실행 파일입니다. 그렇다면 실행해 보는 것은 어떨까요?
답변1
여기에서 명령을 실행하면 실행 파일의 위치를 기억하므로 매번 다시 검색할 bash
필요가 없습니다 . PATH
따라서 실행 파일을 실행한 다음 위치를 변경하면 bash
이전 위치가 계속 시도됩니다. 이를 확인할 수 있어야 하며 hash -t pip3
이전 위치가 표시됩니다.
이것을 실행하면 hash -d pip3
bash는 이전 위치를 잊어버리고 다음에 시도할 때 새 위치를 찾도록 지시합니다.
답변2
실행 파일의 위치를 변경하는 경우(이동하거나 다른 위치에 실행 파일의 새 버전을 제공하여) hash -d NAME
강제 bash를 사용하여 PATH에서 다시 찾으십시오. 그러나 NAME이 캐시에 없으면 오류가 발생하므로 스크립트의 일부로 다음과 같이 사용하십시오.
if hash -t $NAME >& /dev/null; then
hash -d $NAME
fi