Cómo usar la variable $SHLVL para mostrar el nivel de Shell

Cómo usar la variable $SHLVL para mostrar el nivel de Shell

Cómo usar la variable $SHLVL para mostrar el nivel de Shell

VALORACIÓN DEL ARTÍCULO:
5/5


La variable $SHLVL se utiliza para decirle cuántas conchas de profundidad tiene. Si estás confundido por esto, vale la pena empezar por el principio.

Índice de contenidos

¿Qué es una concha?

Un shell toma comandos y los da al sistema operativo subyacente para que los ejecute. En la mayoría de los sistemas Linux el programa de shell se llama BASH (The Bourne Again Shell) pero hay otros disponibles incluyendo el Shell C (tcsh) y el shell KORN (ksh).

Cómo acceder a la shell de Linux

Generalmente, como usuario, usted interactúa con el programa shell a través del uso de un programa de emulación de terminal como XTerm, konsole o gnome-terminal.

Si está ejecutando un gestor de ventanas como Openbox o un entorno de escritorio como GNOME o KDE encontrará un emulador de terminal desde un menú o un guión. En muchos sistemas, el acceso directo CTRL ALT y T también abrirá una ventana de terminal.

Alternativamente, puede cambiar a otro TTY (teletipo) que proporciona acceso directo a un shell de línea de comandos. Puede hacerlo pulsando CTRL ALT y F1 o CTRL ALT y F2, etc.

Qué es un nivel de Shell

Cuando ejecuta un comando en un shell, se ejecuta en algo llamado el nivel de shell. Dentro de una shell, puede abrir otra shell que la convierte en una subshell o en la shell que la abrió.

Por lo tanto, la shell madre sería considerada quizás la shell de nivel 1 y la shell hija sería una shell de nivel 2.

Cómo mostrar el nivel de Shell

No debería ser una sorpresa basado en el título de la variable $SHLVL para saber en qué nivel de shell se está ejecutando.

Para ver el nivel de shell en el que se está ejecutando actualmente, escriba lo siguiente:

echo $SHLVL>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>»»»>>>>>>>>>>>>»»»»>>>)

De manera interesante, si ejecuta el comando anterior dentro de una ventana de terminal, puede sorprenderse al ver que el resultado devuelto es 2.

Sin embargo, si ejecuta el mismo comando usando la tty, el resultado es 1.

¿Por qué es este el caso que usted podría preguntar? Bueno, el entorno de escritorio que está ejecutando se está ejecutando en la parte superior de un intérprete de comandos. Ese proyectil sería de nivel 1. Cualquier ventana de terminal que abra desde ese entorno de escritorio debe ser hija de la shell que abrió el entorno de escritorio y, por lo tanto, el nivel de shell no puede comenzar con ningún otro número que no sea 2.

El tty no está ejecutando un entorno de escritorio y por lo tanto es simplemente un shell de nivel 1.

Cómo crear subconjuntos

La manera más fácil de probar el concepto de shells y subshells es la siguiente. Abra una ventana de terminal y escriba lo siguiente:

echo $SHLVL>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>»»»>>>>>>>>>>>>»»»»>>>)

Como sabemos por una ventana de terminal el nivel mínimo de shell es 2.

Ahora, en la ventana del terminal, escriba lo siguiente:

sh

El comando sh por sí solo ejecuta un shell interactivo, lo que significa que está usando un shell dentro de un shell o subshell.

Si ahora escribe esto de nuevo:

echo $SHLVL>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>»»»>>>>>>>>>>>>»»»»>>>)

Verá que el nivel de shell está ajustado a 3. Ejecutando el comando sh desde dentro de la subcarpeta se abrirá una subcarpeta de la subcarpeta y así el nivel de la misma estará en el nivel 4.

¿Por qué es importante el nivel de Shell?

El nivel de shell es importante cuando se piensa en el alcance de las variables dentro de sus scripts.

Empecemos con algo simple:

dog=maisie
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>""">>>>>>>>>>>>>>>>>>>>>""">>">))))echo $dog

Si ejecuta el comando anterior en un shell, la palabra maisie se mostrará en la ventana del terminal.

Abra una nueva shell escribiendo lo siguiente:

sh

Si ejecuta este comando, verá que no se devuelve nada:

echo $dog

Esto se debe a que la variable $dog sólo está disponible en el nivel de shell 2. Si escribe exit para salir del subshell y ejecutar echo $dog de nuevo, la palabra maisie se mostrará de nuevo.

También vale la pena pensar en el comportamiento de las variables globales dentro de una concha.

Comience en una nueva ventana de terminal y escriba lo siguiente:

perro de exportación=maisie
echo $dog

Como es de esperar, se muestra la palabra maisie. Ahora abra un subshell y vuelva a escribir echo $dog. Esta vez verá que la palabra maisie se muestra aunque usted se encuentre en un subshell.

La razón de esto es que el comando export hizo que la variable $dog fuera global. Cambiar la variable $dog dentro de la subshell incluso si usa el comando export no afecta a sus shells padre.

Esperamos que a partir de esto pueda ver que conocer el nivel de shell en el que está trabajando tiene cierta importancia a la hora de escribir scripts.

Los ejemplos que he dado son muy simplistas, pero es muy común que un script de shell llame a otro script de shell que a su vez llama a otro script de shell, todos ellos ejecutándose en diferentes niveles. Conocer el nivel de shell puede ser muy importante.

TAMBIÉN TE INTERESA

Nothing Phone (3)

Otra vez que nos deja en shock: se presenta el Nothing Phone (3)

Siempre causa mucha expectativa el lanzamiento de productos por parte de quien suele hacer las cosas diferentes. Y ese alguien en la industria de los smartphones es Nothing. Tecnonautas siempre ha seguido muy de cerca todo lo que ha salido de esta firma, simplemente por funcionar y por ser diferente al resto. Y ahora llega

Inteligencia Artificial Generativa y deporte

Inteligencia Artificial Generativa y deporte: una relación que va tomando forma…

El deporte, tradicionalmente anclado en la emoción del directo en la televisión en directo en los estadios, está entrando en una nueva era digital, profundamente influenciada por la inteligencia artificial (IA). Inteligencia Artificial Generativa y deporte están yendo de la mano y es la relación del momento para las generaciones jóvenes. Así lo concluye el

vivo X200 FE

Vivo X200 FE: fuera caretas con esta nueva gama alta

La marca vivo, siempre muy identificada con móviles accesibles, se quita la carea para presentar el nuevo vivo X200 FE, un dispositivo que busca conquistar a los usuarios que quieren rendimiento premium sin renunciar a la comodidad. Con una cámara desarrollada junto a ZEISS, batería de larga duración, una pantalla de alto nivel y un

videovigilancia camara AOV PT

La cámara AOV PT: un motivo para irse tranquilo de vacaciones

El verano es sinónimo de descanso, desconexión y viajes. Pero también de preocupación y seguro que las siglas de la cámara AOV PT ayudan a combatir ese sentimiento. Casas vacías, negocios con menos actividad y propiedades que quedan fuera del radar diario se convierten en un blanco fácil para robos o actos vandálicos. En este