다중 설치 및 $ PATH 이해


17

구 버전의 Git을 다음 위치에 설치했습니다.

/usr/bin/

최근에 최신 버전을 다운로드하여 다음을 수행했습니다.

/usr/local/bin

입력 할 때 :

which git

이전 버전의 위치를 ​​얻습니다. 나는 이것이 $ PATH 변수에서 / usr / bin /이 / usr / local / bin 앞에 나타나기 때문에 이전 버전의 git이 먼저 '발견'되었기 때문이라고 생각합니다.

이를 테스트하기 위해 이전 버전의 git 이름을 "git_old"로 바꿨습니다. 이제 내가 입력하면 :

which git

예상대로 최신 버전의 위치를 ​​얻습니다. 그러나 내가 입력하면 :

git --version

다음과 같은 오류가 발생합니다.

-bash: /usr/bin/git: No such file or directory

내 컴퓨터가 왜 Git의 이전 위치를 다시 찾고 있는지 궁금합니다.

답변:


30

Bash는 $PATH매번 살펴볼 필요가 없도록 실행 파일의 전체 경로를 캐시합니다 .

다음 hash명령을 사용하여 캐시에있는 내용을 볼 수 있습니다 .

deltik@node51 [~]$ hash
hits    command
   1    /usr/bin/git

이 캐시는 다음을 사용하여 지울 수 있습니다 hash -r.

deltik@node51 [~]$ hash -r
deltik@node51 [~]$ hash
hash: hash table empty

추가 자료


2
나는 이것을 전혀 몰랐다.
어둠 속에서 djsmiley2k

1
대부분의 다른 쉘은 동일한 작업을 수행하지만 hash -r캐시를 다시로드하는 데 모두 사용하지는 않습니다 . SSH와 같은 가수 rehash는 대신 명령으로 사용합니다.
Moshe Katz

PATH = $ PATH는 캐시를 지워야합니다. 해시 -r은 필요하지 않습니다.
jrw32982는 Monica
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.