Bash: ¿Cuántas sesiones anidadas de profundidad?


9

Digamos que comienzo un bashshell,
... y luego otra bashsesión desde dentro de ese shell,
... y luego otra bashsesión desde dentro de esa sesión,
... y luego otra bashsesión desde dentro de esa sesión,
... (veces N), etc.

Para salir de todas las sesiones N tengo que escribir exitN veces.

¿Cómo puedo saber qué tan profundo estoy anidado dentro de una sesión de bash determinada?

Idealmente, estoy buscando alguna variable de entorno similar a las $STYsesiones de pantalla.

Respuestas:


16

Uso SHLVL. De man bash:

SHLVL  Incremented by one each time an instance of bash is started.

Ejemplo:

$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3

Esto es bueno, pero he notado un pequeño problema con mi configuración: - mi .xinitrc inicia un shell como un proceso normal, pero otro uso exec(de modo que cuando este terminal se cierra, la XSession completa termina). $SHLVLproduce dos números diferentes para estos terminales. ¿Existe una variable de entorno que sea más específica de shell?
tetris11

$BASH_SUBSHELLParecía prometedor, pero no cumple.
tetris11

1
@ tetris11 Sí ... así es cómo funciona ... SHLVLcompruebe esta solución si encaja ...
heemayl

1
Ah, por supuesto - que puedo configurar manualmente SHLVL=0en ~/.xinitrc. Brillante, gracias
tetris11
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.