GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Woher weiß ich, ob ich eine verschachtelte Shell ausführe?

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.


Linux
  1. Wie kann man Umgebungsvariablen „exportiert“ in einem Shell-Skript bleiben lassen?

  2. Auf welcher Shell laufe ich?

  3. Wie überprüfe ich den Fortschritt des Laufens von Cp?

  4. Woher weiß ich, ob mein Linux-Kernel in 32-Bit oder 64-Bit läuft?

  5. Wie kann ich den absoluten Pfad eines laufenden Prozesses erfahren?

So aktivieren Sie die verschachtelte Virtualisierung in VirtualBox

So ändern Sie eine Benutzer-Shell in Linux

Wie verwende ich if-else in Shell-Skripten?

Wie führe ich einen Befehl in einem Shell-Skript aus?

Shell-Skript parallel ausführen

So überprüfen Sie, ob die aktuell ausgeführte Shell BusyBox ist