जवाबों:
परंपरागत रूप से, यूनिक्स सिस्टम पर प्रति-उपयोगकर्ता पर्यावरण चर को परिभाषित करने का स्थान है ~/.profile
। यह फ़ाइल लॉगिन शेल (यानी जब आप लॉग इन करते हैं और शुरू में कमांड टाइप कर सकते हैं तो प्रोग्राम) द्वारा पढ़ा जाता है, बशर्ते कि लॉगिन शेल बॉर्न-संगत शेल हो।
बैश एक बॉर्न-संगत शेल है। जब यह लॉगिन शेल के रूप में लागू किया जाता ~/.bash_profile
है, तो यह पढ़ता है कि क्या यह फ़ाइल मौजूद है और ~/.profile
यदि ~/.bash_profile
मौजूद नहीं है।
अंगूठे के एक नियम के रूप में, यदि आप अपना पासवर्ड टेक्स्ट मोड में लिखते हैं (जैसे, टेक्स्ट कंसोल पर, या ssh के साथ दूरस्थ रूप से), तो आपको जो शेल मिलता है वह एक लॉगिन शेल है।
हालाँकि, यदि आप अपना पासवर्ड किसी ग्राफ़िकल प्रोग्राम में टाइप करते हैं और ग्राफ़िकल वातावरण में लॉग इन करते हैं, तो यह सामान्य लॉगिन शेल को दरकिनार कर देता है। क्या .profile
इस मामले में पढ़ा जाता है यह इस बात पर निर्भर करता है कि आलेखीय सत्र की स्थापना कैसे की जाती है; उदाहरण के लिए, यह लिनक्स वितरणों के बीच, प्रदर्शन प्रबंधकों के बीच और डेस्कटॉप वातावरण के बीच भिन्न होता है। कभी-कभी श्रृंखला के कार्यक्रमों में से एक स्पष्ट रूप से एक लॉगिन शेल को आमंत्रित करता है; कभी-कभी कार्यक्रमों में से एक स्पष्ट रूप से पढ़ता है ~/.profile
; और कभी-कभी इनमें से कोई भी नहीं होता है और ~/.profile
पढ़ा नहीं जाता है।
परिवर्तनशीलता का एक उदाहरण देने के लिए, जहां तक मैं उबंटू 10.04 पर शामिल लिपियों पर एक त्वरित नज़र से बता सकता हूं: यदि आप केडीएम या एलएक्सडीएम के साथ लॉग इन करते हैं, ~/.bash_profile
तो यह मौजूद है और यदि ~/.profile
अन्यथा पढ़ा जाता है; यदि आप gdm से लॉग इन करते हैं, तो केवल ~/.profile
पढ़ा जाता है; यदि आप xdm से लॉग इन करते हैं, ~/.profile
पढ़ा नहीं जाता है।
मेरे द्वारा ज्ञात सभी प्रणालियाँ प्रति-उपयोगकर्ता पर्यावरण चर सेट करने का कुछ तरीका प्रदान करती हैं। दुर्भाग्य से कोई सामान्य जवाब नहीं है।
ध्यान दें कि कभी-कभी आपको ~/.bashrc
GUI वातावरण में प्रत्येक टर्मिनल में पर्यावरण चर को या तो सेट करने के लिए सिफारिशें दिखाई देंगी या लॉगिन शेल शुरू करेंगे। दोनों बुरे विचार हैं; आपके द्वारा अनुभव की गई समस्या के कारणों में से एक यह है कि आपके पर्यावरण चर केवल एक टर्मिनल के माध्यम से शुरू किए गए कार्यक्रमों में उपलब्ध थे, और कार्यक्रमों में सीधे एक आइकन या मेनू या कीबोर्ड शॉर्टकट के साथ शुरू नहीं हुआ।
.profile
जब आप लॉग इन करते हैं तो @illiam पढ़ी जाती है। पर्यावरण चर को .bashrc
काम नहीं करता है, और आपका परिदृश्य दिखाता है कि: (संभवतः GUI) अनुप्रयोग जो इस शेल को चलाता है, आपके पर्यावरण चर हैं, लेकिन यदि आप उन्हें परिभाषित करते हैं .bashrc
, तो यह नहीं है टी।
निश्चित जवाब बैश स्टार्टअप फाइलों पर बैश मैन पेज सेक्शन में है । "जब एक इंटरैक्टिव शेल जो एक लॉगिन शेल नहीं है, तो बैश पढ़ता है और ~ / .bashrc से कमांड निष्पादित करता है, अगर वह फ़ाइल मौजूद है।"
आपके अन्य सवालों के जवाब बताते हैं कि वास्तव में रन नहीं होता है bash
। Emacs eshell
नहीं है bash
। यह मानते हुए कि eshell
लोड होगा मान के .bashrc
रूप में के रूप में दोषपूर्ण है zsh
या csh
लोड होगा .bashrc
। यह एक अलग खोल है।
मुझे दो विकल्प दिखाई देते हैं:
bash
और उपयुक्त कोड के लिए उपयुक्त बैश कोड उत्पन्न करती है eshell
।आप डुप्लिकेट के बिना एक पथ में एक निर्देशिका जोड़ने पर चर्चा में भी रुचि हो सकती है ।
अपने PATH को अपने ~ / .profile में सेट करना बस काम करना चाहिए। वह फ़ाइल हर पोसिक्स-कंप्लेंट या बॉर्न-जैसे शेल द्वारा लॉगिन पर पढ़ी जाती है, जिसमें मुझे बैश शामिल है। यदि आप उस फ़ाइल में परिवर्तन करते हैं, तो आपको परिवर्तनों को प्रभावी करने के लिए लॉग आउट करना होगा और वापस लॉग इन करना होगा। चूंकि PATH आपकी लॉगिन प्रक्रिया के वातावरण का हिस्सा है, इसलिए इसे बाद में शुरू होने वाले हर शेल में निर्यात किया जाना चाहिए।