나는 가능한 한 POSIX와 호환되는 스크립트를 작성 중이므로 bashim 사용을 피하고 있습니다. 특정 부분에 대해 높은 권한(루트)이 필요하며 필요한 경우 사용자에게 메시지를 표시합니다.현재 사용자가 루트인지 확인.
UID
check , 등 다양한 방법이 있습니다 EUID
. id -u
탐지 자체와 관련된 많은 문제는 다음 방법으로 다룹니다.[1],[2],[삼],[4],[5]등이지만 일반적으로 bash와 관련이 있으며 나중에 주석에 posix 관련 경고가 있습니다.
어떤 쉘이 어떤 방법을 지원하는지 모르겠습니다. 대부분의 쉘에서 작동하는 POSIX 호환 방법이 있습니까?
답변1
id -u
예POSIX에 의해 지정됨, 따라서 모든 POSIX 호환 환경은 다음을 지원해야 합니다.
[ "$(id -u)" = 0 ]
유효한 루트에 대한 테스트입니다.
ash
Busybox(및 해당 .exe )를 사용한 테스트에서는 id
적어도 내 Busybox가 사용하는 컴파일 옵션을 사용하여 위의 내용을 지원하는 것으로 나타났습니다. (이러한 기능에 대한 POSIX 사양을 따르지 않는 Busybox를 구축하는 것이 가능하다고 생각하지만 이는 귀하의 질문 범위를 벗어납니다.)