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
答えは(たとえ論争的であっても)その質問には当てはまりません。