Questo è molto facile da realizzare:
#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "[email protected]"
Quando l'utente corrente non è root, riesegui lo script tramite sudo
.
Nota che sto usando sudo
qui invece di su
. Questo perché ti consente di preservare gli argomenti. Se usi su
, il tuo comando dovrebbe essere su -c "$0 [email protected]"
che rovinerebbe i tuoi argomenti se hanno spazi o caratteri speciali della shell.
Se la tua shell è bash, puoi evitare la chiamata esterna a whoami
:
(( EUID != 0 )) && exec sudo -- "$0" "[email protected]"
Puoi controllare anche l'UID:
if [ $(id -u) != 0 ]; then
echo "You're not root"
# elevate script privileges
fi
Puoi chiamare lo script stesso e controllare:
#! /bin/bash
if [ "root" != "$USER" ]; then
su -c "$0" root
exit
fi
...