J'essaie d'écrire une fonction pour remplacer la fonctionnalité du exitbuiltin pour m'empêcher de quitter le terminal.
J'ai essayé d'utiliser la SHLVLvariable 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 exitdans 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_SUBSHELLréponse (même controversée) ne s'appliquerait pas à cette question.