लिनक्स और, मेरे ज्ञान में, सभी यूनिक्स सिस्टम, टर्मिनल एमुलेटर डिफ़ॉल्ट रूप से इंटरैक्टिव, गैर-लॉगिन गोले चलाते हैं। इसका मतलब यह है कि, बैश के लिए, शुरू किया गया शेल होगा:
जब एक इंटरेक्टिव शेल जो कि एक लॉगिन शेल नहीं है, शुरू होता है, तो bash पढ़ता है और कमांड से निष्पादित करता है
/etc/bash.bashrcऔर~/.bashrc, यदि ये फाइलें मौजूद हैं।--norcविकल्प का उपयोग करके इसे बाधित किया जा सकता है ।
--rcfileफ़ाइल विकल्प पढ़ सकते हैं और के बजाय फ़ाइल से आदेश पर अमल करने के लिए पार्टी के लिए बाध्य करेगा/etc/bash.bashrcऔर~/.bashrc।
और लॉगिन गोले के लिए:
जब बैश को एक इंटरेक्टिव लॉगिन शेल के रूप में या
--loginविकल्प के साथ एक गैर-इंटरैक्टिव शेल के रूप में लागू किया जाता है , तो यह पहले फ़ाइल से कमांड को पढ़ता है और निष्पादित करता है/etc/profile, यदि वह फ़ाइल मौजूद है। उस फ़ाइल को पढ़ने के बाद, यह उस क्रम में , और , के लिए लग रहा है~/.bash_profile,~/.bash_loginऔर~/.profileपहले से मौजूद आदेशों को पढ़ता है और निष्पादित करता है और पढ़ने योग्य है।
--noprofileविकल्प इस्तेमाल किया जा सकता है जब खोल इस व्यवहार को बाधित करने के लिए शुरू कर दिया है।
OSX पर, डिफ़ॉल्ट शेल (जो कि bash है) को डिफ़ॉल्ट टर्मिनल (Terminal.app) में वास्तव में स्रोत ~/.bash_profileया ~.profileआदि में शुरू किया गया है । दूसरे शब्दों में, यह लॉगिन शेल की तरह कार्य करता है।
मुख्य प्रश्न : डिफ़ॉल्ट इंटरेक्टिव शेल OSX पर एक लॉगिन शेल क्यों है? OSX ने ऐसा करने का विकल्प क्यों चुना? इसका मतलब यह है कि शेल आधारित चीजों के लिए सभी निर्देश / ट्यूटोरियल जो बदलती चीजों का उल्लेख करते ~/.bashrcहैं, ओएसएक्स या इसके विपरीत में विफल हो जाएंगे ~/.profile। फिर भी, जबकि Apple पर कई आरोप लगाए जा सकते हैं, अक्षम या मूर्खतापूर्ण देवों को काम पर रखना उनमें से एक नहीं है। संभवतः, उनके पास इसके लिए एक अच्छा कारण था, इसलिए क्यों?
प्रश्न: क्या Terminal.app वास्तव में एक इंटरैक्टिव लॉगिन शेल चलाता है या उन्होंने बैश के व्यवहार को बदल दिया है? क्या यह Terminal.app के लिए विशिष्ट है या क्या यह टर्मिनल एमुलेटर से स्वतंत्र है?