109 votes

Comment définir la variable d'environnement PATH globale sous OS X ?

J'aimerais ajouter la variable d'environnement PATH globale sous OS X afin que tous les interpréteurs de commandes des utilisateurs et les applications GUI aient le même environnement PATH.

Je sais que je peux ajouter au chemin dans Shell de démarrage Shell, mais ces paramètres ne sont pas hérités par les applications GUI.

Le seul moyen que j'ai trouvé jusqu'à présent est de redéfinir la variable d'environnement PATH dans le fichier /etc/launchd.conf :

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path

Je n'ai pas réussi à trouver un moyen d'ajouter le chemin à PATH en launchd.conf .

Cette méthode m'inquiète un peu, mais jusqu'à présent, c'est la seule chose qui fonctionne. Existe-t-il une meilleure méthode ?

76voto

molly Points 11

Informations sur l'interface graphique de Palmer est correct, mais il existe une manière plus maintenable de modifier le chemin vu par le Shell. Comme mediaslave a dit vous pouvez modifier /etc/paths mais encore mieux, vous pouvez déposer un fichier texte dans /etc/paths.d/ qui contient un chemin et tous les shells construiront le chemin correctement.

Par exemple, sur mon système :

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11       git      postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin

50voto

user712092 Points 351

/etc/launchd.conf

El launchd.conf est **la seule solution complète qui fonctionnera à la fois pour les applications en ligne de commande et les applications GUI sur OS X v10.8 (Mountain Lion) et v10.9 (Mavericks), qui fonctionnera avec les applications GUI et console, pour tous les utilisateurs.

sudo touch /etc/launchd.conf
sudo nano /etc/launchd.conf

Ajouter

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

Dans l'exemple ci-dessus, j'ai ajouté /usr/local/bin aux valeurs par défaut de l'environnement pour PATH.

Gardez à l'esprit que ce fichier n'est pas un script et que vous n'avez pas la possibilité d'utiliser des substitutions. De plus, pour que ces modifications soient appliquées, vous devez redémarrer.

N'oubliez pas que toutes les autres solutions ne sont que partielles :

  • environment.plist ne fonctionne pas pour les applications lancées via Spotlight.
  • /etc/paths - uniquement pour la console
  • /etc/csh.cshrc o /etc/bashrc - seulement pour certains obus

Cette réponse est basée sur la même question de Définition des variables d'environnement sous Mac OS X .

8voto

palmer Points 1269

Vous allez devoir le définir sur une base Shell-parShell ; Bash et les shells de type csh ne partagent pas les mêmes fichiers de configuration et la même syntaxe pour ajuster le PATH.

J'essaie de le faire dans launchctl ne fonctionnera pas, car les variables d'environnement sont définies à la connexion ; elles n'existent pas à l'échelle du système sous Unix en dehors d'une session Shell.

Donc vous allez vouloir ajouter

setenv PATH "$PATH:/add/my/extra/path"

a /etc/csh.cshrc y

export PATH="$PATH:/more/paths:/

a /etc/bashrc .

Si vous voulez des variables d'environnement dans les applications GUI, c'est plus compliqué. Vous devez créer un .MacOSX/environment.plist dans le répertoire personnel de chaque utilisateur. Le site .MacOSX n'existera probablement pas par défaut, vous devrez donc le créer.

Le format du fichier est le suivant :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    <key>PRINTER</key>
    <string>myprinter</string>

    <key>PATH</key>
    <string>/path/to/thing/I/need</string>

    <key>DISPLAY</key>
    <string>0:1</string>

</dict>
</plist>

Plus d'informations sur le environment.plist est sur le site d'Apple .

3voto

manumoomoo Points 181

Vous pouvez modifier votre chemin global en ajoutant des lignes à /etc/paths un chemin par ligne.

sudo nano /etc/paths devrait vous y conduire.

1voto

chris Points 10694

Avez-vous jeté un coup d'œil à la page de manuel de la fonction path_helper utilitaire de ligne de commande sur OS X ? J'ai répondu à une Question un peu connexe sur le SO que je pense que vous trouverez utile.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X