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?

639
demandé sur cpxPratik 2013-02-01 04:57:08

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
778
répondu mpowered 2018-06-27 23:25:22

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

210
répondu Zeus77 2016-04-03 21:59:33

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"
  1. /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 .
  2. /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.
  3. /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.
  4. /etc/<shell>.<shell>rc . Shell script. C'est un mauvais choix car il est simple coque spécifique.
"1519250920 de" session Utilisateur

  1. ~/.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 compris HOME ou PATH , donc son utilisation est limitée.
  2. ~/.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 prolonger PATH avec des valeurs telles que ~/bin ou ~/go/bin ou Définir spécifique à l'utilisateur GOPATH ou NPM_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.
  3. ~/.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.
  4. ~/.<shell>rc . Shell script. C'est un mauvais choix car il est simple coque spécifique.

distribution spécifique documentation

118
répondu Grzegorz Żur 2016-01-15 13:43:24

mettre la déclaration export dans ~/.bashrc . Mon. bashrc contient:

export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH
67
répondu Fraxtil 2013-02-01 00:59:39

vous pouvez définir $PATH de façon permanente de 2 façons.

  1. 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
    
  2. 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
    
29
répondu Mohit M 2015-02-25 16:54:14

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

10
répondu Daniel Antonio Nuñez Carhuayo 2016-10-21 04:11:17

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)

6
répondu Himanshu sharma 2018-06-07 05:51:40

vous pouvez ajouter cette ligne à votre fichier de configuration de la console (par exemple .bashrc) , ou pour .profil

5
répondu aqua 2013-02-01 00:59:22

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.

5
répondu RobertG 2017-03-04 11:09:57

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

4
répondu Delucaramos 2018-09-14 18:58:12

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.

3
répondu Dikinha 2013-11-05 13:35:33

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

3
répondu Joe D 2015-09-25 02:26:23

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.

3
répondu Abhiroj Panwar 2017-05-04 21:38:21

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

2
répondu user3439968 2014-11-14 18:19:11

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.

2
répondu Iurii 2015-04-10 12:12:15

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

1
répondu Edward Torvalds 2014-10-04 16:38:30

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)

1
répondu Gimcuan Hui 2016-07-17 02:50:27

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.

0
répondu user6393373 2016-05-28 03:19:04

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
0
répondu onlyme 2017-12-27 21:18:00

il peut être ajouté directement en utilisant la commande suivante:

echo 'export PATH=$PATH: / new /directory'>>~/.zshrc source./~ zshrc

-3
répondu Anoop Nagabhushan 2016-07-11 11:31:39