Comment définir $PATH de façon permanente sur Linux / Unix?
j'essaie d'ajouter un répertoire à mon chemin pour qu'il soit toujours dans mon chemin Linux. J'ai essayé:
export PATH=$PATH:/path/to/dir
cela fonctionne, cependant chaque fois que je sors du terminal et démarre une nouvelle instance du terminal, ce chemin est perdu, et j'ai besoin d'exécuter la commande export à nouveau.
Comment puis-je le faire pour qu'il soit réglé en permanence?
20 réponses
vous devez l'ajouter à votre fichier ~/.profile
ou ~/.bashrc
.
export PATH="$PATH:/path/to/dir"
selon ce que vous faites, vous pouvez aussi vouloir faire un lien symbolique vers des binaires:
cd /usr/bin
sudo ln -s /path/to/binary binary-name
notez que cela ne mettra pas automatiquement à jour votre chemin pour le reste de la session. Pour ce faire, vous devez exécuter:
source ~/.profile
or
source ~/.bashrc
Je ne peux pas croire que personne n'ait mentionné le fichier /etc/environment
.
Son seul but est de stocker des Variables d'Environnement. À l'origine, la variable $PATH est définie ici.
C'est une pâte de mon /etc/environment
fichier:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
donc vous pouvez simplement ouvrir ce fichier en tant que root et ajouter ce que vous voulez.
pour des résultats immédiats, Exécuter (essayer comme utilisateur normal et root):
source /etc/environment && export PATH
UPDATE:
si vous utilisez zsh
(A. K. A Z Shell), ajouter cette ligne juste après les commentaires dans /etc/zsh/zshenv
:
source /etc/environment
j'ai rencontré cette petite bizarrerie sur Ubuntu 15.10, mais si votre zsh n'obtient pas le bon chemin , ce pourrait être pourquoi
Il y a plusieurs façons de le faire. La solution réelle dépend du but.
les valeurs variables sont habituellement stockées dans une liste d'attributions ou dans un script shell qui est exécuté au début du système ou de la session de l'utilisateur. Dans le cas du script shell, vous devez utiliser une syntaxe shell.
Système "à l'échelle de 1519260920"
-
/etc/environment
liste de missions uniques. Parfait pour ajouter à l'échelle du système répertoires comme /usr/local/something/bin
à PATH
variable ou définissant JAVA_HOME
.
-
/etc/xprofile
script Shell exécuté lors du démarrage de la session du système X Window. Ceci est exécuté pour chaque utilisateur qui se connecte au système X Window. C'est un bon choix pour PATH
entrées valides pour chaque utilisateur comme /usr/local/something/bin
. Le fichier est inclus par un autre script donc utilisez la syntaxe de shell POSIX et non la syntaxe de votre shell utilisateur.
-
/etc/profile
et /etc/profile.d/*
Shell script. C'est un bon choix pour les systèmes shell seulement. Ces fichiers ne sont lus que par les shells.
-
/etc/<shell>.<shell>rc
. Shell script. C'est un mauvais choix car il est simple coque spécifique.
"1519250920 de" session Utilisateur
/etc/environment
liste de missions uniques. Parfait pour ajouter à l'échelle du système répertoires comme /usr/local/something/bin
à PATH
variable ou définissant JAVA_HOME
. /etc/xprofile
script Shell exécuté lors du démarrage de la session du système X Window. Ceci est exécuté pour chaque utilisateur qui se connecte au système X Window. C'est un bon choix pour PATH
entrées valides pour chaque utilisateur comme /usr/local/something/bin
. Le fichier est inclus par un autre script donc utilisez la syntaxe de shell POSIX et non la syntaxe de votre shell utilisateur. /etc/profile
et /etc/profile.d/*
Shell script. C'est un bon choix pour les systèmes shell seulement. Ces fichiers ne sont lus que par les shells. /etc/<shell>.<shell>rc
. Shell script. C'est un mauvais choix car il est simple coque spécifique. -
~/.pam_environment
. Liste des missions uniques. Chargé par PAM au début de chaque session utilisateur sans importance si c'est une session système X ou Shell. Vous ne pouvez pas faire référence à une autre variable, y comprisHOME
ouPATH
, donc son utilisation est limitée. -
~/.xprofile
Shell script. Ceci est exécuté lorsque l'utilisateur se connecte au système X Window. Les variables définies ici sont visibles à chaque application X. Choix parfait pour prolongerPATH
avec des valeurs telles que~/bin
ou~/go/bin
ou Définir spécifique à l'utilisateurGOPATH
ouNPM_HOME
. Le fichier est inclus par un autre script donc utilisez POSIX syntaxe shell pas la syntaxe de votre shell de l'utilisateur. Votre éditeur de texte graphique ou IDE lancé par raccourci verra ces valeurs. -
~/.profile
Shell script. Il ne sera visible que pour les programmes démarrés à partir d'un terminal ou d'un émulateur de terminal. C'est un bon choix pour les systèmes shell seulement. -
~/.<shell>rc
. Shell script. C'est un mauvais choix car il est simple coque spécifique.
distribution spécifique documentation
mettre la déclaration export
dans ~/.bashrc
. Mon. bashrc contient:
export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH
vous pouvez définir $PATH
de façon permanente de 2 façons.
-
pour définir le chemin pour un utilisateur particulier : Vous devrez peut-être faire l'entrée dans
.bash_profile
dans le répertoire home de l'utilisateur.E. g dans mon cas, je vais définir java path dans le profil d'utilisateur tomcat
[tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
-
pour définir le chemin commun pour tous les utilisateurs du système, vous pouvez avoir besoin de définir le chemin comme ceci :
[root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile
vous pouvez utiliser sur Centos ou RHEL pour un utilisateur local:
echo $"export PATH=$PATH:$(pwd)" >> ~/.bash_profile
ajoutez le répertoire courant(ou vous pouvez utiliser un autre répertoire) au chemin, cela le rend permanent mais prend effet lors de la prochaine connexion utilisateur.
si vous ne voulez pas faire un re-logon, Puis pouvez utiliser:
source ~/.bash_profile
qui rechargent le # User specific environment and startup programs
ce commentaire est présent dans .bash_profile
je pense que la façon la plus élégante est:
1.ajouter ceci dans le ~/.fichier bashrc Exécutez cette commande
gedit ~/.bashrc
ajouter votre chemin à l'intérieur de lui
export PATH=$PATH:/opt/node / bin
2.source./~ bashrc
(Ubuntu)
vous pouvez ajouter cette ligne à votre fichier de configuration de la console (par exemple .bashrc) , ou pour .profil
je suis tombé sur cette question hier en cherchant un moyen d'ajouter un dossier contenant mes propres scripts au chemin - et j'ai été surpris de découvrir que mon propre fichier ~/.profile
(sur Linux Mint 18.1) contenait déjà ceci:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
donc, tout ce que j'avais à faire était de créer le dossier ~/bin
et y mettre mes scripts.
vous pouvez aussi régler en permanence, éditant l'un de ces fichiers:
/etc/profile
(pour tous les utilisateurs)
~/.bash_profile
(pour utilisateur courant)
~/.bash_login
(pour utilisateur courant)
~/.profile
(pour utilisateur courant)
vous pouvez également utiliser /etc/environment
pour définir une variable d'environnement de chemin permanent, mais il ne supporte pas l'expansion de variable .
extrait de: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html
les fichiers où vous ajoutez la commande export dépendent si vous êtes en mode login ou non.
si vous êtes en mode login, les fichiers que vous recherchez sont /etc/bash ou /etc/bash.bashrc
si vous n'êtes pas en mode login, vous recherchez le fichier /.profil ou pour les fichiers du répertoire/.profil.d
les fichiers mentionnés ci-dessus si Où sont les variables du système.
Zues77 a la bonne idée. L'OP n'a pas dit "comment puis-je pirater mon chemin à travers ce". OP voulait savoir comment ajouter en permanence à $PATH:
sudo nano /etc/profile
C'est ici qu'il est défini pour tout et est le meilleur endroit pour le changer pour tout ce qui a besoin de $PATH
ma réponse se réfère à la mise en place de go-lang
sur Ubuntu linux/amd64
.J'ai fait face à la même difficulté de définir le chemin des variables d'environnement ( GOPATH
et GOBIN
), de le perdre à la sortie du terminal et de le reconstruire en utilisant le source <file_name>
à chaque fois.L'erreur a été de mettre le chemin ( GOPATH
et GOBIN
) dans le dossier ~/.bash_profile
. Après avoir englouti quelques bonnes heures, j'ai trouvé que la solution était de mettre GOPATH
et GOBIN
dans ~/.bash_rc
fichier de la manière:
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN
et ce faisant, l'installation de go fonctionnait bien et il n'y avait pas de pertes de chemin.
EDIT 1:
La raison avec laquelle cette question peut être liée est que les cadres pour les coquilles non-login comme votre terminal ubuntu ou gnome-terminal où nous exécutons le code go sont prises à partir de ~./bash_rc
fichier et les cadres pour les coquilles de connexion sont prises à partir de ~/.bash_profile
fichier, et de ~/.profile
fichier si ~/.bash_profile
fichier est inaccessible.
ajout permanent de la variable PATH
Mondial:
echo "export PATH=$PATH:/new/path/variable" >> /etc/profile
Local (réservé à l'utilisateur):
echo "export PATH=$PATH:/new/path/variable" >> ~/.profile
Pour global redémarrer. Pour local se reconnecter.
exemple
avant:
$ cat /etc/profile
#!/bin/sh
export PATH=/usr/bin:/usr/sbin:/bin:/sbin
après:
$ cat /etc/profile
#!/bin/sh
export PATH=/usr/bin:/usr/sbin:/bin:/sbin
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable
alternativement, vous pouvez modifier le profil:
$ cat /etc/profile
#!/bin/sh
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable
une autre voie (merci gniourf_gniourf):
echo 'PATH=$PATH:/new/path/variable' >> /etc/profile
vous ne devriez pas utiliser de guillemets ici! echo 'exportation PATH=$PATH:/nouveau/chemin/variable"... Et par la manière, l'exportation de mots clés est très probablement inutile car la variable PATH est très probablement déjà marqués comme exportés. – gniourf_gniourf
Ajouter à "151900920 dossier" script [name_of_script].sh
à la ligne: export PATH=$PATH:/dir
. Chaque script dans le dossier /etc/profile.d
est automatiquement exécuté par /etc/profile
lors de la connexion.
la meilleure façon simple est la ligne suivante:
PATH="<directory you want to include>:$PATH"
dans votre .bashrc fichier dans le répertoire d'accueil.
il ne sera pas réinitialisé même si vous fermez le terminal ou redémarrez votre PC. Son titre définitif est
je pense que la façon la plus élégante est:
1.ajouter ceci dans ~./bashrc fichier
if [ -d "new-path" ]; then
PATH=$PATH:new-path
fi
2.source ~/.bashrc
(Ubuntu)
une façon d'ajouter le chemin permanent, qui a fonctionné pour moi, est: cd / etc / profile.d touch custom.sh vi custom.sh exporter PATH= $ PATH: / path selon votre paramétrage/ redémarrez votre ordinateur et nous allons chemin sera là de façon permanente acclamation.
pour la distribution debian, vous devez:
- edit ~/.bashrc e.g: vim ~/.bashrc
- add export PATH=$PATH:/path/to/dir
- then restart your computer. Be aware that if you edit ~/.bashrc as root, your environment variable you added will work only for root
il peut être ajouté directement en utilisant la commande suivante:
echo 'export PATH=$PATH: / new /directory'>>~/.zshrc source./~ zshrc