Comment utiliser /etc/paths.d pour ajouter des fichiers exécutables à mon chemin?

15

J'essaie d'utiliser /etc/paths.d pour ajouter un exécutable à ma variable de chemin mais je n'ai pas réussi jusqu'à présent.

Le chemin complet du fichier exécutable est: /opt/ImageMagick/bin/convert

/etc/paths.d contient deux fichiers: 40-XQuartz et ImageMagick

Le 40-XQuartz contient une ligne: /opt/X11/bin
l'ImageMagick contient une ligne:/opt/ImageMagick/bin

Mon echo $PATHdonne:

/Users/Administrator/.rbenv/shims:/Users/Administrator/.rbenv/bin:/Users/Administrator/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin

Il semble donc que seul le premier fichier (40-XQuartz) fasse son travail. Les autorisations des deux fichiers (40-XQuartz et ImageMagick) sont exactement les mêmes, donc ma question est de savoir pourquoi le premier fonctionne et le second ne l'est pas.

J'utilise OS X Mavericks.

skiabox
la source
Quelle coquille utilisez-vous? Qu'en est-il de / etc / chemins?
Max Ried
L'ajout de raideur /etc/paths.dfonctionne pour moi, mais je redémarre l'application terminal que j'utilise (ITerm2 dans mon cas) pour que le nouveau chemin prenne effet
user1256923

Réponses:

17

Avez-vous commencé un nouveau shell de connexion depuis l'ajout du nouveau fichier pour ImageMagick? Le paramétrage du chemin des paths.dentrées se fait dans /etc/profileet /etc/csh.login, vous devez donc démarrer un nouveau shell pour que les nouvelles entrées prennent effet.

OS X utilise path_helperpour définir le chemin en fonction des fichiers dans /etc/paths.d- vous pouvez toujours l'appeler manuellement (en supposant un shell de type Bourne ici):

$ eval `/usr/libexec/path_helper -s`
mjturner
la source
Bien sûr, j'ai commencé un nouveau shell, j'ai même redémarré mon mac.
skiabox
nouveau shell de connexion a fonctionné pour moi
incandescentman
3

Fonctionnement

echo /opt/ImageMagick/bin|sudo tee /etc/paths.d/ImageMagick;bash -l;echo $PATH

ajoute /opt/ImageMagick/binà PATHmon installation.

Êtes-vous en train PATHde passer outre dans un autre endroit ~/.bash_profile?

Les chemins en /etc/paths.d/sont ajoutés au chemin par /usr/libexec/path_helper, qui est exécuté à partir /etc/profile, /etc/zsh.envet /etc/csh.login. path_helpern'est pas exécuté par des applications graphiques ou lorsque bash est appelé en tant que shell sans connexion.

Vous pouvez également définir une valeur PATHpar défaut dans /etc/launchd.conf:

  1. Exécutez par exemple setenv PATH /Users/Administrator/.rbenv/shims:/Users/Administrator/.rbenv/bin:/Users/Administrator/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/mysql/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/opt/ImageMagick/bin|sudo tee -a /etc/launchd.conf.
  2. Redémarrez ou exécutez launchctl</etc/launchd.conf;sudo launchctl</etc/launchd.confet relancez les processus.

Je préfère changer le chemin d'accès /etc/launchd.conf, car cela affecte également les programmes qui ne sont pas démarrés à partir de shells, comme les éditeurs de texte et les programmes démarrés par les travaux launchd.

Lri
la source
0

Génial, je ne faisais que jouer avec l'ajout d'ImageMagic à mon Mac. Non seulement vous avez besoin ImageMagick/binde votre PATH, vous avez également besoin d'un ensemble de variables d'environnement, ou ajouté à:

Pour le tester, vous pouvez le créer manuellement avec:

export DYLD_LIBRARY=".:/opt/ImageMagic/lib"

Vous trouverez ici des informations sur la définition d'une variable d'environnement pour Mac OS, Définition de variables d'environnement sous OS X?

Tony
la source