Você pode usar a variável SHLVL para determinar até que ponto você está aninhado em um shell iniciado por um processo de login:
$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3
$ sudo su - # Start a login shell, clears $SHLVL
# echo $SHLVL
1
# logout
$ sudo su
# echo $SHLVL
4
# bash
# echo $SHLVL
5
Como o shell de login de su - limpa SHLVL , ele tem SHLVL=1 . Para sair do shell de login mais próximo no ancestral do shell, você precisa usar exit $SHLVL times.
SHLVL não é suportado por dash , portanto, sempre que entrar na imagem, a figura estará errada. No entanto, dash não é o shell de login de nenhuma conta utilizável no Ubuntu, e SHLVL funciona em shells mais avançados, como bash e zsh .
Não consigo reproduzir seu sudo su ausente:
$ pstree -ps $$
init(1)───sshd(1404)───sshd(12614)───sshd(12673)───zsh(12674)───sudo(31012)───su(31014)───bash(31016)───pstree(31084)