Cómo definir una variable con o sin exportación en Bash

Cómo definir una variable con o sin exportación en Bash

Bash es un lenguaje de secuencias de comandos popular utilizado para automatizar tareas y trabajar con la interfaz de línea de comandos. Una de las características centrales de Bash es la capacidad de definir variables, que se pueden usar para almacenar valores y pasarlas entre diferentes comandos o scripts. Sin embargo, al definir variables en Bash, uno debe ser claro sobre la diferencia entre definir una variable con o sin la palabra clave de exportación.

Siga las pautas de este artículo para aprender a definir una variable con o sin exportación en Bash.

Definir una variable sin exportación en Bash

La definición de una variable sin exportación lo convierte en una variable local a la que solo se puede acceder dentro de la sesión o script de shell actual, lo que significa que la variable no puede ser accedida por procesos o scripts infantiles que se llaman desde el script actual. Las variables locales son útiles al almacenar valores temporales que solo se necesitan dentro de una parte específica de un script, por ejemplo, digamos que tiene un script que define una variable llamada My_var sin exportación:

#!/bin/bash
My_var = "Hola, Linux!"
echo $ my_var
./child_script.mierda


En este caso, My_var es una variable local y solo es accesible dentro del script actual. Cuando se ejecuta el script, se imprime "Hola, Linux!" a la consola, pero cuando llama a la guión infantil (./child_script.sh), el guión infantil no puede acceder al valor de My_var.


En la imagen de arriba, se puede ver claramente que cuando se llama el script infantil no puede acceder al valor variable y devuelve una línea vacía en lugar de la salida del archivo de script.

Definición de una variable con exportación en Bash

Por otro lado, definir una variable con la palabra clave de exportación lo convierte en una variable de entorno. Las variables de entorno son accesibles para todos los procesos infantiles que se generan desde la sesión o script actual. Esto significa que la variable se puede usar en diferentes scripts o comandos que se llaman desde el script actual, así que consideremos el mismo script, pero con My_var definido con exportación:

#!/bin/bash
Exportar my_var = "Hola, Linux!"
echo $ my_var
./child_script.mierda


En este caso, My_var es una variable de entorno y es accesible para todos los procesos infantiles que se generan desde la sesión o script actual. Cuando se ejecuta el script, se imprime "Hola, Linux!" a la consola, y cuando llame al guión infantil ./child_script.mierda, el guión infantil puede acceder al valor de My_var.


En la imagen de arriba, se puede ver claramente que cuando se llama al guión infantil, accedió al valor variable y devolvió el valor que fue "Hola, Linux".

Nota: Aquí en el código de ejemplo, he creado el script infantil que llama a la variable en el script principal, por lo que aquí está el código de shell para el script infantil: además, debe hacer que el archivo de script sea ejecutable utilizando el "Chmod +X" comando para que pueda ejecutar el script.

#!/bin/bash
echo $ my_var

Conclusión

Cuando se trabaja con variables en Bash, es importante comprender el alcance de la variable. La definición de una variable sin exportación lo convierte en una variable local a la que solo se puede acceder dentro de la sesión o script de shell actual, mientras que definir una variable con exportación lo convierte en una variable de entorno a la que se puede acceder a todos los procesos infantiles que están generados desde la sesión o script actual.