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.


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`

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.


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?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.