Maison >développement back-end >Golang >Pourquoi les variables d'environnement définies via le package `os` de Go ne persistent-elles pas dans la session de terminal ?

Pourquoi les variables d'environnement définies via le package `os` de Go ne persistent-elles pas dans la session de terminal ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-29 12:56:14923parcourir

Why Don't Environment Variables Set via Go's `os` Package Persist in the Terminal Session?

Persistance de la variable d'environnement dans les sessions de terminal après définition via le package "os"

Problème :
Après la définition d'une variable d'environnement à l'aide de " os" dans un programme Go, il reste inaccessible dans le terminal actuel session.

Détails :
Un programme Go définissant une variable d'environnement à l'aide de os.Setenv("FOO", "BAR") permet d'imprimer la variable dans le programme à l'aide de fmt.Println (os.Getenv("FOO")), mais la variable reste absente lorsqu'elle est interrogée à l'aide de echo $FOO dans le terminal session.

Réponse :
Les nouveaux processus héritent de l'environnement de leur processus parent. Les modifications apportées à l'environnement au sein d'un processus enfant n'affectent pas l'environnement du processus parent. Par conséquent, dans le scénario donné, la définition de la variable d'environnement dans le programme Go ne modifie pas l'environnement de la session du terminal.

Solution :
Pour rendre la variable d'environnement persistante dans le session de terminal, vous devez démarrer un shell après avoir modifié l'environnement. Cette solution peut être implémentée en utilisant diverses approches, notamment :

  • Utiliser la fonction exec.Command pour exécuter le shell avec l'environnement modifié.
  • Utiliser le package syscall pour appeler directement execve et créer un nouveau processus shell.
  • Lancement d'un nouveau shell explicitement en utilisant bash ou sh avec les arguments appropriés pour définir la variable d'environnement et exécuter commandes.

En adoptant l'une de ces approches, vous pouvez vous assurer que la variable d'environnement définie dans le programme Go devient disponible dans la session du terminal.

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!

Déclaration:
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