POSIX 호환 고도 감지

POSIX 호환 고도 감지

나는 가능한 한 POSIX와 호환되는 스크립트를 작성 중이므로 bashim 사용을 피하고 있습니다. 특정 부분에 대해 높은 권한(루트)이 필요하며 필요한 경우 사용자에게 메시지를 표시합니다.현재 사용자가 루트인지 확인.

UIDcheck , 등 다양한 방법이 있습니다 EUID. id -u탐지 자체와 관련된 많은 문제는 다음 방법으로 다룹니다.[1],[2],[삼],[4],[5]등이지만 일반적으로 bash와 관련이 있으며 나중에 주석에 posix 관련 경고가 있습니다.

어떤 쉘이 어떤 방법을 지원하는지 모르겠습니다. 대부분의 쉘에서 작동하는 POSIX 호환 방법이 있습니까?

답변1

id -uPOSIX에 의해 지정됨, 따라서 모든 POSIX 호환 환경은 다음을 지원해야 합니다.

[ "$(id -u)" = 0 ]

유효한 루트에 대한 테스트입니다.

ashBusybox(및 해당 .exe )를 사용한 테스트에서는 id적어도 내 Busybox가 사용하는 컴파일 옵션을 사용하여 위의 내용을 지원하는 것으로 나타났습니다. (이러한 기능에 대한 POSIX 사양을 따르지 않는 Busybox를 구축하는 것이 가능하다고 생각하지만 이는 귀하의 질문 범위를 벗어납니다.)

관련 정보