Après de nombreux essais avec différentes options, je conclus:
Existe-t-il un moyen unifié de définir les PATH
applications lancées par différents moyens (comme le script shell, le Finder et Spotlight)? Eh bien, oui et non:
- Non : la configuration
PATH
des scripts de démarrage du shell (par exemple .bashrc
) ne fonctionne que pour les applications lancées par des shells.
- Non : La configuration
PATH
du launchd
processus actuel via launchctl setenv PATH <...>
ne fonctionne pas du tout pour moi.
- Oui : Mise
PATH
en /etc/launchd.conf
(et le redémarrage du système) rendra le approprié PATH
visible dans les applications lancées par Spotlight, Dock et Finder, puis coquilles (locales).
- Non : les shells appelés à distance n'héritent pas de l'environnement. (Voir ... pourquoi les shells distants via ssh n'héritent pas de l'environnement .. )
Notes pour la mise en place des coques:
Pour un fonctionnement correct dans les shells locaux , il est important de désactiver l'utilisation de /usr/libexec/path_helper
, car les chemins par défaut dans /etc/paths
peuvent changer l'ordre des chemins dans PATH
. **
Pour prendre en charge les shells distants , vous devez réimporter l' launchd
environnement dans le shell. Utilisez quelque chose comme ça dans votre .bashrc
:
# the vexatious path stuff
eval $(launchctl export)
Les conséquences malheureuses de l'ensemble du problème sont:
- Aucun moyen d'avoir ces paramètres unifiés par utilisateur. (
~/.launchd.conf
ne fonctionne pas.)
- 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 al.
/etc/launch.conf
ne fonctionne pas pour les shells connectés à distance via ssh (je suppose que lesshd
ne transmet pas son environnement dont il hérite de son parentlaunchd
au shell enfant.). - Je modifierai la réponse en conséquence.eval "$(launchctl export)"
./etc/launchd.conf
est d'exécuter simplementsudo -e /etc/launchd.conf
(si vous connaissez vi) ouEDITOR=nano sudo -e /etc/launchd.conf
(si vous préférez un éditeur non modal).En développant la réponse précédente , pour modifier le chemin d'accès
/etc/launchd.conf
, vous devrez procéder comme suit.Assurez-vous que vous disposez des privilèges d'administrateur.
Créez un nouveau fichier texte avec le contenu suivant, modifié en fonction de vos besoins:
Enregistrez-le dans votre répertoire personnel sous
launchd.conf
.Ouvrez Terminal.app (ou votre substitut préféré) et tapez:
sudo mv ~/launchd.conf /etc
En fonction de votre utilisation précédente de la
sudo
commande, vous pouvez obtenir un court message "faites attention à ce que vous faites", mais dans les deux cas, vous devrez entrer votre mot de passe. La commande ne fait que déplacer le fichier dans le/etc
répertoire, 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.Redémarrez votre ordinateur.
Et vous devriez être prêt. Bonne chance!
la source
launchd.conf
, mais plutôt comment toutes les applications obtiennent la même variable PATH de manière unifiée.PATH
pour mes applications GUI, et j'ai pensé que j'aiderais les pauvres âmes qui ne sauraient pas comment effectuer le changement ...Vous pouvez essayer https://github.com/ersiner/osx-env-sync .
Il gère à la fois la ligne de commande et les applications GUI à partir d'une seule source . Et cela fonctionne avec la dernière version de Mac OS X (Yosemite).
la source
launchd
système. Votre solution présente les mêmes problèmes que ceux indiqués dans la réponse acceptée.