9 votes

Dans Mountain Lion, comment puis-je définir, en un seul endroit, la variable d'environnement PATH pour toutes les applications nouvellement lancées ?

Sur Ask Different, il y a beaucoup de questions concernant le PATH et comment la définir pour les applications lancées par un shell, par spotlight ou via le finder (questions typiques) : Comment définir le PATH pour les applications lancées par le Finder ? o Comment modifier la variable d'environnement PATH... ).

Les réponses vont de sh démarrage scripts à /etc/paths à /etc/launchd.conf . Je suis ici à la recherche de la réponse à une unifié cadre de PATH pour toutes les applications sous Mac OS X Mountain Lion 10.8.2.

14voto

Andrew Points 303

Après de nombreux essais avec différentes options, je conclus :

Y a-t-il un manière unifiée pour définir le PATH pour les applications lancées par différents moyens (comme le shell script, le Finder et Spotlight) ? Eh bien, oui et non :

  • Non : Réglage PATH dans le shell démarrer scripts (ex. .bashrc ) ne fonctionne que pour les applications lancées par des shells.
  • Non : Réglage PATH pour l'actuel launchd processus via launchctl setenv PATH <...> ne fonctionne pas du tout pour moi.
  • Oui : Réglage PATH sur /etc/launchd.conf (et le redémarrage du système) fera en sorte que le programme approprié PATH visible dans les applications lancées par Spotlight, Dock et Finder, puis dans les shells (locaux).
  • Non : Les shells invoqués à distance font pas héritent de l'environnement. (Voir ...pourquoi les shells distants via ssh n'héritent PAS de l'environnement... )

Notes pour la mise en place des coquilles :

  1. Pour un bon fonctionnement en local Il est important de pour de coqu coqu coqu il est important éteindre l'utilisation de /usr/libexec/path_helper car les chemins par défaut dans /etc/paths pourrait changer l'ordre des chemins dans PATH .**

  2. Pour s'adapter à distance vous devez réimporter le launchd dans le shell. Utilisez quelque chose comme ceci dans votre .bashrc :

    the vexatious path stuff

    eval $(launchctl export)

Les conséquences malheureuses de toute cette affaire sont :

  • Il n'y a aucun moyen d'avoir ces paramètres unifiés sur une base par utilisateur. ( ~/.launchd.conf ne fonctionne pas).
  • Il n'y a pas de moyen facile de construire le PATH à partir de différentes sources en utilisant des techniques comme l'expansion du répertoire personnel et autres.

3voto

MattDMo Points 2725

Élargir le champ d'action la réponse précédente pour modifier le chemin dans /etc/launchd.conf vous devrez faire ce qui suit.

  1. Assurez-vous que vous disposez des privilèges d'administrateur.

  2. Créez un nouveau fichier texte avec le contenu suivant, modifié pour répondre à vos besoins :

    setenv PATH /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/Users/YourUserName/bin
  3. Sauvegardez-le dans votre répertoire personnel comme launchd.conf .

  4. Ouvrez Terminal.app (ou votre substitut préféré) et tapez :

    sudo mv ~/launchd.conf /etc

    Selon l'usage que vous avez fait de l'outil sudo vous obtiendrez peut-être un court message "faites attention à ce que vous faites", mais dans tous les cas, vous devrez entrer votre mot de passe. Tout ce que fait la commande, c'est de déplacer le fichier vers le dossier /etc qui n'est pas directement accessible lors de l'enregistrement d'un fichier dans TextEdit, par exemple. sudo (abréviation de "Super User DO") est utilisé car les privilèges d'administrateur sont nécessaires pour écrire dans ce répertoire.

  5. Redémarrez votre ordinateur.

Et vous devriez être prêt. Bonne chance !

-2voto

Ersin Er Points 107

Vous pouvez donner https://github.com/ersiner/osx-env-sync un essai.

Il traite des applications en ligne de commande et en interface graphique d'un source unique . Et cela fonctionne avec le dernière version d'OS X (Yosemite).

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