Sto cercando di scrivere una funzione per sostituire la funzionalità del exit
builtin per impedirmi di uscire dal terminale.
Ho tentato di utilizzare la SHLVL
variabile d'ambiente ma non sembra cambiare all'interno dei subshells:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
La mia funzione è la seguente:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
Questo non mi permetterà di usare exit
all'interno dei subshells però:
$ exit
Nice try!
$ (exit)
Nice try!
Qual è un buon metodo per rilevare se sono o meno in una subshell?
(...)
ereditano tutte le proprietà del processo parent. Le risposte fornite sono soluzioni più solide per determinare il livello della shell.
BASH_SUBSHELL
risposta (anche se controversa) non si applica a quella domanda.