Estoy tratando de escribir una función para reemplazar la funcionalidad del exit
incorporado para evitar que salga del terminal.
Intenté usar la SHLVL
variable de entorno pero no parece cambiar dentro de las subcapas:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
Mi función es la siguiente:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
Sin exit
embargo, esto no me permitirá usar dentro de subcapas:
$ exit
Nice try!
$ (exit)
Nice try!
¿Cuál es un buen método para detectar si estoy o no en una subshell?
(...)
heredan todas las propiedades del proceso primario. Las respuestas proporcionadas son soluciones más sólidas para determinar su nivel de shell.
BASH_SUBSHELL
respuesta (aunque controvertida) no se aplicaría a esa pregunta.