Я пытаюсь написать функцию, чтобы заменить функциональность 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
ответ (даже если спорный) не будет применяться к этому вопросу.