Gestion des Variables d'Environnement en Shell Linux

Introduction aux Variables dans le Shell

Dans l'environnement du shell, les variables sont des conteneurs nommés qui stockent des données. Elles jouent un rôle fondamental en permettant de manipuler des valeurs dynamiquement au sein de scripts ou de sessions interactives. Il est essentiel de distinguer deux catégories principales de variables en shell : les variables locales et les variables d'environnement (ou globales).

Variables Locales et Variables d'Environnement

Les variables locales sont confinées au shell ou au script dans lequel elles sont définies. Leur portée est limitée à la session de shell actuelle ou à la fonction où elles sont déclarées. Elles ne sont pas héritées par les processus enfants.

En revanche, les variables d'environnement sont des variables globales. Une fois définies et exportées, elles sont accessibles non seulement par le shell qui les a créées, mais aussi par tous ses processus enfants et les scripts qu'ils exécutent. Elles fournissent des informations cruciales sur l'environnement d'exécution du système, telles que le chemin de recherche des exécutables, le répertoire personnel de l'utilisateur, et bien d'autres configurations système.

Le Rôle des Variables d'Environnement

Les variables d'environnement sont fondamentales pour le bon fonctionnement des programmes et du système. Elles permettent au shell et aux applications de déterminer des paramètres importants comme :

  • Le répertoire de l'utilisateur (HOME)
  • La liste des répertoires où le shell doit chercher les commandes (PATH)
  • Le type de terminal utilisé (TERM)
  • Le shell en cours d'utilisation (SHELL)

Bien qu'il soit possible de définir ces variables directement sur la ligne de commande, ces définitions sont temporaires et disparaissent à la fin de la session. Pour une persistance entre les sessions, elles sont généralement configurées dans des fichiers de profil utilisateur (comme ~/.bashrc, ~/.bash_profile) ou des fichiers de configuraton système (/etc/profile, /etc/environment, ou des fichiers sous /etc/profile.d/).

Par convention, les noms des variables d'environnement sont généralement écrits en majuscules pour les distinguer des variables locales.

Définition de Variables d'Environnement Personnalisées

Pour promouvoir une variable locale en variable d'environnement, la commande export est utilisée. Vous pouvez soit assigner une valeur puis l'exporter, soit l'exporter directement lors de sa déclaration. L'option -x de la commande intégrée declare offre une fonctionnalité similaire.

Syntaxe de définition

variable_locale="valeur" ; export variable_locale
export NOM_VARIABLE="une valeur"
declare -x AUTRE_VAR="nouvelle valeur"

Exemple de configuraton d'environnement pour une application

Voici un exemple illustrant comment configurer des variables d'environnement pour un chemin de configuration ou une application spécifique. Ces définitions seraient typiquement placées dans un fichier ~/.bashrc ou ~/.profile.

# Définition du répertoire de base pour une application de journalisation
export LOGAPP_HOME="/opt/myapp/logs"

# Ajout d'un chemin vers les binaires de l'application au PATH
export PATH="$PATH:/opt/myapp/bin"

# Déclaration d'une variable pour la configuration du proxy
declare -x HTTP_PROXY="http://proxy.example.com:8080"
declare -x HTTPS_PROXY="http://proxy.example.com:8080"

# Remarque : Pour que ces changements soient actifs immédiatement,
# il faut soit sourcer le fichier (ex: source ~/.bashrc)
# soit redémarrer le shell.

Visualisation des Variables d'Environnement

Afficher la valeur d'une variable spécifique

La commande echo, précédée du signe $ devant le nom de la variable, permet d'afficher sa valeur.

echo "Mon répertoire personnel : $HOME"
echo "L'ID de l'utilisateur actuel est : $UID"
echo "Le répertoire de travail courant est : $PWD"
echo "Le shell actif est : $SHELL"
echo "L'utilisateur connecté est : $USER"

Ces variables sont des exemples de variables d'environnement système qui sont prédéfinies lors de la connexion de l'utilisateur.

Lister toutes les variables d'environnement

Les commandes env ou printenv affichent la liste de toutes les variables d'environnement exportées dans la session shell actuelle.

# Affiche toutes les variables d'environnement
env

# Pour une sortie plus ciblée, par exemple, le PATH :
printenv PATH

La commande set, quant à elle, affiche non seulement toutes les variables d'environnement, mais aussi toutes les variables locales et les fonctions shell définies dans la session courante.

Suppression de Variables d'Environnement

Pour supprimer une variable, qu'elle soit locale ou d'environnement, la commande unset est utilisée. Elle retire la variable de la liste des variables disponibles dans le shell.

# Définir et exporter une variable temporaire
export MA_CLE_API="super_secret_key_123"
echo "Clé API actuelle : $MA_CLE_API"

# Supprimer la variable
unset MA_CLE_API
echo "Clé API après suppression : $MA_CLE_API"
# La ligne ci-dessus n'affichera rien, car la variable a été supprimée.

Étiquettes: bash Variables d'environnement Shell scripting Export Linux

Publié le 27 juillet à 17h16