Je voudrais ajouter à la variable d'environnement global PATH sur OS X afin que tous les shells utilisateur et les applications GUI obtiennent le même environnement PATH.
Je sais que je peux ajouter le chemin dans les scripts de démarrage de Shell, mais ces paramètres ne sont pas hérités par les applications GUI.
La seule façon que j'ai trouvée jusqu'à présent est de redéfinir la variable d'environnement PATH dans / etc/launchd.conf:
setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path
Je ne pouvais pas trouver un moyen d'ajouter réellement à PATH dans launchd.conf
.
Je suis un peu inquiet à propos de cette méthode, mais jusqu'à présent, c'est la seule chose qui fonctionne. Y a-t-il une meilleure façon?
informations de l'interface graphique de palmer est correct, mais il existe un moyen plus simple de modifier le chemin vu par le shell. Comme mediaslave a dit , vous pouvez modifier /etc/paths
, mais mieux encore, 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
/etc/launchd.conf
Le launchd.conf
file est ** la seule solution complète qui fonctionnera à la fois pour la 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 d'environnement par défaut 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 les appliquer, vous devez redémarrer.
N'oubliez pas que toutes les autres ne sont que des solutions partielles:
environment.plist
ne fonctionne pas pour les applications lancées via Spotlight./etc/paths
- uniquement pour la console/etc/csh.cshrc
ou /etc/bashrc
- uniquement pour certains obusCette réponse est basée sur la même question de Définition des variables d'environnement sur Mac OS X.
Vous allez devoir le définir sur une base Shell par Shell; Les shells similaires à Bash et csh ne partagent pas les mêmes fichiers de configuration et la même syntaxe pour ajuster le PATH.
Essayer de le faire dans launchctl
ne fonctionnera pas, car les variables d'environnement sont définies lors de la connexion; ils n'existent pas à l'échelle du système dans Unix en dehors d'une session Shell.
Vous allez donc vouloir ajouter
setenv PATH "$PATH:/add/my/extra/path"
à /etc/csh.cshrc
et
export PATH="$PATH:/more/paths:/
à /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
fichier dans le répertoire personnel de chaque utilisateur. Le .MacOSX
le répertoire 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 sur le environment.plist
sur le site d'Apple .
Vous pouvez modifier votre chemin global en ajoutant des lignes à /etc/paths
, un chemin par ligne.
Sudo nano /etc/paths
devrait vous y amener.
Avez-vous consulté la page de manuel de la path_helper
utilitaire de ligne de commande sur OS X? J'ai répondu à une question quelque peu connexe sur SO que je pense que vous pourriez trouver utile.
Je ne sais pas si quelqu'un a couvert la manière la plus simple et la plus élégante . Au moins sur Mac OS X v10.6 (Snow Leopard).
Jouer avec le [/etc/|~/.]
de [profile|bashrc]
les fichiers peuvent fonctionner, mais c'est un peu un hack. Le /etc/paths.d/
répertoire est le chemin à parcourir:
Créez un nouveau fichier nommé *name*
(ne le nommez pas quelque chose qui est déjà là) dans /etc/paths.d/
avec un chemin par ligne:
/usr/X11/bin
/Developer/usr/bin
Puis ajouter
eval '/usr/libexec/path_helper -s`
à profile
ou bashrc
, et vous devriez être prêt à partir.
Je ne sais pas pourquoi vous utiliseriez /etc/launchd.conf
par opposition à /etc/profile
- mais je ne suis pas un expert de Mac OS X - je vous crois en ce que je suis sûr que cela fonctionne, mais launchd
est l'implémentation/remplacement de Mac OS X pour init
- Mac OS X me confond.
En tous cas, setenv PATH "$PATH:/more/paths:/and/more/paths"
fonctionnera (tcsh), et l'équivalent de bourn Shell est export PATH="$PATH:/more/paths:/and/more/paths"
- Je ne sais pas non plus comment launchd
est lié à un Shell particulier.
Je pense que j'ai posé plus de questions que j'ai répondu =)
Je ne sais pas si launchd accepte cela, mais essayez:
setenv PATH "$ PATH:/mon/chemin"