
Linux offre aux utilisateurs un contrôle inégalé sur leur environnement informatique, des options de personnalisation étendues aux capacités détaillées de gestion du système. Parmi la multitude d’outils disponibles, cette which
commande s’impose comme un outil essentiel pour harmoniser vos expériences en ligne de commande. Cet utilitaire vous permet de localiser précisément n’importe quel fichier exécutable en parcourant les répertoires spécifiés dans votre $PATH
variable. Dans ce guide complet, nous allons explorer le fonctionnement de cette which
commande, clarifier sa syntaxe et ses options, et fournir des exemples pratiques pour améliorer votre maîtrise de la ligne de commande.
Comprendre la syntaxe et la fonctionnalité de la commande which
Cette which
commande est l’outil idéal pour localiser le fichier exécutable associé à une commande donnée. Elle examine les répertoires définis dans votre variable d’environnement PATH. Elle révèle le fichier exécuté lors de l’exécution d’une commande et fournit une sortie associée en fonction des résultats de la recherche :
-
0
indique que toutes les commandes spécifiées ont été trouvées et sont exécutables. -
1
signifie qu’une ou plusieurs commandes sont manquantes ou non exécutables. -
2
indique qu’une option non valide a été utilisée.
La syntaxe standard pour appeler la which
commande sous Linux est simple :
which [file1] [file2]...
Remplacez simplement [file1]
et [file2]
par les noms des exécutables que vous souhaitez localiser.
Pourquoi utiliser quelle commande ?
Cette which
commande remplit plusieurs fonctions essentielles sous Linux. Elle permet aux utilisateurs de confirmer si une commande correspond à un exécutable réel, à un alias ou à un lien symbolique. De plus, elle localise précisément un fichier exécutable et aide à identifier les commandes manquantes ou conflictuelles dans la variable PATH. Son utilisation which
garantit l’exécution correcte de la version souhaitée d’une commande lorsque plusieurs versions existent sur votre système. Cette commande peut considérablement améliorer votre productivité, notamment lors de l’utilisation de différents outils et scripts.
Applications pratiques de la commande which
Explorons maintenant une série d’exemples pratiques pour illustrer comment la which
commande peut être appliquée dans des scénarios réels :
Exemple 1 : Localiser le chemin d’un exécutable
Identifier où réside l’exécutable d’une commande est simple avec la which
commande :
which grep

Vous recevrez une sortie telle que «/usr/bin/grep
» qui indique clairement l’emplacement exact du fichier exécutable.
Exemple 2 : Recherche des chemins de plusieurs commandes
Il est possible d’interroger plusieurs commandes simultanément avec la which
commande :
which awk sed cat touch
Cette commande récupère les chemins des commandes awk
, sed
, et cat
:

Exemple 3 : Afficher toutes les instances d’une commande
Par défaut, which
seule la première occurrence trouvée dans le chemin d’accès est renvoyée. Vous pouvez utiliser cette -a
option pour découvrir toutes les instances d’une commande particulière :
which -a cat
Cela fournira une liste de tous les emplacements où cat
se trouve :

Pour vérifier les détails de ces fichiers, vous pouvez utiliser la ls
commande avec l’ -lh
option permettant d’identifier s’il s’agit d’exécutables réels ou de doublons :
ls -lh /usr/bin/cat && ls -lh /bin/cat

La sortie révèle les deux commandes identiques situées dans des répertoires différents, illustrant les deux comme des fichiers exécutables de 35 Ko.
Exemple 4 : Confirmation de l’existence d’une commande
Vérifiez si une commande spécifique existe à l’aide de la which
commande :
which cats

Si la commande n’est pas présente, aucune sortie n’apparaîtra et l’état de sortie devient différent de zéro, indiquant une commande manquante.
Exemple 5 : Identification des liens symboliques
Si votre système possède plusieurs versions d’un même programme, certaines instances peuvent être des liens symboliques plutôt que des binaires. Pour identifier les liens symboliques, exécutez la which
commande avec l’ -a
option :
which -a crontab

