명령 호출 위치가 "which" 명령 출력과 일치하지 않습니다.

명령 호출 위치가 "which" 명령 출력과 일치하지 않습니다.

CentOS 7 컴퓨터에 설치 중인데 protocolbuf설치 후 protoc컴파일러 바이너리를 실행할 때 몇 가지 불일치를 발견했습니다.

$  which protoc
/usr/local/bin/protoc 
$  protoc
bash: /bin/protoc: No such file or directory

확실히 잘못된 것 같습니다. 어떻게 해결할 수 있나요?

답변1

현대적인 껍질을 사용하면기억하다이전에 실행한 명령의 경로입니다. 예를 들면 다음과 같습니다.

bash-4.2$ hash
hash: hash table empty
bash-4.2$ whoami
sweh
bash-4.2$ hash
hits    command
   1    /usr/bin/whoami

이제 프로그램을 제거하고(귀하의 경우 /bin/protoc) 새 위치( /usr/local/bin/protoc)에 설치하면 현재 셸은 이전 위치를 시도합니다. 이전 파일이 존재하지 않아서 실패했습니다.

를 사용하여 기억된 모든 경로를 잊어버리도록 쉘에 지시할 수 있습니다 hash -r.

이렇게 하면 경로를 다시 검색하게 됩니다.

which명령은 현재 쉘의 해시를 이해하지 못합니다. 이 type명령은 보다 정확한 쉘 내장입니다.

관련 정보