15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer
09.10.2024

Répertoires Binaires Linux Expliqués : Une Référence Technique Complète

Les répertoires de binaires Linux sont les emplacements standardisés du système de fichiers où résident les programmes exécutables, les outils d’administration système et les bibliothèques partagées. Le Filesystem Hierarchy Standard (FHS) définit ces chemins pour garantir un placement cohérent des logiciels entre les distributions, permettant une résolution `PATH` prévisible, une gestion propre des paquets et une récupération système fiable — même lorsque les systèmes de fichiers non essentiels sont indisponibles.

Pour tout administrateur gérant un environnement VPS Hosting ou un serveur bare-metal, savoir exactement quel binaire se trouve où — et pourquoi — n’est pas une connaissance optionnelle. Cela affecte directement le comportement au démarrage, la séparation des privilèges, la stratégie de déploiement des logiciels et le durcissement de la sécurité.

Pourquoi la structure des répertoires de binaires est importante

Avant d’examiner les répertoires individuels, il convient de comprendre la logique architecturale derrière cette séparation. Le FHS divise le système de fichiers en deux axes fondamentaux :

  • Essentiel vs. non essentiel : Les binaires requis pour le mode mono-utilisateur et la réparation d’urgence doivent être disponibles avant que `/usr` ne soit monté. Tout le reste peut résider sous `/usr`.
  • Niveau système vs. niveau utilisateur : Les binaires destinés à l’administration au niveau root sont séparés de ceux accessibles aux utilisateurs non privilégiés, permettant un contrôle d’accès plus strict via les permissions du système de fichiers.

Cette philosophie de conception est antérieure aux systèmes init modernes, mais elle reste profondément pertinente. Un `PATH` mal configuré, un binaire placé dans le mauvais répertoire, ou un lien symbolique de bibliothèque manquant peut silencieusement briser les séquences de démarrage, les tâches cron ou les scripts de démarrage des services.

Les répertoires de binaires principaux en un coup d’œil

RépertoireObjectifNécessite root ?Disponible avant le montage de `/usr` ?Géré par
`/bin`Binaires utilisateur essentielsNonOui (ou lien symbolique)Gestionnaire de paquets
`/sbin`Binaires système essentielsOuiOui (ou lien symbolique)Gestionnaire de paquets
`/usr/bin`Binaires utilisateur standardNonNonGestionnaire de paquets
`/usr/sbin`Binaires système non essentielsOuiNonGestionnaire de paquets
`/usr/local/bin`Binaires utilisateur installés localementNonNonAdministrateur
`/usr/local/sbin`Binaires système installés localementOuiNonAdministrateur
`/opt`Logiciels tiers autonomesVariableNonFournisseur/Administrateur
`/lib`, `/usr/lib`Bibliothèques partagéesN/AVariableGestionnaire de paquets

/bin — Binaires utilisateur essentiels

`/bin` contient l’ensemble minimal d’exécutables requis pour que le système démarre et pour qu’un utilisateur puisse effectuer des opérations de base en mode mono-utilisateur ou de secours. Ces binaires doivent être accessibles même lorsque seul le système de fichiers racine est monté.

Exemples canoniques : `ls`, `cp`, `mv`, `cat`, `bash`, `echo`, `grep`, `chmod`, `ln`, `mkdir`, `rm`, `ps`

Détail technique critique : Sur les distributions basées sur systemd — notamment Debian 10+, Ubuntu 20.04+, Fedora, Arch Linux et RHEL 8+ — `/bin` est désormais un lien symbolique pointant vers `/usr/bin`. Cela fait partie de l’initiative UsrMerge, qui consolide les répertoires de binaires au niveau racine dans leurs homologues `/usr` pour simplifier la conception de l’initramfs et permettre des mises à jour atomiques du système d’exploitation. Vous pouvez le vérifier sur tout système fusionné :

“`bash

ls -la /bin

lrwxrwxrwx 1 root root 7 /bin -> usr/bin

“`

Implication opérationnelle : Si vous écrivez des scripts shell destinés à s’exécuter dans des environnements de secours ou des hooks de démarrage précoce (par exemple, des scripts initramfs), ne supposez jamais que `/usr/bin` est disponible. Utilisez toujours `/bin/sh` comme shebang et référencez uniquement les utilitaires mandatés par POSIX.

/sbin — Binaires système essentiels

