Lors de la configuration d'une variable dans .bashrc
, dois-je l'utiliser?
export VAR=value
Ou serait-ce suffisant?
VAR=value
Quelle est exactement la différence (s'il y en a une)?
la source
Lors de la configuration d'une variable dans .bashrc
, dois-je l'utiliser?
export VAR=value
Ou serait-ce suffisant?
VAR=value
Quelle est exactement la différence (s'il y en a une)?
export VAR=value
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 que le script VAR
sera terminé.
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 obtient l'invite par défaut. Si vous faites quelque chose comme
export PS1="foo > "
bash --norc
le nouveau shell obtient l'invite que vous venez de définir.
Mise à jour: comme le note Ian Kelling ci-dessous, les variables définies .bashrc
persistent dans le shell d'origine .bashrc
. Plus généralement, lorsque le shell source un script (à l'aide de la source scriptname
commande), les variables définies dans le script persistent pendant toute la durée de vie du shell.
PS1
est un mauvais exemple de variable à exporter en tant que variable d'environnement. Il n'a de sens que pour les processus enfants qui sont des shells et il est interprété différemment par différents shells (par exemple, bash et dash). La meilleure pratique consiste à simplement la définir comme une variable shell standard dans le.bashrc
. De meilleurs exemples de variables d'environnement comprennentHOME
,PATH
,EDITOR
, etc.Les deux semblent fonctionner très bien, mais l'utilisation de l'exportation garantira que la variable sera disponible pour les sous-coquilles et autres programmes. Pour tester cela, essayez ceci.
Ajoutez ces deux lignes à votre fichier .bashrc
Ouvrez ensuite un nouveau shell.
En cours d'exécution
echo $TESTVAR
etecho $MYTESTVAR
affichera le contenu de chaque variable. Maintenant, à l'intérieur de ce même shell, supprimez ces deux lignes de votre fichier .bashrc et exécutezbash
pour démarrer un sous-shell.L'exécution
echo $TESTVAR
aura une sortie vide, mais l'exécutionecho $MYTESTVAR
affichera "avec exportation"la source