Maison > Article > développement back-end > Pourquoi les modifications des variables d'environnement utilisant « os.Setenv » ne persistent-elles pas dans ma session de terminal ?
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()
Le code ci-dessus :
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!