c'est extrêmement étrange qu'il n'y ait pas de page de manuel pour cela. Je n'en vois pas non plus.
Pinocchio
Réponses:
226
Lorsque vous exécutez un programme, le programme enfant hérite de ses variables d'environnement du parent. Par exemple, si $HOMEest défini sur /rootdans le parent, la $HOMEvariable de l'enfant est également définie sur /root.
Cela s'applique uniquement aux variables d'environnement marquées pour l'exportation. Si vous définissez une variable sur la ligne de commande comme
$ FOO="bar"
Cette variable ne sera pas visible dans les processus enfants. Sauf si vous l'exportez:
$ export FOO
Vous pouvez combiner ces deux déclarations en une seule dans bash (mais pas dans sh old-school):
$ export FOO="bar"
Voici un exemple rapide montrant la différence entre les variables exportées et non exportées. Pour comprendre ce qui se passe, sachez que sh -ccrée un processus shell enfant qui hérite de l'environnement du shell parent.
$ FOO=bar
$ sh -c 'echo $FOO'
$ export FOO
$ sh -c 'echo $FOO'
bar
Remarque: pour obtenir de l'aide sur les commandes intégrées du shell, utilisez help export. Les fonctions intégrées du shell sont des commandes qui font partie de votre shell plutôt que des exécutables indépendants comme /bin/ls.
Les commandes env, set et printenv affichent toutes les variables d'environnement et leurs valeurs. env et set sont également utilisés pour définir des variables d'environnement et sont souvent incorporés directement dans le shell. printenv peut également être utilisé pour imprimer une seule variable en donnant ce nom de variable comme seul argument de la commande.
Sous Unix, les commandes suivantes peuvent également être utilisées, mais dépendent souvent d'un certain shell.
export VARIABLE=value # for Bourne, bash, and related shells
setenv VARIABLE value # for csh and related shells
Bienvenue dans StackOverflow. Notez que le shell Bourne classique nécessiterait: VARIABLE=value; export VARIABLEplutôt que d'assigner et d'exporter à la fois. La setcommande dans C Shell est pour les variables shell plutôt que pour les variables d'environnement; setenvest la contrepartie de export. La setcommande dans les shells dérivés de Bourne imprime toutes les variables, pas seulement les variables exportées (d'environnement). Historiquement du moins, la envcommande est distincte du shell (pas un élément intégré), bien qu'elle puisse facilement être transformée en un élément intégré. Il définit l'environnement pour une commande spécifique, pas le shell qui l'exécute.
Jonathan Leffler
4
exportest une commande intégrée du bashshell et d'autres variantes du shell Bourne . Il est utilisé pour marquer une variable shell pour l'exportation vers les processus enfants.
Réponses:
Lorsque vous exécutez un programme, le programme enfant hérite de ses variables d'environnement du parent. Par exemple, si
$HOME
est défini sur/root
dans le parent, la$HOME
variable de l'enfant est également définie sur/root
.Cela s'applique uniquement aux variables d'environnement marquées pour l'exportation. Si vous définissez une variable sur la ligne de commande comme
Cette variable ne sera pas visible dans les processus enfants. Sauf si vous l'exportez:
Vous pouvez combiner ces deux déclarations en une seule dans bash (mais pas dans sh old-school):
Voici un exemple rapide montrant la différence entre les variables exportées et non exportées. Pour comprendre ce qui se passe, sachez que
sh -c
crée un processus shell enfant qui hérite de l'environnement du shell parent.Remarque: pour obtenir de l'aide sur les commandes intégrées du shell, utilisez
help export
. Les fonctions intégrées du shell sont des commandes qui font partie de votre shell plutôt que des exécutables indépendants comme/bin/ls
.la source
Unix
Les commandes env, set et printenv affichent toutes les variables d'environnement et leurs valeurs. env et set sont également utilisés pour définir des variables d'environnement et sont souvent incorporés directement dans le shell. printenv peut également être utilisé pour imprimer une seule variable en donnant ce nom de variable comme seul argument de la commande.
Sous Unix, les commandes suivantes peuvent également être utilisées, mais dépendent souvent d'un certain shell.
Vous pouvez jeter un œil à ceci sur
la source
VARIABLE=value; export VARIABLE
plutôt que d'assigner et d'exporter à la fois. Laset
commande dans C Shell est pour les variables shell plutôt que pour les variables d'environnement;setenv
est la contrepartie deexport
. Laset
commande dans les shells dérivés de Bourne imprime toutes les variables, pas seulement les variables exportées (d'environnement). Historiquement du moins, laenv
commande est distincte du shell (pas un élément intégré), bien qu'elle puisse facilement être transformée en un élément intégré. Il définit l'environnement pour une commande spécifique, pas le shell qui l'exécute.export
est une commande intégrée dubash
shell et d'autres variantes du shell Bourne . Il est utilisé pour marquer une variable shell pour l'exportation vers les processus enfants.la source
export
est utilisé pour définir les variables d'environnement. Par exemple:Définira votre éditeur de texte par défaut comme la
pico
commande.la source