Назад | Перейти на главную страницу

Как определить, сколько я могу быть глубиной?

Мне интересно, рекурсивно ли я вызывал оболочку, есть ли простой способ узнать? Есть ли какое-то решение для оболочки? Я использую bash.

echo $SHLVL

На странице руководства bash:

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 в localhost.

[sharpestmarble@sandbox ~]$ ssh localhost

Также полезно: $BASH_SUBSHELL

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