web-dev-qa-db-fra.com

Comment définir définitivement $ PATH sur Linux/Unix?

J'essaie d'ajouter un répertoire à mon chemin afin qu'il soit toujours dans mon chemin Linux. J'ai essayé:

export PATH=$PATH:/path/to/dir

Cela fonctionne. Cependant, chaque fois que je quitte le terminal et démarre une nouvelle instance de terminal, ce chemin est perdu et je dois exécuter la commande d'exportation à nouveau.

Comment puis-je le faire pour que cela soit réglé de manière permanente?

700
Click Upvote

Vous devez l'ajouter à votre fichier ~/.profile ou ~/.bashrc.

export PATH="$PATH:/path/to/dir"

Selon ce que vous faites, vous pouvez également souhaiter créer un lien symbolique vers des fichiers 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
884
mpowered

Dans Ubuntu, éditez /etc/environment. Son seul but est de stocker des variables d'environnement. A l'origine, la variable $ PATH est définie ici . Il s'agit d'un collage de mon fichier /etc/environment:

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 les résultats immédiats, exécutez (essayez en tant qu'utilisateur normal et root):

source /etc/environment && export PATH

METTRE À JOUR:

Si vous utilisez zsh (a.k.a shell Z), ajoutez cette ligne juste après les commentaires dans /etc/zsh/zshenv:

source /etc/environment

J'ai rencontré ce petit problème sur Ubuntu 15.10, mais si votre zsh n'obtient pas le cheminCHEMINcorrect, c'est peut-être pour ça

220
trve.fa7ad

Il y a plusieurs façons de le faire. La solution dépend du but recherché.

Les valeurs de variable sont généralement stockées dans une liste d'assignations ou dans un script Shell exécuté au démarrage de la session système ou utilisateur. Dans le cas du script Shell, vous devez utiliser une syntaxe spécifique.

À l'échelle du système

  1. /etc/environment Liste des assignations uniques. Parfait pour ajouter des répertoires système tels que /usr/local/something/bin à la variable PATH ou pour définir Java_HOME.
  2. /etc/xprofile Script shell exécuté lors du démarrage de la session 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 les entrées PATH qui sont valides pour tous les utilisateurs, comme /usr/local/something/bin. Le fichier est inclus par un autre script, utilisez donc la syntaxe POSIX Shell et non la syntaxe de votre utilisateur Shell.
  3. /etc/profile et /etc/profile.d/* Script shell. C'est un bon choix pour les systèmes Shell uniquement. Ces fichiers ne sont lus que par des shells.
  4. /etc/<Shell>.<Shell>rc. Script shell. C'est un mauvais choix, car il s'agit d'un seul shell.

Session utilisateur

  1. ~/.pam_environment. Liste des assignations uniques. Chargé par PAM au début de chaque session utilisateur, qu'il s'agisse d'une session système X Window ou d'un shell. Vous ne pouvez pas faire référence à une autre variable, y compris HOME ou PATH, son utilisation est donc limitée.
  2. ~/.xprofile Script shell. Ceci est exécuté lorsque l'utilisateur se connecte au système X Window. Les variables définies ici sont visibles pour chaque application X. Choix idéal pour étendre PATH avec des valeurs telles que ~/bin ou ~/go/bin ou pour définir une GOPATH ou NPM_HOME spécifique à l'utilisateur. Le fichier est inclus par un autre script, utilisez donc la syntaxe POSIX Shell et non la syntaxe de votre utilisateur Shell. Votre éditeur de texte graphique ou IDE démarré par raccourci verra ces valeurs.
  3. ~/.profile Script shell. Il ne sera visible que pour les programmes lancés à partir d'un terminal ou d'un émulateur de terminal. C'est un bon choix pour les systèmes exclusivement Shell.
  4. ~/.<Shell>rc. Script shell. C'est un mauvais choix, car il s'agit d'un seul shell.

Documentation spécifique à la distribution

132
Grzegorz Żur

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

export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH
68
Fraxtil

Vous pouvez définir $PATH de manière permanente de 2 manières.

  1. Pour définir le chemin d'accès d'un utilisateur particulier: Vous devrez peut-être saisir l'entrée dans .bash_profile dans le répertoire de base de l'utilisateur.

    par exemple, dans mon cas, je définirai le chemin Java dans le profil utilisateur Tomcat

    [Tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/Tomcat/.bash_profile
    
  2. Pour définir un chemin commun pour TOUS les utilisateurs du système, vous devrez peut-être définir un chemin comme suit:

    [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile
    
29
Mohit M

Vous pouvez utiliser sur Centos ou RHEL pour un utilisateur local:

echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile

Cela ajoute le répertoire actuel (ou vous pouvez utiliser un autre répertoire) au PATH, cela le rend permanent mais prend effet à la prochaine connexion de l'utilisateur.

Si vous ne souhaitez pas vous reconnecter, vous pouvez utiliser:

source ~/.bash_profile

Pour recharger le # User specific environment and startup programs ce commentaire est présent dans le .bash_profile

Vous pouvez ajouter cette ligne à votre fichier de configuration de la console (par exemple .bashrc) ou à .profile

6
aqua

Je pense que la manière la plus élégante est:

1.ajouter ceci dans le fichier ~/.bashrc Exécuter cette commande

gedit ~/.bashrc

ajoutez votre chemin à l'intérieur 

export PATH = $ PATH:/opt/node/bin

2.source ~/.bashrc

(Ubuntu)

6
Himanshu sharma

Vous pouvez également définir de manière permanente, en modifiant l'un de ces fichiers:

/etc/profile (pour tous les utilisateurs)

~/.bash_profile (pour l'utilisateur actuel)

~/.bash_login (pour l'utilisateur actuel)

~/.profile (pour l'utilisateur actuel)

Vous pouvez également utiliser /etc/environment pour définir une variable d'environnement PATH permanente, mais il ne prend pas en charge le développement de variable

Extrait de: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html

6
Delucaramos

Hier, je suis tombé sur cette question en cherchant un moyen d'ajouter un dossier contenant mes propres scripts à PATH - et j'ai été surpris de découvrir que mon propre fichier ~/.profile (sous 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

Ainsi, tout ce que j'avais à faire était de créer le dossier ~/bin et d'y placer mes scripts.

5
RobertG

les fichiers dans lesquels vous ajoutez la commande d'exportation dépendent du mode de connexion utilisé ou non.

si vous êtes en mode connexion, les fichiers que vous recherchez sont soit/etc/bash ou /etc/bash.bashrc

si vous êtes en mode non-connexion, vous recherchez le fichier /.profile ou les fichiers du répertoire /.profiles.d

les fichiers mentionnés ci-dessus si les variables système sont.

3
Dikinha

Zues77 a la bonne idée. L'OP n'a pas dit "Comment puis-je me frayer un chemin à travers ça". OP voulait savoir comment ajouter en permanence à $ PATH:

Sudo nano /etc/profile

C’est là que tout est prévu et c’est le meilleur endroit pour le changer pour tout ce qui nécessite $ PATH.

3
Joe D

Ma réponse fait référence à la configuration de go-lang sur Ubuntu linux/AMD64. J'ai eu le même problème pour définir le chemin des variables d'environnement (GOPATH et GOBIN), le perdre à la sortie du terminal et le reconstruire à l'aide du source <file_name> à chaque fois. L'erreur était de mettre le chemin (GOPATH et GOBIN) dans le dossier ~/.bash_profile. Après avoir perdu quelques bonnes heures, j’ai trouvé que la solution consistait à placer GOPATH et GOBIN dans le fichier ~/.bash_rc de la manière suivante:

export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN

et ce faisant, l’installation go a bien fonctionné et il n’ya eu aucune perte de chemin. 

EDIT 1: La raison pour laquelle ce problème peut être lié est que les paramètres pour les shells non connectés comme votre terminal ubuntu ou gnome-terminal où nous exécutons le code aller sont extraits du fichier ~./bash_rc et que les paramètres pour les shells de connexion sont utilisés. à partir du fichier ~/.bash_profile et du fichier ~/.profile si le fichier ~/.bash_profile est inaccessible. 

3
Abhiroj Panwar

Ajoutez à /etc/profile.d le dossier script [name_of_script].sh avec 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
Iurii

Ajouter définitivement la variable PATH

Global:

echo "export PATH=$PATH:/new/path/variable" >> /etc/profile

Local (pour utilisateur seulement):

echo "export PATH=$PATH:/new/path/variable" >> ~/.profile

Pour global restart. Pour local relogin.

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

Sinon, vous pouvez simplement modifier le profil:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

Une autre façon (merci gniourf_gniourf):

echo 'PATH=$PATH:/new/path/variable' >> /etc/profile

Vous ne devriez pas utiliser de guillemets doubles ici! echo 'export PATH = $ PATH:/new/path/variable '... Et d'ailleurs, le mot clé export est très probablement inutile car la variable PATH est déjà très probable marqué comme exporté. - gniourf_gniourf

2
user3439968

Je pense que la manière 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
Gimcuan Hui

le meilleur moyen simple est la ligne suivante:
PATH="<directory you want to include>:$PATH"
dans votre fichier .bashrc dans le répertoire personnel.
Il ne sera pas réinitialisé même si vous fermez le terminal ou redémarrez votre PC. Son permanent

1
Edward Torvalds

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
onlyme

une façon d’ajouter un chemin permanent, qui a fonctionné pour moi, est: cd /etc/profile.d touchez custom.sh vi custom.sh export PATH = $ PATH:/path en fonction de votre configuration / redémarrez votre ordinateur et nous y allons path en permanence.

0
user6393373

Supposons que vous utilisez MacOS et que vous avez un binaire en lequel vous avez confiance et que vous souhaitez rendre disponible sur votre système, mais ne souhaitez pas nécessairement que le répertoire dans lequel le binaire doit être ajouté à votre PATH, vous pouvez choisir de copier/déplacer. le binaire à /usr/local/bin, qui devrait déjà être dans votre CHEMIN. Cela rendra le fichier binaire exécutable comme tout autre fichier binaire auquel vous pourriez déjà avoir accès dans votre terminal.

0
Leo

1.modifiez le fichier "/ etc/profile".

#vi /etc/profile

Appuyez sur la touche "i" pour accéder au statut de modification et déplacer le curseur à la fin du fichier. Entrées supplémentaires:

export PATH=$PATH:/path/to/dir;

Appuyez sur "Echap" pour quitter le statut d'édition, ': wq' enregistrer le fichier.

2. Rendre la configuration efficace

source /etc/profile

Explique: fichier de profil fonctionne pour tous les utilisateurs, si vous voulez être valide que pour l'utilisateur actif, définissez le fichier ".bashrc"

0
Jia