一尘不染

我如何知道我是否正在运行嵌套外壳程序?

linux

当使用*
nix外壳程序(通常是bash)时,我经常产生一个子外壳程序,可以用它处理一个小任务(通常在另一个目录中),然后退出该外壳程序以继续父外壳程序的会话。

偶尔,我会失去对运行嵌套shell还是在顶层shell中的跟踪,并且会不小心产生其他的子shell或错误地退出顶层shell。 。

有没有一种简单的方法可以确定我是否在嵌套shell中运行?还是我以完全错误的方式解决问题(通过生成子壳)?


阅读 203

收藏
2020-06-07

共1个答案

一尘不染

$SHLVL变量跟踪您的外壳嵌套级别:

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

作为生成子外壳程序的替代方法,您可以从堆栈中推送和弹出目录,并保留在同一外壳程序中:

[root@localhost /old/dir]# pushd /new/dir
/new/dir /old/dir
[root@localhost /new/dir]# popd
/old/dir
[root@localhost /old/dir]#
2020-06-07