POSIX는 표준 유틸리티가 PATH에 있음을 보증합니까?


11

에서 "명령을 검색하고 실행"섹션 의 POSIX 사양은이 말한다 PATH(일부 제외)을 실행하는 유틸리티를 찾을 때 검색됩니다. 사양 PATH에 모든 표준 유틸리티를 찾을 수있는 값으로 초기화 될 위치가 언급되어 있습니까?

또는 표준 유틸리티를 실행할 때 "명령을 찾을 수 없음"오류가 발생하지 않도록 다음과 같은 작업을 수행해야합니까?

PATH=$(command -p sh -c 'printf %s "${PATH}"')

( 유틸리티POSIX 사양command 참조 )

답변:


13

예, 아니오 POSIX 환경에서 유틸리티는 사양에 설명 된대로 작동해야합니다. 실제로 이는 적합한 버전의 유틸리티가에 있어야 함을 의미합니다 $PATH. 그러나 POSIX 호환 시스템에서 프로그램을 실행할 때 적합하지 않은 환경에서 프로그램을 실행할 수 있습니다. 실제로 OS에 레거시 모드와 POSIX 모드가 있으며 기본적으로 레거시 모드에 있습니다. 일부 명령이 누락 된 것보다 레거시 모드는 다른 의미를 가진 옵션과 같이 비 호환성을 갖는 경향이 있습니다.

로 상품 PATH을 검색 할 수 있습니다 getconf. 물론, getconf원본 $PATH에서 올바른 것이 아니기 때문에 까다 롭습니다 . 명령 의 응용 프로그램 사용법 은 다음을 수행하는 방법을 보여줍니다.

command -p getconf PATH

사양을 이해하는 한 POSIX 호환 환경에서 프로그램을 실행하는 경우에는 필요하지 않습니다. POSIX 호환 환경에서 프로그램을 실행하지 않으면 POSIX가 적용되지 않습니다. 그러나이 응용 프로그램 사용은 권장 사항으로 간주 될 수 있습니다.이 방법으로 문제가 해결되지 않으면 POSIX 사양의 문자와 관련하여 공급 업체에 불만을 제기 할 권리가 있다고 생각할 수 있습니다.


허, 나는 getconf PATH응용 프로그램 사용법 섹션에서 그것을 눈치 채지 못했습니다 . 감사!
Richard Hansen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.