Bash는 이동 / 삭제 된 실행 파일의 잘못된 경로를 기억합니다


29

내가 할 때

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기호 링크가 아닌, 그것을 실행합니다. 왜 실행되지 않습니까?


내용은 무엇입니까 /usr/local/bin/pip3?
Thomas

이전 pip3에 해당 쉘에서 실행 /usr/bin한 후 이동 했습니까?
Eric Renouf

1
당신이 실행하면 무엇을 볼 수 hash -t pip3있습니까?
Eric Renouf

1
@Eric Renouf hash -t pip3prints/usr/bin/pip3
spiderface

2
아주 좋은 이유가 없다면 항상 type보다을 사용해야 which합니다. typeposix 쉘에 내장되어 있으며 쉘이 무엇을하는지 which추측 하지 않고 쉘이 무엇을하는지 알려줍니다 .
이카루스

답변:


37

명령을 실행할 때 bash해당 실행 파일의 위치를 ​​기억하므로 PATH매번 다시 검색 할 필요가 없습니다 . 따라서 실행 파일을 실행하면 위치를 변경해 bash도 여전히 이전 위치를 사용하려고 시도합니다. 이를 확인 hash -t pip3하면 이전 위치가 표시됩니다.

실행 hash -d pip3하면 bash에게 이전 위치를 잊어 버리고 다음에 시도 할 때 새로운 위치를 찾아야합니다.


4
또는 hash -r전체 테이블을 지우십시오.
mattdm

그렇습니다. 질문과 관련이 없으므로 질문 제목을 변경한다고 생각 which합니다.
spiderface

1
대부분의 배쉬 기능에 대한 @spiderface help사람 대신 사용하기가 더 쉽습니다.help hash
Eric Renouf

3
@spiderface type hash는 쉘이 내장되어 있다고 알려주므로 자체 맨 페이지가 없습니다. 대신 bash의 맨 페이지에서 사용 help hash하거나 찾아보십시오 hash.
deltab

1
당신이 정말로 사용하려는 경우 또는, man이후 ... hashA는 bash내장이, 당신이 원하는 것 man bash찾을 수 있습니다. 그러나 맨 페이지가 말하는 것은 본질적 help hash으로 bash를 말하는 것입니다.
MAP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.