Maison > développement back-end > Golang > Pourquoi les modifications des variables d'environnement utilisant « os.Setenv » ne persistent-elles pas dans ma session de terminal ?

Pourquoi les modifications des variables d'environnement utilisant « os.Setenv » ne persistent-elles pas dans ma session de terminal ?

Linda Hamilton
Libérer: 2024-11-26 01:19:12
original
1072 Les gens l'ont consulté

Why Don't Environment Variable Changes Using `os.Setenv` Persist in My Terminal Session?

Persistance des variables d'environnement dans les sessions de terminal

Lors d'une tentative de définition d'une variable d'environnement à l'aide du package "os", vous avez rencontré un résultat inattendu où la variable n'était pas persistante dans votre session de terminal. Pour comprendre ce comportement, plongeons dans les mécanismes sous-jacents.

Isolement des processus

Lorsqu'un nouveau processus est créé, il hérite d'une copie isolée de l'environnement de son processus parent. Cela signifie que toute modification apportée à l'environnement au sein d'un processus enfant ne se propage pas au processus parent et vice versa.

Impact sur les variables d'environnement

Lorsque vous appelez os.Setenv("FOO", "BAR"), la variable d'environnement "FOO" est définie dans l'espace de processus de votre programme Go. Toutefois, cela reste limité à ce processus. Si vous lancez par la suite un shell ou d'autres commandes depuis votre programme, elles n'hériteront pas de l'environnement modifié.

Solution : Invocation du Shell

Pour rendre la variable d'environnement persistante dans votre session, vous devez demander à votre programme de lancer un shell avec l'environnement mis à jour. Ceci peut être réalisé en utilisant le code suivant :

// Launch a shell with the modified environment.
cmd := exec.Command("sh", "-c", "echo $FOO")
cmd.Env = append(os.Environ(), "FOO=BAR")
cmd.Run()
Copier après la connexion

Le code ci-dessus :

  1. Crée un nouveau processus shell (sh) avec l'environnement modifié (où "FOO=BAR" ).
  2. Appelle la commande echo $FOO dans ce shell, imprimant ainsi la variable d'environnement.

Par en adoptant cette approche, vous définissez essentiellement la variable d'environnement et lancez immédiatement un nouveau shell qui hérite de l'environnement modifié, assurant sa persistance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal