Bash: Combien de sessions imbriquées en profondeur?

9

Disons que je démarre un bashshell,
... puis une autre bashsession à partir de ce shell,
... puis une autre bashsession à partir de cette session,
... puis une autre bashsession à partir de cette session,
... (fois N), etc.

Pour quitter toutes les N sessions, je dois taper exitN fois.

Comment savoir à quelle profondeur je suis imbriqué dans une session bash donnée?

Idéalement, je recherche une variable d'environnement similaire à celle $STYdes sessions d'écran.

tetris11
la source

Réponses:

16

Utilisez SHLVL. De man bash:

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

Exemple :

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3
heemayl
la source
C'est bien, mais j'ai remarqué un léger problème avec ma configuration: - mon .xinitrc démarre un shell comme un processus normal, mais un autre en utilisant exec(de sorte que lorsque ce terminal se ferme, toute la XSession se termine). $SHLVLproduit deux numéros différents pour ces terminaux. Existe-t-il une variable d'environnement plus spécifique au shell?
tetris11
$BASH_SUBSHELLsemblait prometteur, mais ne tient pas.
tetris11
1
@ tetris11Yeah..thats how SHLVLworks..check this solution if it fits ..
heemayl
1
Ah, bien sûr - je peux régler manuellement SHLVL=0dans ~/.xinitrc. Brillant, merci
tetris11