Você pode armazenar um sinalizador em uma variável de ambiente:
if [ -z $INITIAL_SUDO ]; then
exec sudo -s INITIAL_SUDO=1
fi
Neste caso, o shell inicial invocado por ssh não terá o sinal INITIAL_SUDO
ativado e ele irá gerar o processo sudo. O shell invocado pelo sudo, por outro lado, terá INITIAL_SUDO
variável definida e não tentará chamar o sudo novamente.
Observe que chamo exec sudo -s
em vez de sudo -s
. Caso contrário, você terá que pressionar ctrl + D duas vezes: primeiro para um shell raiz e segundo para um shell inicial que invocou o sudo em primeiro lugar.