~/.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
आवश्यक है कि आप प्रभावी होने के लिए उन्हें लॉग आउट और बैक करें, लेकिन यह गैर-लॉगिन शेल के वातावरण को भी प्रभावित करता है (साथ ही उन कार्यक्रमों के लिए वातावरण जो शेल नहीं हैं, क्योंकि प्रत्येक प्रोग्राम को इसकी प्राप्ति होती है पर्यावरण चर का अपना सेट - जिसे "पर्यावरण" कहा जाता है - अपनी मूल प्रक्रिया से विरासत में मिला है)।