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.

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.