it-swarm-es.com

¿Cuál es la mejor manera de establecer una variable de entorno en .bashrc?

Al configurar una variable en .bashrc, ¿debería usar esto?

export VAR=value

¿O sería esto suficiente?

VAR=value

¿Cuál es exactamente la diferencia (si la hay)?

11
Flávio Amieiro

La mejor manera

export VAR=value

La diferencia

Haciendo

VAR=value

solo establece la variable durante la duración del script (.bashrc en este caso). Los procesos secundarios (si los hay) del script no tendrán VAR definido y, una vez que el script finalice, VAR desaparecerá.

export VAR=value

agrega explícitamente VAR a la lista de variables que se pasan a los procesos secundarios. ¿Quieres probarlo? Abra un Shell, haga

PS1="foo > "
bash --norc

El nuevo Shell obtiene el indicador predeterminado. Si en cambio haces algo como

export PS1="foo > "
bash --norc

el nuevo Shell obtiene el indicador que acaba de configurar.

Actualización : como señala Ian Kelling a continuación, las variables establecidas en .bashrc persisten en el Shell que originó .bashrc. De manera más general, siempre que el Shell obtenga un script (usando el source scriptname comando) las variables establecidas en el script persisten durante la vida útil del Shell.

16
agnul

Ambos parecen funcionar bien, pero el uso de la exportación asegurará que la variable esté disponible para subcapas y otros programas. Para probar esto, intente esto.

Agregue estas dos líneas a su archivo .bashrc

TESTVAR="no export"
export MYTESTVAR="with export"

Luego abra un nuevo Shell.

Corriendo echo $TESTVAR y echo $MYTESTVAR mostrará el contenido de cada variable. Ahora, dentro de ese mismo Shell, elimine esas dos líneas de su archivo .bashrc y ejecute bash para iniciar un subshell.

Corriendo echo $TESTVAR tendrá una salida vacía, pero ejecutando echo $MYTESTVAR mostrará "con exportación"

10
Mike H