셸 세션에 로그인하면 업데이트되지 않는 경로에 실행 파일 캐시가 생성됩니까? [복사]

셸 세션에 로그인하면 업데이트되지 않는 경로에 실행 파일 캐시가 생성됩니까? [복사]

/usr/bin/usr/bin/emacs예 를 들어 에 저장된 패키저의 사용자 정의 버전을 컴파일할 때 which emacs/usr/bin/emacs./usr/local/bin/emacs/usr/local/binPATH

새 바이너리를 표시하기 screen전에 로그인 및 로그아웃하거나 새 프레임을 열어야 합니다.which emacs

이는 일부 캐싱 때문입니까, 아니면 다시 로그인하기 전에 기존 경로를 참조하게 하는 일부 보안 기능이 있습니까?

편집하다:

이 질문이 중복되거나 다음과 같은 다른 질문에 의해 답변되었다고 생각하는 사람들을 위해-Bash의 실행 파일 경로 캐시를 지우는 방법은 무엇입니까?,해시 명령의 목적은 무엇입니까?, 이 질문은 대부분 시스템의 기본 셸임에도 불구하고 a shell, not about bash또는 hash내장 명령 bash(내가 모르는)에 대해 구체적으로 묻습니다.

zsh제가 사용한 것과 같은 다른 케이스도 존재하며 fish, ksh곧 출시될 것과 같은 새로운 케이스도 많이 있습니다 eshell.kshoilshell

그래서 저는 이 질문이 특정 쉘이 아닌 독립적이고 일반적인 쉘과 관련되어야 한다고 생각합니다.

그렇게 해야 할 이유가 있는 경우 경험에 따르면 이것이 현명한 선택이거나 다른 답변에서 자세히 설명하는 것보다 경제 또는 성능과 더 관련이 있습니다.

이 편집 내용을 리뷰로 작성하고 싶었지만 길이가 제한되어 있습니다.

답변1

예, bash 및 기타 쉘은 명령을 찾기 위해 PATH 변수의 모든 것을 시도하는 "해시" 명령 테이블을 유지하므로 매번 확인할 필요가 없습니다. 당신과 같이 환경을 변경하는 사람들은 이 명령이 hash -d NAME유용 할 것입니다 hash -r. 이것은 bash 명령이며 다른 쉘은 다르게 작동할 수 있습니다.

그래서,

hash -d emacs

bash에게 emacs 경로를 잊어버리라고 요청할 것입니다.

hash -r

잊어달라고 요청할 것이다모두길. 나는 후자를 사용하는 경향이 있습니다.

관련 정보