Per illustrare cosa dicono le altre risposte:
$ 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$
export
rende la variabile disponibile ai sottoprocessi.
Cioè,
export name=value
significa che il nome della variabile è disponibile per qualsiasi processo corri da quel processo di shell. Se vuoi che un processo faccia uso di questa variabile, usa export
, ed esegui il processo da quella shell.
name=value
significa che l'ambito della variabile è limitato alla shell e non è disponibile per nessun altro processo. Lo useresti per (diciamo) variabili di ciclo, variabili temporanee ecc.
È importante notare che l'esportazione di una variabile non la rende disponibile ai processi padre. Cioè, specificando ed esportando una variabile in un processo generato non la rende disponibile nel processo che l'ha avviata.