Parece que launchd.conf
ya no carga mi variable de entorno. Alguien más ha notado?
¿Hay otra solución para establecer permanentemente las variables de entorno?
Parece que launchd.conf
ya no carga mi variable de entorno. Alguien más ha notado?
¿Hay otra solución para establecer permanentemente las variables de entorno?
Respuestas:
Crea un
environment.plist
archivo~/Library/LaunchAgents/
con este contenido:Puede agregar muchos
launchctl
comandos dentro del<string></string>
bloque.Se
plist
activará después de reiniciar el sistema. También puede usarlaunchctl load ~/Library/LaunchAgents/environment.plist
para iniciarlo de inmediato.[Editar]
La misma solución también funciona en El Capitán.
Xcode 7.0+ no evalúa las variables de entorno de forma predeterminada. El comportamiento anterior se puede habilitar con este comando:
defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO
[Editar]
Hay un par de situaciones en las que esto no funciona del todo. Si la computadora se reinicia y se selecciona "Reabrir ventanas al volver a iniciar sesión", es posible que las ventanas reabiertas no vean las variables (tal vez se abran antes de que se ejecute el agente). Además, si inicia sesión a través de ssh, las variables no se establecerán (por lo que deberá configurarlas en ~ / .bash_profile). Finalmente, esto no parece funcionar para PATH en El Capitan y Sierra. Eso debe establecerse a través de 'launchctl config user path ...' y en / etc / paths.
fuente
UseSanitizedBuildSystemEnvironment
).[ Respuesta original ]: aún puede usar
launchctl setenv variablename value
para establecer una variable para que sea recogida por todas las aplicaciones (aplicaciones gráficas iniciadas a través del Dock o Spotlight, además de las iniciadas a través del terminal).Obviamente no querrás hacer esto cada vez que inicies sesión.
[ Editar ]: para evitar esto, inicie
AppleScript Editor
, ingrese un comando como este:(Use varias líneas si desea establecer múltiples variables)
Ahora guarde (
⌘
+s
) como Formato de archivo: Aplicación . Finalmente abraSystem Settings
→ Usuarios y grupos → Elementos de inicio de sesión y agregue su nueva aplicación.[ Respuesta original ]: para evitar este lugar, todas las variables que desea definir en un script de shell corto, luego eche un vistazo a esta respuesta anterior sobre cómo ejecutar un script en el inicio de sesión de MacOS . De esa manera, el script se invocará cuando el usuario inicie sesión.
[ Editar ]: ninguna de las soluciones es perfecta ya que las variables solo se establecerán para ese usuario específico, pero espero / supongo que eso es todo lo que necesita.
Si tiene varios usuarios, puede configurar manualmente un elemento de inicio de sesión para cada uno de ellos o colocar una copia de com.user.loginscript.plist en cada uno de sus directorios locales Library / LaunchAgents , apuntando al mismo script de shell.
Por supuesto, ninguna de estas soluciones es tan conveniente como /etc/launchd.conf .
[ Edición adicional ]: Un usuario a continuación menciona que esto no funcionó para él. Sin embargo, he probado en varias máquinas de Yosemite y funciona para mí. Si tiene un problema, recuerde que deberá reiniciar las aplicaciones para que esto surta efecto. Además, si establece variables en el terminal a través de ~ / .profile o ~ / .bash_profile , anularán los elementos establecidos a través de launchctl setenv para las aplicaciones iniciadas desde el shell .
fuente
Es posible establecer variables de entorno en Mac OS X 10.10 Yosemite con 3 archivos + 2 comandos.
Archivo principal con definición de variables de entorno:
Definición del servicio para cargar variables de entorno para aplicaciones de usuario (terminal, IDE, ...):
La misma definición de servicio para aplicaciones de usuario root:
Y finalmente debemos registrar estos servicios:
Lo que obtenemos:
Problemas / problemas:
Para que las aplicaciones envíen sus variables env correctamente después del reinicio del sistema , necesitará:
Esto sucede debido a que Apple niega el pedido explícito de los servicios cargados, por lo que las variables env se registran en paralelo con el procesamiento de la "cola de reapertura".
Pero en realidad, reinicio mi sistema solo varias veces al año (en grandes actualizaciones), por lo que no es un gran problema.
fuente
JAVA_HOME
), pero no para laPATH
variable (vea mi pregunta sobre preguntar diferente ).launchd
, pero ¿no sería posible cargar esos Daemons en el arranque (es decir, antes de iniciar sesión)? Eso debería eludir todos los problemas que mencionas.Citado de
Apple Developer Relations 10-Oct-2014 09:12 PM
Solución:
fuente
/Library/LaunchDaemons
, y en lugar de decirlelaunchctl
que ejecute ellimit
comando, dígale que ejecute elsetenv
comando conPATH
una cadena de ruta como argumentos.launchd
debería recogerlo automáticamente al inicio y obtener una especie de auto-modificación casi de inmediato.<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
Estos son los comandos para restaurar el comportamiento anterior:
Ahora puede especificar comandos como
setenv JAVA_HOME /Library/Java/Home
en/etc/launchd.conf
.Comprobado en El Capitan.
fuente
Lo que funcionó para mí (inspirado por aax 'gracias):
Pegue esto en /Library/LaunchDaemons/com.apple.launchd.limit.plist y luego reinicie:
Si lo necesitas paso a paso:
⌘+v
). Esto forzará el límite a 16384 archivos por proceso y 16384 archivos en totalesc
luego:wq
espero que esto te ayude.
fuente
Puedes probar https://github.com/ersiner/osx-env-sync . Maneja tanto la línea de comandos como las aplicaciones GUI desde una sola fuente y funciona con la última versión de OS X (Yosemite).
Puede usar sustituciones de ruta y otros trucos de shell, ya que lo que escribe es un script bash regular que se obtiene de bash en primer lugar. Sin restricciones. (Consulte la documentación de osx-env-sync y comprenderá cómo lo logra).
Respondí una pregunta similar aquí donde encontrarás más.
fuente
La solución es agregar su variable a
/etc/profile
. ¡Entonces todo funciona como se esperaba! Por supuesto, DEBE hacerlo como usuario root con sudo nano / etc / profile. Si lo edita de alguna otra manera, el sistema se quejará con un perfil / etc / dañado, incluso si cambia los permisos a root.fuente
Agregué las variables en el ~ / .bash_profile de la siguiente manera. Una vez que haya terminado, reinicie / cierre sesión e inicie sesión
NOTA: sin reiniciar / cerrar sesión e iniciar sesión puede aplicar estos cambios usando;
fuente