Próbuję napisać funkcję, która zastąpi funkcjonalność exit
wbudowanego systemu, aby uniemożliwić mi wyjście z terminala.
Próbowałem użyć SHLVL
zmiennej środowiskowej, ale wydaje się, że nie zmienia się w podpowłokach:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
Moja funkcja jest następująca:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
Nie pozwoli mi to jednak korzystać z exit
podpowłok:
$ exit
Nice try!
$ (exit)
Nice try!
Jaka jest dobra metoda wykrywania, czy jestem w podpowłoce?
(...)
dziedziczą wszystkie właściwości procesu nadrzędnego. Podane odpowiedzi są bardziej niezawodnymi rozwiązaniami do określania poziomu powłoki.
BASH_SUBSHELL
odpowiedź (nawet jeśli jest kontrowersyjna) nie dotyczyłaby tego pytania.