92 votes

Comment définir le PATH pour les applications lancées par le Finder ?

Les applications lancées via le Finder semblent ne pas respecter le PATH tel que défini dans .bash_profile . Ainsi, lorsque j'essaie d'exécuter du code à partir d'un IDE (Intellij), je n'ai plus accès aux programmes en . /usr/local/bin qui est normalement ajouté à mon chemin dans le Terminal.

Apparemment .MacOSX/environment.plist c'était la façon dont pour le faire, mais cela ne fonctionne plus dans Lion.

Comment puis-je définir le PATH pour les applications lancées par le Finder ?

44voto

Manrico Corazzi Points 6458

Si vous êtes sur 10.7 et non 10.8, la solution ci-dessous fonctionne bien :

J'ai eu le même problème avec eclipse, mais maintenant j'ai ajouté, par exemple, ce qui suit à mon fichier .bash_profile et puis ça a marché.

export PATH=some_path:another_path
launchctl setenv PATH $PATH

Dans le cas où vous voulez laisser le chemin original intact, utilisez

p=$(launchctl getenv PATH)
launchctl setenv PATH /my/new/path:$p

à la place (ou simplement launchctl setenv PATH /my/new/path:$(launchctl getenv PATH) ).

Nota: La modification du PATH de launchctl ne prendra effet que lorsque le Dock sera "redémarré". Un nouveau processus Dock sera automatiquement lancé après que le processus actuel ait été tué avec la commande :

killall Dock

28voto

brki Points 341

Sur OS X 10.10 Yosemite, j'ai utilisé cette commande :

sudo launchctl config user path <my path setting>

Sachez qu'il définit le PATH de lancement de l'application tous les utilisateurs . Cela a bien fonctionné pour mon cas d'utilisation. Notez qu'il vous sera demandé de redémarrer votre machine pour que les effets soient pris en compte.

Vous devez redémarrer toutes les applications pour que cela soit effectif. (Cela ne s'applique pas aux applications qui sont rouvertes à la connexion après le redémarrage). (Merci @Brecht Machiels.)

22voto

Manrico Corazzi Points 6458

Pour répondre à votre question concernant votre "nouveau" problème, j'ai décidé d'écrire une autre réponse, car il est plus facile de l'expliquer à l'aide d'exemples.

Une façon de charger les variables d'environnement au démarrage de votre outil (IDE) de choix est comme cela peut être fait avec eclipse - je pense qu'il doit y avoir une structure similaire dans votre outil (IDE) aussi.

Comment cela peut être fait dans eclipse - https://stackoverflow.com/questions/829749/launch-mac-eclipse-with-environment-variables-set

(légèrement réécrit à propos des variables d'environnement)

Créez un fichier texte vide appelé "eclipse.sh" dans le répertoire du paquet d'applications Eclipse. /Applications/Eclipse.app/Contents/MacOS

Ouvrez le fichier eclipse.sh dans un éditeur de texte et saisissez le contenu suivant :

#!/bin/sh

. ~/.bash_profile

logger "$(dirname \"$0\")/eclipse"

exec "$(dirname \"$0\")/eclipse" "$@"

Dans le Terminal mettez le drapeau exécutable du shell script eclipse.sh, c'est à dire :

chmod +x /Applications/Eclipse.app/Contents/MacOS/eclipse.sh

Ouvrez le fichier Info.plist de Eclipse.app et modifiez la valeur de la clé CFBundleExecutable de eclipse à eclipse.sh.

MacOS X ne détecte pas automatiquement que le fichier Info.plist d'Eclipse.app a été modifié. Par conséquent, vous devez forcer la mise à jour de la base de données LaunchService dans le Terminal en utilisant la commande lsregister command :

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/Eclipse.app

La prochaine fois que vous lancerez Eclipse.app à partir du Dock ou du Finder, les variables d'environnement devraient être définies.

14voto

Flori Points 241

Sur Mountain Lion, toutes les /etc/paths y /etc/launchd.conf L'édition n'a aucun effet !

Les Forums des développeurs d'Apple disent :

"Changez le fichier Info.plist de l'application elle-même pour qu'il contienne un dictionnaire "LSEnvironment". avec les variables d'environnement que vous voulez.

~/.MacOSX/environment.plist n'est plus supporté".

J'ai donc modifié directement le fichier de l'application Info.plist (clic droit sur "AppName.app" (dans ce cas SourceTree) et puis " Show package contents ")

Show Package Contents

et ajouté une nouvelle paire clé/dict appelée :

<key>LSEnvironment</key>
<dict>
     <key>PATH</key>
     <string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>

(voir : Documentation de LaunchServicesKeys chez Apple )

enter image description here

maintenant l'application (dans mon cas SourceTree) utilise le chemin donné et fonctionne avec git 1.9.3 :-)

PS : Bien entendu, vous devez adapter l'entrée "Chemin" à vos besoins spécifiques en matière de chemin.

2voto

Adam Taylor Points 1777

Sur Mountain Lion (10.8.4), $PATH est traité d'une manière spéciale. launchctl setenv PATH /your/path:/here n'a pas d'effet sur la $PATH dans les instances de Terminal.app ou d'Emacs.app lancées ultérieurement à partir du Dock ou du Finder (alors que launchctl setenv SPONG foo fonctionne bien). Aussi $HOME/.launchd.conf ne fonctionne pas. /etc/launchd.conf est le seul moyen que j'ai trouvé pour que PATH soit correctement défini partout. Malheureusement, on ne peut pas utiliser des envars tels que $HOME là-bas, donc tous les utilisateurs de mon ordinateur portable ont /Users/nb/bin sur leur $PATH . Ce n'est que moi, alors je m'en fiche.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X