我正在尝试编写一个函数来替换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
在子shell中使用:
$ exit
Nice try!
$ (exit)
Nice try!
有什么好的方法可以检测我是否在子外壳中?
3
stackoverflow.com/questions/4511407/...
—
K7AAY
—
mosvy
@mosvy我觉得那是一个不同的问题。例如,
—
Sparhawk
BASH_SUBSHELL
答案(即使是有争议的)也不适用于该问题。
在HNQ上看到标题,并认为这是一个量子力学问题……
—
Mehrdad