विभिन्न विकल्पों के साथ कई परीक्षणों के बाद मैं निष्कर्ष निकालता हूं:
क्या विभिन्न माध्यमों (जैसे शेल स्क्रिप्ट, फाइंडर और स्पॉटलाइट) द्वारा लॉन्च किए गए अनुप्रयोगों के लिए एक एकीकृत तरीका है 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करता है (मुझे लगता है क्योंकि यह अपने पर्यावरण को पारित नहीं करता है जो इसे अपने माता-पिता से बच्चे के खोल में विरासत में मिला है ।)। - मैं तदनुसार उत्तर संपादित करूंगा।sshdlaunchd