Comment changer la variable d'environnement PATH en OS X 10.8 Mountain Lion qui sera visible pour les applications GUI? [dupliquer]

14

J'ai essayé toutes les méthodes dont j'ai entendu parler pour définir des variables d'environnement sur OS X 10.8, mais aucune ne semble fonctionner.

Pour tester, exécutez un script bash à partir d'une application gui comme Eclipse ou IntelliJ IDEA.

#!/bin/bash
set|grep PATH

Choses que j'ai testées et qui ne fonctionnent pas même après le redémarrage:

  • /etc/paths et /etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (plist binaire fait comme recommandé)
  • exécuté à launchctl setenv PATH $PATHpartir de la ligne de commande, cela était censé mettre à jour le PATH pour les applications GUI, au moins pour la session en cours. Devinez quoi, pas de changement.

Il semble que PATH soit toujours PATH=/usr/bin:/bin:/usr/sbin:/sbinpour les applications GUI.

Sorin
la source
Êtes-vous d'accord avec une solution qui définit le chemin bash ou avez-vous vraiment besoin de changer la valeur de launchd du chemin de base pour tous les processus?
bmike
J'ai besoin de changer le CHEMIN utilisé par les applications GUI, pour le terminal / bash / ... J'ai déjà un grand ensemble de solutions de travail.
sorin
Je ne sais pas pourquoi eclipse et d'autres ne prennent pas simplement en charge les variables d'environnement d'exécution, de sorte que chaque développeur Java sur Mac n'a pas à se soucier de définir le chemin ou de rechercher les variables souhaitées dans chaque projet.
bmike

Réponses:

8

Avec Mountain Lion, /etc/launchd.confvous devez définir le chemin des applications GUI. N'oubliez pas que ce n'est pas un fichier de script; il ne prend en charge que les launchctlcommandes, vous devez donc écrire quelque chose comme:

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

Notez également qu'il ne prend pas en charge les substitutions de variables d'environnement shell (comme $PATH), vous devrez donc définir chaque chemin que vous souhaitez inclure. C'est une bonne idée de conserver les chemins d'origine que vous avez mentionnés ( /usr/bin:/bin:/usr/sbin:/sbin).

Vous devrez redémarrer après avoir modifié (ou créé) le fichier pour que les modifications prennent effet.

João Campos
la source
Cela a fonctionné pour moi dans 10.8.2 pour définir un CHEMIN qui était utilisable avec Keyboard Maestro.
TJ Luoma
La page de manuel indique que vous pouvez utiliser $ HOME / .launchd.conf mais cela n'a pas fonctionné pour moi. À l'aide de /etc/launchd.conf. Je suis le 10.8.4
pedz
Ça ne marche pas pour moi:-bash: setenv: command not found
Colas
Si quelqu'un était confus comme Colas, setenvc'est une launchctlcommande, alors vous l'utilisez comme launchctl setenv.
Jon Shier
3

Cela fonctionne si vous appelez l'application GUI depuis le terminal:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

entrez la description de l'image ici

Pas vraiment agréable ou confortable mais il fait le travail si nécessaire.

nohillside
la source
Peu de temps. Je ne suis pas disposé à le faire, cela ne fonctionnera que parfois. L'application peut également être lancée lorsque vous cliquez sur un fichier.
sorin
2
Comme je l'ai dit, ce n'est pas vraiment agréable, mais cela peut fonctionner jusqu'à ce qu'Apple corrige le problème (car cela devrait être possible avec launchctl).
nohillside
2

J'ai concocté une autre solution, inspirée de Patrix One ici , qui, espérons-le, est un peu moins douloureuse. Ouvrez Automator, sélectionnez une application comme cible et choisissez Execute Shell script(ou quel que soit son nom, en allemand, c'est "Shell-Skript ausführen" comme on peut le voir ci-dessus) comme action. Dans le script, tapez simplement

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

Ensuite, enregistrez le tout où vous voulez, et si vous devez exécuter YourApplicationHere , ouvrez à la place "l'application d' automatisation " créée.

Je l' ai testé cela avec Terminalcomme YourApplicationHere , et je vis avec launchctl exportce que FOO était en effet mis à barre . J'espère que cela fonctionne aussi pour les autres.

Enfin, si vous utilisez cette solution pour vos variables d'environnement, au lieu de taper la launchctlsubstance dans le script shell, vous pouvez simplement appeler /Users/Shared/conflaunchd.sh(que vous devez d'abord composer, avec le fichier décrivant les variables).

Percival Ulysse
la source
-1

Soi-disant, launchctlfournit PATHaux applications GUI. Pour définir le chemin sur celui du chemin du shell, ajoutez ce qui suit à votre fichier shell rc après avoir défini votre chemin:

launchctl setenv PATH $PATH
ismail
la source
1
Malheureusement, cela ne fonctionne pas :-(
nohillside
Nous permettons des réponses qui font un effort de bonne foi pour répondre à la question. Nous autorisons même des réponses erronées et laissons le vote parler d'exactitude. Commenter sans le rendre personnel est le meilleur moyen de percer un argument défectueux plutôt que de décourager les tentatives de réponse.
bmike