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/binou des variations sur le travail de commande très bien. Ne mettez pas de ligne exportau 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 PATHstructure 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 ~/binvotre PATH s'il existe, d'ailleurs.
Où le mettre
Mettez la ligne à modifier PATHdans ~/.profile, ou ~/.bash_profilesi c'est ce que vous avez.
Notez que ce programme ~/.bash_rcn’est lu par aucun programme. Il ~/.bashrcs’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 PATHest ~/.profile(ou ~/.bash_profilesi 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/environmentou ~/.pam_environment: ce ne sont pas des fichiers shell, vous ne pouvez pas utiliser de substitutions comme $PATHici. 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 exportsi la variable est déjà dans l'environnement: toute modification de la valeur de la variable est reflétée dans l'environnement.¹ PATHest 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 PATHpré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 PATHest non vide et exporté: si PATHest toujours non PATH=$PATH:/some/directorydéfini , quelque chose comme serait défini PATHsur :/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, exportest une syntaxe spéciale, et les deux PATH=~/opt/bin:$PATHet export PATH=~/opt/bin:$PATHfont même la bonne chose. Dans d'autres shells de style Bourne / POSIX, tels que dash ( /bin/shsur de nombreux systèmes), exportest analysé comme une commande ordinaire, ce qui implique deux différences:
Ainsi, dans les shells comme dash, export PATH=~/opt/bin:$PATHdéfinit PATHla chaîne littérale ~/opt/bin/:suivie de la valeur PATHallant 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 exportdans 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 PATHpour la portabilité même du shell Bourne qui n'a pas accepté export var=valueet 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.