Lorsque vous tapez une commande sur la ligne de commande, vous dites essentiellement au shell d'exécuter un fichier exécutable avec le nom donné. Sous Linux, ces programmes exécutables comme ls
, find
, file
et d'autres, vivent généralement dans plusieurs répertoires différents de votre système. Tout fichier avec des autorisations exécutables stockées dans ces répertoires peut être exécuté à partir de n'importe quel emplacement. Les répertoires les plus courants contenant des programmes exécutables sont /bin
, /sbin
, /usr/sbin
, /usr/local/bin
et /usr/local/sbin
.
Mais comment le shell sait-il dans quels répertoires rechercher les programmes exécutables ? Le shell recherche-t-il dans tout le système de fichiers ?
La réponse est simple. Lorsque vous tapez une commande, le shell recherche dans tous les répertoires spécifiés dans l'utilisateur $PATH
variable pour un fichier exécutable de ce nom.
Cet article montre comment ajouter des répertoires à votre $PATH
dans les systèmes Linux.
Qu'est-ce que $PATH
sous Linux #
Le $PATH
La variable d'environnement est une liste de répertoires séparés par deux-points qui indique au shell dans quels répertoires rechercher les fichiers exécutables.
Pour vérifier quels répertoires se trouvent dans votre $PATH
, vous pouvez utiliser soit le printenv
ou echo
commande :
echo $PATH
La sortie ressemblera à ceci :
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
Si vous avez deux fichiers exécutables partageant le même nom situés dans deux répertoires différents, le shell exécutera le fichier qui se trouve dans le répertoire qui vient en premier dans le $PATH
.
Ajout d'un répertoire à votre $PATH
#
Il y a des situations où vous voudrez peut-être ajouter d'autres répertoires au $PATH
variable. Par exemple, certains programmes peuvent être installés à des emplacements différents, ou vous pouvez souhaiter avoir un répertoire dédié pour vos scripts personnels, mais pouvoir les exécuter sans spécifier le chemin absolu vers les fichiers exécutables. Pour cela, il vous suffit d'ajouter le répertoire à votre $PATH
.
Disons que vous avez un répertoire appelé bin
situé dans votre répertoire personnel dans lequel vous conservez vos scripts shell. Pour ajouter le répertoire à votre $PATH
saisissez :
export PATH="$HOME/bin:$PATH"
Le export
La commande exportera la variable modifiée vers les environnements de processus shell enfants.
Vous pouvez désormais exécuter vos scripts en saisissant le nom du script exécutable sans avoir à spécifier le chemin d'accès complet au fichier.
Cependant, ce changement n'est que temporaire et valide uniquement dans la session shell en cours.
Pour rendre le changement permanent, vous devez définir le $PATH
variable dans les fichiers de configuration du shell. Dans la plupart des distributions Linux, lorsque vous démarrez une nouvelle session, les variables d'environnement sont lues à partir des fichiers suivants :
-
Fichiers de configuration spécifiques au shell global tels que
/etc/environment
et/etc/profile
. Utilisez ce fichier si vous souhaitez que le nouveau répertoire soit ajouté à tous les utilisateurs du système$PATH
. -
Fichiers de configuration spécifiques au shell par utilisateur. Par exemple, si vous utilisez Bash, vous pouvez définir le
$PATH
variable dans le~/.bashrc
dossier. Si vous utilisez Zsh, le nom du fichier est~/.zshrc
.
Dans cet exemple, nous allons définir la variable dans le ~/.bashrc
dossier. Ouvrez le fichier avec votre éditeur de texte et ajoutez la ligne suivante à la fin :
nano ~/.bashrc
~/.bashrcexport PATH="$HOME/bin:$PATH"
Enregistrez le fichier et chargez le nouveau $PATH
dans la session shell en cours en utilisant le source
commande :
source ~/.bashrc
Pour confirmer que le répertoire a été ajouté avec succès, imprimez la valeur de votre $PATH
en tapant :
echo $PATH
Conclusion #
Ajout de nouveaux répertoires à votre utilisateur ou global $PATH
variable est assez simple. Cela vous permet d'exécuter des commandes et des scripts stockés dans des emplacements non standard sans avoir à saisir le chemin d'accès complet à l'exécutable.
Les mêmes instructions s'appliquent à toute distribution Linux, y compris Ubuntu, CentOS, RHEL, Debian et Linux Mint.
N'hésitez pas à laisser un commentaire si vous avez des questions.