Eu tenho uma função padrão que uso em bash
para esse propósito:
# Check if we're root and re-execute if we're not.
rootcheck () {
if [ $(id -u) != "0" ]
then
sudo "$0" "$@" # Modified as suggested below.
exit $?
fi
}
Há provavelmente formas mais elegantes (eu escrevi este AGES atrás!), mas isso funciona bem para mim.
Para usar essa função consistentemente em um script, você deve passar os argumentos recebidos pelo script originalmente.
Uso: rootcheck "${@}"
( rootcheck
sozinho não passará nenhum argumento para a função rootcheck)