Le truc simple
PATH=$PATH:~/opt/bin
ou
PATH=~/opt/bin:$PATH
selon que vous voulez ajouter ~/opt/bin
à la fin (à rechercher après tous les autres répertoires, s'il existe un programme du même nom dans plusieurs répertoires) ou au début (à rechercher avant tous les autres répertoires).
Vous pouvez ajouter plusieurs entrées en même temps. PATH=$PATH:~/opt/bin:~/opt/node/bin
ou des variations sur le travail de commande très bien. Ne mettez pas de ligne export
au début de la ligne car il y a des complications supplémentaires (voir ci-dessous «Notes sur les coquillages autres que bash»).
Si votre PATH
structure est construite à partir de nombreux composants différents, vous risquez de vous retrouver avec des entrées en double. Voir Comment ajouter le chemin du répertoire de départ à découvrir par la commande Unix? et Supprimez les entrées $ PATH en double avec la commande awk pour éviter d’ajouter ou de supprimer les doublons.
Certaines distributions ajoutent automatiquement ~/bin
votre PATH s'il existe, d'ailleurs.
Où le mettre
Mettez la ligne à modifier PATH
dans ~/.profile
, ou ~/.bash_profile
si c'est ce que vous avez.
Notez que ce programme ~/.bash_rc
n’est lu par aucun programme. Il ~/.bashrc
s’agit du fichier de configuration des instances interactives de bash. Vous ne devez pas définir de variables d’environnement dans ~/.bashrc
. Le bon endroit pour définir les variables d'environnement telles que PATH
est ~/.profile
(ou ~/.bash_profile
si vous ne vous souciez pas des shells autres que bash). Voir Quelle est la différence entre eux et lequel devrais-je utiliser?
Ne le mettez pas /etc/environment
ou ~/.pam_environment
: ce ne sont pas des fichiers shell, vous ne pouvez pas utiliser de substitutions comme $PATH
ici. Dans ces fichiers, vous ne pouvez que remplacer une variable, pas l’ajouter.
Complications potentielles dans certains scripts système
Vous n'avez pas besoin export
si la variable est déjà dans l'environnement: toute modification de la valeur de la variable est reflétée dans l'environnement.¹ PATH
est presque toujours dans l'environnement; tous les systèmes Unix le configurent très tôt (généralement lors du tout premier processus).
Au moment de la connexion, vous pouvez compter sur votre PATH
présence déjà dans l'environnement et sur certains répertoires système. Si vous écrivez un script qui peut être exécuté tôt lors de la configuration d'un environnement virtuel, vous devrez peut-être vous assurer qu'il PATH
est non vide et exporté: si PATH
est toujours non PATH=$PATH:/some/directory
défini , quelque chose comme serait défini PATH
sur :/some/directory
, et le composant vide au début signifie le répertoire en cours (comme .:/some/directory
).
if [ -z "${PATH-}" ]; then export PATH=/usr/local/bin:/usr/bin:/bin; fi
Notes sur les coquillages autres que bash
En bash, ksh et zsh, export
est une syntaxe spéciale, et les deux PATH=~/opt/bin:$PATH
et export PATH=~/opt/bin:$PATH
font même la bonne chose. Dans d'autres shells de style Bourne / POSIX, tels que dash ( /bin/sh
sur de nombreux systèmes), export
est analysé comme une commande ordinaire, ce qui implique deux différences:
Ainsi, dans les shells comme dash, export PATH=~/opt/bin:$PATH
définit PATH
la chaîne littérale ~/opt/bin/:
suivie de la valeur PATH
allant jusqu'au premier espace.
PATH=~/opt/bin:$PATH
(une affectation simple) ne nécessite pas de citations et fait la bonne chose. Si vous voulez utiliser export
dans un script portable, vous devez écrire export PATH="$HOME/opt/bin:$PATH"
, ou PATH=~/opt/bin:$PATH; export PATH
(ou PATH=$HOME/opt/bin:$PATH; export PATH
pour la portabilité même du shell Bourne qui n'a pas accepté export var=value
et n'a pas fait l'expansion du tilde).
¹ Ce n’était pas le cas dans les coquillages Bourne (comme dans le shell Bourne actuel, mais pas dans le style POSIX moderne), mais il est peu probable que vous rencontriez de tels coquillages de nos jours.