Bash: Quantas sessões aninhadas têm profundidade?


9

Digamos que eu inicie um bashshell,
... e depois outra bashsessão dentro desse shell,
... e então outra bashsessão dentro dessa sessão,
... e depois outra bashsessão dentro dessa sessão,
... (vezes N) etc

Para sair de todas as N sessões, tenho que digitar exitN vezes.

Como descubro até que ponto estou aninhado em qualquer sessão do bash?

Idealmente, estou procurando alguma variável de ambiente semelhante à $STYdas sessões de tela.

Respostas:


16

Use SHLVL. De man bash:

SHLVL  Incremented by one each time an instance of bash is started.

Exemplo:

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3

Isso é bom, mas notei um pequeno problema com minha configuração: - meu .xinitrc inicia um shell como um processo regular, mas outro usando exec(para que, quando este terminal for fechado, o XSession inteiro termine). $SHLVLproduz dois números diferentes para esses terminais. Existe uma variável de ambiente mais específica do shell?
precisa saber é o seguinte

$BASH_SUBSHELLparecia promissor, mas não entrega.
Tetris11

1
@ tetris11Yeah..thats como SHLVLworks..check esta solução, se ele se encaixa ..
heemayl

1
Ah, é claro - eu posso definir manualmente SHLVL=0em ~/.xinitrc. Brilliant, graças
tetris11
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.