Posible duplicado:
diferencia entre "a = b" y "exportar a = b" en bash
Es difícil de admitir, pero nunca he entendido realmente qué export
hace exactamente a una variable de entorno. Sé que si no exporto una variable, a veces no puedo verla en los procesos secundarios, pero a veces parece que sí puedo. ¿Qué está pasando realmente cuando digo
export foo=5
y cuando no debo exportar una variable?
bash
export
shell-script
Chas Owens
fuente
fuente
export
declaraciones a .bashrc / .bash_profile para crear variables globales persistentes similares a$HOME
.Respuestas:
De
man bash
:fuente
Las variables exportadas se pasan a los procesos secundarios, las variables no exportadas no.
fuente
PYTHONPATH
) y luego notando que, aunque puedeecho $PYTHONPATH
, Python o Bash no lo reconoce hasta que ustedexport
lo haga$BASHPID
) y, sin embargo, puede leer variables no exportadas desde la shell principal. Prueba simple:x="y"; echo "$BASHPID: $x"; (echo "$BASHPID: $x")
supongo que este es un caso especial que ocurre cuando el proceso secundario es un subconjunto.Cuando lo usa
export
, está agregando la variable a la lista de variables de entorno del shell en el que se llamó al comando de exportación y todas las variables de entorno de un shell se pasan a los procesos secundarios, por eso puede usarlo.Cuando finaliza el shell, su entorno se destruye, por eso las variables de entorno se declaran y exportan al iniciar sesión, por ejemplo, en el archivo .bashrc
fuente