¿Cómo usar /etc/paths.d para agregar archivos ejecutables a mi ruta?

15

Estoy tratando de usar /etc/paths.d para agregar un ejecutable a mi variable de ruta, pero hasta ahora no he tenido éxito.

La ruta completa del archivo ejecutable es: /opt/ImageMagick/bin/convert

/etc/paths.d contiene dos archivos: 40-XQuartz e ImageMagick

El 40-XQuartz contiene una línea: /opt/X11/bin
ImageMagick contiene una línea:/opt/ImageMagick/bin

Mi echo $PATHda:

/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

Parece que solo el primer archivo (40-XQuartz) hace su trabajo. Los permisos de los dos archivos (40-XQuartz e ImageMagick) son exactamente los mismos, por lo que mi pregunta es por qué el primero funciona y el segundo no.

Estoy ejecutando OS X Mavericks.

skiabox
fuente
¿Qué caparazón usas? ¿Qué pasa con / etc / caminos?
Max Ried
Agregar rigidez a /etc/paths.dmi trabajo, pero reinicio cualquier aplicación de terminal que esté usando (ITerm2 en mi caso) para que la nueva ruta surta efecto
user1256923

Respuestas:

17

¿Ha comenzado un nuevo shell de inicio de sesión desde que agregó el nuevo archivo para ImageMagick? La configuración de la ruta desde las paths.dentradas se realiza en /etc/profiley /etc/csh.login, por lo que debe iniciar un nuevo shell para que las nuevas entradas surtan efecto.

OS X utiliza path_helperpara establecer la ruta en función de los archivos en /etc/paths.d- siempre puede llamarlo manualmente (suponiendo un shell similar a Bourne aquí):

$ eval `/usr/libexec/path_helper -s`
mjturner
fuente
Por supuesto, he comenzado un nuevo shell, incluso reinicié mi mac.
skiabox
nuevo shell de inicio de sesión funcionó para mí
incandescentman
3

Corriendo

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

agrega /opt/ImageMagick/binaPATH mi instalación.

¿Estás anulando PATHen otro lugar como~/.bash_profile ?

Los caminos en /etc/paths.d/se añaden a la ruta por /usr/libexec/path_helper, que se ejecuta a partir de /etc/profile, /etc/zsh.envy /etc/csh.login.path_helperno se ejecuta mediante aplicaciones gráficas o cuando se invoca bash como un shell sin inicio de sesión.

También puede establecer un valor predeterminado PATHen /etc/launchd.conf:

  1. Ejecutar por ejemplo 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. Reinicie o ejecute launchctl</etc/launchd.conf;sudo launchctl</etc/launchd.confy vuelva a iniciar procesos.

Prefiero cambiar la ruta /etc/launchd.conf, porque también afecta a los programas que no se inician desde shells, como los editores de texto y los programas iniciados por trabajos de launchd.

Lri
fuente
0

Impresionante, solo estaba jugando agregando ImageMagic a mi Mac. No solo necesita ImageMagick/binen su PATH, también necesita un conjunto de variables de entorno, o agregado a:

Para probar puede crearlo manualmente con:

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

La información para configurar una variable de entorno para Mac OS se puede encontrar aquí, ¿ Cómo configurar variables de entorno en OS X?

Tony
fuente