Solución 1:
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 sale VAR
se ha ido.
export VAR=value
agrega explícitamente VAR
a la lista de variables que se pasan a los procesos secundarios. ¿Quieres probarlo? Abre una concha, haz
PS1="foo > "
bash --norc
El nuevo shell obtiene el aviso predeterminado. Si en cambio haces algo como
export PS1="foo > "
bash --norc
el nuevo shell recibe el mensaje que acaba de configurar.
Actualización: como señala Ian Kelling debajo de las variables establecidas en .bashrc
persistir en el shell que originó .bashrc
. De manera más general, cada vez que el shell genera un script (usando el source scriptname
comando) las variables establecidas en el script persisten durante la vida útil del shell.
Solución 2:
Ambos parecen funcionar bien, pero el uso de la exportación garantizará que la variable esté disponible para subcapas y otros programas. Para probar esto, prueba esto.
Agregue estas dos líneas a su archivo .bashrc
TESTVAR="no export"
export MYTESTVAR="with export"
Luego abra un nuevo shell.
Ejecutando 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 una subcapa.
Ejecutando echo $TESTVAR
tendrá una salida vacía, pero ejecutando echo $MYTESTVAR
mostrará "con exportación"