Linux & Bash · Chapitre 1

1. Introduction à Linux

Avant d’écrire des scripts Bash, il faut comprendre l’environnement dans lequel Bash travaille. Ce chapitre pose donc les bases : ce qu’est Linux, comment son système de fichiers est organisé, comment se repérer dans un terminal et comment fonctionnent les variables d’environnement.

Fil conducteur : sous Linux, tout part de la racine /. On apprend d’abord à lire cette arborescence, puis à savoir où l’on est, ce qu’il y a autour de nous et comment se déplacer.

1.1 Un peu d’histoire de Linux

Dans les années 1980, Richard Stallman lance le projet GNU, avec l’objectif de créer un système d’exploitation libre inspiré d’Unix. Au début des années 1990, Linus Torvalds développe le noyau Linux. L’association du noyau Linux avec les outils GNU donne ce que l’on appelle GNU/Linux, couramment abrégé en Linux.

Linux existe sous différentes distributions. Debian et Red Hat en sont deux familles importantes. Ubuntu, utilisée dans le cours Liora, est une distribution dérivée de Debian.

À retenir : Linux désigne techniquement le noyau. Une distribution assemble ce noyau avec des outils, logiciels, gestionnaires de paquets et choix de configuration pour former un système utilisable.

1.2 Architecture du système

Les fichiers et dossiers Linux sont organisés sous forme d’un arbre. Tout commence à la racine, notée /.

/
├── etc
├── home
│   └── ubuntu
├── usr
│   └── bin
├── var
└── ...

Un dossier peut contenir des sous-dossiers, qui peuvent eux-mêmes contenir d’autres dossiers ou fichiers. Il n’existe donc pas de lettres de lecteur comme C: au cœur de l’organisation Linux : tous les chemins s’inscrivent dans cette même arborescence.

RépertoireRôle principal
/binCommandes/binaires essentiels.
/bootFichiers nécessaires au démarrage.
/devFichiers représentant les périphériques et certains flux système.
/etcConfiguration du système et des services.
/homeRépertoires personnels des utilisateurs.
/libBibliothèques essentielles utilisées par des programmes.
/mediaPoints de montage souvent utilisés pour les supports amovibles.
/mntPoint de montage générique.
/optLogiciels additionnels installés hors de la hiérarchie habituelle.
/procInterface virtuelle exposant des informations sur le noyau et les processus.
/rootRépertoire personnel de l’utilisateur root.
/runDonnées d’exécution temporaires depuis le démarrage.
/sbinCommandes d’administration système essentielles.
/srvDonnées servies par certains services.
/tmpFichiers temporaires.
/usrGrande partie des programmes, bibliothèques et données partagées.
/varDonnées variables : logs, caches, files d’attente, etc.
Nuance utile : le cours Liora résume /var comme « contient les fichiers de log ». Les logs se trouvent notamment dans /var/log, mais /var contient aussi d’autres données qui changent pendant le fonctionnement du système.

1.3 Premières commandes

1.3.1 Comprendre le prompt

Après une connexion SSH, on rencontre souvent un prompt ressemblant à :

ubuntu@machine:~$
ÉlémentSignification
ubuntuUtilisateur connecté.
@Séparateur.
machineNom de la machine.
:Sépare l’identité de l’emplacement courant.
~Répertoire personnel de l’utilisateur.
$Prompt d’un utilisateur normal.

Avec le super-utilisateur root, le prompt se termine généralement par #.

1.3.2 Savoir où l’on est : pwd et ls

La commande pwd (print working directory) affiche le chemin complet du répertoire courant.

pwd
/home/ubuntu

La commande ls liste le contenu d’un répertoire.

ls
ls /
ls /usr/bin

Sans argument, ls regarde le répertoire courant. Avec un chemin en argument, elle regarde le répertoire indiqué.

OptionEffet
-aAffiche aussi les entrées cachées, dont le nom commence par ..
-lAffichage détaillé : droits, propriétaire, taille, date…
-RParcourt récursivement les sous-répertoires.
-hAffiche les tailles dans un format lisible ; utile avec une option qui affiche les tailles, par exemple ls -lh.

Pour découvrir une commande :

ls --help
man ls

Dans man, utilisez les flèches pour naviguer et q pour quitter.

1.3.3 Chemin absolu et chemin relatif

Un chemin absolu part de la racine / : il désigne un emplacement indépendamment du répertoire courant.

/usr/bin
/home/ubuntu

Un chemin relatif part de l’endroit où l’on se trouve actuellement. Deux entrées spéciales sont fondamentales :

NotationSignification
.Répertoire courant.
..Répertoire parent.

Si l’on se trouve dans /home/ubuntu :

ls ..
ls ../../usr/bin

Dans le second exemple, .. mène à /home, le second .. mène à /, puis le chemin redescend vers usr/bin.

1.3.4 Se déplacer avec cd

cd signifie change directory. Cette commande change le répertoire courant.

cd /
pwd
cd /usr/bin
pwd

Pour revenir au répertoire personnel :

cd
# ou
cd ~
Réflexe terminal : pwd répond à « où suis-je ? », ls à « qu’y a-t-il ici ? » et cd à « où veux-je aller ? ».

1.4 Variables d’environnement

Une variable associe un nom à une valeur. Les variables d’environnement permettent aux programmes et au shell de récupérer des informations sur leur environnement d’exécution : utilisateur, langue, répertoire personnel, chemins où rechercher les commandes, etc.

1.4.1 Créer et lire une variable d’environnement

Pour créer une variable et l’exporter dans l’environnement des processus lancés depuis ce shell :

export DATASCIENTEST=prenom.nom

Pour lire sa valeur, Bash remplace $NOM par la valeur de la variable :

echo $DATASCIENTEST

Pour afficher les variables d’environnement :

printenv
Durée de vie : cette définition est liée à la session. Le cours indique qu’une persistance peut être configurée via .bashrc ; ce point sera traité plus tard.

1.4.2 Variables importantes

VariableRôle
PATHListe des répertoires dans lesquels le shell recherche les commandes.
USERNom de l’utilisateur courant.
PWDRépertoire de travail courant.
HOMERépertoire personnel de l’utilisateur.
LANGParamètres de langue/localisation utilisés par de nombreux programmes.

Exemple :

echo $USER
echo $HOME
echo $PWD
echo $PATH

1.4.3 Supprimer une variable

unset supprime une variable du shell courant :

unset DATASCIENTEST

1.5 Synthèse

BesoinCommande / notation
Connaître le répertoire courantpwd
Lister un répertoirels
Changer de répertoirecd
Racine Linux/
Répertoire personnel~
Répertoire courant / parent. / ..
Créer/exporter une variableexport NOM=VALEUR
Lire une variableecho $NOM
Lister l’environnementprintenv
Supprimer une variableunset NOM
Bien. Ces aspects théoriques étant acquis. Vous avez maintenant les repères nécessaires pour comprendre l’organisation des fichiers, des chemins et de l’environnement Bash.