बैश के साथ पर्यावरण चर सेट करने के लिए कौन सी सेटअप फ़ाइलों का उपयोग किया जाना चाहिए?


9

जैसा कि मैंने कहा और में जवाब मिला यहाँ , और यहाँ , पथ चर कैसे एप्लिकेशन सक्रिय है के आधार पर अलग पथ नाम है।

  • जो सेटअप फ़ाइलें (.bashrc, .profile, ...) का उपयोग उसी पैथ वैरिएबल के लिए किया जाना चाहिए, इससे कोई फर्क नहीं पड़ता कि मैं बैश के साथ सॉफ्टवेयर कैसे शुरू करूं?

जवाबों:


15

परंपरागत रूप से, यूनिक्स सिस्टम पर प्रति-उपयोगकर्ता पर्यावरण चर को परिभाषित करने का स्थान है ~/.profile। यह फ़ाइल लॉगिन शेल (यानी जब आप लॉग इन करते हैं और शुरू में कमांड टाइप कर सकते हैं तो प्रोग्राम) द्वारा पढ़ा जाता है, बशर्ते कि लॉगिन शेल बॉर्न-संगत शेल हो।

बैश एक बॉर्न-संगत शेल है। जब यह लॉगिन शेल के रूप में लागू किया जाता ~/.bash_profileहै, तो यह पढ़ता है कि क्या यह फ़ाइल मौजूद है और ~/.profileयदि ~/.bash_profileमौजूद नहीं है।

अंगूठे के एक नियम के रूप में, यदि आप अपना पासवर्ड टेक्स्ट मोड में लिखते हैं (जैसे, टेक्स्ट कंसोल पर, या ssh के साथ दूरस्थ रूप से), तो आपको जो शेल मिलता है वह एक लॉगिन शेल है।

हालाँकि, यदि आप अपना पासवर्ड किसी ग्राफ़िकल प्रोग्राम में टाइप करते हैं और ग्राफ़िकल वातावरण में लॉग इन करते हैं, तो यह सामान्य लॉगिन शेल को दरकिनार कर देता है। क्या .profileइस मामले में पढ़ा जाता है यह इस बात पर निर्भर करता है कि आलेखीय सत्र की स्थापना कैसे की जाती है; उदाहरण के लिए, यह लिनक्स वितरणों के बीच, प्रदर्शन प्रबंधकों के बीच और डेस्कटॉप वातावरण के बीच भिन्न होता है। कभी-कभी श्रृंखला के कार्यक्रमों में से एक स्पष्ट रूप से एक लॉगिन शेल को आमंत्रित करता है; कभी-कभी कार्यक्रमों में से एक स्पष्ट रूप से पढ़ता है ~/.profile; और कभी-कभी इनमें से कोई भी नहीं होता है और ~/.profileपढ़ा नहीं जाता है।

परिवर्तनशीलता का एक उदाहरण देने के लिए, जहां तक ​​मैं उबंटू 10.04 पर शामिल लिपियों पर एक त्वरित नज़र से बता सकता हूं: यदि आप केडीएम या एलएक्सडीएम के साथ लॉग इन करते हैं, ~/.bash_profileतो यह मौजूद है और यदि ~/.profileअन्यथा पढ़ा जाता है; यदि आप gdm से लॉग इन करते हैं, तो केवल ~/.profileपढ़ा जाता है; यदि आप xdm से लॉग इन करते हैं, ~/.profileपढ़ा नहीं जाता है।

मेरे द्वारा ज्ञात सभी प्रणालियाँ प्रति-उपयोगकर्ता पर्यावरण चर सेट करने का कुछ तरीका प्रदान करती हैं। दुर्भाग्य से कोई सामान्य जवाब नहीं है।

