GNU/Linux >> Tutoriels Linux >  >> Linux

Définition des variables d'environnement Linux

Voici un extrait de la page de manuel de Bash :

export [-fn] [nom[=mot]] ...
exporter -p
Les noms fournis sont marqués pour l'exportation automatique vers l'environnement des commandes exécutées ultérieurement. Si l'option -f est donnée, les noms font référence aux fonctions...

Si vous n'avez besoin de la variable que dans l'environnement actuel, il n'est pas nécessaire d'utiliser l'exportation.

var=value

Modifier :

Sans exportation :environnement actuel uniquement. Avec export :environnement courant et environnements enfants.

Voici une démonstration de l'effet de l'exportation sur la disponibilité d'une variable dans un environnement enfant et que les modifications apportées à l'environnement enfant n'affectent pas le parent :

$ var1=123
$ export var2=456
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []
$ var3=789 bash -c 'echo "child [$var1] [$var2] [$var3]"; var1=111; var2=222; var3=333; echo "child [$var1] [$var2] [$var3]"'
child [] [456] [789]
child [111] [222] [333]
$ echo "parent [$var1] [$var2] [$var3]"
parent [123] [456] []

Après le premier écho (echo "parent..." ) vous voyez "123" et "456" car les deux var1 et var2 sont actifs dans l'environnement actuel. Vous ne voyez pas de valeur pour var3 car il n'est pas encore défini.

Après la ligne qui commence "var3=... " vous ne voyez pas de valeur pour var1 car il n'a pas été exporté. Vous faites voir une valeur pour var2 parce que c'était exporté. Vous voyez une valeur pour var3 car il a été défini pour l'environnement enfant uniquement .

(bash -c équivaut à exécuter un script avec le contenu de l'argument du -c option. Un script ou un autre exécutable ou, dans ce cas, l'argument de bash -c devient un enfant de l'environnement actuel qui, par conséquent, est bien sûr le parent de l'enfant.)

Dans le "script", les valeurs de la variable sont modifiées. Il affiche maintenant ces nouvelles valeurs.

Une fois le "script" terminé, l'exécution revient à l'environnement parent (la ligne de commande dans ce cas). Après le dernier écho, vous voyez les valeurs d'origine car les modifications apportées à l'environnement enfant n'affectent pas le parent.


Vous dites que

J'utilise toujours la commande d'exportation pour définir la variable d'environnement

Au fait, vous avez formulé cela, il semble que vous essayez vraiment de vous demander comment faire persister une variable environnementale. Pour ce faire, il vous faudrait placer votre export VAR="foo" déclaration dans votre fichier $HOME/.bash_profile (si vous utilisez bash). Si vous souhaitez que cette variable d'environnement persiste pour tous les utilisateurs sauf root, ajoutez-la à /etc/profile. Si vous souhaitez également l'ajouter pour l'utilisateur root, définissez-le dans /root/.bash_profile .

Cela fonctionnera pour tous les shells de connexion où bash est le shell de choix. Pour les shells sans connexion, vous devez utiliser .bashrc. Je n'ai pas d'idées à offrir pour les autres coques :D


Linux
  1. Définition des variables d'environnement du shell | Coque BASH

  2. Comment définir/créer des variables d'environnement et de shell sous Linux

  3. Linux - Les variables d'environnement sont-elles visibles pour les utilisateurs non privilégiés sous Linux ?

  4. Exemples de commandes d'exportation Linux (Comment définir des variables d'environnement)

  5. Les variables d'environnement sont-elles visibles pour les utilisateurs non privilégiés sous Linux ?

Comment définir/annuler les variables d'environnement sous Linux

Comment définir et supprimer des variables d'environnement sous Linux

Guide facile étape par étape des variables d'environnement Linux

Commande d'exportation sous Linux

Variables d'environnement Linux

Configuration d'un environnement de développement brillant sous Linux sur Windows 10