Definir una variable con o sin exportación
¿Que es export
por?
Cuál es la diferencia entre:
export name=value
y
name=value
export
hace que la variable esté disponible para los subprocesos.
Eso es,
export name=value
significa que el nombre de la variable está disponible para cualquier proceso que ejecute desde ese proceso de shell. Si desea que un proceso utilice esta variable, utilice export
y ejecute el proceso desde ese shell.
name=value
significa que el alcance de la variable está restringido al shell y no está disponible para ningún otro proceso. Usaría esto para (digamos) variables de bucle, variables temporales, etc.
Es importante tener en cuenta que exportar una variable no la hace disponible para los procesos principales. Es decir, especificar y exportar una variable en un proceso generado no la hace disponible en el proceso que la inició.
Para ilustrar lo que dicen las otras respuestas:
$ foo="Hello, World"
$ echo $foo
Hello, World
$ bar="Goodbye"
$ export foo
$ bash
bash-3.2$ echo $foo
Hello, World
bash-3.2$ echo $bar
bash-3.2$