¿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/paths
y/etc/launchd.conf
la edición no toma ningún efecto!Los foros de desarrolladores de Apple dicen:
Así que
Info.plist
edité 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.plist
surtieran 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_helper
para configurar la RUTA correctamente. Finalmente, ~ / .conf.launchd se ve asíEstos son
launchctl
comandos, 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
eval
con 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_helper
se 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 0
y 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 Finder
puede agregarse.En el
.bash_profile
uso 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 predeterminadoPATH
agregando esta línea a/etc/launchd.conf
:Puede aplicar los cambios
/etc/launchd.conf
reiniciando o ejecutando,launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
finalizando y reiniciando procesos.La configuración se
/etc/launchd.conf
aplica tanto al proceso de lanzamiento raíz como a los procesos de lanzamiento por usuario. Las variables de entorno establecidas consetenv
in/etc/launchd.conf
se muestran con ambossudo launchctl export
ylaunchctl export
.fuente