विभिन्न विकल्पों के साथ कई परीक्षणों के बाद मैं निष्कर्ष निकालता हूं:
क्या विभिन्न माध्यमों (जैसे शेल स्क्रिप्ट, फाइंडर और स्पॉटलाइट) द्वारा लॉन्च किए गए अनुप्रयोगों के लिए एक एकीकृत तरीका है PATH
? ठीक है, हाँ और नहीं:
- नहीं :
PATH
शेल स्टार्ट स्क्रिप्ट्स (जैसे .bashrc
) में सेट करना केवल शेल द्वारा लॉन्च किए गए ऐप्स के लिए काम करता है।
- नहीं :
PATH
वर्तमान launchd
प्रक्रिया के लिए सेटिंग करना launchctl setenv PATH <...>
मेरे लिए बिल्कुल काम नहीं करता है।
- हां : (और सिस्टम को पुनरारंभ करने)
PATH
में सेटिंग स्पॉटलाइट, डॉक और फाइंडर और बाद में (स्थानीय) गोले द्वारा शुरू किए गए अनुप्रयोगों में /etc/launchd.conf
उपयुक्त PATH
दिखाई देगी ।
- नहीं : दूरस्थ रूप से लगाए गए गोले पर्यावरण को विरासत में नहीं देते हैं। (देखें ... क्यों ssh के माध्यम से दूरस्थ गोले पर्यावरण को विरासत में नहीं देते हैं .. )
गोले के सेट-अप के लिए नोट्स:
स्थानीय गोले में सही कामकाज के लिए इसका उपयोग बंद करना महत्वपूर्ण है /usr/libexec/path_helper
, क्योंकि डिफ़ॉल्ट पथ पथों /etc/paths
के क्रम को बदल सकते हैं, PATH
**
दूरस्थ गोले को समायोजित करने के लिए आपको launchd
खोल में पर्यावरण को फिर से आयात करने की आवश्यकता है । अपने में कुछ इस तरह का प्रयोग करें .bashrc
:
# the vexatious path stuff
eval $(launchctl export)
पूरे मामले के दुर्भाग्यपूर्ण परिणाम हैं:
- प्रति उपयोगकर्ता के आधार पर इन एकीकृत सेटिंग्स के लिए कोई रास्ता नहीं है। (
~/.launchd.conf
काम नहीं करता है।)
- घर निर्देशिका विस्तार एट अल जैसी तकनीकों का उपयोग करके विभिन्न स्रोतों से पेट का निर्माण करने का कोई आसान तरीका नहीं है।
/etc/launch.conf
करता है (मुझे लगता है क्योंकि यह अपने पर्यावरण को पारित नहीं करता है जो इसे अपने माता-पिता से बच्चे के खोल में विरासत में मिला है ।)। - मैं तदनुसार उत्तर संपादित करूंगा।sshd
launchd