Le $SHLVL
variable suit le niveau d'imbrication de votre shell :
$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ exit
$ echo $SHLVL
1
Au lieu de générer des sous-shells, vous pouvez pousser et faire apparaître des répertoires de la pile et rester dans le même shell :
[[email protected] /old/dir]# pushd /new/dir
/new/dir /old/dir
[[email protected] /new/dir]# popd
/old/dir
[[email protected] /old/dir]#
Voici une version simplifiée d'une partie de mon invite :
PS1='$(((SHLVL>1))&&echo $SHLVL)\$ '
Si je ne suis pas dans un shell imbriqué, cela n'ajoute rien de plus, mais cela montre la profondeur si je suis dans n'importe quel niveau d'imbrication.
Regardez $0
:s'il commence par moins -
, vous êtes dans le shell de connexion.