Isso é muito fácil de realizar:
#!/bin/sh
[ "$(whoami)" != "root" ] && exec sudo -- "$0" "$@"
Quando o usuário atual não é root, execute novamente o script em sudo
.
Observe que estou usando sudo
aqui em vez de su
. Isso porque permite preservar argumentos. Se você usa su
, seu comando teria que ser su -c "$0 $@"
, o que iria mangle seus argumentos se eles tivessem espaços ou caracteres de shell especiais.
Se o seu shell é bash, você pode evitar a chamada externa para whoami
:
(( EUID != 0 )) && exec sudo -- "$0" "$@"