Comment configurer les variables d'environnement dans Mac OS X de telle sorte qu'elles soient disponibles pour les applications GUI sans utiliser ~ / .MacOSX / environment.plist ou Login Hooks (car elles sont obsolètes )?
macos
environment-variables
launchd
launchctl
Percival Ulysse
la source
la source
Réponses:
Sur Mountain Lion tous les
/etc/paths
et l'/etc/launchd.conf
édition ne prend aucun effet!Les forums des développeurs d'Apple disent:
J'ai donc directement édité l'application
Info.plist
(clic droit sur "AppName.app" (dans ce cas SourceTree) puis "Show package contents
")et ajouté une nouvelle paire clé / dict appelée:
(voir: documentation LaunchServicesKeys sur Apple )
maintenant l'App (dans mon cas SourceTree) utilise le chemin donné et fonctionne avec git 1.9.3 :-)
PS: Bien sûr, vous devez ajuster l'entrée Chemin d'accès à vos besoins spécifiques.
la source
Info.plist
prendre effet.La solution utilise la fonctionnalité de
launchctl
, combinée avec un agent de lancement pour imiter les points d'ancrage de connexion des anciens. Pour d'autres solutions utilisant le magasin delaunchd
, consultez cette comparaison . L'agent de lancement utilisé ici se trouve dans / Library / LaunchAgents / :Une chose importante est la clé RunAtLoad pour que l'agent de lancement soit exécuté le plus tôt possible. Le vrai travail se fait dans le script shell /Users/Shared/conflaunchd.sh , qui lit ~ / .conf.launchd et le nourrit
launchctl
:Remarquez l'appel de
path_helper
pour configurer correctement PATH . Enfin, ~ / .conf.launchd ressemble à çaCe sont des
launchctl
commandes, voir sa page de manuel pour plus d'informations. Fonctionne très bien pour moi (je dois mentionner que je suis toujours un gars de Snow Leopard), les applications GUI telles que texstudio et TeXShop peuvent voir mon propre arbre tex. Choses qui peuvent être améliorées:Le script shell contient un
#filename="$1"
. Ce n'est pas accidentel, car le nom du fichier doit être introduit dans le script par l'agent de lancement comme argument, mais cela ne fonctionne pas.Comme mentionné ici (en allemand et derrière un paywall!), Il est possible de mettre le script lui-même dans l'agent de lancement.
Je ne suis pas sûr de la sécurité de cette solution, car elle utilise
eval
des chaînes fournies par l'utilisateur.Je pense me souvenir que la définition de MANPATH utilisant cette méthode n'a pas bien fonctionné, mais je ne suis pas sûr.
Il convient de mentionner qu'Apple envisageait une approche quelque peu similaire en mettant des éléments dans ∼ / launchd.conf , mais il n'est actuellement pas pris en charge pour cette date et le système d'exploitation (voir la page de manuel de
launchd.conf
). Je suppose que des choses comme le globbing ne fonctionneraient pas comme elles le font dans cette proposition. Et bien sûr, on peut mettre ces fichiers n'importe où ailleurs, sauf l'agent de lancement qui doit résider dans / Library / LaunchAgents / ou ~ / Library / LaunchAgents / .Enfin, je dois mentionner les sources que j'ai utilisées comme informations sur les agents de lancement: 1 , 2 , 3 , 4 .
Mise à jour : cela ne fonctionne pas pour le moment dans la version 10.8. Les solutions de contournement par application sont décrites ici et ici .
la source
export PATH=.:"$(launchctl getenv PATH)"
dans ~ / .bash_profile (de même pour les autres shells). Ceci est possible carpath_helper
est appelé dans le script shell. Pour plus de détails sur la variable PATH sous OS X, vérifiez cette réponse .La réponse fournie par @flori fonctionne pour moi sur Maverick à condition que j'exécute les commandes suivantes dans Terminal après avoir changé le fichier plist
la source
La réponse fournie par @ percival-ulysses fonctionne pour moi sur 10.9 Mavericks avec le petit changement suivant: éditez le script /Users/Shared/conflaunchd.sh juste avant
exit 0
et ajoutez les lignespour redémarrer le Dock et la barre de menus. Après cela, les applications démarrées à partir du Dock ou de Spotlight hériteront du bon chemin. Si vous utilisez le Finder pour démarrer les applications critiques PATH,
killall Finder
vous pouvez également les ajouter.Dans
.bash_profile
la ligne j'utilisepour définir le CHEMIN pour le Terminal, de cette façon le CHEMIN est contrôlé à partir du même emplacement, le fichier ~ / .conf.launchd .
la source
Une autre option consiste à utiliser
/etc/launchd.conf
. Par exemple, j'ai changé la valeurPATH
par défaut en ajoutant cette ligne à/etc/launchd.conf
:Vous pouvez appliquer des modifications à
/etc/launchd.conf
soit en redémarrant, soit en exécutantlaunchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
et en arrêtant et en relançant les processus.Les paramètres de
/etc/launchd.conf
s'appliquent à la fois au processus root launchd et aux processus launchd par utilisateur. Les variables d'environnement définies avecsetenv
in/etc/launchd.conf
sont représentées parsudo launchctl export
etlaunchctl export
.la source