/usr/bin
/usr/bin/emacs
예 를 들어 에 저장된 패키저의 사용자 정의 버전을 컴파일할 때 which emacs
내 /usr/bin/emacs
./usr/local/bin/emacs
/usr/local/bin
PATH
새 바이너리를 표시하기 screen
전에 로그인 및 로그아웃하거나 새 프레임을 열어야 합니다.which emacs
이는 일부 캐싱 때문입니까, 아니면 다시 로그인하기 전에 기존 경로를 참조하게 하는 일부 보안 기능이 있습니까?
편집하다:
이 질문이 중복되거나 다음과 같은 다른 질문에 의해 답변되었다고 생각하는 사람들을 위해-Bash의 실행 파일 경로 캐시를 지우는 방법은 무엇입니까?,해시 명령의 목적은 무엇입니까?, 이 질문은 대부분 시스템의 기본 셸임에도 불구하고 a shell
, not about bash
또는 hash
내장 명령 bash
(내가 모르는)에 대해 구체적으로 묻습니다.
zsh
제가 사용한 것과 같은 다른 케이스도 존재하며 fish
, ksh
곧 출시될 것과 같은 새로운 케이스도 많이 있습니다 eshell
.ksh
oilshell
그래서 저는 이 질문이 특정 쉘이 아닌 독립적이고 일반적인 쉘과 관련되어야 한다고 생각합니다.
그렇게 해야 할 이유가 있는 경우 경험에 따르면 이것이 현명한 선택이거나 다른 답변에서 자세히 설명하는 것보다 경제 또는 성능과 더 관련이 있습니다.
이 편집 내용을 리뷰로 작성하고 싶었지만 길이가 제한되어 있습니다.
답변1
예, bash 및 기타 쉘은 명령을 찾기 위해 PATH 변수의 모든 것을 시도하는 "해시" 명령 테이블을 유지하므로 매번 확인할 필요가 없습니다. 당신과 같이 환경을 변경하는 사람들은 이 명령이 hash -d NAME
유용 할 것입니다 hash -r
. 이것은 bash 명령이며 다른 쉘은 다르게 작동할 수 있습니다.
그래서,
hash -d emacs
bash에게 emacs 경로를 잊어버리라고 요청할 것입니다.
hash -r
잊어달라고 요청할 것이다모두길. 나는 후자를 사용하는 경향이 있습니다.