← Sommaire SkyLinux

Leçon 10 : Variables d'environnement et scripts Bash

Dans cette leçon, tu vas maîtriser les variables d'environnement et créer tes premiers scripts Bash pour automatiser des tâches.


1. Variables d'environnement

Qu'est-ce qu'une variable d'environnement ?

Une variable d'environnement est une paire **nom=valeur** que le système et les programmes utilisent pour configurer leur comportement. Elles sont héritées par tous les processus enfants.

Commandes de base

# Lister toutes les variables

env

printenv

# Voir une variable spécifique

echo $HOME

echo $PATH

echo $USER

# Définir une variable (session actuelle)

MA_VARIABLE="Bonjour"

echo $MA_VARIABLE

# Exporter une variable (pour les sous-processus)

export MA_VARIABLE

# ou

export MA_VARIABLE="Bonjour"

Portée des variables

# Variable locale (processus courant uniquement)

MA_VAR="valeur"

# Variable exportée (héritée par les enfants)

export MA_VAR="valeur"

# Variable persistante (à ajouter dans ~/.bashrc ou ~/.profile)

echo 'export MA_VAR="valeur"' >> ~/.bashrc

source ~/.bashrc # Recharger


2. Variables système importantes

VariableDescriptionExemple
$HOMERépertoire personnel/home/david
$USERNom d'utilisateurdavid
$PATHChemins des commandes/usr/local/bin:/usr/bin
$PWDRépertoire courant/home/david
$SHELLShell par défaut/bin/bash
$LANGLanguefr_CH.UTF-8
$TERMType de terminalxterm-256color
$HOSTNAMENom de la machineraspberrypi
$DISPLAYÉcran X11:0
$EDITORÉditeur par défautnano

Modifier le PATH

# Ajouter un répertoire au PATH

export PATH=$PATH:/nouveau/chemin

# PATH temporaire

export PATH="/home/david/scripts:$PATH"

# PATH permanent (ajouter à ~/.bashrc)

echo 'export PATH="$PATH:/home/david/scripts"' >> ~/.bashrc


3. Introduction aux scripts Bash

Créer un script

nano mon_script.sh

Structure de base

#!/bin/bash

# Commentaire : ce script fait quelque chose

echo "Hello World !"

Rendre exécutable

chmod +x mon_script.sh

./mon_script.sh

⚠️ **Important** : Le shebang #!/bin/bash indique quel interpréteur utiliser.


4. Variables dans les scripts

Variables utilisateur

#!/bin/bash

NOM="David"

echo "Bonjour $NOM !"

# Avec read

echo -n "Ton prénom: "

read prenom

echo "Salut $prenom !"

#read avec prompt

read -p "Ton âge: " age

echo "Tu as $age ans"

Variables spéciales

VariableDescription
$0Nom du script
$1, $2, ...Arguments positionnels
$#Nombre d'arguments
$@Tous les arguments
$?Code de retour de la dernière commande
$$PID du script
$!PID du dernier processus en arrière-plan

Exemple avec arguments

#!/bin/bash

echo "Script: $0"

echo "Premier argument: $1"

echo "Deuxième argument: $2"

echo "Nombre d'arguments: $#"

echo "Tous les arguments: $@"


5. Conditions (if/else)

Syntaxe

if [ condition ]; then

# commandes

elif [ condition ]; then

# commandes

else

# commandes

fi

Comparaisons de nombres

if [ $a -eq $b ]; then # Égal

if [ $a -ne $b ]; then # Différent

if [ $a -gt $b ]; then # Plus grand

if [ $a -ge $b ]; then # Plus grand ou égal

if [ $a -lt $b ]; then # Plus petit

if [ $a -le $b ]; then # Plus petit ou égal

Comparaisons de chaînes

if [ "$a" = "$b" ]; then # Égal

if [ "$a" != "$b" ]; then # Différent

if [ -z "$a" ]; then # Vide

if [ -n "$a" ]; then # Non vide

Tests sur fichiers

if [ -f "$fichier" ]; then # Fichier régulier

if [ -d "$dossier" ]; then # Répertoire

if [ -e "$fichier" ]; then # Existe

if [ -r "$fichier" ]; then # Lisible

