새로운 FreeBSD 설치에 포트/패키지를 자동으로 설치하는 스크립트를 작성하려고 합니다. 이것이 작동하려면 스크립트를 실행하는 사용자가 루트여야 합니다.
시스템은 설치될 수도 있고 설치되지 않을 수도 있는 bash
virgin 이어야 합니다. sudo
이를 위해 사용자 ID가 0인지 확인합니다.
문제는 bash와 sh의 환경 변수가 다르다는 것입니다.
- bash -> $EUID (모두 대문자)
- sh -> $euid (모두 낮음)
환경 변수 외에 루트 사용자를 확인하는 다른 방법이 있습니까? 아니면 환경에 따라 사용자에 대한 확인을 조정해야 합니까?
답변1
값을 확인해보겠습니다id -u
,다음과 같이 임명됨:
유효한 사용자 ID만 "%u\n" 형식을 사용하여 출력됩니다.
어쩌면 다음과 같은 것일 수도 있습니다.
if [ $(id -u) -eq 0 ]
then
: root
else
: not root
fi
답변2
$UID == 0
두 쉘 모두에서 간단하게 테스트할 수 있는 것 같습니다 . 이름은 root
중요한 부분이 아니며 실제로 root
0이 아닌 UID로 이름이 지정된 사용자 또는 0 이외의 이름으로 이름이 지정된 UID 0 계정이 있을 수 있으므로 root
이는 아마도 스크립트가 다음과 같이 실행되고 있는지 확인하는 더 좋은 방법일 것입니다. 사용자. 권한이 있는 사용자.