Как определить, работает ли оболочка script с правами root?

У меня есть script, я хочу, чтобы мне нужно было запускать с привилегиями su, но интересная скриптовая команда, которая потерпит неудачу, приходит очень поздно в script, поэтому я бы хотел провести чистый тест, чтобы определить если скрипт не будет работать без возможностей SU.

Каков хороший способ сделать это для bash, sh и/или csh?

Ответ 1

Баш/ш:

#!/usr/bin/env bash
# (Use #!/bin/sh for sh)
if [ 'id -u' = 0 ] ; then
        echo "I AM ROOT, HEAR ME ROAR"
fi

CSH:

#!/bin/csh
if ( 'id -u' == "0" ) then
        echo "I AM ROOT, HEAR ME ROAR"
endif

Ответ 2

Вы можете добавить что-то подобное в начале вашего script:

#!/bin/sh

ROOTUID="0"

if [ "$(id -u)" -ne "$ROOTUID" ] ; then
    echo "This script must be executed with root privileges."
    exit 1
fi