De fato, você encontrou o termo correto¹. Há uma variável de ambiente SHLVLque todas as principais shells interativas (bash, tcsh, zsh) incrementam em 1 quando são iniciadas. Portanto, se você iniciar um shell dentro de um shell, SHLVLaumenta em 1.
Isso não responde diretamente à sua preocupação, no entanto, porque SHLVLcarrega coisas como emuladores de terminal. Por exemplo, na minha configuração típica, $SHLVLé 2 em um xterm, porque o nível 1 corresponde ao shell que executa minha sessão X ( ~/.xinitrcou ~/.xsession).
O que faço é exibir $SHLVLno meu prompt, mas apenas se o processo pai do shell for outro shell (com heurísticas como "se o nome terminar em shmais pontuação e dígitos opcionais, é um shell"). Dessa forma, tenho uma indicação visual óbvia no caso incomum de um shell executando sob outro shell.
Talvez você prefira detectar shells que estão sendo executados diretamente sob um emulador de terminal. Você pode fazer isso com bastante precisão: estas são as conchas cujo processo pai tem um terminal de controle diferente, de modo que ps -o tty= -p$$e ps -o tty= -p$PPIDproduzir uma saída diferente. Você pode redefinir manualmente SHLVLpara 1 nessas conchas ou definir seu próprio TERMSHLVLcomo 1 nessas conchas (e incrementado de outra forma).
¹
Embora ninguém ache que está olhando as páginas do manual: nenhum dos três shells que o suportam inclui a palavra “level” em sua documentação SHLVL.