env (environnement)
100%

Text-Fu · Leçon 5

env (environnement)

Découvrez comment Bash développe, exporte, inspecte et remplace temporairement des variables d'environnement.

Chaque processus possède un environnement : un ensemble de chaînes nom-valeur hérité de son parent. Les shells transmettent ainsi aux programmes des réglages comme la langue ou les chemins de recherche des exécutables.

Développer la valeur des variables dans Bash

Bash remplace $NAME ou ${NAME} par sa valeur avant d'exécuter une commande. Citez le développement pour préserver la valeur en un seul argument :

$ printf '%s\n' "$HOME"
/home/pete

Variables courantes :

  • HOME : chemin du répertoire personnel.
  • USER : nom d'utilisateur fourni par l'environnement de connexion sur de nombreux systèmes.
  • PWD : répertoire de travail du shell.
  • PATH : répertoires où rechercher les commandes.

Les valeurs dépendent du processus courant. Une variable absente devient une chaîne vide, sauf mode shell plus strict.

Quelle commande Bash affiche HOME tout en préservant sa valeur comme un seul argument ?

Inspecter l'environnement courant

Sans opérande, env affiche l'environnement hérité :

$ env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/bin
PWD=/home/user
USER=pete

L'environnement peut contenir identifiants, jetons ou chemins internes. Relisez et masquez sa sortie avant de la publier.

Quelle commande affiche l'environnement visible par un nouveau processus ?

Trouver les commandes grâce à PATH

PATH est une liste de répertoires séparés par des deux-points, consultée quand une commande ne contient aucune barre oblique :

$ printf '%s\n' "$PATH"

L'ordre compte. type -a NAME montre comment le shell résout un nom. Pour ajouter un répertoire en tête tout en gardant le chemin existant :

$ export PATH="/opt/coolapp/bin:$PATH"

Ne remplacez pas accidentellement tout PATH et n'ajoutez pas de répertoire non fiable accessible en écriture.

Quelle commande ajoute /opt/coolapp/bin avant le PATH existant pour Bash et ses futurs enfants ?

Exporter une variable vers les processus enfants

Les variables Bash ne font pas automatiquement partie de l'environnement des enfants. Utilisez export :

$ export TEST=test

Le shell courant possède désormais la variable TEST, et ses futures commandes en héritent :

$ printenv TEST
test

Les futures commandes héritent de TEST=test, mais un enfant ne peut pas modifier ainsi l'environnement de son parent. L'affectation dure jusqu'à unset ou la fin du shell et n'est pas globale au système.

Quel est l'effet principal de export TEST=test dans Bash ?

Définir une valeur pour une seule commande

Placez les affectations avant la commande :

$ LANG=C sort names.txt

La commande env offre une forme explicite équivalente :

$ env LANG=C sort names.txt

La valeur de LANG dans le shell courant ne change pas durablement. env -i COMMAND démarre avec un environnement initialement vide ; beaucoup de programmes dépendent toutefois de variables, utilisez-le avec discernement.

Quelle commande exécute sort names.txt avec LANG=C sans modifier durablement le shell courant ?

Charger des valeurs personnelles dans les sessions futures

Pour recréer une variable exportée dans les futures sessions Bash interactives, placez l'instruction dans le fichier réellement lu, souvent ~/.bashrc :

export TEST=test

Zsh utilise souvent ~/.zshrc et Fish une autre syntaxe. Les shells de connexion ou non interactifs peuvent lire d'autres fichiers : identifiez le shell et le type de session.

Leçon terminée

Vous avez terminé env (environnement)

Vous savez désormais inspecter et contrôler l'environnement transmis par Bash.

  • Développer les valeurs avec des guillemets adaptés.

  • Examiner les valeurs exportées sans révéler de secrets.

  • Préserver et ordonner les répertoires de PATH.

  • Exporter une variable vers les futurs enfants.

  • Remplacer une valeur pour une seule commande.

Conservez votre progression

Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.

Créer un compte gratuit
Leçon Suivante
Retour à Text-Fu