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

mascara LED serie 2 de CurrentBody

La máscara de CurrentBody es lo más tech para el cuidado de la piel

CurrentBody ha revolucionado los tratamientos estéticos desde su apuesta por la tecnología. Son un referente en los gadgets de belleza de uso doméstico, especialmente por sus máscaras LED, usadas por miles de mujeres y unas cuantas celebs. El secreto está en la tecnología LED que emplean para hidratar la piel y corregir las arrugas del

barra de sonido Bose Smart Soundbar

El sonido de la barra Bose Smart Soundbar te conquistará y te entenderá

Bose ha anunciado la nueva Bose Smart Soundbar, una barra de sonido compacta y elegante que incorpora la tecnología Dolby Atmos® y la exclusiva tecnología Bose TrueSpace, ofreciendo un audio sorprendentemente inmersivo para su tamaño. Este modelo será el más actualizado tras la Bose Smart Soundbar 600. Una de las grandes novedades se basa en

caos en el aerpuerto por CrowdStrike

CrowdStrike dio la pista para tener una protección de datos más seria

Los docentes y estrategas aseguran que las crisis deben ser vistas como lecciones y oportunidades. En el mundo digital, CrowdStrike es una término que tienen grabado a fuego muchos informáticos para evitar los errores que se produjeron que esta incidencia mundial con Windows Hagamos un repaso de todo lo que aconteció hace solo unos meses.

periféricos ROG

Llegan los últimos periféricos ROG para disfrute de los más jugones

ROG, la marca gaming de Asus no cesa en el desarrollo de productos innovadores para los amantes de los videojuegos. Su oferta comprende todo tipo de herramientas para completar un setup de primer categoría. A los monitores, ordenadores de sobremesa y portátiles hay que añadir el importante catálogo de periféricos ROG. Pocas marcas tienen un