bash의 hash 명령이 항상 ./에 대해 true를 반환하는 이유는 무엇입니까?

bash의 hash 명령이 항상 ./에 대해 true를 반환하는 이유는 무엇입니까?

해시 명령이 이에 대해 0을 반환하는 이유는 무엇입니까?

$ hash -r 

$ ls -l ./kkk
./kkk: No such file or directory

$ hash ./kkk
$ echo $?
0

답변1

경로 검색을 수행한 후 hash해당 유틸리티가 발견되면 유틸리티는 true를 반환합니다 .$PATH

유틸리티 이름에 경로를 제공했으므로 쉘은아니요경로 검색을 수행하되 제공한 경로를 사용하십시오( ./). 쉘이 실제로 시도할 때까지달리기해당 경로의 유틸리티가 해당 경로가 존재하지 않음을 발견했습니다.

POSIX 사양hash설명하다

유틸리티에 하나 이상의 <slash>문자가 포함되어 있으면 결과가 지정되지 않습니다.

...그리고 bash분명히 "유틸리티를 찾는 데 경로 검색이 필요하지 않은 경우 종료 상태 0을 반환"하는 것과 같이 지정되지 않은 동작을 구현합니다.

관련 정보