Estou tentando escrever uma função para substituir a funcionalidade do exit
built-in para me impedir de sair do terminal.
Eu tentei usar a SHLVL
variável de ambiente, mas ela não parece mudar nos subshells:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
Minha função é a seguinte:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
Isso não permitirá que eu use exit
dentro de subshells:
$ exit
Nice try!
$ (exit)
Nice try!
Qual é um bom método para detectar se estou ou não em um subshell?
(...)
herdam todas as propriedades do processo pai. As respostas fornecidas são soluções mais robustas para determinar o nível do seu shell.
BASH_SUBSHELL
resposta (mesmo que controversa) não se aplicaria a essa pergunta.