Navigation Linux · 5 min read · Jan 21, 2026

Astuces/Trucs de navigation en ligne de commande Linux 3 - la variable d'environnement CDPATH

Dans la première partie de cette série, nous avons discuté en détail de la commande cd -, et dans la deuxième partie, nous avons examiné en profondeur les commandes pushd et popd ainsi que les scénarios dans lesquels elles sont utiles.

En poursuivant notre discussion sur les aspects de navigation en ligne de commande, dans ce tutoriel, nous allons discuter de la variable d’environnement CDPATH à travers des exemples faciles à comprendre. Nous aborderons également quelques détails avancés liés à cette variable.

** La variable d’environnement CDPATH

* Même si votre travail en ligne de commande implique d’effectuer toutes les opérations sous un répertoire particulier - disons votre répertoire personnel - vous devez également fournir des chemins absolus lors du changement de répertoires. Par exemple, considérons une situation où je suis dans le répertoire /home/himanshu/Downloads* :

$ pwd  
/home/himanshu/Downloads

Et l’exigence est de passer au répertoire /home/himanshu/Desktop. Pour ce faire, en général, je devrais soit exécuter :

cd /home/himanshu/Desktop/

ou

cd ~/Desktop/

ou

cd ../Desktop/

Ne serait-il pas plus facile si je pouvais simplement exécuter la commande suivante :

cd Desktop

Oui, c’est possible. Et c’est là que la variable d’environnement CDPATH entre en jeu. Vous pouvez utiliser cette variable pour définir le répertoire de base pour la commande cd.

Si vous essayez d’imprimer sa valeur, vous verrez que cette variable d’environnement est vide par défaut :

$ echo $CDPATH  
$

Maintenant, en considérant le cas dont nous avons discuté jusqu’à présent, utilisons cette variable d’environnement pour définir /home/himanshu comme le répertoire de base pour la commande cd.

La manière la plus simple de le faire est :

export CDPATH=/home/himanshu

Et maintenant, je peux faire ce que je ne pouvais pas faire auparavant - depuis le répertoire /home/himanshu/Downloads, exécuter la commande cd Desktop avec succès.

$ pwd  
/home/himanshu/Downloads  
$ cd Desktop/  
/home/himanshu/Desktop  
$

Cela signifie que je peux maintenant faire un cd vers n’importe quel répertoire sous /home/himanshu sans spécifier explicitement /home/himanshu ou ~ ou ../ (ou plusieurs ../) dans la commande cd.

Points à garder à l’esprit

* Vous savez maintenant comment nous avons utilisé la variable d’environnement CDPATH pour passer facilement de /home/himanshu/Downloads à /home/himanshu/Desktop. Maintenant, considérons une situation où le répertoire /home/himanshu/Desktop contient un sous-répertoire nommé Downloads*, et c’est ce dernier vers lequel vous souhaitez passer.

Mais soudain, vous réalisez que faire un cd Desktop vous amènera à /home/himanshu/Desktop. Donc, pour vous assurer que cela ne se produise pas, vous faites :

cd ./Downloads

Bien qu’il n’y ait pas de problème avec la commande mentionnée ci-dessus en soi, c’est un effort supplémentaire de votre part (aussi minime soit-il), surtout si l’on considère que vous devrez faire cela chaque fois qu’une telle situation se présente. Une solution plus élégante à ce problème peut être de définir à l’origine la variable CDPATH de la manière suivante :

export CDPATH=".:/home/himanshu"

Cela signifie que vous dites à la commande cd de chercher d’abord le répertoire dans le répertoire de travail actuel, puis d’essayer de rechercher dans le répertoire /home/himanshu. Bien sûr, que vous souhaitiez ou non que la commande cd se comporte de cette manière dépend entièrement de votre préférence ou de votre besoin - mon idée en discutant de ce point était de vous faire savoir que ce genre de situation peut survenir.

