Me gustaría agregar a la variable de entorno PATH global en OS X para que todos los shells de usuario 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 forma 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 incorporarme a la RUTA launchd.conf
.
Estoy un poco preocupado por este método, pero hasta ahora es lo único que funciona. ¿Hay una mejor manera?
Respuestas:
La información de la GUI de palmer es correcta, pero hay una forma más fácil de mantener para modificar la ruta vista por el shell. Como dijo mediaslave , puede editar
/etc/paths
, pero aún mejor puede soltar un archivo de texto/etc/paths.d/
que tenga una ruta y todos los shells construirán la ruta correctamente.Por ejemplo, en mi sistema:
fuente
X11
(menos doloroso que cerrar sesión por completo). No lo probéTerminal
.$PATH
./etc/launchd.conf
El
launchd.conf
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 (Mountain Lion) y v10.9 (Mavericks), una que funcionará con aplicaciones GUI y de consola, para todos los usuarios .Añadir
En el ejemplo anterior, agregué
/usr/local/bin
los valores de entorno predeterminados para PATH.Tenga en cuenta que este archivo no es un script y que no tiene la opción de usar sustituciones. Además, para que se apliquen, debe reiniciar.
Recuerde, todos los demás son solo soluciones parciales:
environment.plist
no funciona para aplicaciones iniciadas a través de Spotlight./etc/paths
- solo para consola/etc/csh.cshrc
o/etc/bashrc
- solo para algunos proyectilesEsta respuesta se basa en la misma pregunta de Establecimiento de variables de entorno en Mac OS X .
fuente
/etc/launchd.conf
.Tendrás que configurarlo shell por shell; Los shells Bash y csh-like no comparten los mismos archivos de configuración y sintaxis para ajustar la RUTA.
Intentar hacer esto
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.Entonces vas a querer agregar
a
/etc/csh.cshrc
ya
/etc/bashrc
.Si desea variables de entorno en aplicaciones GUI, eso es más complicado. Debe crear un
.MacOSX/environment.plist
archivo en el directorio de inicio de cada usuario. Es.MacOSX
probable que el directorio no exista de manera predeterminada, por lo que deberá crearlo.El formato del archivo es así:
Más sobre el
environment.plist
está en el sitio de Apple .fuente
~/.MacOSX/environment.plist
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 por - *. Aplicación).Puede editar su ruta global agregando líneas a
/etc/paths
, una ruta por línea.sudo nano /etc/paths
debería llevarte allí.fuente
¿Has echado un vistazo a la página de manual de la
path_helper
utilidad de línea de comandos en OS X? Respondí una pregunta un tanto relacionada con SO que creo que puede ser útil.fuente
No estoy seguro de si alguien cubrió la forma más simple y elegante . Al menos en Mac OS X v10.6 (Snow Leopard).
Messing con la
[/etc/|~/.]
de[profile|bashrc]
los archivos puede trabajar, pero es algo de un truco. El/etc/paths.d/
directorio es el camino a seguir:Cree un nuevo archivo llamado
*name*
(simplemente no lo nombre como algo que ya está allí)/etc/paths.d/
con una ruta por línea:Luego añade
a
profile
obashrc
, y usted debe ser bueno para ir.fuente
*name*
? ¿O quieres decir soloname
?No estoy seguro si launchd acepta esto, pero intente:
fuente
No estoy seguro de por qué lo
/etc/launchd.conf
usarías/etc/profile
, pero no soy un experto en Mac OS X, creo que estoy seguro de que funciona, perolaunchd
es la implementación / reemplazo de Mac OS X parainit
Mac OS X me confunde.De todos modos,
setenv PATH "$PATH:/more/paths:/and/more/paths"
funcionará (tcsh), y el equivalente de shell bourn esexport PATH="$PATH:/more/paths:/and/more/paths"
: tampoco tengo idea de cómolaunchd
se relaciona con un shell particular.Creo que he hecho más preguntas y luego he respondido =)
fuente