GNU/Linux >> Tutoriels Linux >  >> Linux

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

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

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

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

Dans Ubuntu, modifiez /etc/environment . Son seul but est de stocker des 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 immédiat résultats,

Exécuter (essayez en tant qu'utilisateur normal et racine):

source /etc/environment && export PATH

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

source /etc/environment

J'ai rencontré cette petite bizarrerie sur Ubuntu 15.10 (Wily Werewolf), mais si votre zsh n'obtient pas le bon PATH , c'est peut-être pour ça.


Il existe 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émarrage du système ou de la session utilisateur. Dans le cas du script shell, vous devez utiliser une syntaxe shell spécifique et export ou set commandes.

À l'échelle du système

  1. /etc/environment Liste des affectations uniques. Autorise les références. Parfait pour ajouter des répertoires à l'échelle du système comme /usr/local/something/bin à PATH variable ou définissant JAVA_HOME . Utilisé par PAM et systemd.

  2. /etc/environment.d/*.conf Liste des affectations uniques. Autorise les références. Parfait pour ajouter des répertoires à l'échelle du système comme /usr/local/something/bin à PATH variable ou définissant JAVA_HOME . La configuration peut être divisée en plusieurs fichiers, généralement un pour chaque outil (Java, Go et Node.js). Utilisé par systemd qui, de par sa conception, ne transmet pas ces valeurs aux shells de connexion des utilisateurs.

  3. /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 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, utilisez donc la syntaxe du shell POSIX et non la syntaxe de votre shell utilisateur.

  4. /etc/profile et /etc/profile.d/* Script shell. C'est un bon choix pour les systèmes shell uniquement. Ces fichiers sont lus uniquement par les shells en mode de connexion.

  5. /etc/<shell>.<shell>rc . Script shell. C'est un mauvais choix car il est spécifique à un seul shell. Utilisé en mode sans connexion.

Session utilisateur

  1. ~/.pam_environment . Liste des affectations uniques, aucune référence autorisée. Chargé par PAM au début de chaque session utilisateur, sans importance s'il s'agit d'une session X Window System ou d'un shell. Vous ne pouvez pas référencer d'autres variables, y compris HOME ou PATH donc son utilisation est limitée. Utilisé par PAM.

  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 en définissant un GOPATH spécifique à l'utilisateur ou NPM_HOME . Le fichier est inclus par un autre script, utilisez donc la syntaxe du 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 , ~/.<shell>_profile , ~/.<shell>_login 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 uniquement. Utilisé par les shells en mode connexion.

  4. ~/.<shell>rc . Script shell. C'est un mauvais choix car il est spécifique à un seul shell. Utilisé par les shells en mode sans connexion.

Remarques

GNOME sur Wayland démarre un shell de connexion utilisateur pour obtenir l'environnement. Il utilise efficacement les configurations de shell de connexion ~/.profile , ~/.<shell>_profile , ~/.<shell>_login fichiers.

Pages de manuel

  • environnement
  • environnement.d https://linux.die.net/man/1/environment.d
  • bash
  • tiret

Documentation spécifique à la distribution

  • Ubuntu
  • Arch Linux

Différence entre le shell de connexion et le shell sans connexion ?


Linux
  1. Comment définir votre variable $PATH sous Linux

  2. Comment définir/créer des variables d'environnement et de shell sous Linux

  3. Comment définir une variable d'environnement utilisateur ? (en permanence, pas de session) ?

  4. Comment changer (de manière permanente) le shell par défaut après la connexion à un Ttyn spécifique sous Linux ?

  5. UNIX / Linux :Comment installer et configurer mutt

Comment configurer une tâche Cron sous Linux

Comment ajouter un répertoire à PATH sous Linux

Comment définir ou modifier le nom d'hôte sous Linux

Comment déboguer les scripts Bash sous Linux et Unix

Comment changer un shell d'utilisateurs sous Linux

Comment définir $PATH dans le système Linux de manière permanente