¿Dónde se establecen las variables de entorno del sistema en Mountain Lion?

46

En Lion (y versiones anteriores) estaba en .MacOSX/environment.plist. Después de actualizar a 10.8, el archivo sigue ahí, pero las variables no están tomando.

También he intentado agregarlos /etc/launchd.confy aparecerán en Terminal, pero no en aplicaciones GUI (como mi IDE).

Felix
fuente
¿Reiniciaste después de cambiar /etc/launchd.conf?
nohillside
Lo hice, y todas las variables allí están ahora disponibles en cualquier terminal, pero no están presentes para mi IDE.
Felix
¿Quizás el IDE no le expone el medio ambiente (vea mi respuesta )? ¿Qué IDE es? ¿Se inicia directamente por Finder o Spotlight?
halloleo

Respuestas:

22

También hice esta pregunta en los foros de desarrolladores de Apple y obtuve esta respuesta oficial.

Cambie el Info.plist del .app para contener un diccionario "LSEnvironment" con las variables de entorno que desee.
~ / .MacOSX / environment.plist ya no es compatible.

Felix
fuente
2
¿Dónde está ubicado eso?
orome
Sería útil proporcionar un enlace a un ejemplo más específico.
Blaisorblade
1
Actualización: Intenté cambiar ese archivo, después de descubrir la sintaxis (creo), pero no me funciona en absoluto.
Blaisorblade
44
Habrá un Info.plist por aplicación en WhatEver.app/Content/Info.plist. Puedes editarlo con XCode. Haga clic en "+" en la Lista de propiedades de información y agregue un diccionario llamado LSEnvironment. Si lo escribe correctamente, lo cambiará a Variables de entorno. Luego, hace clic en "+" junto a eso para cada variable de entorno que desea agregar.
Felix
2
Esta es una buena solución, pero ya no funciona a partir de Yosemite 10.10.5.
Dalmazio
21

Sé que esta es una vieja pregunta, pero pensé en señalar que en Yosemite /etc/launchd.confya no funciona (como lo confirma la página del manual). Entonces aquí hay una alternativa.

Inicie AppleScript Editor, ingrese un comando como este:

do shell script "launchctl setenv variablename value"

(agregue tantas líneas como desee)

Ahora guarde (⌘S) como Formato de archivo: Aplicación . Finalmente abra Configuración del sistemaUsuarios y gruposElementos de inicio de sesión y agregue su nueva aplicación.

ruario
fuente
Nota que el poder ni el trabajo con otras aplicaciones que se abren como login artículos y tal vez aquellos que abra rápidamente después de inicio de sesión
user151019
Esto funcionó para mí. Muchas gracias. ¡Esto ha estado volviendo loco todo el día!
wholladay
2
Parece la única solución real y universal hasta ahora. Pero necesita 9 votos más para subir y convertirse en la primera respuesta. : c
Sarge Borsch
Esto funcionó para mí en El Capitán. Como se señaló anteriormente en @Mark, existen problemas con los pedidos (por ejemplo, las aplicaciones reanudadas pueden o no tener el entorno), pero una vez que haya iniciado sesión, esto funciona como es de esperar. Es decir, las aplicaciones iniciadas desde Spotlight o el Dock tienen el entorno correcto.
Alec Thomas
@ Mark Puede probar esta respuesta , utilizando el Agente de lanzamiento. En mi caso, el Agente de inicio se inicia después de los Elementos de inicio de sesión, por lo que muevo la aplicación de destino (como Eclipse) del Elemento de inicio de sesión al Agente de inicio, para que se inicien después de esta aplicación especial que configura las variables de entorno.
Franklin Yu
10

Como ha descubierto, el uso del archivo environment.plist ya no se sigue, las variables almacenadas en Info.plist como cadenas LSEnvironment solo se establecen mediante launchd .

No puede depender de ellos para establecer una variable de entorno general que el terminal establecerá si llama a su programa directamente desde el terminal / shell. La buena noticia es que el open -acomando activa el lanzamiento para hacer el lanzamiento, por lo que las variables se establecerán de manera consistente para el entorno de la aplicación si no es para el entorno de shell local.

bmike
fuente
4

Establecer las variables de entorno /etc/launchd.confes el camino a seguir: cada aplicación iniciada después de un reinicio por shells locales, Finder o Spotlight hereda estas variables; lo he probado ampliamente con Mountain Lion 10.8.3.

2 advertencias:

halloleo
fuente
1
/etc/launchd.confya no es compatible desde Yosemite. Ver apple.stackexchange.com/questions/106355/…
Franklin Yu
3

Tratar launchctl setenv NAME VALUE. No sé si / qué hace de manera diferente a la edición de launchd.conf, pero funciona para mí en aplicaciones de Terminal y GUI. Más detalles.

Tenga en cuenta que esto no sobrevive durante un reinicio. Aquí hay una manera de arreglar eso .

Ryan
fuente
3
Es una página bastante larga a la que está vinculando aquí. ¿Dónde está exactamente la parte relevante? ¿Podría incluirlo directamente en su respuesta para que sea más fácil para todos?
nohillside
2
Vaya, buen punto, pensé que había incluido más de un fragmento en esa url. fijo.
Ryan
1
La forma de sobrevivir a través de un reinicio dado allí utiliza el ambiente.plist que dejó de funcionar con Lion
user151019