설치된 프로그램 실행 파일이 잘못된 위치에서 실행 중입니다.

설치된 프로그램 실행 파일이 잘못된 위치에서 실행 중입니다.

parcellite우분투에 설치했습니다 (다운로드 :http://parcellite.sourceforge.net/)

소스에서 설치한 후 sudo make install다음 위치에 설치된 것을 볼 수 있습니다.

그러나 실행하려고 하면 다른 경로에서 실행하려고 합니다. 왜 그런 겁니까?

user$ which parcellite
/usr/local/bin/parcellite

user$ parcellite -h
bash: /usr/bin/parcellite: No such file or directory

$PATH다음과 같이

/home/user/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

다음과 같이 실행 파일의 소유권을 변경해 보았습니다. 그러나 문제는 남아 있습니다.

user$ ls -l /usr/local/bin/parcellite 
-rwxr-xr-x 1 root root 452K Oct  7 21:00 /usr/local/bin/parcellite
user$sudo chown user:user /usr/local/bin/parcellite
user$ ls -l /usr/local/bin/parcellite 
-rwxr-xr-x 1 user user 452K Oct  7 21:01 /usr/local/bin/parcellite

이전 버전의 Parcellite가 설치되어 있습니다. 하지만 새 버전을 설치하기 전에 제거했습니다.


업데이트: @Fox의 솔루션이 작동합니다. 그러나 업데이트하지 않았 which음에도 불구하고 명령이 올바른 경로를 제공하는 이유는 무엇입니까 hash?

답변1

한 버전을 설치한 다음 다른 버전을 다른 곳에 설치하면 쉘은 원래 경로를 캐시(해시)합니다. 를 사용하여 이 캐시를 지울 수 있습니다 hash -r. 그런 다음 다음에 명령을 실행하면 새 경로로 다시 해시됩니다.

이 캐시는 전역 캐시가 아닙니다. 실행 중인 셸이 여러 개 있는 경우 각 셸을 업데이트해야 합니다.

which내가 올바른 길을 본 이유는 ,"왜 사용하지 않습니까 which"좋은 정보 소스이지만 간단히 대답하자면 이는 which쉘 경로 캐시를 볼 수 없는 외부 명령이라는 것입니다.

관련 정보