Question 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 j'ai besoin d'exécuter à nouveau la commande d'exportation.

Comment puis-je le faire pour que cela soit défini en permanence?


596
2018-02-01 00:57


origine


Réponses:


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

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

En fonction de ce que vous faites, vous pouvez également vouloir créer un lien symbolique vers les 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

730
2018-02-01 01:01



Je ne peux pas croire que personne n'a mentionné /etc/environment fichier. Son seul but est de stocker les variables d'environnement. À l'origine, la variable $ PATH est définie ici. Ceci 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"

Vous pouvez donc simplement ouvrir ce fichier en tant que root et ajouter ce que vous voulez.

Pour des résultats immédiats, Exécuter (essayez en tant qu'utilisateur normal et racine):

source /etc/environment && export PATH

METTRE À JOUR:

Si tu utilises zsh (a.k.a Z Shell), ajoutez 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 ne reçoit pas la bonne CHEMIN, cela pourrait être la raison pour laquelle


199
2018-05-27 16:27



Il y a plusieurs façons de le faire. La solution réelle dépend de l'objectif.

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

Système large

  1. /etc/environment Liste des affectations uniques. Parfait pour ajouter des répertoires à l'échelle du système 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 X Window System. Ceci est exécuté pour chaque utilisateur qui se connecte à X Window System. C'est un bon choix pour PATH entrées qui sont valables pour chaque utilisateur comme /usr/local/something/bin. Le fichier est inclus par un autre script, utilisez donc la syntaxe de shell POSIX et non la syntaxe de votre shell utilisateur.
  3. /etc/profile et /etc/profile.d/* Script shell. C'est un bon choix pour les systèmes shell-only. Ces fichiers sont lus uniquement par des shells.
  4. /etc/<shell>.<shell>rc. Script shell. Ceci est un mauvais choix car il est spécifique à une seule coque.

Session utilisateur

  1. ~/.pam_environment. Liste des affectations uniques. Chargé par PAM au début de chaque session utilisateur n'est pas important s'il s'agit d'une session ou d'un shell du système X Window. Vous ne pouvez pas référencer d'autres variables, y compris HOME ou PATH donc il a une utilisation limitée.
  2. ~/.xprofile Script shell. Ceci est exécuté lorsque l'utilisateur se connecte au système X Window System. Les variables définies ici sont visibles pour toutes les applications X. Choix parfait pour étendre PATH avec des valeurs telles que ~/bin ou ~/go/bin ou définir un utilisateur spécifique GOPATH ou NPM_HOME. Le fichier est inclus par un autre script, utilisez donc la syntaxe de shell POSIX et non la syntaxe de votre shell utilisateur. 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 démarrés à partir d'un terminal ou d'un émulateur de terminal. C'est un bon choix pour les systèmes shell-only.
  4. ~/.<shell>rc. Script shell. Ceci est un mauvais choix car il est spécifique à une seule coque.

Documentation spécifique à la distribution


105
2017-11-16 21:29



Mettez le export déclaration en ~/.bashrc. Mon .bashrc contient ceci:

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

65
2018-02-01 00:59



Vous pouvez définir $PATH en permanence de 2 façons.

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

    par exemple, dans mon cas, je vais définir le chemin java dans le profil de l'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 le chemin comme suit:

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

29
2018-01-03 11:35



Vous pouvez utiliser sur Centos ou RHEL pour l'utilisateur local:

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

Cela ajoute le répertoire courant (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 voulez pas vous reconnecter, vous pouvez utiliser:

source ~/.bash_profile

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


9
2017-10-21 04:11



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


5
2018-02-01 00:59