if [ -w "$fichier" ]; then # Écriture

if [ -x "$fichier" ]; then # Exécutable

if [ -s "$fichier" ]; then # Non vide

Exemple complet

#!/bin/bash

if [ $# -eq 0 ]; then

echo "Usage: $0 <nom>"

exit 1

fi

NOM=$1

if [ -f "$NOM.txt" ]; then

echo "Le fichier $NOM.txt existe"

else

echo "Le fichier $NOM.txt n'existe pas"

echo "Je le crée..."

touch "$NOM.txt"

fi


6. Boucles

Boucle for classique

for i in 1 2 3 4 5; do

echo "Compteur: $i"

done

# Parcourir un dossier

for fichier in *.txt; do

echo "Fichier: $fichier"

done

# Suite numérique

for i in {1..10}; do

echo $i

done

Boucle for C-style

for ((i=0; i<10; i++)); do

echo "i = $i"

done

Boucle while

compteur=1

while [ $compteur -le 5 ]; do

echo "Compteur: $compteur"

compteur=$((compteur + 1))

done

Boucle until

compteur=1

until [ $compteur -gt 5 ]; do

echo "Compteur: $compteur"

compteur=$((compteur + 1))

done


7. Case (switch)

#!/bin/bash

echo "Choisis une option: "

read option

case $option in

1)

echo "Tu as choisi 1"

;;

2)

echo "Tu as choisi 2"

;;

3)

echo "Tu as choisi 3"

;;

*)

echo "Choix invalide"

;;

esac


8. Fonctions

Définir une fonction

# Fonction sans paramètre

dire_bonjour() {

echo "Bonjour !"

}

# Appeler

dire_bonjour

Fonction avec paramètres

dire_bonjour_a() {

echo "Bonjour $1 !" # $1 = premier argument

}

dire_bonjour_a "David"

Fonction avec retour

additionner() {

resultat=$(($1 + $2))

echo $resultat

}

somme=$(additionner 5 3)

echo "5 + 3 = $somme"


9. Tableaux

Déclaration

# Tableau simple

tableau=(valeur1 valeur2 valeur3)

# Tableau avec indices

tableau[0]="premier"

tableau[1]="deuxième"

Accéder aux éléments

echo ${tableau[0]} # Premier élément

echo ${tableau[@]} # Tous les éléments

echo ${#tableau[@]} # Nombre d'éléments

Parcourir un tableau

for element in "${tableau[@]}"; do

echo $element

done


10. Exercices pratiques

Exercice 1 : Script de backup

#!/bin/bash

# Backup automatique

DEST="$HOME/backup_$(date +%Y%m%d)"

mkdir -p $DEST

cp -r ~/Documents/* $DEST/

echo "Backup créé dans $DEST"

Exercice 2 : Vérification système

#!/bin/bash

echo "=== État du système ==="

echo "Uptime: $(uptime)"

echo "Mémoire: $(free -h | grep Mem)"

echo "Disque: $(df -h / | tail -1)"

Exercice 3 : Menu interactif

#!/bin/bash

echo "1. Afficher la date"

echo "2. Afficher qui est connecté"

echo "3. Afficher l'espace disque"

read -p "Choix: " choix

case $choix in

1) date ;;

2) who ;;

3) df -h ;;

*) echo "Choix invalide" ;;

esac


11. Trucs et Astuces

# Debug un script

bash -x script.sh

# Ignorer les erreurs

commande || true

# Valeur par défaut

echo ${VAR:-"défaut"}

# Assigner si vide

echo ${VAR:="défaut"}

# Opérations mathématiques

result=$((5 + 3)) # Addition

result=$((10 / 2)) # Division

result=$((10 % 3)) # Modulo


12. Résumé

ConceptCommande/Syntaxe
VariableVAR="valeur"
Accéder$VAR
Exporterexport VAR
Conditionif [ $a -eq $b ]; then ... fi
Boucle forfor i in 1 2 3; do ... done
Boucle whilewhile [ condition ]; do ... done
Fonctionnom() { ... }
Argument$1, $2, $@

Maîtrise ces bases et tu pourras créer des scripts puissants pour automatiser tes tâches Linux ! 🚀