Obliga a launchd a volver a leer las variables de entorno

4

¿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) ?

    
pregunta Ralph 01.02.2012 - 13:23

2 respuestas

2

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.

    
respondido por el stuffe 01.02.2012 - 13:57
1

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

    
respondido por el Peter 07.08.2014 - 20:17

Lea otras preguntas en las etiquetas