Aller au contenu
Administration Linux medium

Chemins absolus et relatifs sous Linux

8 min de lecture

Chaque commande Linux qui touche un fichier a besoin de savoir il se trouve. Quand vous tapez cp fichier.conf /tmp/, le shell doit résoudre fichier.conf par rapport à votre position actuelle, et /tmp/ comme un emplacement fixe sur le système. Si vous confondez les deux, vous copiez le mauvais fichier — ou vous obtenez une erreur No such file or directory. Ce guide clarifie cette distinction fondamentale.

  • Distinguer un chemin absolu d’un chemin relatif
  • Utiliser les raccourcis ., .., ~ et - pour naviguer efficacement
  • Construire un chemin correct pour n’importe quelle commande
  • Éviter les erreurs les plus courantes liées aux chemins

Un chemin absolu commence toujours par / (la racine du système de fichiers). Il désigne un emplacement fixe, quel que soit votre répertoire courant :

Fenêtre de terminal
cat /etc/hostname

Ce chemin fonctionne identiquement que vous soyez dans /home/bob, /tmp ou n’importe où ailleurs. Le / initial signifie “pars de la racine, puis descends dans etc, puis ouvre hostname”.

Exemples de chemins absolus :

/etc/ssh/sshd_config
/var/log/syslog
/home/bob/Documents/rapport.txt
/usr/bin/ls

Règle simple : si le chemin commence par /, c’est un chemin absolu.

Un chemin relatif ne commence pas par /. Il est interprété par rapport au répertoire où vous vous trouvez (pwd) :

Fenêtre de terminal
cd /etc/ssh
cat sshd_config

Ici, sshd_config est un chemin relatif. Le shell le résout comme /etc/ssh/sshd_config parce que vous êtes dans /etc/ssh.

Si vous changez de répertoire, le même chemin relatif pointe ailleurs :

Fenêtre de terminal
cd /tmp
cat sshd_config # Erreur ! Il n'y a pas de sshd_config dans /tmp
Sortie
cat: sshd_config: No such file or directory

Linux propose des symboles spéciaux pour simplifier la navigation :

SymboleSignificationExemple
.Répertoire courant./script.sh (exécuter un script ici)
..Répertoire parent (un niveau au-dessus)cd .. (remonter)
~Votre répertoire personnel (/home/<user>)cd ~ ou ls ~/Documents
-Répertoire précédent (avec cd uniquement)cd - (retour arrière)

Le point seul désigne “ici”. Il est surtout utile pour :

  • Exécuter un script dans le répertoire courant : ./mon-script.sh
  • Copier un fichier vers ici : cp /etc/hostname .
Fenêtre de terminal
cd /tmp
cp /etc/hostname .
ls hostname
Sortie
hostname

Le fichier a été copié dans /tmp/ (le répertoire courant).

Le double point remonte d’un niveau dans l’arborescence :

Fenêtre de terminal
pwd
/var/log/nginx
Fenêtre de terminal
cd ..
pwd
/var/log

On peut enchaîner les .. pour remonter de plusieurs niveaux :

Fenêtre de terminal
cd ../../etc
pwd
/etc

Depuis /var/log, ../../etc signifie : remonter deux niveaux (→ /), puis descendre dans etc.

Le tilde est un raccourci vers le répertoire personnel de l’utilisateur connecté. Pour l’utilisateur bob, ~ équivaut à /home/bob :

Fenêtre de terminal
ls ~/.bashrc # /home/bob/.bashrc
cp fichier.txt ~/ # copier dans /home/bob/
cd ~ # retourner au home

Avec cd, le tiret ramène au dernier répertoire visité :

Fenêtre de terminal
cd /etc/ssh
cd /var/log
cd - # retour à /etc/ssh
Sortie
/etc/ssh

C’est pratique quand vous alternez entre deux emplacements.

SituationPréférerPourquoi
Fichier de configuration systèmeAbsolu (/etc/ssh/sshd_config)L’emplacement ne change jamais
Script automatiséAbsoluLe script peut être lancé depuis n’importe quel répertoire
Manipulation de fichiers prochesRelatif (./config/app.conf)Plus court, plus lisible
Documentation, guidesAbsoluPas d’ambiguïté pour le lecteur
Navigation rapide au clavierRelatif (cd .., cd src/)Plus rapide à taper

Quand vous tapez une commande avec un chemin, le shell suit cette logique :

  1. Le chemin commence par / → chemin absolu, résolu depuis la racine
  2. Le chemin commence par ~ → remplacé par /home/<user>, puis résolu
  3. Sinon → chemin relatif, résolu depuis le résultat de pwd

Exemples depuis /home/bob/Projets :

Vous tapezLe shell résoutType
/etc/hosts/etc/hostsabsolu
~/Documents/note.txt/home/bob/Documents/note.txtabsolu (via ~)
README.md/home/bob/Projets/README.mdrelatif
./src/main.py/home/bob/Projets/src/main.pyrelatif
../Documents/home/bob/Documentsrelatif
../../etc/etcrelatif
  1. Vérifiez votre position :

    Fenêtre de terminal
    pwd
  2. Naviguez en absolu puis en relatif :

    Fenêtre de terminal
    cd /var/log
    pwd
    cd ../../etc
    pwd

    Vous devriez être dans /etc.

  3. Utilisez le tilde :

    Fenêtre de terminal
    cd ~
    pwd

    Vous êtes dans votre home.

  4. Copiez un fichier avec les deux types de chemin :

    Fenêtre de terminal
    # Chemin absolu
    cp /etc/hostname /tmp/hostname-absolu
    # Chemin relatif (depuis /etc)
    cd /etc
    cp hostname /tmp/hostname-relatif

    Vérification :

    Fenêtre de terminal
    diff /tmp/hostname-absolu /tmp/hostname-relatif

    Aucune sortie = fichiers identiques.

  5. Testez cd - :

    Fenêtre de terminal
    cd /var/log
    cd /etc/ssh
    cd -
    pwd

    Vous devriez être de retour dans /var/log.

SymptômeCause probableSolution
No such file or directoryChemin relatif incorrect (vous n’êtes pas où vous pensez)Vérifier avec pwd, utiliser un chemin absolu
No such file or directory avec un chemin absoluFaute de frappe dans le cheminUtiliser Tab pour l’auto-complétion
./script.sh: Permission deniedLe fichier n’est pas exécutablechmod +x ./script.sh
bash: cd: /etc/ssh/sshd_config: Not a directoryVous avez donné un fichier au lieu d’un répertoire à cdVérifier que la cible est bien un répertoire avec ls -ld
~ n’est pas interprété dans un scriptTilde entre guillemets doubles ou simplesUtiliser $HOME à la place de ~ dans les scripts
  • Un chemin absolu commence par / — il fonctionne depuis n’importe quel répertoire.
  • Un chemin relatif dépend de votre position actuelle (pwd).
  • . = ici, .. = parent, ~ = home, - = précédent.
  • Dans les scripts, préférez toujours les chemins absolus ou $HOME.
  • En cas de doute, pwd vous rappelle où vous êtes, et Tab complète les chemins.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn