我想知道我是否recursion调用shell,有没有一种简单的方法来找出? 是否有特定于shell的解决scheme? 我正在使用bash。
echo $SHLVL
从bash的manpage:
SHLVL每次启动一个bash实例时,都会增加一个。
一种方法是使用pstree:
$ pstree -h [...] ├─sshd─┬─sshd───sshd───bash───bash───bash───bash───bash───pstree │ └─sshd───sshd───bash───bash───bash───bash [...]
echo $SHLVL
如果你做了这样的事情,这将被捕获:
[sharpestmarble@sandbox ~]$ bash
虽然这不会像如果你SSH到本地主机。
[sharpestmarble@sandbox ~]$ ssh localhost
也很有用: $BASH_SUBSHELL
$ echo $SHLVL 1 $ (echo $SHLVL) 1 $ echo $BASH_SUBSHELL 0 $ (echo $BASH_SUBSHELL) 1 $ ( (echo $BASH_SUBSHELL) ) 2