लिनक्स और, मेरे ज्ञान में, सभी यूनिक्स सिस्टम, टर्मिनल एमुलेटर डिफ़ॉल्ट रूप से इंटरैक्टिव, गैर-लॉगिन गोले चलाते हैं। इसका मतलब यह है कि, बैश के लिए, शुरू किया गया शेल होगा:
जब एक इंटरेक्टिव शेल जो कि एक लॉगिन शेल नहीं है, शुरू होता है, तो 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 के लिए विशिष्ट है या क्या यह टर्मिनल एमुलेटर से स्वतंत्र है?