Cuál es la diferencia entre:
a=b
y
export a=b
En bash?
Entiendo que ambos definen variables de entorno, pero no entiendo completamente la diferencia.
Cuál es la diferencia entre:
a=b
y
export a=b
En bash?
Entiendo que ambos definen variables de entorno, pero no entiendo completamente la diferencia.
Respuestas:
export
propaga la variable a subprocesos.
Por ejemplo, si lo hiciste
FOO=bar
entonces un subproceso que verificó FOO no encontraría la variable mientras que
export FOO=bar
permitiría que el subproceso lo encuentre.
Pero si FOO
ha ya sido definida como una variable de entorno, a continuación, FOO=bar
modificará el valor de esa variable de entorno.
Por ejemplo:
FOO=one # Not an environment variable
export FOO # Now FOO is an environment variable
FOO=two # Update the environment variable, so sub processes will see $FOO = "two"
Los depósitos más antiguos no admitían la export FOO=bar
sintaxis; Tuviste que escribir FOO=bar; export FOO
.
export
", no está definiendo una variable de entorno, sino solo una variable de shell. Las variables de shell solo están disponibles para el proceso de shell; Las variables de entorno están disponibles para cualquier proceso posterior, no solo shells. Además, los subshells son comandos contenidos entre paréntesis, que tienen acceso a las variables de shell, mientras que de lo que estás hablando son procesos secundarios que resultan ser shells.
Además, si desea tener la variable disponible para el shell de llamada sin usar exportar, puede hacer esto:
El archivo a.ksh es -
#!/bin/ksh
FOO=bar
En el indicador, ejecute esto es
> . a.ksh
Esto ejecutará los comandos dentro del mismo shell y $ FOO estará disponible.
Mientras,
> a.ksh
Hará que $ FOO esté disponible solo dentro de a.ksh, después de la llamada a a.ksh no existiría.
Además de lo que ya se ha respondido, ambas afirmaciones no definen necesariamente (es decir, crear frente a establecer) una variable de entorno, ya que "a" ya podría existir como un shell o variable de entorno.
En el último caso, ambas declaraciones son estrictamente equivalentes.