当使用* nix外壳程序(通常是bash)时,我经常产生一个子外壳程序,可以用它处理一个小任务(通常在另一个目录中),然后退出该外壳程序以继续父外壳程序的会话。
偶尔,我会失去对运行嵌套shell还是在顶层shell中的跟踪,并且会不小心产生其他的子shell或错误地退出顶层shell。 。
有没有一种简单的方法可以确定我是否在嵌套shell中运行?还是我以完全错误的方式解决问题(通过生成子壳)?
该$SHLVL变量跟踪您的外壳嵌套级别:
$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]#