Comment modifier mon PATH pour que les modifications soient disponibles dans chaque session de terminal

53

Je souhaite ajouter un répertoire pour rechercher mon chemin de recherche. Je sais que je dois modifier la PATHvariable d'environnement. Cependant, je veux que le changement soit permanent, afin qu'il soit toujours en vigueur, pour chaque fenêtre de terminal (bash) que j'ouvre.

Https://help.ubuntu.com/community/EnvironmentVariables présente une surcharge d'informations source de confusion et éventuellement de conflit.

J'utilise Ubuntu 10.04. Supposons que je veuille ajouter /usr/local/fooà mon PATH. Quel fichier ( .bashrc, .profile, .bash_login, etc ...) dois - je modifier et ce qui devrait la nouvelle ligne (s) ressembler?

Joshua Flanagan
la source

Réponses:

70

La commande suivante ajoute un chemin à votre chemin actuel:

export PATH=$PATH:/my/custom/path

Si vous souhaitez que votre configuration exécute cette commande à chaque fois, vous pouvez la placer à plusieurs endroits. Lorsque vous vous connectez, les scripts suivants seront exécutés dans cet ordre:

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

Remarques

  • ~/.profile est uniquement chargé si ~/.bash_profileet ~/.bash_loginNE PAS EXISTER. Sinon, au moins bash les chargera à la place. Il est conseillé d'utiliser .profileet non les scripts spécifiques à bash. Donc, si dans ces tentatives que vous avez créées .bash_login, supprimez-le maintenant.

  • ~/.bashrcn'est chargé que si vous exécutez une session interactive. (quelque chose avec une invite où vous pouvez réellement taper quelque chose).

  • ~/.bashrcest chargé à plusieurs reprises, chaque fois que vous ouvrez un nouveau terminal . Ainsi, un nouvel onglet dans gnome-terminal, un nouveau terminal virtuel, etc. Ainsi, même si vous ne vous reconnectez pas, il .bashrcest chargé (et réinitialise ainsi son environnement) chaque fois que vous ouvrez un nouveau shell.

  • Des choses comme byobu devraient vraiment entrer .profile, (sinon ça ne marchera pas ;-)

  • Des éléments tels que les chemins doivent entrer .profilesi vous voulez qu’ils fonctionnent en dehors des sessions interactives. (dites quand vous appuyez sur Alt+ F2dans GNOME)

Ralf
la source
Je marquerai ceci comme la réponse si vous le mettez à jour pour inclure la ligne d'exportation demandée qui devrait être ajoutée à .profile.
Joshua Flanagan
Auparavant, cela n’était valide que pour les connexions à la console (par exemple, ssh ou les terminaux virtuels accessibles pour Ctrl + Alt + Fx). Je ne savais pas que / etc / gdm / Xsession sources ~ / .profile ces jours-ci. Soigné!
Marius Gedminas
Oui, je n'ai pas mentionné spécifiquement / etc / gdm / Xsession ni ~ / .Xprofile car il existe de meilleurs moyens de lancer des programmes graphiques au démarrage, ce qui garantit que le reste de l'environnement est déjà chargé.
Ralf
1
pour que cette réponse soit plus complète, veuillez ajouter le commentaire de MattH sur le choix de ~ / .profile pour activer les modifications sans cycle de déconnexion / connexion.
Matt Wilkie
1
@schwiz: ~/.profilen'est pas exécuté sur chaque terminal, il est exécuté avant, au démarrage de votre session de bureau. Celui exécuté sur chaque terminal est~/.bashrc
MestreLion
13

Je l'ai fait fonctionner en modifiant ~/.profile

Il semble que l'ajout de ~ / bin à mon chemin soit un mauvais exemple, car il existe déjà du code dans ~ / .profile pour le faire automatiquement, si le répertoire existe.

Pour ajouter le répertoire usr / local / foo à mon chemin d'accès pour chaque session, j'ajoute / modifie la ligne suivante à la fin de mon fichier .profile:

export PATH=$PATH:/usr/local/foo

Cependant, pour que cela prenne effet, je devais me déconnecter et me reconnecter (fermer la fenêtre du terminal et en ouvrir une nouvelle ne fonctionnait PAS).

Joshua Flanagan
la source
4
Faites-le export PATH="$PATH:/usr/foo"si vous avez des espaces ou d’autres caractères spéciaux $PATH.
Gilles 'SO- arrête d'être méchant'
3
Vous pouvez recharger l'environnement actuel sans vous déconnecter en tapant ". ~ / .Profile"
Matt H
1
@ Matth: non, vous ne pouvez pas. si vous la source ~/.profiledans un terminal donné, il sera efficace pour ce terminal uniquement
MestreLion
@MestreLion - vous avez raison. Je le mentionnais pour plus de commodité pour le terminal actuel. J'ai oublié d'ajouter ça.
Matt H
Et si j'ai déjà quelque chose dans PATH? Pourrais-je y ajouter comme PATHS fonctionne sous Windows? Par exemple j'ai PATH="$HOME/bin:$HOME/.local/bin:$PATH"déjà.
Gabriel Fair
4

Pour recharger .profile et appliquer des modifications sans déconnexion / connexion, exécutez:

source ~/.profile
Bruno Freitas
la source
celui-ci devrait être un commentaire sur la réponse précédente
Pavlo Zhukov
3

Vous pouvez ajouter le chemin d'accès à /etc/environment, mais sachez qu'aucune extension du shell ne fonctionnera; la variable sera définie pour littéralement les caractères que vous entrez.

Sagarchalise
la source
Parmi les deux méthodes (ajout de la commande d'exportation dans .profile et ajout du nom de chemin complet vers PATH dans etc / environment), laquelle devrait être préférée?
Rohan Bhatia
2

Vous pouvez modifier le .bashrcfichier dans votre $HOMErépertoire.

A la toute fin de ce fichier, ajoutez la ligne:

export PATH="$HOME/directory_to_include_in_path/:$PATH"

Vous pouvez également modifier le .profilefichier, également dans votre $HOMErépertoire, y compris la ligne suivante:

PATH="$HOME/directory_to_include_in_path/:$PATH"

Cela a fonctionné pour moi.

Denner Vieira
la source
2
Je ne vois pas ce que cela ajoute aux autres réponses qui expliquent plus en profondeur.
Zanna
Cette réponse est correcte si vous souhaitez que le changement affecte les fenêtres du terminal. Changer .profilen'a aucun effet dans les fenêtres de terminal.
Markus Laire
0

Si vous avez ohmyzsh, allez dans votre répertoire personnel via le terminal et tapez

nano .zshrc

À la fin du fichier, entrez

export PATH = "$ HOME / directory_to_include_in_path / / $ PATH"

Enfin, redémarrez votre terminal. Travaillé pour moi J'espère que c'était utile.

Vallie
la source
-3
Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH
Mac
la source
Ceci est incorrect et ne fonctionnera pas. L'expansion des paramètres n'est pas effectuée dans/etc/environment
Zanna le