~/.bashrcऔर /etc/bash.bashrcहर बार एक इंटरैक्टिव bashशेल शुरू होने पर चलाया जाता है।
इसके विपरीत, ~/.profileऔर /etc/profileहर बार किसी भी लॉगिन शेल शुरू होने पर चलाया जाता है। तो यह एक bashशेल होने की जरूरत नहीं है , लेकिन यह एक लॉगिन शेल होना चाहिए (और कई bashशेल इंस्टेंसेस लॉगिन शेल नहीं हैं )।
- एक
bashशेल एक शेल है जहां शेल प्रोग्राम जो इसे प्रदान करता है bash, बल्कि कुछ अन्य प्रोग्राम, जैसे कि dash।
- लॉगिन शेल एक ऐसा शेल है जो लॉगिन के लिए उपयोगकर्ता इंटरफ़ेस (ग्राफिकल या कमांड-लाइन) प्रदान करने के लिए लॉग इन करने के परिणामस्वरूप स्वचालित रूप से शुरू होता है। जब एक लॉगिन शेल बाहर निकलता है, तो लॉगिन समाप्त हो जाता है।
इसलिए, PATHएक bashrcफ़ाइल में प्रविष्टियों को जोड़ने वाली एक प्रशंसा करना:
जब शेल नहीं है bash, तो कुछ भी मत करो , जो अक्सर होता है। उदाहरण के लिए, PATHजब आप एक ग्राफ़िकल लॉगिन सत्र में अनमॉडिफ़ाइड होंगे। याद रखें, PATHकेवल कमांड-लाइन कार्यक्रमों द्वारा उपयोग नहीं किया जाता है।
नेस्टेड bashगोले की उपस्थिति में इसे बार-बार संलग्न करें । इसलिए, यदि आप एक शेल के भीतर एक शेल शुरू करते हैं - जो कि कई कारणों से बहुत सामान्य है - तो आपके पास ~/binढेर सारी प्रविष्टियाँ होंगी PATH। इससे PATHपर्यावरण चर को पढ़ना मुश्किल हो जाता है, और कभी-कभी प्रदर्शन भी कम हो जाता है।
ये अवांछनीय होगा। इस प्रकार इसे एक फ़ाइल में रखना गलत होगा bashrc; यह वास्तव में है ~/.profile। ~/.profileके लिए सही जगह है:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
गैर-लॉगिन गोले में लॉगिन शैल (या कुछ ऐसा है जो एक लॉगिन शेल की तरह व्यवहार करता है) उनके माता-पिता के रूप में है, और PATHइस लॉगिन शेल से उनके अधिकांश पर्यावरण चर शामिल हैं । इसलिए पथ-संशोधित करने वाले आदेशों को रखने के लिए ~/.profileआवश्यक है कि आप प्रभावी होने के लिए उन्हें लॉग आउट और बैक करें, लेकिन यह गैर-लॉगिन शेल के वातावरण को भी प्रभावित करता है (साथ ही उन कार्यक्रमों के लिए वातावरण जो शेल नहीं हैं, क्योंकि प्रत्येक प्रोग्राम को इसकी प्राप्ति होती है पर्यावरण चर का अपना सेट - जिसे "पर्यावरण" कहा जाता है - अपनी मूल प्रक्रिया से विरासत में मिला है)।