Comme vous l’auriez compris maintenant, une fois la variable d’environnement CDPATH définie, sa valeur - ou l’ensemble des chemins qu’elle contient - est le seul endroit sur le système où la commande cd recherche des répertoires (sauf bien sûr dans les scénarios où vous utilisez des chemins absolus). Donc, il vous appartient de vous assurer que le comportement de la commande reste cohérent.

En avançant, s’il y a un script bash qui utilise la commande cd avec des chemins relatifs, il est préférable de vider ou de désactiver d’abord la variable d’environnement CDPATH, à moins que vous ne soyez d’accord pour vous retrouver piégé dans des problèmes imprévus. Alternativement, plutôt que d’utiliser la commande export dans le terminal pour définir CDPATH, vous pouvez définir la variable d’environnement dans votre fichier .bashrc après avoir testé pour les shells interactifs/non interactifs afin de vous assurer que le changement que vous essayez de faire ne se reflète que dans les shells interactifs.

L’ordre dans lequel les chemins apparaissent dans la valeur de la variable d’environnement est également important. Par exemple, si le répertoire actuel est répertorié avant /home/himanshu, alors la commande cd cherchera d’abord un répertoire dans le répertoire de travail actuel et passera ensuite à /home/himanshu. Cependant, si la valeur est “/home/himanshu:.”, alors la première recherche sera effectuée dans /home/himanshu et après cela dans le répertoire actuel. Inutile de dire que cela affectera ce que fait la commande cd et peut causer des problèmes si vous n’êtes pas conscient de l’ordre des chemins.

Gardez toujours à l’esprit que la variable d’environnement CDPATH, comme son nom l’indique, ne fonctionne que pour la commande cd. Cela signifie que tout en étant dans le répertoire /home/himanshu/Downloads, vous pouvez exécuter la commande cd Desktop pour passer au répertoire /home/himanshu/Desktop, mais vous ne pouvez pas faire un ls. Voici un exemple :

$ pwd  
/home/himanshu/Downloads  
$ ls Desktop  
ls: impossible d'accéder à Desktop : Aucun fichier ou répertoire de ce type  
$

Cependant, il pourrait y avoir quelques solutions simples. Par exemple, nous pouvons atteindre ce que nous voulons avec un effort minimal de la manière suivante :

$ cd Desktop/;ls  
/home/himanshu/Desktop  
backup backup~ Downloads gdb.html outline~ outline.txt outline.txt~

Mais oui, il se peut qu’il n’y ait pas de solution pour chaque situation.

Un autre point important : comme vous l’avez peut-être observé, chaque fois que vous utilisez la commande cd avec la variable d’environnement CDPATH définie, la commande produit le chemin complet du répertoire vers lequel vous vous déplacez dans la sortie. Inutile de dire que tout le monde ne voudrait pas avoir cette information chaque fois qu’il exécute la commande cd sur sa machine.

Pour vous assurer que cette sortie est supprimée, vous pouvez utiliser la commande suivante :

alias cd='>/dev/null cd'

La commande mentionnée ci-dessus supprimera la sortie chaque fois que la commande cd réussit, mais permettra aux messages d’erreur d’être produits chaque fois que la commande échoue.

Enfin, si vous rencontrez un problème où, après avoir défini la variable d’environnement CDPATH, vous ne pouvez pas utiliser la fonction de complétion par tabulation du shell, vous pouvez essayer d’installer et d’activer bash-completion - plus d’informations ici.

Conclusion

La variable d’environnement CDPATH est une épée à double tranchant - si elle n’est pas utilisée avec prudence et connaissance complète, elle peut vous plonger dans des pièges complexes qui peuvent nécessiter beaucoup de votre temps précieux pour être résolus. Bien sûr, cela ne signifie pas que vous ne devriez jamais essayer ; évaluez simplement toutes les options disponibles et si vous concluez que l’utilisation de CDPATH serait d’une grande aide, alors allez-y et utilisez-la.

Avez-vous utilisé CDPATH comme un pro ? Avez-vous d’autres conseils à partager ? Veuillez partager vos réflexions dans les commentaires ci-dessous.

**

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.