Il $SHLVL
variabile tiene traccia del livello di nidificazione della shell:
$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ exit
$ echo $SHLVL
1
In alternativa alla generazione di sub-shell, potresti spingere e estrarre le directory dallo stack e rimanere nella stessa shell:
[[email protected] /old/dir]# pushd /new/dir
/new/dir /old/dir
[[email protected] /new/dir]# popd
/old/dir
[[email protected] /old/dir]#
Ecco una versione semplificata di parte del mio prompt:
PS1='$(((SHLVL>1))&&echo $SHLVL)\$ '
Se non sono in una shell nidificata, non aggiunge nulla in più, ma mostra la profondità se mi trovo in qualsiasi livello di nidificazione.
Guarda $0
:se inizia con meno -
, sei nella shell di login.