쉘은 매번 PATH의 모든 디렉토리를 탐색합니까? [복사]

쉘은 매번 PATH의 모든 디렉토리를 탐색합니까? [복사]

쉘이 PATH 환경 변수에 언급된 디렉토리에서 실행 파일을 찾을 수 없는 경우. 후속 호출을 더 빠르게 수행하기 위해 이 정보를 어딘가에 저장합니까, 아니면 모든 디렉터리를 다시 검색합니까?

답변1

많은 쉘은 실행하는 명령의 기록을 유지합니다.가지다알려진 명령을 호출할 때 모든 항목을 탐색 PATH할 필요가 없도록 합니다 . PATH너는 이것을 볼 수 있다예를 들어Bash 또는 Zsh에서 실행됩니다.

hash

주문하다.

일부 쉘(예: Tcsh)은오직다음 명령 기록을 고려하십시오. 기본적으로 Tcsh는 시작 시와 경로가 업데이트될 때 경로를 검색하고 경로를 다시 보지 않습니다(특히 명령을 찾을 수 없는 경우). 이는 settings 을 사용하여 변경할 수 있으며 autorehash, rehash명령을 실행하면 경로가 다시 검색됩니다.

그러나 내가 아는 한 어떤 쉘도 다음 명령을 기억하지 않습니다.아니요발견되었다. 이렇게 하면 누락된 명령이 발견될 때 경로를 검색하는 셸에서 누락된 명령을 의 디렉토리에 직접 추가하거나 PATH해당 디렉토리를 PATH변수에 추가하여 다음에 호출할 때 별도의 작업 없이 찾을 수 있습니다. 쉘에 Scan 명령을 다시 말해야 합니다.

더 많은 경우, 이미 존재하는 명령의 새 버전을 추가하려면 PATH누락된 명령을 추가하는 것보다 수동 개입이 필요합니다. 이 경우 쉘이 이미 존재하는 버전을 쉽게 기억할 수 있기 때문입니다 PATH. 또는 새 버전을 사용할 때 목표는 다음과 같습니다. 사전에 결정됩니다 hash -r.hash -d

관련 정보