¿Qué es Subshell en Linux?

¿Cómo va eso? soy Kiko. Os traigo un nuevo post sobre el sistema operativo mas molón. Un placer linuxeros.

Ya conoces el caparazón. Este es un programa que le permite ejecutar comandos en Linux. Su interacción principal con el shell es cuando ejecuta comandos en una terminal.

Tarde o temprano se encontrará con un término llamado «socavado» y esto puede confundirlo.

¿Qué hay debajo del caparazón?

Es esencialmente un nuevo shell, solo para iniciar el programa deseado. Bajo el shell, puede acceder a las variables globales establecidas por el «shell padre», pero no a las variables locales. Todos los cambios realizados desde un sub-shell a una variable global no se pasan al shell padre.

¿Hay alguna lógica en esto? Probablemente no. Permítanme explicar las cosas en detalle con ejemplos.

Aquí hay un script de una sola línea que muestra el valor de la variable ‘var’.

echo $var

Establecí el valor de esta variable en LHB, ¿qué crees que se mostrará al ejecutar el script?

Las variables locales del shell no estarán disponibles en el shell sumergido.

¡Sorpresa! El script no ve el valor de la variable. var Lo había configurado antes.

Scripts de shell ejecutados en la subcorteza (predeterminado)

¿Por qué? Porque cuando ejecuta un script de shell, choca con su propio shell. Debido a que este shell proviene de otro shell (donde establece la variable y donde ejecuta el script), se llama sub shell.

El script de shell no pudo ver el valor de la variable porque era una variable local y no era conocida por el shell recién creado. Si desea que la variable sea accesible desde sus subconjuntos, deberá usar el comando de exportación y convertirlo en una variable global.

Exportar una variable la hace global y accesible en un sub-shell

También puede crear una subcapa iniciando nuevas conchas a partir de sus conchas existentes. Solo corre bash y estarás subrayado. Puede utilizar el comando exit para cerrar / salir del shell y volver al shell original.

Mover a la subclase y luego salir

No piense en el contenedor como una nueva ventana de terminal. Sé que es difícil de visualizar, pero es cierto.

Usé la variable para mostrar la diferencia entre los dos caparazones (padre y caparazón). La variable var no se exportó en este caso y, por lo tanto, la filial no lo conocía.

Subconchas incrustadas

De la misma manera puedes crear panqueques anidados. Una vez que se exporta una variable, permanece exportada a todos los subconjuntos creados posteriormente.

Puede cambiar el valor de la variable exportada en el subconjunto. El valor modificado se pasará a los siguientes subconjuntos (ya que la variable en sí es global), pero si sale de él y regresa al shell original, se conserva el valor original.

¿Por qué? Porque el valor de la variable exportada se copia debajo del shell. Y esta es la copia que está cambiando (de LHB a HOC). El valor original sigue siendo el mismo en el shell padre.

Así que tenlo en mente, no hay forma de cambiar el valor de una variable en el shell padre desde el shell interno. No importa si exporta la variable o no, la variable no se cambiará en el shell padre.

¿Qué es un Shell de inicio de sesión de Linux?

Probablemente conozca el shell en Linux. Aquí ingresa comandos y ejecuta programas. Pero, ¿qué es este caparazón de entrada y en qué se diferencia del caparazón ordinario?

Consejo adicional: ejecute un script de shell en el shell actual

El comportamiento normal es que el script de shell se ejecute en su propio shell, es decir.

Puede cambiar este comportamiento y ejecutar un script de shell en el shell actual, gracias al comando de shell incorporado llamado punto (.).

No, esto no es lo mismo que ejecutar un script de shell como este ./script. En su lugar, ejecútelo de la siguiente manera:

. script

De esta manera, los comandos en el script son ejecutados por el shell actual, como si fueran ingresados ​​en un terminal, en lugar de ser ejecutados por un script en un sub shell. De esta forma los scripts tienen acceso a las variables locales.

Creo que esta es información suficientemente buena sobre la subcapa de Linux.

¿Lo entiendes mejor ahora o estás más confundido que nunca? No dude en comentar como miembro de LHB.

Este Blog lo escribimos para ayudar y servir de ayuda a la comunidad Linux. Esperamos que os guste.

Leave a Reply