2016-02-16 8 views
11

सेट करने के लिए "पर्यावरण" निर्देश systemd इकाई फ़ाइल में PATH चर सेट करने का सही तरीका क्या है? कुछ उदाहरण देखने के बाद, मैंने नीचे दिए गए प्रारूप का उपयोग करने की कोशिश की, लेकिन चर का विस्तार नहीं हुआ।systemd: PATH

Environment="PATH=/local/bin:$PATH" 

मैं systemd के नीचे संस्करण के साथ कोरोस पर यह कोशिश कर रहा हूं।

systemd 225 
-PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT -GNUTLS -ACL +XZ -LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD -IDN 

उत्तर

16

आप Environment निर्देशों में EnvVars का उपयोग नहीं कर सकते हैं। पूरे Environment= को अनदेखा कर दिया जाएगा। यदि आप EnvironmentFile= का उपयोग करते हैं, तो निर्दिष्ट फ़ाइल प्रतिस्थापन के बिना लोड की जाएगी। तो PATH=/local/bin:$PATHबिल्कुल होगा, और यह शायद आप जो चाहते हैं वह नहीं है।

CentOS7 के तहत निम्नलिखित कार्य।

# /etc/systemd/system/nagios.service.d/env.conf 
[Service] 
Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" 

> sudo systemctl daemon-reload 
> sudo systemctl restart nagios 
> sudo cat /proc/28647/environ 
... 
PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 
... 
+0

यह मेरे लिए काम करता है, केवल एक ही अपवाद के साथ कि मेरा पाथ '/ bin' के साथ तैयार किया गया है, और यह मेरे कस्टम पाथ को स्थापित करने के उद्देश्य को हरा देता है। यही है, अगर मैं 'पर्यावरण =' जोड़ता हूं PATH = foo: bar "'मैं अपनी सेवा के लिए' PATH =/bin: foo: bar' प्राप्त कर रहा हूं। – Xabs

+0

जट्स ने मेरी टिप्पणी को एक उचित प्रश्न में परिवर्तित कर दिया: http://stackoverflow.com/questions/39576006/systemd-prepending-bin-to-environment-path – Xabs

+0

यह उत्तर पथ स्थापित करने के लिए काम करता है ('पर्यावरण =" पथ =/स्थानीय/बिन'), लेकिन पाथ ('पर्यावरण =" पाथ =/स्थानीय/बिन: $ पाथ "') में संलग्न/प्रीपेड नहीं कर रहा है, है ना? –

1

आप वातावरण चर सेट करने के लिए units खंड में EnvironmentFile= निर्देश उपयोग कर सकते हैं।

बस चर को key=value जोड़े के रूप में रखें और यह काम करेगा।

रनटाइम सिर्फ 'स्रोत जो भी आप निर्दिष्ट करते हैं।

आप write_files निर्देश का उपयोग कर फ़ाइल बना सकते हैं।

संबंधित मुद्दे