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.
bash
shell
process
environment-variables
Adam Matan
fuente
fuente
Respuestas:
export
propaga la variable a subprocesos.Por ejemplo, si lo hiciste
entonces un subproceso que verificó FOO no encontraría la variable mientras que
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:
Los depósitos más antiguos no admitían la
export FOO=bar
sintaxis; Tuviste que escribirFOO=bar; export FOO
.fuente
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.Si no usa
export
, no está definiendo una variable de entorno; 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.
fuente
Además, si desea tener la variable disponible para el shell de llamada sin usar exportar, puede hacer esto:
El archivo a.ksh es -
En el indicador, ejecute esto es
Esto ejecutará los comandos dentro del mismo shell y $ FOO estará disponible.
Mientras,
Hará que $ FOO esté disponible solo dentro de a.ksh, después de la llamada a a.ksh no existiría.
fuente
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.
fuente