해시 명령이 이에 대해 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을 반환"하는 것과 같이 지정되지 않은 동작을 구현합니다.