`/sbin` contient les binaires réservés aux tâches d’administration système qui doivent être exécutables pendant le démarrage et les opérations de réparation du système de fichiers, avant que l’arborescence complète du système de fichiers ne soit disponible.

Exemples canoniques : `fsck`, `ifconfig`, `ip`, `reboot`, `shutdown`, `mkfs`, `mount`, `umount`, `fdisk`, `modprobe`, `init`

Nuance sur les privilèges : Bien que les binaires de `/sbin` soient *destinés* à un usage root, ils sont exécutables par tous sur la plupart des distributions. La restriction est imposée par les opérations elles-mêmes — `fsck` nécessite un accès brut au périphérique, `mount` nécessite `CAP_SYS_ADMIN` — et non par le bit d’exécution du binaire. C’est une source fréquente de confusion lors des audits de sécurité.

Statut moderne : Comme `/bin`, `/sbin` est un lien symbolique vers `/usr/sbin` sur les systèmes à usr fusionné. La distinction entre `/sbin` et `/bin` est désormais principalement sémantique et historique plutôt que structurelle.

/usr/bin — Le dépôt principal de binaires utilisateur

`/usr/bin` est le répertoire de binaires le plus grand et le plus fréquemment consulté sur une installation Linux typique. Il contient tous les utilitaires en ligne de commande standard orientés utilisateur et les applications installées via le gestionnaire de paquets système qui ne sont pas requises pour les opérations d’urgence.

Exemples canoniques : `vim`, `nano`, `git`, `python3`, `perl`, `gcc`, `curl`, `wget`, `ssh`, `tar`, `gzip`, `awk`, `sed`, `find`

Échelle en pratique : Sur une installation minimale d’un serveur Debian, `/usr/bin` peut contenir 200 à 400 binaires. Une installation complète d’environnement de bureau peut faire monter ce nombre au-delà de 2 000. Ce répertoire est toujours dans le `PATH` par défaut pour tous les utilisateurs.

Propriété du gestionnaire de paquets : Chaque fichier ici est suivi par `dpkg`, `rpm`, ou l’équivalent de votre distribution. Placer manuellement des fichiers dans `/usr/bin` est fortement déconseillé — les mises à niveau de paquets peuvent les écraser silencieusement sans avertissement.

/usr/sbin — Binaires d’administration système non essentiels

`/usr/sbin` contient les outils d’administration système qui ne sont pas requis pendant le processus de démarrage ou la récupération en mode mono-utilisateur, mais qui sont essentiels pour la gestion quotidienne du serveur.

Exemples canoniques : `apache2`, `nginx`, `sshd`, `useradd`, `userdel`, `usermod`, `groupadd`, `iptables`, `nftables`, `cron`, `logrotate`, `tcpdump`

Aperçu architectural : La séparation de `/sbin` et `/usr/sbin` était initialement conçue pour qu’un administrateur système puisse démarrer en mode mono-utilisateur et effectuer des réparations sans avoir besoin de monter `/usr`. En pratique, sur les systèmes modernes avec initramfs et espace utilisateur précoce, cette distinction s’est largement effacée. Cependant, la comprendre reste essentiel lorsqu’on travaille avec des systèmes RHEL 6/CentOS 6 plus anciens ou des environnements Linux embarqués où `/usr` peut véritablement être une partition séparée.

/usr/local/bin — Binaires utilisateur installés par l’administrateur

`/usr/local/bin` est l’emplacement correct pour les binaires installés manuellement — en dehors du gestionnaire de paquets système — et qui doivent être disponibles pour tous les utilisateurs du système.

Cas d’utilisation typiques :

  • Logiciels compilés depuis les sources (par exemple, une version personnalisée de `nginx` avec des modules non standard)
  • Scripts Python installés via `pip install –prefix=/usr/local`
  • Outils CLI tiers distribués en tant que binaires autonomes (par exemple, `kubectl`, `helm`, `terraform`, `hugo`)
  • Scripts d’automatisation personnalisés devant être disponibles à l’échelle du système

Priorité dans PATH : Sur un système conforme au FHS standard, `/usr/local/bin` apparaît *avant* `/usr/bin` dans le `PATH` par défaut. Cela signifie qu’un binaire placé ici masquera un binaire géré par le gestionnaire de paquets portant le même nom. C’est intentionnel — cela permet aux personnalisations locales de remplacer les valeurs par défaut de la distribution — mais c’est aussi une source fréquente de bugs subtils lorsque les versions divergent.

