Bash에서 "command"의 "-p" 옵션과 기본 PATH와의 상호 작용 이해

Bash에서 "command"의 "-p" 옵션과 기본 PATH와의 상호 작용 이해

command명령: bashcommand라는 셸 함수를 무시하고 인수를 사용하여 명령을 실행합니다.

-p옵션은 $PATH모든 표준 유틸리티가 기본값을 사용하여 검색된다는 것을 의미합니다.

여기에 언급된 기본값은 정확히 무엇입니까 PATH? 을 정의할 때 기본값 위에 새 경로를 추가 export PATH="/home/ozgur/":$PATH하지 않습니까 ?PATH

예를 들어:

$ export PATH="/home/ozgur/":$PATH
$ echo $PATH
/home/ozgur/:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
$ script.sh
hey, i am working !
$ command -p script.sh
hey, i am working !

명령에서 해당 -p옵션을 사용할 때 내가 정의한 새 경로를 command무시하고 싶지만 PATH그런 일은 일어나지 않습니다. 여기서 정확히 무엇을 놓치고 있습니까? 사용자 경로 변경 사항을 덮어쓰지 않는 -p경우 이 옵션을 사용하는 이유는 무엇입니까?PATH

답변1

여기서 정확히 무엇을 놓치고 있습니까?

명령 script.sh이 해시되었습니다. 실행하면 hash -r예상 command -p script.sh대로 실패합니다. 하지만 직접 실행하면 다시 해시됩니다.

이것은 bash의 버그처럼 보입니다. 다른 쉘에서는 발생하지 않습니다.

답변2

bash 호출의 기본 경로를 설정합니다 STANDARD_UTILS_PATH.이 서버 오류 답변, 컴파일 시 기본값은 다음과 같습니다.

/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc

소스도 볼 수 있어요GNU 사바나.

관련 정보