GNU/Linux >> Tutoriales Linux >  >> Linux

¿Diferencia entre las variables de Shell que se exportan y las que no están en Bash?

Bash parece diferenciar entre las variables que se han exportado y las que no.

ejemplo:

$ FOO=BAR
$ env | grep FOO
$ set | grep FOO
FOO=BAR

set ve la variable pero env no lo hace.

$ export BAR=FOO
$ env | grep FOO
BAR=FOO
$ set | grep FOO
BAR=FOO
FOO=BAR

set ve ambas variables pero env solo ve la variable exportada.

Sé que set es un bash integrado y env no lo es.

¿Cuáles son las diferencias entre las variables que se exportan y las que no?

Respuesta aceptada:

Las variables exportadas se trasladan al entorno de los comandos ejecutados por el shell que las exportó, mientras que las variables no exportadas son locales para la invocación actual del shell. Desde la export página man:

El shell dará el atributo de exportación a las variables correspondientes a los nombres especificados, lo que hará que estén en el entorno de los comandos ejecutados posteriormente.

set genera el entorno actual, que incluye cualquier variable local no exportada. env se utiliza para iniciar programas en un nuevo entorno, y sin argumentos generará lo que sería ese nuevo entorno. Desde env está creando un nuevo entorno, solo se traen las variables exportadas, como es el caso de cualquier programa lanzado desde ese shell. Por ejemplo, generar un segundo caparazón dentro del primero (utilicé $$ para representar avisos en la capa interna):

$ FOO=BAR
$ bash
$$ echo $FOO             # Note the empty line

$$ exit
$ export FOO
$ bash
$$ echo $FOO
BAR
$$

Tenga en cuenta que es la variable la que se exporta, no solo su valor. Esto significa que una vez que export FOO , FOO se convierte en una variable global y aparece en entornos posteriores, incluso si se cambia más adelante:

$ export FOO
$ FOO=BAR
$ bash
$$ echo $FOO
BAR
$$

Linux
  1. ¿Diferencia entre Shell de inicio de sesión y Shell sin inicio de sesión?

  2. ¿Diferencia entre 'y' en la línea de comando (bash)?

  3. ¿La diferencia en el uso entre las variables de shell y las variables de entorno?

  4. ¿Cuáles son los parámetros/variables especiales de Shell (bash)?

  5. Linux:¿cuál es la diferencia entre `su -` y `su –login`?

Diferencia entre la definición de variables Bash con y sin exportación

¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

¿La diferencia entre un comando incorporado y uno que no lo es?

¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

Diferencia entre comillas simples y dobles en Bash Shell

¿Cuál es la diferencia entre una consola, una terminal y un shell?