我正在尝试编写一个函数来替换exit
内置函数的功能,以防止自己退出终端。
我试图使用SHLVL
环境变量,但它似乎在子shell中没有改变:
$ 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
在子shell中使用:
$ exit
Nice try!
$ (exit)
Nice try!
检测我是否在子shell中的好方法是什么?