Soluzione 1:
Il modo migliore
export VAR=value
La differenza
Fare
VAR=value
imposta solo la variabile per la durata dello script (.bashrc
in questo caso). I processi figlio (se presenti) dello script non avranno VAR definito e una volta terminato lo script VAR
è andato.
export VAR=value
aggiunge esplicitamente VAR
all'elenco delle variabili passate ai processi figlio. Vuoi provarlo? Apri una shell, fai
PS1="foo > "
bash --norc
La nuova shell ottiene il prompt predefinito. Se invece fai qualcosa come
export PS1="foo > "
bash --norc
la nuova shell ottiene il prompt che hai appena impostato.
Aggiornamento: come nota Ian Kelling sotto le variabili impostate in .bashrc
persistere nella shell che ha originato .bashrc
. Più in generale, ogni volta che la shell genera uno script (usando il source scriptname
command) le variabili impostate nello script persistono per tutta la vita della shell.
Soluzione 2:
Entrambi sembrano funzionare bene, ma l'utilizzo dell'esportazione assicurerà che la variabile sia disponibile per subshell e altri programmi. Per provarlo, prova questo.
Aggiungi queste due righe al tuo file .bashrc
TESTVAR="no export"
export MYTESTVAR="with export"
Quindi apri una nuova shell.
Esecuzione di echo $TESTVAR
e echo $MYTESTVAR
mostrerà il contenuto di ciascuna variabile. Ora all'interno della stessa shell rimuovi quelle due righe dal tuo file .bashrc ed esegui bash
per iniziare una subshell.
Esecuzione di echo $TESTVAR
avrà un output vuoto, ma eseguirà echo $MYTESTVAR
visualizzerà "con esportazione"