मेरे पास एक सेवा है जो बूट पर चलती है, और उस सेवा में यह पृष्ठभूमि में एक बैश स्क्रिप्ट कहती है जो कुछ पर्यावरण चर का निर्यात करती है। मेरे पास समस्या यह है कि उन पर्यावरण चर को पृष्ठभूमि प्रक्रिया के माता-पिता को नहीं भेजा जा रहा है, जैसे ही मेरी स्क्रिप्ट निष्पादित हो रही है, वे चले गए हैं।
इसके अलावा, स्क्रिप्ट को सेवा चलाने के बाद फिर किसी अन्य स्क्रिप्ट को कॉल करता है जो एक एप्लिकेशन शुरू करता है जो मेरे पास है। इस एप्लिकेशन को उन पर्यावरण चर तक पहुंच की आवश्यकता है।
आरएचईएल प्रणाली मैं इसे चलाता हूं इसका मतलब उपयोगकर्ता द्वारा कभी लॉग-इन नहीं किया जाना है, यह केवल बूट करता है और एप्लिकेशन शुरू करता है। मुझे पता है कि एक मूल प्रक्रिया / शेल के लिए पर्यावरण चर वास्तव में एक बाल पृष्ठभूमि प्रक्रिया शेल द्वारा निर्धारित नहीं किया जा सकता है।
मुझे एक स्क्रिप्ट के माध्यम से ऐसा करने की ज़रूरत है, जो मेरी सेवा द्वारा बुलाया जाता है (जरूरी नहीं कि पृष्ठभूमि में जरूरी हो), न कि उन्हें मेरी सेवा में जोड़कर (जो मेरे लिए या तो काम नहीं किया) और न कि उन्हें स्टोर करके /etc/environment
या .profile
या ऐसा कुछ भी।
अपनी सेवा में मैंने पर्यावरण चर को जोड़ने की कोशिश की (हालांकि मैं जो करना चाहता हूं):
export TEST=192.168.1.1
मैंने भी अपनी सेवा में यह कोशिश की:
TEST=192.168.1.1
export TEST=${TEST}
मैंने बदलने की कोशिश की कि मेरी सेवा कैसे बैश स्क्रिप्ट को कॉल करती है:
/bin/asdf/script &
मैं भी स्क्रिप्ट सोर्सिंग करने की कोशिश की है ताकि यह एक ही खोल (जो मैं से मिला में चलता है इस ):
. ./bin/asdf/script
#I'm very confused why this didn't work
मैंने यह भी पाया इस जो दिलचस्प देखा लेकिन यह वास्तव में मेरे मामले में थकना नहीं किया।