Quelle est la différence entre :
a=b
y
export a=b
Dans bash ?
Je comprends qu'ils définissent tous deux des variables d'environnement, mais je ne comprends pas bien la différence.
Quelle est la différence entre :
a=b
y
export a=b
Dans bash ?
Je comprends qu'ils définissent tous deux des variables d'environnement, mais je ne comprends pas bien la différence.
export
propage la variable aux sous-processus.
Par exemple, si vous avez
FOO=bar
alors un sous-processus qui vérifierait FOO ne trouverait pas la variable alors que
export FOO=bar
permettrait au sous-processus de le trouver.
Mais si FOO
tiene déjà a été défini comme une variable d'environnement, alors FOO=bar
modifiera la valeur de cette variable d'environnement.
Par exemple :
FOO=one # Not an environment variable
export FOO # Now FOO is an environment variable
FOO=two # Update the environment variable, so sub processes will see $FOO = "two"
Les anciens shells ne supportaient pas l'option export FOO=bar
syntaxe ; vous deviez écrire FOO=bar; export FOO
.
De plus, si vous voulez que la variable soit disponible pour le Shell appelant sans utiliser l'exportation, vous pouvez faire ceci :
Le fichier a.ksh est -
#!/bin/ksh
FOO=bar
Sur l'invite, exécutez ceci
> . a.ksh
Ceci lancera les commandes dans le même Shell et $FOO sera disponible.
Considérant que,
> a.ksh
Rendra $FOO disponible uniquement dans a.ksh, après l'appel à a.ksh, il n'existera plus.
En plus de ce qui a déjà été répondu, ces deux déclarations ne définissent pas nécessairement (c'est-à-dire créent vs définissent) une variable d'environnement car "a" pourrait déjà exister en tant que Shell ou variable d'environnement.
Dans ce dernier cas, les deux déclarations sont strictement équivalentes.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.