Accès aux variables d'environnement en go

Les variables d'environnement sont des variables dynamiques définies sur un système d'exploitation afin de communiquer des informations entre les programmes exécutés sur un ordinateur. Par exemple :
  • Sur tous les systèmes, on trouvera la variable PATH qui contient la liste des répertoires dans lesquels vont être recherchés les fichiers exécutables.
  • Lorsque vous installez Go, vous devez initialiser la variable GOPATH qui indique où seront stockés les paquets autres que ceux de la bibliothèque standard.

Exemple de code

La bibliothèque standard de go contient de quoi manipuler les variables d'environnement. Voici un exemple de code avec les différentes possibilités :
package main

import "os"
import "strings"
import "fmt"

func main() {

    os.Setenv("MA_VARIABLE_GO", "42")
    fmt.Println("MA_VARIABLE_GO:", os.Getenv("MA_VARIABLE_GO"))
    fmt.Println("N'existe pas:", os.Getenv("INEXISTANT_BLA_BLA"))

    for _, e := range os.Environ() {
        pair := strings.Split(e, "=")
        fmt.Println(pair[0])
    }
}
Quelques remarques à propos de ce code :
  1. On peut créer ou mettre à jour une variable avec la fonction os.Setenv.
  2. La fonction os.Getenv permet d'accéder à une variable d'environnement.
  3. Si une variable d'environnement n'existe pas, os.Getenv ne générera pas d'erreur, mais retournera une chaîne de caractères vide.
  4. La fonction os.Environ retourne un slice contenant toutes les variables d'environnement. C'est une liste de chaîne de caractères sous la forme VARIABLE=valeur. On peut donc les découper avec la fonction strings.Split d'obtenir une liste d'associations clé/valeur. Note: ce programme n'affichera que la liste des variables et pas leurs valeurs.
Comme le comportement varie d'une machine à l'autre, j'ai préféré ne pas indiquer le résultat de ce programme.

Remarque sur les variables d'environnement

Le comportement et le nom des variables d'environnement varie d'un ordinateur à l'autre, mais aussi d'un système d'exploitation à l'autre. Il en va de même pour leur durée de vie et leur portée. Elles peuvent être, par exemple, définies pour tous les programmes lancés dans un terminal et à partir d'un moment donné ou pour tous les programmes lancés après le démarrage du système. Ce qui est sûr, c'est qu'une variable d'environnement créée à l'aide d'os.Setenv disparaîtra, par exemple, à l'arrêt du programme go qui l'a créée. Et que seuls les processus enfant de ce programme go (c.-à-d. créés par ce programme go) en verront la valeur.

Ce n'est pas l'objet de cet article ni de ce site que de traiter tous les cas de figure, aussi je vous invite à vous renseigner sur les variables d'environnement. Et ce, pour tous les systèmes d'exploitation sur lesquels vous souhaitez déployer votre programme go.

À lire également

Je vous conseille de lire aussi mon article sur la gestion des paramètres et des options de la ligne de commande d'un programme go.

Étiquettes :   os   golang   debuter 
Portrait de Benjamin BALET
Benjamin BALET
Consultant APM

Retrouvez mes cooordonées

Benjamin BALET sur viadeo






Vous aimerez aussi

Les lois de la réflexion

Une traduction du blog officiel de golang expliquant le mécanisme de la réflexion en Go.   Lire »

Comment écrire du code Go ?

Traduction d'une partie des spécifications officielles du langage Go, cet article explique comment développer en Go.   Lire »

Gobs le format natif d'échange de données en Go

Traduction d'un article du blog officiel expliquant comment échanger des données entre deux programmes golang grâce à un format natif   Lire »

Le modèle mémoire du runtime et du langage go

Traduction d'une partie des spécifications officielles du langage go, cet article explique comment go gère la mémoire.   Lire »

Gérer les informations de session avec Gorilla

La bibliothèque standard de go ne gère pas les variables de session d'une application. Il existe une solution avec le toolkit Gorilla   Lire »

Commentaires

Soyez le premier à commenter cet article

Publier un commentaires

Tous les commentaires sont soumis à modération. Les balises HTML sont pour la plupart autorisées. Les liens contextuels et intéressants sont en follow.

(requis)
(requis)
(requis, mais non publié)
(recommandé si vous souhaitez être publié)