Este es un extracto de la página man de Bash:
exportar [-fn] [nombre[=palabra]] ...
exportar -p
Los nombres proporcionados se marcan para la exportación automática al entorno de los comandos ejecutados posteriormente. Si se da la opción -f, los nombres se refieren a funciones...
Si solo necesita la variable en el entorno actual, no es necesario utilizar la exportación.
var=value
Editar:
Sin exportación:solo entorno actual. Con exportación:entorno actual y entornos secundarios.
Aquí hay una demostración del efecto de la exportación sobre la disponibilidad de una variable en un entorno secundario y que los cambios en el entorno secundario no afectan al principal:
$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
Después del primer eco (echo "parent..."
) ve "123" y "456" porque ambos var1
y var2
están activos en el entorno actual. No ve un valor para var3
porque aún no está configurado.
Después de la línea que comienza "var3=...
" no ve un valor para var1
porque no fue exportado. Tu haces ver un valor para var2
porque era exportado. Ves un valor para var3
porque se configuró para el entorno secundario solo .
(bash -c
es equivalente a ejecutar un script con el contenido del argumento del -c
opción. Un script u otro ejecutable o, en este caso, el argumento de bash -c
se convierte en un hijo del entorno actual que, como resultado, es, por supuesto, el padre del niño).
En el "script" se cambian los valores de la variable. Ahora genera esos nuevos valores.
Una vez que finaliza el "script", la ejecución vuelve al entorno principal (la línea de comando en este caso). Después del último eco, verá los valores originales porque los cambios realizados en el entorno secundario no afectan al principal.
Tu dices eso
Siempre estoy usando el comando de exportación para establecer la variable de entorno
Por la forma en que lo redactaste, parece que realmente estás tratando de preguntar cómo haces que persista una variable ambiental. Para hacerlo, deberá colocar su export VAR="foo"
declaración en su archivo $HOME/.bash_profile (si está usando bash). Si desea que la variable ambiental persista para todos los usuarios excepto para el root, agréguela a /etc/profile. Si desea agregarlo también para el usuario raíz, configúrelo en /root/.bash_profile .
Esto funcionará para todos los shells de inicio de sesión donde bash es el shell de elección. Para shells sin inicio de sesión, debe usar .bashrc. No tengo ideas que ofrecer para otras conchas :D