“`bash

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

“`

Considération de sécurité : Étant donné que `/usr/local/bin` n’est pas audité par le gestionnaire de paquets, les binaires placés ici ne reçoivent pas de mises à jour de sécurité automatiques. Sur les serveurs exécutant des charges de travail en production — y compris ceux sur des Dedicated Servers — établissez un calendrier de mise à jour manuel ou utilisez un outil de gestion de configuration (Ansible, Puppet, Chef) pour suivre et mettre à jour ces binaires.

/usr/local/sbin — Binaires système installés par l’administrateur

`/usr/local/sbin` reflète la relation entre `/sbin` et `/bin`, mais au niveau local. C’est l’emplacement correct pour les outils d’administration système installés manuellement qui nécessitent des privilèges élevés ou sont destinés uniquement à root.

Cas d’utilisation typiques :

  • Scripts de sauvegarde personnalisés s’exécutant en tant que root via cron
  • Agents de surveillance compilés manuellement (par exemple, une version personnalisée de `node_exporter`)
  • Scripts wrapper administratifs qui appellent des appels système privilégiés
  • Utilitaires de gestion fournis par les fournisseurs livrés sous forme d’archives tar plutôt que de paquets

Discipline opérationnelle : Maintenez un `README` ou un fichier d’inventaire dans `/usr/local/sbin` documentant l’origine, la version et la procédure de mise à jour de chaque binaire. Sur une infrastructure partagée, les binaires non documentés dans ce répertoire constituent une responsabilité en matière de sécurité et d’auditabilité.

/opt — Applications tierces autonomes

`/opt` est conçu pour les paquets logiciels qui ne se conforment pas à la structure de répertoires FHS — généralement des applications commerciales ou propriétaires, de grandes suites logicielles distribuées par des fournisseurs, et des applications qui regroupent leurs propres bibliothèques pour éviter les conflits de dépendances.

Exemples canoniques :

  • `/opt/google/chrome/` — Navigateur Google Chrome
  • `/opt/lampp/` — Stack XAMPP
  • `/opt/pycharm/` — IDE JetBrains PyCharm
  • `/opt/gitlab/` — Installation Omnibus GitLab
  • `/opt/aws/` — AWS CLI v2 et SSM Agent

Convention structurelle : Chaque application sous `/opt` doit occuper son propre sous-répertoire selon le modèle `/opt/<provider>/` ou `/opt/<package>/`. Les binaires de l’application résident généralement dans `/opt/<package>/bin/`, et le fournisseur est censé installer un lien symbolique dans `/usr/local/bin` ou modifier `/etc/profile.d/` pour ajouter le chemin.

Quand utiliser `/opt` vs. `/usr/local` : Utilisez `/opt` lorsque le logiciel est livré sous forme de bundle autonome avec ses propres bibliothèques, configuration et répertoires de données. Utilisez `/usr/local/bin` pour les outils à binaire unique ou les scripts qui s’intègrent proprement avec la pile de bibliothèques système existante.

Cas limite réel : GitLab Omnibus s’installe entièrement sous `/opt/gitlab/` et gère ses propres instances PostgreSQL, Redis et Nginx. Cette isolation est intentionnelle — elle prévient les conflits de versions avec les services au niveau système. Cependant, cela signifie également que les outils de surveillance au niveau système ne découvriront pas automatiquement ces processus à moins d’être explicitement configurés pour chercher dans `/opt`.

/lib, /usr/lib, /lib64 et /usr/lib64 — Bibliothèques partagées

Ces répertoires contiennent les fichiers objets partagés (fichiers `.so`) dont dépendent les binaires des répertoires de binaires correspondants au moment de l’exécution. Ils ne sont pas exécutables au sens traditionnel, mais sont chargés en mémoire de processus par l’éditeur de liens dynamique (`ld-linux.so`).

