J'ai un service qui s'exécute au démarrage, et dans ce service, il appelle un script bash en arrière-plan qui exporte certaines variables d'environnement. Le problème que j'ai est que ces variables d'environnement ne sont pas envoyées au parent du processus d'arrière-plan, donc dès que mon script est terminé, elles disparaissent.
De plus, après l'exécution du script, le service appelle un autre script qui démarre une application que j'ai. Cette application doit avoir accès à ces variables d'environnement.
Le système RHEL sur lequel je l'exécute est censé ne jamais être connecté à l'utilisateur, il démarre uniquement et démarre l'application. Je sais cependant que les variables d'environnement d'un processus / shell parent ne peuvent pas vraiment être définies par un shell de processus d'arrière-plan enfant.
J'ai besoin d'un moyen de le faire à travers un script qui est appelé par mon service (pas nécessairement en arrière-plan cependant), pas en les ajoutant à mon service (qui n'a pas fonctionné non plus pour moi) et pas en les stockant dans un /etc/environment
ou .profile
ou quelque chose comme ça.
Dans mon service, j'ai essayé d'ajouter les variables d'environnement (pas ce que je veux faire cependant):
export TEST=192.168.1.1
J'ai également essayé ceci à mon service:
TEST=192.168.1.1
export TEST=${TEST}
J'ai essayé de changer la façon dont mon service appelle le script bash:
/bin/asdf/script &
J'ai également essayé de sourcer le script pour qu'il s'exécute dans le même shell (que j'ai obtenu de cela ):
. ./bin/asdf/script
#I'm very confused why this didn't work
J'ai aussi trouvé cela qui avait l'air intéressant mais ça ne marchait pas vraiment dans mon cas.
Il n'y a aucun moyen pour un processus d'influencer l'environnement d'un autre processus existant. Les processus n'influencent que l'environnement de leurs processus enfants.
Vous devez donc définir ces variables d'environnement dans un ancêtre de l'application qui en a besoin. Au lieu d'avoir votre service invoquer séparément le script bash de définition d'environnement et l'application, demandez à votre service d'appeler un script bash qui définit les variables d'environnement puis lance l'application.
la source