Bash: quante sessioni nidificate in profondità?


9

Supponiamo che avvii una bashshell,
... e poi un'altra bashsessione all'interno di quella shell,
... e poi un'altra bashsessione all'interno di quella sessione,
... e poi un'altra bashsessione all'interno di quella sessione,
... (volte N) ecc.

Per uscire da tutte le sessioni N devo digitare exitN volte.

Come faccio a sapere quanto profondamente sono annidato all'interno di una determinata sessione di bash?

Idealmente sto cercando alcune variabili d'ambiente simili a quelle $STYper le schermate.

Risposte:


16

Usa SHLVL. Da man bash:

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

Esempio :

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

Questo va bene, ma ho notato un leggero problema con la mia configurazione: - il mio .xinitrc avvia una shell come un normale processo, ma un altro utilizza exec(in modo che quando questo terminale si chiude, l'intera XSession termina). $SHLVLproduce due numeri diversi per questi terminali. Esiste una variabile di ambiente più specifica per la shell?
tetris11,

$BASH_SUBSHELLsembrava promettente, ma non offre.
tetris11,

1
@ tetris11Yeah..thats come SHLVLworks..check questa soluzione se si adatta ..
heemayl

1
Ah, ovviamente - è possibile impostare manualmente SHLVL=0in ~/.xinitrc. Brillante, grazie
tetris11
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.