cgp Asked: 2009-06-16 10:42:13 +0800 CST2009-06-16 10:42:13 +0800 CST 2009-06-16 10:42:13 +0800 CST 如何确定我可能有多少贝壳? 772 我想知道我是否递归地调用了shell,有没有一种简单的方法可以找到?是否有特定于外壳的解决方案?我正在使用 bash。 scripting bash 4 个回答 Voted Best Answer brian-brazil 2009-06-16T10:46:40+08:002009-06-16T10:46:40+08:00 echo $SHLVL 从 bash 手册页: SHLVL 每次启动 bash 实例时递增 1。 rkthkr 2009-06-16T10:50:00+08:002009-06-16T10:50:00+08:00 一种方法是使用 pstree: $ pstree -h [...] ├─sshd─┬─sshd───sshd───bash───bash───bash───bash───bash───pstree │ └─sshd───sshd───bash───bash───bash───bash [...] Kevin M 2009-06-16T10:48:07+08:002009-06-16T10:48:07+08:00 echo $SHLVL 如果您执行以下操作,这将捕获: [sharpestmarble@sandbox ~]$ bash 尽管如果您通过 SSH 连接到本地主机,那将无法捕捉到类似的东西。 [sharpestmarble@sandbox ~]$ ssh localhost Dennis Williamson 2009-06-17T11:40:58+08:002009-06-17T11:40:58+08:00 也很有用:$BASH_SUBSHELL $ echo $SHLVL 1 $ (echo $SHLVL) 1 $ echo $BASH_SUBSHELL 0 $ (echo $BASH_SUBSHELL) 1 $ ( (echo $BASH_SUBSHELL) ) 2
从 bash 手册页:
一种方法是使用 pstree:
如果您执行以下操作,这将捕获:
尽管如果您通过 SSH 连接到本地主机,那将无法捕捉到类似的东西。
也很有用:
$BASH_SUBSHELL