linux – 我如何知道我是否运行一个嵌套的shell?

当使用* nix shell(通常为bash)时,我经常产生一个子shell,通过它我可以处理一个小任务(通常在另一个目录中),然后退出来恢复父shell的会话。

有一段时间,我会失去我是运行一个嵌套的shell,还是在我的顶级shell,我会不小心产生一个额外的子shell或错误地退出顶层shell 。

有一个简单的方法来确定我是否在一个嵌套的shell中运行?或者我是以一个完全错误的方式去讨论我的问题(通过产生子壳)?

最佳答案
$ SHLVL变量跟踪您的shell嵌套级别:

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ exit
$ echo $SHLVL
1

作为生成子shell的替代方法,你可以从栈中推送和弹出目录,并保持在同一个shell中:

[root@localhost /old/dir]# pushd /new/dir
/new/dir /old/dir
[root@localhost /new/dir]# popd
/old/dir
[root@localhost /old/dir]#

转载注明原文:linux – 我如何知道我是否运行一个嵌套的shell? - 代码日志