Wie kann ich feststellen, wie viele Muscheln ich tief sein könnte?


7

Ich frage mich, ob ich die Shell rekursiv aufgerufen habe. Gibt es eine einfache Möglichkeit, dies herauszufinden? Ist eine Lösung spezifisch für die Shell? Ich benutze Bash.

Antworten:


19
echo $SHLVL

Aus der Bash-Manpage:

SHLVL Wird bei jedem Start einer Bash-Instanz um eins erhöht.


Ah, da ist es!
CGP

2
Ich denke, es wäre Zeitverschwendung, die übergeordnete Prozess-ID rekursiv zu überprüfen, oder?
Sangretu

1
Das Überprüfen des übergeordneten Prozesses hat den Vorteil, dass er für jede Shell funktioniert.
Brian-Brasilien

6

Eine Möglichkeit ist die Verwendung von pstree:

$ pstree -h
[...]
├─sshd─┬─sshd───sshd───bash───bash───bash───bash───bash───pstree
      └─sshd───sshd───bash───bash───bash───bash
[...]

2
echo $SHLVL

Dies fängt an, wenn Sie etwas tun wie:

[sharpestmarble@sandbox ~]$ bash 

Obwohl das so etwas nicht fängt, wenn Sie SSH in localhost.

[sharpestmarble@sandbox ~]$ ssh localhost

1

Auch nützlich: $BASH_SUBSHELL

$ echo $SHLVL
1
$ (echo $SHLVL)
1
$ echo $BASH_SUBSHELL
0
$ (echo $BASH_SUBSHELL)
1
$ ( (echo $BASH_SUBSHELL) )
2
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.