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

12

Estoy intentando 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
El ImageMagick contiene una línea: /opt/ImageMagick/bin

Mi echo $PATH da:

/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, así que mi pregunta es por qué el primero funciona y el segundo no.

Estoy ejecutando OS X Mavericks.

    
pregunta skiabox 27.04.2014 - 17:21

3 respuestas

14

¿Comenzó un nuevo shell de inicio de sesión desde que agregó el nuevo archivo para ImageMagick? La configuración de la ruta de las entradas paths.d se realiza en /etc/profile y /etc/csh.login , por lo que necesita iniciar un nuevo shell para que las nuevas entradas surtan efecto.

OS X usa path_helper para establecer la ruta de acceso en función de los archivos en /etc/paths.d ; siempre puedes llamarlo manualmente (asumiendo una cáscara tipo Bourne aquí):

$ eval '/usr/libexec/path_helper -s'
    
respondido por el mjturner 27.04.2014 - 18:17
2

En ejecución

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

agrega /opt/ImageMagick/bin a PATH en mi instalación.

¿Estás anulando PATH en algún otro lugar como ~/.bash_profile ?

Las rutas en /etc/paths.d/ se agregan a la ruta por /usr/libexec/path_helper , que se ejecuta desde /etc/profile , /etc/zsh.env y /etc/csh.login . path_helper no se ejecuta mediante aplicaciones gráficas o cuando se invoca a bash como un shell sin inicio de sesión.

También puede establecer un PATH predeterminado en /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.conf y reinicie los procesos.

Prefiero cambiar la ruta en /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 launchd.

    
respondido por el user495470 30.04.2014 - 11:29
0

Genial, solo estaba jugando con la adición de ImageMagic a mi Mac. No solo necesita ImageMagick/bin en su PATH , también necesita un conjunto de variables de entorno, o agregado a:

Para probarlo, puedes 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í, Configuración de variables de entorno en OS X?

    
respondido por el Tony 06.07.2017 - 22:15

Lea otras preguntas en las etiquetas