Répertoires clés et leurs rôles :

  • `/lib` — Bibliothèques partagées requises par les binaires dans `/bin` et `/sbin`. Sur les systèmes à usr fusionné, un lien symbolique vers `/usr/lib`.
  • `/usr/lib` — Le dépôt principal de toutes les bibliothèques partagées système. C’est là que résident les bibliothèques gérées par le gestionnaire de paquets.
  • `/lib64` — Variante 64 bits de `/lib` sur les systèmes multilib (courant sur x86_64 RHEL/CentOS). Souvent un lien symbolique vers `/usr/lib64`.
  • `/usr/lib64` — Bibliothèques partagées 64 bits sur les distributions basées sur RPM.
  • `/usr/local/lib` — Bibliothèques installées avec les logiciels compilés manuellement.
  • `/usr/lib/x86_64-linux-gnu/` — Chemin de bibliothèque multiarch Debian/Ubuntu, permettant la coexistence de bibliothèques 32 bits et 64 bits.

Mécanique de l’éditeur de liens à l’exécution : Lorsqu’un binaire s’exécute, le noyau passe le contrôle à l’éditeur de liens dynamique spécifié dans l’en-tête ELF (généralement `/lib64/ld-linux-x86-64.so.2`). L’éditeur de liens résout les dépendances de bibliothèques partagées en utilisant le cache construit par `ldconfig`, qui lit `/etc/ld.so.conf` et son répertoire d’inclusion. Si une bibliothèque est installée mais que `ldconfig` n’a pas été exécuté, le binaire échouera avec une erreur « bibliothèque partagée introuvable » même si le fichier existe.

“`bash

After installing a library to /usr/local/lib, always run:

ldconfig

Verify library resolution for a specific binary:

ldd /usr/bin/curl

“`

Écueil courant : Installer une bibliothèque compilée personnalisée dans `/usr/local/lib` sans exécuter `ldconfig` ensuite est l’une des causes les plus fréquentes d’erreurs « cannot open shared object file » sur les serveurs Linux. C’est particulièrement courant lors de la compilation de logiciels depuis les sources sur un VPS avec cPanel ou des environnements gérés similaires où le processus de compilation peut ne pas avoir accès root pour exécuter `ldconfig`.

L’UsrMerge : consolidation moderne du système de fichiers

L’initiative UsrMerge (ou `usr-merge`) mérite une attention particulière car elle modifie fondamentalement le modèle mental que de nombreux administrateurs ont hérité des systèmes plus anciens.

Le problème qu’elle résout : Historiquement, `/bin`, `/sbin`, `/lib` et `/lib64` existaient en tant que répertoires indépendants sur le système de fichiers racine, séparés de `/usr`. Cela nécessitait que l’initramfs contienne un ensemble minimal d’outils pour monter `/usr` avant que le système complet puisse s’initialiser. Alors que l’initramfs est devenu universel et que `/usr` a commencé à être traité comme un volume en lecture seule, potentiellement monté en réseau ou géré par instantanés, la séparation est devenue un obstacle aux mises à jour atomiques et aux déploiements basés sur des images.

Ce qui a changé : Sur les systèmes fusionnés, les répertoires au niveau racine deviennent des liens symboliques :

“`

/bin -> usr/bin

/sbin -> usr/sbin

/lib -> usr/lib

/lib64 -> usr/lib64

“`

Distributions ayant complété l’UsrMerge :

  • Fedora (depuis Fedora 17, 2012)
  • Arch Linux (depuis 2013)
  • Debian (depuis Debian 12 Bookworm, 2023)
  • Ubuntu (depuis Ubuntu 21.10)
  • RHEL/CentOS (depuis RHEL 7)

Impact pratique : Les scripts qui codent en dur `/bin/bash` fonctionnent toujours car `/bin` est un lien symbolique vers `/usr/bin`. Cependant, les scripts qui tentent de déterminer si un chemin est « essentiel » en vérifiant s’il commence par `/bin` plutôt que `/usr/bin` produiront des résultats incorrects. Mettez à jour toute logique de ce type dans vos outils d’automatisation.

Permissions des répertoires de binaires et durcissement de la sécurité

Comprendre les répertoires de binaires est indissociable de la compréhension de leurs implications en matière de sécurité. Plusieurs mesures de durcissement s’appliquent directement à ces chemins.

Références de permissions recommandées :

RépertoirePropriétaireGroupePermissions
`/usr/bin`rootroot`755`
`/usr/sbin`rootroot`755`
`/usr/local/bin`rootroot`755`
`/usr/local/sbin`rootroot`750` ou `755`
`/opt/<package>`rootroot`755`

