Duplication possible:
Différence entre “a = b” et “export a = b” dans bash
C'est difficile à admettre, mais je n'ai jamais vraiment compris ce que export
fait exactement une variable d'environnement. Je sais que si je n'exporte pas de variable, je ne la vois parfois pas dans les processus enfants, mais parfois, j'ai l'impression que je peux le faire. Qu'est-ce qui se passe vraiment quand je dis
export foo=5
et quand ne devrais-je pas exporter une variable?
bash
export
shell-script
Chas. Owens
la source
la source
export
instructions à .bashrc / .bash_profile pour créer des variables globales persistantes similaires à$HOME
.Réponses:
De
man bash
:la source
Les variables exportées sont transmises aux processus enfants, pas les variables non exportées.
la source
PYTHONPATH
) et en notant que même si vous le pouvez,echo $PYTHONPATH
il ne sera pas reconnu par les scripts python ou bash tant que vousexport
ne l' aurez pas$BASHPID
) et pourtant vous pouvez lire des variables non exportées à partir du shell parent. Preuve simple:x="y"; echo "$BASHPID: $x"; (echo "$BASHPID: $x")
Mon hypothèse est qu'il s'agit d'un cas spécial qui se produit lorsque le processus enfant est un sous-shell.Lorsque vous utilisez
export
, vous ajoutez la variable à la liste des variables d'environnement du shell dans laquelle la commande d'exportation a été appelée et toutes les variables d'environnement d'un shell sont transmises aux processus enfants, raison pour laquelle vous pouvez les utiliser.Lorsque vous avez terminé le shell, son environnement est détruit, c’est pourquoi les variables d’environnement sont déclarées et exportées lors de la connexion, dans le fichier .bashrc par exemple.
la source