如何确定我可能位于多少个壳深?

如何确定我可能位于多少个壳深?

我想知道我是否递归调用了 shell,有没有简单的方法可以找出答案?有没有特定于 shell 的解决方案?我正在使用 bash。

答案1

echo $SHLVL

来自 bash 手册页:

SHLVL 每次启动 bash 实例时加一。

答案2

一种方法是使用 pstree:

$ pstree -h
[...]
├─sshd─┬─sshd───sshd───bash───bash───bash───bash───bash───pstree
│      └─sshd───sshd───bash───bash───bash───bash
[...]

答案3

echo $SHLVL

如果你做类似的事情,就会发现这个问题:

[sharpestmarble@sandbox ~]$ bash 

尽管这不会捕获类似通过 SSH 进入本地主机的情况。

[sharpestmarble@sandbox ~]$ ssh localhost

答案4

同样有用:$BASH_SUBSHELL

$ echo $SHLVL
1
$ (echo $SHLVL)
1
$ echo $BASH_SUBSHELL
0
$ (echo $BASH_SUBSHELL)
1
$ ( (echo $BASH_SUBSHELL) )
2

相关内容