¿Hay alguna forma, aparte de reiniciar, de forzar a launchd
a volver a leer las variables de entorno recién definidas en /etc/launchd.conf
?
¿Se puede hacer con launchctl(1)
?
¿Hay alguna forma, aparte de reiniciar, de forzar a launchd
a volver a leer las variables de entorno recién definidas en /etc/launchd.conf
?
¿Se puede hacer con launchctl(1)
?
No hay manera de hacer esto, "launchd" es el proceso maestro, el equivalente de "init" en otros sistemas Unix, la única forma en cualquier otro daemon sería realizar algún tipo de eliminación -HUP para recargar la configuración archivos, etc., pero esta operación no está permitida en launchd. Si lo busca en la tabla de procesos, es el proceso número 1, todos los demás procesos que se están ejecutando actualmente son de alguna manera secundarios, por lo que un reinicio es la única forma de lograrlo. Es posible que tenga más suerte al establecer esas variables de entorno en otra área que esté más inclinada a permitir reinicios.
Dans-iMac:etc stuffe$ ps -ef | grep launchd | grep -v grep
0 1 0 0 9:40am ?? 0:09.47 /sbin/launchd
65 18 1 0 9:40am ?? 1:53.64 /usr/sbin/mDNSResponder -launchd
213 73 1 0 9:41am ?? 0:02.55 /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/Resources/usbmuxd -launchd
0 85 1 0 9:41am ?? 0:00.08 /System/Library/CoreServices/ODSAgent.app/Contents/MacOS/ODSAgent -launchd
89 230 1 0 9:41am ?? 0:00.01 /sbin/launchd
501 238 1 0 9:41am ?? 0:00.23 /sbin/launchd
501 933 238 0 10:53am ?? 0:00.01 /System/Library/CoreServices/AirPort Base Station Agent.app/Contents/MacOS/AirPort Base Station Agent -launchd -allowquit
EDITAR:
Por supuesto, si falta la solución obvia, puede agregar las variables relevantes en el archivo de configuración y luego ejecutar los comandos manualmente para evitar la necesidad de reiniciar, nada que solo los programas recién iniciados tomarán en cuenta cambios Encontré esta página que lo explica con más detalle:
Las variables de entorno establecidas en launchd estarán disponibles para todos los programas en el sistema. Sin embargo, dado que $ HOME / .launchd.conf no es apoyado, este enfoque se utiliza para variables de entorno global sólo.
El archivo /etc/launchd.conf contiene una lista de comandos para ser ejecutados por Launchctl durante el inicio. Sin embargo, las variables de entorno establecidas en /etc/launchd.conf no puede tener espacios y no puede hacer referencia a otros Variables de entorno; Launchctl cuando se ejecuta en la Terminal no sufre estas limitaciones. Tenga en cuenta que /etc/launchd.conf no existe por predeterminado, por lo que necesitaremos crearlo.
Es necesario reiniciar para cargar el contenido de /etc/launchd.conf. Sin embargo, si tuviera que ejecutar el launchctlcommands correspondiente en Terminal, puede aliviar la necesidad de reiniciar. Solo recuerda eso si solo haces los comandos launchctl, y no pones las entradas en /etc/launchd.conf, no persistirá después de reiniciar.
Si desea tener una variable de entorno de todo el sistema que use espacios o depender de otra variable de entorno, puedes poner los comandos launchctl en uno de los archivos que lee el terminal. Vas a debe salir y reiniciar Terminal para acceder a las variables recién establecidas.
Sí, puedes usar launchctl para agregarlos por ti.
por ejemplo desde la terminal:
grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl
salidas en mi máquina:
launchctl setenv _JAVA_OPTIONS -Djava.net.preferIPv4Stack=true
launchctl setenv JMETER_HOME /Applications/apache-jmeter-2.10
lauchctl setenv GRADLE_HOME /usr/local/gradle-2.0
Luego, puede reiniciar cualquier aplicación que lo necesite de forma destacada
Lea otras preguntas en las etiquetas launchd