¿Cómo se configuran las variables de entorno en Mac OS X de modo que estén disponibles para aplicaciones GUI sin usar ~ / .MacOSX / environment.plist o Login Hooks (ya que están en desuso )?
macos
environment-variables
launchd
launchctl
Percival Ulises
fuente
fuente

Respuestas:
En Mountain Lion todo el
/etc/pathsy/etc/launchd.confla edición no toma ningún efecto!Los foros de desarrolladores de Apple dicen:
Así que
Info.plistedité directamente la aplicación (haga clic derecho en "AppName.app" (en este caso, SourceTree) y luego "Show package contents")y agregó un nuevo par clave / dict llamado:
(ver: LaunchServicesKeys Documentation en Apple )
ahora la aplicación (en mi caso SourceTree) usa la ruta dada y funciona con git 1.9.3 :-)
PD: Por supuesto, debe ajustar la entrada de ruta a sus necesidades de ruta específicas.
fuente
Info.plistsurtieran efecto.La solución utiliza la funcionalidad de
launchctl, combinada con un Agente de inicio para imitar los antiguos enlaces de inicio de sesión. Para otras soluciones que usan la tienda delaunchd, vea esta comparación . El agente de inicio utilizado aquí se encuentra en / Library / LaunchAgents / :Una cosa importante es la clave RunAtLoad para que el agente de inicio se ejecute lo antes posible. El verdadero trabajo se realiza en el script de shell /Users/Shared/conflaunchd.sh , que lee ~ / .conf.launchd y lo alimenta a
launchctl:Observe la llamada de
path_helperpara configurar la RUTA correctamente. Finalmente, ~ / .conf.launchd se ve asíEstos son
launchctlcomandos, consulte su página de manual para obtener más información. Funciona bien para mí (debo mencionar que todavía soy un chico Snow Leopard), las aplicaciones GUI como texstudio y TeXShop pueden ver mi propio árbol de tex. Cosas que se pueden mejorar:El script de shell tiene un contenido
#filename="$1". Esto no es accidental, ya que el agente de lanzamiento debe alimentar el nombre del archivo al script como argumento, pero eso no funciona.Como se mencionó aquí (¡alemán y detrás de un muro de pago!), Es posible poner el script en el agente de lanzamiento.
No estoy seguro de cuán segura es esta solución, ya que se utiliza
evalcon cadenas proporcionadas por el usuario.Creo recordar que la definición de MANPATH usando este método no funcionó bien, pero no estoy seguro.
Cabe mencionar que Apple pretendía un enfoque algo similar al poner cosas en ∼ / launchd.conf , pero actualmente no es compatible con esta fecha y el sistema operativo (consulte la página de manual de
launchd.conf). Supongo que cosas como el globbing no funcionarían como lo hacen en esta propuesta. Y, por supuesto, uno puede colocar estos archivos en cualquier otro lugar, excepto el agente de inicio que debe residir en / Library / LaunchAgents / o ~ / Library / LaunchAgents / .Finalmente, debo mencionar las fuentes que utilicé como información sobre los Agentes de lanzamiento: 1 , 2 , 3 , 4 .
Actualización : esto no funciona en la versión 10.8 por el momento. Las soluciones alternativas por aplicación se describen aquí y aquí .
fuente
export PATH=.:"$(launchctl getenv PATH)"en ~ / .bash_profile (de manera similar para otros shells). Esto es posible ya quepath_helperse llama en el script de shell. Para obtener más detalles sobre la variable PATH en OS X, consulte esta respuesta .La respuesta proporcionada por @flori funciona para mí en Maverick siempre que ejecute los siguientes comandos en la Terminal después de cambiar el archivo plist
fuente
La respuesta proporcionada por @ percival-ulysses me funciona en 10.9 Mavericks con el siguiente pequeño cambio: edite el script /Users/Shared/conflaunchd.sh justo antes
exit 0y agregue las líneaspara reiniciar el Dock y la barra de menú. Después de esto, las aplicaciones iniciadas desde el Dock o desde Spotlight heredarán la RUTA correcta. Si usa Finder para iniciar las aplicaciones críticas de RUTA, entonces también
killall Finderpuede agregarse.En el
.bash_profileuso la líneapara establecer la RUTA para la Terminal, de esta manera la RUTA se controla desde la misma ubicación, el archivo ~ / .conf.launchd .
fuente
Otra opción es usar
/etc/launchd.conf. Por ejemplo, he cambiado el valor predeterminadoPATHagregando esta línea a/etc/launchd.conf:Puede aplicar los cambios
/etc/launchd.confreiniciando o ejecutando,launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conffinalizando y reiniciando procesos.La configuración se
/etc/launchd.confaplica tanto al proceso de lanzamiento raíz como a los procesos de lanzamiento por usuario. Las variables de entorno establecidas consetenvin/etc/launchd.confse muestran con ambossudo launchctl exportylaunchctl export.fuente