129 votes

Que fait l'exportation dans BASH ?

Duplicata possible :
Différence entre "a=b" et "export a=b" en bash

C'est dur à admettre, mais je n'ai jamais vraiment compris ce qu'était exactement export fait à une variable d'environnement. Je sais que si je n'exporte pas une variable, je ne peux parfois pas la voir dans les processus enfants, mais il semble parfois que je le puisse. Que se passe-t-il réellement lorsque je dis

export foo=5

et quand ne dois-je pas exporter une variable ?

174voto

Pylsa Points 29904

Les variables exportées sont transmises aux processus enfants, les variables non exportées ne le sont pas.

30voto

Chris Points 11

Lorsque vous utilisez export vous ajoutez la variable à la liste des variables d'environnement du Shell dans lequel la commande export a été appelée et toutes les variables d'environnement d'un Shell sont transmises aux processus enfants, c'est pourquoi vous pouvez l'utiliser.

Lorsque vous terminez le Shell son environnement est détruit, c'est pourquoi les variables d'environnement sont déclarées et exportées à la connexion, dans le fichier .bashrc par exemple

20voto

sml Points 1808

De man bash :

ENVIRONNEMENT

Lorsqu'un programme est invoqué, on lui donne un tableau de chaînes de caractères appelé le environnement. Il s'agit d'une liste de paires nom-valeur, de la forme nom=valeur.

Le Shell fournit plusieurs moyens de manipuler l'environnement. Lors de l'invocation de l'invocation, le Shell analyse son propre environnement et crée un paramètre pour chaque nom trouvé, le marquant automatiquement automatiquement pour l'exportation vers les processus enfants. Les commandes exécutées héritent de l'environnement. Le site export y declare -x Les commandes permettent d'ajouter des paramètres et des fonctions d'ajouter et de supprimer des paramètres et des fonctions dans l'environnement. Si la valeur d'un paramètre dans l'environnement l'environnement est modifiée, la nouvelle valeur devient partie intégrante de l'environnement, et remplace l'ancienne. L'environnement hérité par toute commande exécutée est constitué de l'environnement initial du Shell, dont les valeurs peuvent être modifiées. environnement, dont les valeurs peuvent être modifiées dans le Shell, moins toutes les paires supprimées par la commande unset commande, plus tout ajout via les commandes d'exportation et declare -x des commandes.

SistemesEz.com

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.

Powered by:

X