Ensuite, vérifiez les détails du fichier avec la ls
commande :
ls -lh /usr/bin/crontab && ls -lh /bin/crontab

Dans la sortie, si vous voyez ->
, cela indique que le fichier est un lien symbolique pointant vers un autre emplacement.
Exemple 6 : Exclusion des commandes intégrées du shell
Notamment, la which
commande omet les commandes intégrées au shell et n’affiche que les exécutables externes, ce qui facilite l’identification de l’emplacement d’installation d’un programme. Par exemple, while ls
renvoie un chemin, read
, étant une commande intégrée, ne :
which ls read

Limitations de la commande which
Cette which
commande présente certaines limitations qui peuvent nuire à son efficacité dans certains contextes. Elle se concentre principalement sur les exécutables externes et n’identifie pas les commandes intégrées, telles que cd
ou read
. De plus, elle ne peut pas faire la distinction entre les fichiers binaires et les liens symboliques. Comme elle recherche uniquement dans les répertoires spécifiés dans la $PATH
variable, elle ne localise pas les programmes stockés dans d’autres emplacements. De plus, elle ne peut pas fournir d’informations telles que le type de fichier, les autorisations ou la version. En particulier, si une commande est absente, elle ne renvoie aucun résultat au lieu d’un message d’erreur.
Pour contourner ces limitations, pensez à utiliser des commandes alternatives telles que whereis
, type
, ou ls
.
Où vs. Quelle commande
Les commandes where
et which
sont toutes deux destinées à localiser des fichiers, mais leurs objectifs sont distincts. Cette where
commande est généralement utilisée sous Windows et certains systèmes de type Unix ; elle localise les fichiers et les répertoires, en listant toutes les correspondances dans le chemin d’accès du système.
À l’inverse, la which
commande est exclusive aux systèmes de type Unix et se concentre uniquement sur les fichiers exécutables contenus dans les répertoires définis par la $PATH
variable. Par défaut, elle ne renvoie que la première correspondance trouvée ; cependant, cette -a
option permet de lister toutes les correspondances.
Pour illustrer la différence : l’exécution where node
sous Windows révèle tous les emplacements où se trouve l’exécutable du nœud, tandis que sous Linux, l’exécution which gcc
renvoie le premier répertoire dans lequel se trouve le compilateur GCC.
Bien qu’elle offre de nombreuses fonctionnalités, cette which
commande peut manquer de fonctionnalités. Néanmoins, les utilisateurs peuvent contourner ses contraintes en utilisant des commandes supplémentaires. Il est également important de noter que cette which
commande ne détecte que les fichiers exécutables de votre système$PATH
; si votre script ou programme n’est pas identifié, il se peut qu’il ne dispose pas des autorisations d’exécution. Il est donc crucial de s’assurer que votre script se trouve dans un répertoire répertorié $PATH
avec les autorisations d’exécution appropriées.
Questions fréquemment posées
1. Quel est le but principal de la commande which ?
L’objectif principal de la which
commande est de localiser le fichier exécutable associé à une commande donnée en recherchant dans les répertoires désignés dans votre $PATH
variable d’environnement.
2. Comment trouver plusieurs exécutables à la fois à l’aide de la commande which ?
Vous pouvez spécifier plusieurs commandes dans une seule which
instruction en les séparant par des espaces, comme ceci : which command1 command2
, ce qui vous permet de récupérer les chemins de tous les exécutables spécifiés à la fois.
3. De quelles limitations dois-je être conscient lorsque j’utilise la commande which ?
Cette which
commande présente plusieurs limitations, notamment l’impossibilité de trouver les commandes shell intégrées, l’absence de distinction entre les fichiers binaires et les liens symboliques, et la recherche uniquement dans les répertoires spécifiés dans la $PATH
variable. Si aucun exécutable n’est trouvé, aucun message d’erreur n’est renvoyé, ce qui peut être trompeur.
Laisser un commentaire ▼