Les varibles d'environnement linux
Les variables d'environnement sous Linux sont des valeurs dynamiques utilisées par le système d'exploitation et les applications pour configurer et personnaliser leur comportement. Elles sont utilisées pour stocker des informations globales comme les chemins d'accès aux fichiers, les configurations utilisateur, ou encore les paramètres système.
Commandes de gestion des variables
env
-> Affiche toutes les variables d'environnement actuelles.
echo $<variable>
-> Afficher une variable spécifique.
echo $HOME
-> Affiche le répertoire personnel de l'utilisateur.
export <variable>=<valeur>
-> Définir une nouvelle variable d'environnement (temporaire).
unset <variable>
-> Supprimer une variable d'environnement.
Pour ajouter une variable de manière persistante, il faut joutez la ligne export <variable>=<valeur>
dans le fichier ~/.bashrc
ou ~/.profile
.
source ~/.bashrc
-> Recharger les variables définies dans .bashrc
Variables d'environnement courantes
$HOME
-> Répertoire personnel de l'utilisateur.
$USER
-> Définit le nom d'utilisateur actuel.
$PATH
-> Liste des répertoires où le système recherche les commandes exécutables.
$PWD
-> Définit le répertoire de travail actuel.
$SHELL
-> Définit le programme shell utilisé par l'utilisateur.
$LANG
-> Définit la langue et la localisation du système.
$TERM
-> Définit le type de terminal utilisé.
$EDITOR
-> Définit l'éditeur de texte utilisé par défaut.
$LOGNAME
-> Nom de l'utilisateur qui est actuellement connecté.
$UID
-> Numéro d'identification de l'utilisateur (UID).
$HOSTNAME
-> Nom de la machine (ou de l'hôte) du système.
$PS1
-> Définit l'apparence de l'invite de commande dans le terminal.
$MAIL
-> Contient le chemin du répertoire de mails de l'utilisateur.
$HISTSIZE
-> Définit le nombre de commandes à conserver dans l'historique.
$HISTFILE
-> Définit le fichier où l'historique des commandes est sauvegardé.
$TMPDIR
-> Définit le répertoire pour les fichiers temporaires.
$DEVICE
-> Définit un périphérique particulier dans un script ou une commande.
$CPU
-> Contient des informations relatives au processeur (peut être défini par des outils comme lscpu).
$MEMORY
-> Contient des informations sur la mémoire RAM.
Variables dans les scripts shell
Les variables dans les scripts shell sous Linux sont des éléments essentiels qui permettent de stocker et manipuler des données. Elles peuvent être utilisées pour gérer des chemins de fichiers, des paramètres, des résultats de commandes ou même des valeurs que vous souhaitez réutiliser plusieurs fois dans un script.
Déclaration et utilisation des variables
La syntaxe de base pour déclarer une variable est la suivante :
nom="Nicolas"
On ne met pas d'espaces autour du signe =
, si vous mettez un espace, la commande échouera.
Pour utiliser une variable, vous devez la précéder d'un signe $
.
echo $nom
Cela affichera la valeur stockée dans la variable nom :
Nicolas
Voici un exemple de script shell qui définit et utilise des variables :
#!/bin/bash
# Déclaration de la variable
nom="Emilie"
age="23"
# Utilisation de la variable
echo "Je m'appelle $nom, j'ai $age ans !"
Lors de l'exécution, ce script affichera :
Je m'appelle Emilie, j'ai 23 ans !
Types de variables
Variables locales : Par défaut, les variables définies dans un script sont locales à ce script et ne sont pas accessibles depuis l'extérieur (par exemple, dans d'autres scripts ou sessions).
Exemple de variable locale dans un script :
#!/bin/bash
nom="Nicolas" # Variable locale
echo $nom
Variables globales : Si vous voulez qu'une variable soit disponible dans tous les scripts ou sessions de votre terminal, vous devez l'exporter en utilisant la commande export dans le terminal ou en l'ajoutant dans un des fichiers .bashrc ou .profil si vous souhaitez le persister. Après avoir exporté la variable, elle sera disponible dans d'autres scripts ou même dans des sessions de terminal qui sont ouvertes après l'exportation.
Variables spéciales du shell
Il existe également des variables spéciales, qui ont des significations particulières dans les scripts shell.
$0
-> Affiche le nom du script.
$1, $2, ..., $N
-> Paramètres positionnels, utilisés pour capturer des arguments passés au script.
$#
-> Nombre d'arguments passés au script.
$@ et $*
-> Liste de tous les arguments passés au script (légèrement différent dans leur traitement des espaces).
$$
-> ID du processus du script.
$?
-> Code de retour de la dernière commande exécutée. Un code de retour de 0 signifie un succès, toute valeur non nulle indique une erreur.
Créez le script.sh suivant :
#!/bin/bash
echo "Le nom du script est: $0"
echo "Le premier argument est: $1"
echo "Le deuxième argument est: $2"
echo "Il y a $# arguments."
echo "Le PID du script est: $$"
ls /nonexistent_directory
echo "Le code de retour est: $?"
echo "Utilisateur actuel: $USER"
Vous pouvez lancer le script dans le terminal :
./script.sh Bonjour Monde
Le script affichera :
Le nom du script est: script.sh
Le premier argument est: Bonjour
Le deuxième argument est: Monde
Il y a 2 arguments.
Le PID du script est: xxxx
Le code de retour est: 2
Utilisateur actuel: Nicolas
Manipulation de variables dans les scripts
Les variables peuvent être modifiées pendant l'exécution du script en réaffectant de nouvelles valeurs :
nom="Alice"
echo $nom # Affiche Alice
nom="Bob"
echo $nom # Affiche Bob
Vous pouvez concaténer des chaînes de texte et des variables facilement :
prenom="Nicolas"
message="Bonjour, $prenom !"
echo $message # Affiche "Bonjour, Nicolas !"
Les variables sont interprétées dans les chaînes entre guillemets doubles "
, mais pas dans les guillemets simples '
.
Les variables peuvent être utilisées dans des calculs mathématiques, mais vous devez utiliser $(())
pour l'arithmétique :
a=5
b=10
somme=$((a + b))
echo $somme # Affiche 15
Lire des entrées utilisateur
Dans un script, vous pouvez demander à l'utilisateur d'entrer des données avec la commande read
et les stocker dans une variable.
#!/bin/bash
echo "Quel est ton prénom ?"
read prenom
echo "Bonjour, $prenom !"
Lorsque vous exécutez le script, il attendra que l'utilisateur entre une valeur.
Utiliser des variables d'environnement dans les scripts
Les variables d'environnement sont des variables spéciales définies par le système ou par l'utilisateur. Par exemple, $HOME ou $PATH.
#!/bin/bash
echo "Le répertoire personnel est: $HOME"
echo "Le chemin des exécutables est: $PATH"
Utiliser des variables dans des conditions
Les variables peuvent être utilisées dans des conditions pour tester des valeurs et exécuter des actions en fonction de ces valeurs.
Tester l'existence d'une chaîne de caractères.
#!/bin/bash
nom="Alice"
if [ "$nom" == "Alice" ]; then
echo "Bonjour Alice !"
else
echo "Ce n'est pas Alice."
fi
Tester l'existence d'un fichier.
#!/bin/bash
fichier="fichier.txt"
if [ -f "$fichier" ]; then
echo "Le fichier existe."
else
echo "Le fichier n'existe pas."
fi
Passage de variables à des fonctions
Dans un script, vous pouvez passer des variables à des fonctions comme arguments. Une fonction peut ensuite utiliser ces arguments pour effectuer des actions.
#!/bin/bash
ma_fonction() {
echo "Le premier argument est: $1"
echo "Le deuxième argument est: $2"
}
ma_fonction "Alice" "Bob"
Cela affichera :
Le premier argument est: Alice
Le deuxième argument est: Bob