Ich versuche, eine Funktion zu schreiben, die die Funktionalität des exit
eingebauten Moduls ersetzt, um zu verhindern, dass ich das Terminal verlasse.
Ich habe versucht, die SHLVL
Umgebungsvariable zu verwenden, aber sie scheint sich innerhalb von Subshells nicht zu ändern:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
Meine Funktion ist wie folgt:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
Dies erlaubt mir jedoch nicht, exit
innerhalb von Subshells zu arbeiten:
$ exit
Nice try!
$ (exit)
Nice try!
Was ist eine gute Methode, um festzustellen, ob ich in einer Unterschale bin oder nicht?
(...)
alle Eigenschaften des übergeordneten Prozesses. Die Antworten sind robustere Lösungen zur Bestimmung Ihres Shell-Levels.
BASH_SUBSHELL
Antwort (auch wenn sie umstritten ist) nicht auf diese Frage zutreffen.