Pregunta ¿Cómo configuro la variable de entorno PATH global en OS X?


Me gustaría añadirlo a la variable de entorno PATH global en OS X para que todos los shells de usuarios y las aplicaciones GUI obtengan el mismo entorno PATH.

Sé que puedo agregar a la ruta en los scripts de inicio de shell, pero esas configuraciones no son heredadas por las aplicaciones GUI.

La única manera que encontré hasta ahora es redefinir la variable de entorno PATH en /etc/launchd.conf:

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/my/path

No pude encontrar una manera de añadir realmente a PATH en launchd.conf.

Estoy un poco preocupado por este método, pero hasta ahora esto es lo único que funciona. ¿Hay alguna manera mejor?


97
2018-05-31 19:08


origen


Ver: stackoverflow.com/questions/347286 - rjmunro
Para Yosemite y más tarde, ver stackoverflow.com/questions/25385934/… - thSoft
Ninguna de las respuestas aquí responde a la pregunta del OP. Pero el comentario aquí por thSoft está justo en el dinero! Tal vez esto debería ser fusionado o vinculado a esa pregunta referenciada: stackoverflow.com/questions/25385934/… - Kevin Buchs


Respuestas:


información de la interfaz gráfica de usuario de Palmer es correcto, pero existe una forma más fácil de modificar la ruta que ve el shell. Me gusta mediaslave dijo, puedes editar /etc/paths, pero aún mejor puedes soltar un archivo de texto en /etc/paths.d/ que tiene un camino en él y todos los shells construirán el camino correctamente.

Por ejemplo, en mi sistema:

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11       git      postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin

70
2018-05-28 06:53



¡Genial gracias! Nota: esto requiere que cierre la sesión y vuelva a iniciarla antes de que funcione. - weronika
@weronika: encontré que era suficiente para salir y volver a lanzar X11 (Menos doloroso que desconectarse por completo). No lo probé en Terminal. - Peter Gluck
Me refería a Terminal, tienes razón, olvidé especificar. - weronika
Es bueno saberlo, pero NO responde a la pregunta del OP, ya que este mecanismo no se aplica a las aplicaciones GUI. El OP estaba buscando una unificado solución que le permite adjuntar al defecto $PATH. - mklement
¿Qué quieres decir con "mi sistema" aquí, @cogg? ¿No estamos todos usando OS X aquí? Lo siento, pero todavía soy nuevo en OS X. Estoy usando OS X 10.7 - ericn


/etc/launchd.conf

los launchd.conf El archivo es ** la única solución completa que funcionará tanto para la línea de comandos como para las aplicaciones GUI en OS X v10.8 (León de montaña) y v10.9 (Mavericks), uno que funcionará con GUI y aplicaciones de consola, para todos los usuarios.

sudo touch /etc/launchd.conf
sudo nano /etc/launchd.conf

Añadir

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

En el ejemplo anterior agregué /usr/local/bin a los valores de entorno predeterminados para PATH.

Tenga en cuenta que este archivo no es un script y no tiene la opción de usar sustituciones. Además, para tener estos aplicados es necesario reiniciar.

Recuerda, todas las demás son solo soluciones parciales:

  • environment.plist no funciona para aplicaciones lanzadas a través de Spotlight.
  • /etc/paths - solo para consola
  • /etc/csh.cshrc o /etc/bashrc - solo para algunas conchas

Esta respuesta se basa en la misma pregunta de Configuración de variables de entorno en Mac OS X.


47
2018-06-04 20:30



Gran hallazgo, pero la pregunta ya habla. lanzamiento y esta preguntando sobre como adjuntar al camino en él. - cregox
¿De verdad agregaste un comentario a la pregunta original que señalaba a ti mismo como "la respuesta real"? - TJ Luoma
Está implícito en su - útil - respuesta, pero solo para explicarlo: el deseo del OP de adjuntar no se admite la ruta de acceso predeterminada, porque no puede hacer referencia a otras variables de entorno en /etc/launchd.conf. - mklement
No es global: el entorno de línea de comando lo descartará cuando / etc / profile llame a path_helper y reconstruya PATH desde / etc / paths y /etc/paths.d/ - Dave X
de acuerdo a apple.stackexchange.com/questions/106355/…, esto ya no funciona para Yosemite o después - ericn


Vas a tener que configurarlo en una base de shell por shell; Bash y csh-like shells no comparten los mismos archivos de configuración y sintaxis para ajustar el PATH.

