Ich versuche, eine Funktion zu schreiben, die die Funktionalität des exiteingebauten Moduls ersetzt, um zu verhindern, dass ich das Terminal verlasse.
Ich habe versucht, die SHLVLUmgebungsvariable 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, exitinnerhalb 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_SUBSHELLAntwort (auch wenn sie umstritten ist) nicht auf diese Frage zutreffen.