Binaires SUID/SGID : Certains binaires dans `/usr/bin` et `/usr/sbin` portent le bit SUID, leur permettant de s’exécuter avec des privilèges élevés quel que soit l’utilisateur qui les invoque. Les exemples incluent `passwd`, `sudo`, `su` et `ping`. Auditez-les régulièrement :

“`bash

find /usr/bin /usr/sbin /bin /sbin -perm /4000 -o -perm /2000 2>/dev/null

“`

Indicateurs d’immuabilité : Sur les systèmes à haute sécurité, envisagez d’appliquer `chattr +i` aux binaires critiques ou de monter `/usr` en lecture seule. Cela empêche la modification à l’exécution par des logiciels malveillants ou un processus compromis, bien que cela nécessite un remontage en lecture-écriture pour les mises à jour légitimes de paquets.

Option de montage `noexec` : Monter `/tmp` et `/var/tmp` avec `noexec` empêche les binaires déposés là d’être exécutés directement — une technique courante dans les attaques par web shell. Cela n’affecte pas les répertoires de binaires eux-mêmes, mais constitue une mesure de durcissement complémentaire pertinente pour tout serveur exécutant des applications web, y compris ceux utilisant des environnements d’Shared Web Hosting.

Variable d’environnement PATH et ordre de résolution des binaires

La variable `PATH` détermine l’ordre dans lequel le shell recherche les exécutables dans les répertoires. Comprendre cet ordre est essentiel pour déboguer les erreurs « command not found » et pour le masquage intentionnel de binaires.

PATH root typique sur un système Debian/Ubuntu :

“`

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

“`

PATH typique d’un utilisateur non privilégié :

“`

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

“`

Observations clés :

  • `/usr/local/bin` précède `/usr/bin`, donc les binaires installés localement masquent ceux gérés par le gestionnaire de paquets.
  • `/sbin` et `/usr/sbin` sont absents du PATH par défaut des utilisateurs non privilégiés sur certaines distributions, c’est pourquoi l’exécution de `ifconfig` en tant qu’utilisateur non root peut échouer avec « command not found » même si le binaire existe.
  • Lorsqu’un service s’exécute sous un compte utilisateur non root (par exemple, un utilisateur d’application web), son PATH peut être encore plus restreint. Utilisez toujours des chemins absolus dans les fichiers d’unité de service et les tâches cron.

Débogage des problèmes de PATH :

“`bash

Find all instances of a binary across PATH directories:

which -a python3

Show full PATH resolution including aliases and functions:

type -a python3

Check the effective PATH for a specific service:

systemctl show myservice | grep -i environment

“`

Matrice de décision pratique : où installer un binaire

Lors du déploiement de logiciels sur un serveur Linux — qu’il s’agisse d’un outil compilé, d’un binaire téléchargé ou d’un script personnalisé — utilisez ce cadre de décision :

Est-il géré par le gestionnaire de paquets système ?

  • Oui : Le gestionnaire de paquets le place automatiquement dans `/usr/bin` ou `/usr/sbin`. Ne le déplacez pas.

Est-ce un binaire ou script unique installé manuellement, destiné à tous les utilisateurs ?

  • Outil orienté utilisateur : `/usr/local/bin`
  • Outil root/admin : `/usr/local/sbin`

Est-ce un bundle d’application autonome avec ses propres dépendances ?

  • Utilisez `/opt/<vendor>/<package>/` et créez un lien symbolique du binaire principal vers `/usr/local/bin`

Est-ce un outil temporaire ou spécifique à un utilisateur ?

  • Placez-le dans `~/bin` (créez-le si absent) et ajoutez `~/bin` à votre `PATH` personnel dans `~/.bashrc` ou `~/.profile`

Est-ce une bibliothèque partagée pour une application compilée manuellement ?

  • Installez dans `/usr/local/lib`, puis exécutez `ldconfig`

Ce cadre prévient la forme la plus courante d’entropie du système de fichiers sur les serveurs à long terme : des binaires dispersés dans des emplacements arbitraires, invisibles pour le gestionnaire de paquets et oubliés par l’administrateur qui les a installés.

