J'essaie d'écrire une fonction pour remplacer la fonctionnalité du exit
builtin pour m'empêcher de quitter le terminal.
J'ai essayé d'utiliser la SHLVL
variable d'environnement mais elle ne semble pas changer dans les sous-coquilles:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
Ma fonction est la suivante:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
Cela ne me permettra pas d'utiliser exit
dans les sous-coquilles cependant:
$ exit
Nice try!
$ (exit)
Nice try!
Quelle est la bonne méthode pour détecter si je suis ou non dans un sous-shell?
(...)
héritent de toutes les propriétés du processus parent. Les réponses fournies sont des solutions plus robustes pour déterminer votre niveau de shell.
BASH_SUBSHELL
réponse (même controversée) ne s'appliquerait pas à cette question.