Der $SHLVL
Variable verfolgt Ihre Shell-Verschachtelungsebene:
$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ exit
$ echo $SHLVL
1
Als Alternative zum Spawnen von Sub-Shells könnten Sie Verzeichnisse aus dem Stack verschieben und in derselben Shell bleiben:
[[email protected] /old/dir]# pushd /new/dir
/new/dir /old/dir
[[email protected] /new/dir]# popd
/old/dir
[[email protected] /old/dir]#
Hier ist eine vereinfachte Version eines Teils meiner Eingabeaufforderung:
PS1='$(((SHLVL>1))&&echo $SHLVL)\$ '
Wenn ich mich nicht in einer verschachtelten Shell befinde, fügt es nichts hinzu, aber es zeigt die Tiefe an, wenn ich mich in irgendeiner Verschachtelungsebene befinde.
Sehen Sie sich $0
an :wenn es mit einem Minus -
beginnt , Sie befinden sich in der Login-Shell.