Solution 1 :
La meilleure façon
export VAR=value
La différence
Faire
VAR=value
définit uniquement la variable pour la durée du script (.bashrc
dans ce cas). Les processus enfants (le cas échéant) du script n'auront pas de VAR défini, et une fois le script terminé, VAR
est parti.
export VAR=value
ajoute explicitement VAR
à la liste des variables transmises aux processus enfants. Vous voulez l'essayer ? Ouvrez un shell, faites
PS1="foo > "
bash --norc
Le nouveau shell reçoit l'invite par défaut. Si à la place vous faites quelque chose comme
export PS1="foo > "
bash --norc
le nouveau shell reçoit l'invite que vous venez de définir.
Mise à jour : comme le note Ian Kelling sous les variables définies dans .bashrc
persister dans le shell qui a généré .bashrc
. Plus généralement chaque fois que le shell source un script (en utilisant le source scriptname
command) les variables définies dans le script persistent pendant toute la durée de vie du shell.
Solution 2 :
Les deux semblent fonctionner correctement, mais l'utilisation de l'exportation garantira que la variable est disponible pour les sous-shells et les autres programmes. Pour tester cela, essayez ceci.
Ajoutez ces deux lignes à votre fichier .bashrc
TESTVAR="no export"
export MYTESTVAR="with export"
Ouvrez ensuite un nouveau shell.
Exécution de echo $TESTVAR
et echo $MYTESTVAR
affichera le contenu de chaque variable. Maintenant, dans ce même shell, supprimez ces deux lignes de votre fichier .bashrc et exécutez bash
pour démarrer un sous-shell.
Exécution de echo $TESTVAR
aura une sortie vide, mais exécutant echo $MYTESTVAR
affichera "avec exportation"