Liste de contrôle des points techniques essentiels

  • Vérifiez le statut UsrMerge sur votre système avec `ls -la /bin /sbin /lib`. S’ils sont des liens symboliques, `/bin` et `/usr/bin` sont des espaces de noms identiques.
  • Ne placez jamais de fichiers directement dans `/usr/bin` ou `/usr/sbin` — les mises à niveau de paquets les écraseront silencieusement.
  • Exécutez toujours `ldconfig` après avoir installé des bibliothèques partagées dans `/usr/local/lib` ou tout chemin non standard.
  • Utilisez des chemins absolus dans les tâches cron, les fichiers d’unité systemd et les scripts init — ne supposez jamais que `PATH` est correctement défini dans des contextes non interactifs.
  • Auditez les binaires SUID/SGID trimestriellement sur les serveurs de production : `find /usr /bin /sbin -perm /6000 -type f`
  • Documentez chaque binaire installé dans `/usr/local/` et `/opt/` avec la version, l’URL source et la date d’installation dans un système de gestion de configuration ou au minimum dans un journal de modifications local.
  • Sur les systèmes à usr fusionné, mettez à jour toute automatisation qui distingue les binaires « essentiels » par préfixe de chemin — la distinction est désormais purement sémantique.
  • Lors du déploiement d’applications sur des VPS Control Panels ou des environnements d’hébergement gérés, confirmez si le panneau de contrôle modifie `PATH` ou installe ses propres versions de binaires sous `/opt` ou `/usr/local`, car cela peut provoquer des conflits de versions avec les outils système.
  • Pour les outils liés à SSL (`openssl`, `certbot`), confirmez quelle version du binaire est invoquée — une version installée manuellement obsolète dans `/usr/local/bin` masquera la version gérée par le gestionnaire de paquets et peut contenir des vulnérabilités non corrigées. Associez cela à une gestion appropriée des SSL Certificates pour garantir que votre chaîne d’outils cryptographique est à jour de bout en bout.

Foire aux questions

Quelle est la différence entre `/bin` et `/usr/bin` sur Linux moderne ?

Sur les distributions modernes ayant complété l’UsrMerge, il n’y a pas de différence fonctionnelle — `/bin` est un lien symbolique vers `/usr/bin`. Historiquement, `/bin` ne contenait que les binaires requis avant que `/usr` puisse être monté, tandis que `/usr/bin` contenait tout le reste. La distinction est désormais sémantique sur les systèmes fusionnés, mais reste architecturalement significative sur les installations Linux plus anciennes ou embarquées.

Pourquoi placer un binaire dans `/usr/local/bin` remplace-t-il le même binaire dans `/usr/bin` ?

Parce que `/usr/local/bin` apparaît plus tôt dans le `PATH` par défaut que `/usr/bin`. Le shell résout les commandes en cherchant dans les répertoires `PATH` de gauche à droite et en exécutant la première correspondance trouvée. Cet ordre est intentionnel — il permet aux administrateurs de déployer des remplacements locaux sans modifier les fichiers gérés par le gestionnaire de paquets.

Que se passe-t-il si j’oublie d’exécuter `ldconfig` après avoir installé une bibliothèque partagée ?

Le cache de l’éditeur de liens dynamique (`/etc/ld.so.cache`) n’inclura pas la nouvelle bibliothèque, et tout binaire qui en dépend échouera à l’exécution avec une erreur telle que `error while loading shared libraries: libfoo.so.1: cannot open shared object file: No such file or directory`. L’exécution de `sudo ldconfig` reconstruit le cache et résout le problème immédiatement.

Est-il sûr d’installer des logiciels directement dans `/usr/bin` au lieu de `/usr/local/bin` ?

Non. Les fichiers dans `/usr/bin` sont détenus et suivis par le gestionnaire de paquets. Une future mise à niveau de paquet ou mise à jour système peut écraser, déplacer ou supprimer tout fichier dans ce répertoire sans avertissement. Utilisez toujours `/usr/local/bin` pour les binaires installés manuellement afin de maintenir une séparation nette entre les logiciels gérés par le gestionnaire de paquets et ceux gérés par l’administrateur.

Comment trouver depuis quel répertoire une commande est exécutée ?

Utilisez `which <command>` pour une recherche rapide de la première correspondance dans `PATH`, ou `type -a <command>` pour lister toutes les correspondances incluant les commandes intégrées du shell, les alias et chaque instance dans tous les répertoires `PATH`. Pour une réponse définitive incluant la résolution des liens symboliques, utilisez `readlink -f $(which <command>)`.

15%

Économisez 15% sur tous les services d'hébergement

Testez vos compétences et obtenez Réduction sur tout plan d'hébergement

Utilisez le code :

Skills
Commencer