Tengo un servicio que se ejecuta en el arranque, y en ese servicio llama a un script bash en segundo plano que exporta algunas variables de entorno. El problema que tengo es que esas variables de entorno no se envían al padre del proceso en segundo plano, por lo que tan pronto como mi script termina de ejecutarse, desaparecen.
Además, después de ejecutar el script, el servicio llama a otro script que inicia una aplicación que tengo. Esta aplicación necesita acceso a esas variables de entorno.
El sistema RHEL en el que lo ejecuto nunca debe iniciar sesión en el usuario, solo se inicia e inicia la aplicación. Yo sé que las variables de entorno para un proceso padre / corteza no pueden realmente ser establecidos por un fondo niño cáscara proceso de embargo.
Necesito una forma de hacerlo a través de un script que mi servicio llama (no necesariamente en segundo plano), no agregándolos en mi servicio (que tampoco funcionó para mí) y no almacenándolos en un /etc/environment
o .profile
o algo por el estilo.
En mi servicio intenté agregar las variables de entorno (aunque no es lo que quiero hacer):
export TEST=192.168.1.1
También probé esto en mi servicio:
TEST=192.168.1.1
export TEST=${TEST}
Traté de cambiar cómo mi servicio llama al script bash:
/bin/asdf/script &
También intenté obtener el script para que se ejecute en el mismo shell (que obtuve de esto ):
. ./bin/asdf/script
#I'm very confused why this didn't work
También encontré esto que parecía interesante, pero realmente no funcionó en mi caso.
fuente
No hay forma de que un proceso influya en el entorno de otro proceso existente. Los procesos solo influyen en el entorno de sus procesos hijos.
Por lo tanto, debe establecer estas variables de entorno en un antecesor de la aplicación que las necesita. En lugar de que su servicio invoque por separado la secuencia de comandos bash que establece el entorno y la aplicación, haga que su servicio invoque una secuencia de comandos bash que establezca las variables de entorno y luego inicie la aplicación.
fuente