Я намагаюся написати функцію для заміни функціональності exit
вбудованого, щоб не допустити виходу з терміналу.
Я спробував використовувати SHLVL
змінну середовища, але вона, схоже, не змінюється в межах підрозділів:
$ echo $SHLVL
1
$ ( echo $SHLVL )
1
$ bash -c 'echo $SHLVL'
2
Моя функція полягає в наступному:
exit () {
if [[ $SHLVL -eq 1 ]]; then
printf '%s\n' "Nice try!" >&2
else
command exit
fi
}
Це не дозволить мені використовувати exit
в межах підрозділів:
$ exit
Nice try!
$ (exit)
Nice try!
Який хороший метод виявити, перебуваю чи ні в підкашрі?
(...)
успадковують усі властивості батьківського процесу. Надані відповіді - більш надійні рішення для визначення рівня вашої оболонки.
BASH_SUBSHELL
відповідь (навіть якщо спірна) не стосуватиметься цього питання.