/usr/local/bin은 PATH에서 첫 번째이지만 /usr/bin에서 실행 파일이 먼저 발견되었습니다.

/usr/local/bin은 PATH에서 첫 번째이지만 /usr/bin에서 실행 파일이 먼저 발견되었습니다.

Ubuntu 12.04 서버에 이상한 문제가 있습니다.

hithwen@ip:~$ cmake --version
cmake version 2.8.12.2

buildbot@ip:~$ cmake --version
cmake version 2.8.7

따라서 서로 다른 사용자가 서로 다른 버전을 실행하고 있습니다. 이제 이들이 어디에 있는지 살펴보겠습니다.

hithwen@ip:~$ which cmake
/usr/local/bin/cmake

buildbot@ip:~$ which cmake
/usr/bin/cmake

따라서 buildbot 사용자 경로를 수정해야 할 것 같지만 다음과 같습니다.

buildbot@ip:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

/usr/local/bin이미 이전입니다 /usr/bin. 어떻게 해결할 수 있나요?

cmake다른 패키지가 의존하기 때문에 패키지를 제거할 수 없으며 12.04 저장소에서 마지막 버전을 사용할 수 없기 때문에 저장소를 통해 업그레이드할 수 없습니다.

답변1

설명은 다음 명령으로 제공되었습니다 hash.

hash 명령은 사용된 명령의 경로 이름이 있는 해시 테이블을 유지 관리합니다. 명령을 실행하면 $PATH 변수에서 명령을 검색합니다. 그러나 해시 테이블에서 명령을 사용할 수 있으면 거기에서 선택하여 실행합니다.

-d 옵션을 사용하여 해시 테이블에서 특정 명령을 삭제할 수 있습니다

그래서 나는 이렇게 했습니다:

buildbot@ip:~$ hash
hits    command
   3    /usr/bin/which
   1    /usr/bin/vim
   2    /usr/bin/cmake

buildbot@ip:~$ $ hash -d cmake
buildbot@ip:~$ hash
hits    command
   4    /usr/bin/which
   1    /usr/bin/vim
buildbot@ip:~$ cmake --version
cmake version 2.8.7
buildbot@ip:~$ which cmake
/usr/bin/cmake

왜 찾지 못합니까 /usr/local/bin/cmake?

$ /usr/local/bin/cmake --version
-bash: /usr/local/bin/cmake: Permission denied

따라서 이 사용자에게는 해당 파일에 액세스할 수 있는 권한이 없습니다.

다시 설치했더니 cmake해결됐어요.

관련 정보