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)