bashअलग तरह से काम करता है चाहे वह एक शेल हो या एक सामान्य प्रोग्रामिंग लैंग्वेज (जैसे perlया python)।
डिज़ाइन द्वारा ~/.bash_profile, में ~/.bashrc, आदि , सेटिंग्स उपयोगकर्ताओं के लिए चीजों को सेट करने के लिए होती हैं जब एक शेल (लॉगिन शेल, इंटरट्रैक्टिव शेल) की भूमिकाbash निभाता है । पर्यावरण के बारे में सोचें जो आपके पास एक xterm(इंटरेक्टिव शेल) या sshसत्र (लॉगिन शेल) या कंसोल (लॉगिन शेल) में है।
दूसरी ओर, सेवाओं के प्रबंधन के लिए कई लिपियों के बारे bashमें भी एक शक्तिशाली लम्बी भाषा है systemd- जिसमें काम करने की एक अलग शैली की आवश्यकता होती है। उदाहरण के लिए, जब कोई डेवलपर एक सिस्टम स्क्रिप्ट या bashप्रोग्राम लिख रहा होता है , तो वह उपयोगकर्ता को ~/.bash_profileस्वचालित रूप से स्रोत करना पसंद नहीं करेगा। यह एक सामान्य कार्यक्रम है, शेल नहीं। एक सामान्य कार्यक्रम (कार्यक्रमों सहित bash) स्वाभाविक रूप से वर्तमान कामकाजी निकासी (शेल) से सेटिंग्स प्राप्त करेगा , लेकिन उन्हें सेट नहीं किया ।
अगर हम एक प्रोग्राम लिखते हैं cron, तो bashयह सिर्फ लिखा जाना है bash; वास्तव में, हम इसे में लिख सकते हैं pythonया perlया किसी अन्य progamming language- तो हम करने के लिए सूत्रों का कहना है एक विकल्प हो सकता है bashकी ~/.bash_profile(पढ़ें: उपयोगकर्ता के खोल, जो सिर्फ अपने प्रोग्रामिंग भाषा के एक ही भाषा होने की सेटिंग):
[ -f /home/user/.bash_profile ] && . /home/user/.bash_profile
हालांकि, क्या होगा यदि वह विशेष उपयोगकर्ता bashअपने शेल के रूप में उपयोग नहीं करता है? वह / वह उपयोग कर सकते हैं zsh, ksh, fish, आदि तो, कि अभ्यास वास्तव में काम नहीं होगा, जब सार्वजनिक उपयोग के लिए प्रोग्राम लिखने।
तो, आप स्रोत कर सकते हैं ~/.bash_profileयदि आपको लगता है कि काम करेगा। लेकिन, यहां, यह इस बारे में नहीं है कि क्या हम किसी फ़ाइल को स्रोत बनाने में सक्षम हैं, यह इस बारे में है कि सिस्टम में चीजों को कैसे काम करना चाहिए: डिजाइन अवधारणा । संक्षेप में: हमें bash2 भूमिकाओं वाली कुछ चीज़ों को देखना चाहिए : शेल और प्रोगामिंग लैंग्वेज । तब सब कुछ समझना बहुत आसान हो जाएगा।
.bashrcमें एक पंक्ति है जो इसे गैर-संवादात्मक गोले में चलने से रोकती है ।