ध्यान दें कि कभी-कभी आपको ~/.bashrcGUI वातावरण में प्रत्येक टर्मिनल में पर्यावरण चर को या तो सेट करने के लिए सिफारिशें दिखाई देंगी या लॉगिन शेल शुरू करेंगे। दोनों बुरे विचार हैं; आपके द्वारा अनुभव की गई समस्या के कारणों में से एक यह है कि आपके पर्यावरण चर केवल एक टर्मिनल के माध्यम से शुरू किए गए कार्यक्रमों में उपलब्ध थे, और कार्यक्रमों में सीधे एक आइकन या मेनू या कीबोर्ड शॉर्टकट के साथ शुरू नहीं हुआ।


कुछ एप्लिकेशन इंटरएक्टिव नॉन-लॉगिन शेल का आह्वान करते हैं, जिसका अर्थ है .profile और .bash_profile पढ़ा नहीं जाता है। यदि आप उन अनुप्रयोगों के लिए env var सेट करना चाहते हैं, तो ऐसा करने का एक तरीका उन्हें .bashrc में सेट करना है, भले ही वह इसके लिए जगह न हो; देखें github.com/mobile-shell/mosh/issues/102#issuecomment-12503646
विलियम

.profileजब आप लॉग इन करते हैं तो @illiam पढ़ी जाती है। पर्यावरण चर को .bashrcकाम नहीं करता है, और आपका परिदृश्य दिखाता है कि: (संभवतः GUI) अनुप्रयोग जो इस शेल को चलाता है, आपके पर्यावरण चर हैं, लेकिन यदि आप उन्हें परिभाषित करते हैं .bashrc, तो यह नहीं है टी।
गाइल्स का SO- बुराई पर रोक '22

mosh कोई GUI नहीं है, यह ssh का विकल्प है। मैं इसके व्यवहार का बचाव नहीं कर रहा हूं, बस दूसरों की मदद करने की कोशिश कर रहा हूं जो मुझे और अन्य लोगों को एक ही समस्या का सामना करना पड़ा है, जैसा कि गितुब मुद्दे से जुड़ा हुआ है।
विलियम

2

निश्चित जवाब बैश स्टार्टअप फाइलों पर बैश मैन पेज सेक्शन में है । "जब एक इंटरैक्टिव शेल जो एक लॉगिन शेल नहीं है, तो बैश पढ़ता है और ~ / .bashrc से कमांड निष्पादित करता है, अगर वह फ़ाइल मौजूद है।"

आपके अन्य सवालों के जवाब बताते हैं कि वास्तव में रन नहीं होता है bash। Emacs eshellनहीं है bash। यह मानते हुए कि eshellलोड होगा मान के .bashrcरूप में के रूप में दोषपूर्ण है zshया cshलोड होगा .bashrc। यह एक अलग खोल है।

मुझे दो विकल्प दिखाई देते हैं:

  1. अपनी स्वयं की स्क्रिप्ट बनाएं जो निर्देशिकाओं की एक सूची लेती है और के लिए bashऔर उपयुक्त कोड के लिए उपयुक्त बैश कोड उत्पन्न करती है eshell
  2. अपने ESHELL या शेल पर्यावरण चर को सेट करें ताकि आप वास्तव में emacs के भीतर बैश चलाएं । यही तो मैं करता हूं। बैश emacs में ठीक काम करता है।

आप डुप्लिकेट के बिना एक पथ में एक निर्देशिका जोड़ने पर चर्चा में भी रुचि हो सकती है ।


1

अपने PATH को अपने ~ / .profile में सेट करना बस काम करना चाहिए। वह फ़ाइल हर पोसिक्स-कंप्लेंट या बॉर्न-जैसे शेल द्वारा लॉगिन पर पढ़ी जाती है, जिसमें मुझे बैश शामिल है। यदि आप उस फ़ाइल में परिवर्तन करते हैं, तो आपको परिवर्तनों को प्रभावी करने के लिए लॉग आउट करना होगा और वापस लॉग इन करना होगा। चूंकि PATH आपकी लॉगिन प्रक्रिया के वातावरण का हिस्सा है, इसलिए इसे बाद में शुरू होने वाले हर शेल में निर्यात किया जाना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.