Tratando de hacer esto en launchctl no funcionará, porque las variables de entorno se configuran al iniciar sesión; no existen en todo el sistema en Unix fuera de una sesión de shell.

Así que vas a querer agregar

setenv PATH "$PATH:/add/my/extra/path"

a /etc/csh.cshrc y

export PATH="$PATH:/more/paths:/

a /etc/bashrc.

Si desea variables de entorno en aplicaciones GUI, eso es más complicado. Tienes que crear un .MacOSX/environment.plist archivo en el directorio de inicio de cada usuario. los .MacOSX Es probable que el directorio no exista de forma predeterminada, por lo que tendrá que crearlo.

El formato del archivo es así:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    <key>PRINTER</key>
    <string>myprinter</string>

    <key>PATH</key>
    <string>/path/to/thing/I/need</string>

    <key>DISPLAY</key>
    <string>0:1</string>

</dict>
</plist>

Más sobre el environment.plist  está en el sitio de Apple.


7
2018-06-01 12:24



Pero la configuración tiene efecto cuando se establece en /etc/launchd.conf ... Hmmm ... / me está confundido. - Xerxes
De Verdad? ¿Qué variable de entorno estás configurando allí? - palmer
Solo una actualización a partir de OS X 10.8: el ~/.MacOSX/environment.plist El enfoque ya no es compatible y no hay sustituto a nivel de usuario. Puede usar todo el sistema /etc/launchd.conf(y hay una solución de aplicación por - *.) - mklement
No responde las preguntas de OP. - Kevin Buchs


Puede editar su ruta global agregando líneas a /etc/paths, un camino por línea.

sudo nano /etc/paths debería llevarte allí.


3
2017-09-03 18:04



Es bueno saberlo, pero no responde a la pregunta del OP en que este mecanismo no se aplica a las aplicaciones GUI. - mklement


¿Has visto la página del manual de path_helper ¿Utilidad de línea de comandos en OS X? Respondí a Pregunta un tanto relacionada sobre SO que creo que puede ser útil.


1
2018-06-01 12:50





No estoy seguro si alguien cubierto lo más simple y la mayoría elegante camino. Al menos en Mac OS X v10.6 (Leopardo de nieve).

Jugando con el [/etc/|~/.] de [profile|bashrc] Los archivos pueden funcionar, pero es algo así como un hack. los /etc/paths.d/ El directorio es el camino a seguir:

  • Sudo en su editor favorito.
  • Crear un nuevo archivo llamado *name* (simplemente no le pongas un nombre que ya esté ahí) en /etc/paths.d/ con una trayectoria por línea:

    /usr/X11/bin
    /Developer/usr/bin
    
  • Luego añade

    eval '/usr/libexec/path_helper -s`
    

    a profile o bashrc, y deberias estar bien para irte.


1
2018-01-31 07:22



Es bueno saberlo, pero no responde a la pregunta del OP en que este mecanismo no se aplica a las aplicaciones GUI. - mklement
Es el nombre del archivo literalmente *name*? ¿O te refieres a solo name? - Peter Mortensen


No estoy seguro de si Launchd acepta esto, pero intente:

setenv PATH "$ PATH: / my / path"

0
2018-05-31 19:26



Desafortunadamente eso no funciona. No parece que launchctl tenga acceso a variables de entorno tan fáciles. Hay un comando para obtener variables de entorno, pero no hay absolutamente ninguna documentación sobre cómo usarlo. - lajos


No estoy seguro de por qué usarías /etc/launchd.conf Opuesto a /etc/profile - pero no soy un experto en Mac OS X - te creo en que estoy seguro de que funciona, pero launchd es la implementación / reemplazo de Mac OS X para init - Mac OS X me confunde.

De todas formas, setenv PATH "$PATH:/more/paths:/and/more/paths" funcionará (tcsh), y el equivalente de shell bourn es export PATH="$PATH:/more/paths:/and/more/paths" - No tengo idea de cómo launchd Está relacionado con un shell particular tampoco.

Creo que he hecho más preguntas entonces he respondido =)


0
2018-06-01 04:10



La configuración de la ruta / etc / profile no se ve en ninguna de las aplicaciones GUI de OS X. Eso solo se aplica a bash. Quiero que todas las aplicaciones obtengan la nueva configuración de ruta. - lajos
Bien, gracias por aclararme eso :) - Xerxes
Unix? Claro, es unix. Quiero decir, sorta. Sí, rompimos cosas que han funcionado durante 30 años, ¡pero aún es unix! /suspiro - Matt Simmons