जब आप लॉगिन करते हैं तो एक शेल शुरू किया जाता है, लेकिन यह प्रोग्राम की तरह भी शुरू होता है make, या जब आप शेल स्क्रिप्ट चलाते हैं, या जब आप टाइप :shकरते हैं vi, या जब आप एक नई टर्मिनल विंडो बनाते हैं।
मूल रूप से, ~/.profileजब आप लॉग इन या रन करते हैं तो शेल पढ़ा जाता है su। यह स्क्रिप्ट यह घोषणा करने जैसी चीजें करेगी कि क्या आपके पास नया ईमेल था, अपने मिटाए गए पात्रों को अनुकूलित करें और TERM और PATH चर को सेट और निर्यात करें। जब लगभग किसी अन्य संदर्भ में शुरू किया गया था, तो शेल पढ़ा नहीं गया था ~/.profile, क्योंकि उन चीजों में से अधिकांश करना बेमानी होगा। आपसे नए शेल के लिए किसी भी महत्वपूर्ण शेल चर का निर्यात करने की अपेक्षा की गई थी।
जिस तरह से शेल को पता था कि क्या पढ़ना है ~/.profileया नहीं, यह देखने के लिए कि क्या argv[0]उर्फ का पहला चरित्र $0था '-'।
के साथ शुरू csh, उपनाम पेश किए गए थे। उपनाम पर्यावरण में निर्यात नहीं किए गए थे। cshको दो अलग-अलग इनिशियलाइज़ेशन स्क्रिप्ट में पढ़ने के लिए डिज़ाइन किया गया था। ~/.loginकेवल तभी पढ़ा जाता है जब कोई उपयोगकर्ता लॉग इन करता है, और ऐसा करने के लिए क्यू अगर इसके argv[0]साथ शुरू किया गया था '-'। ~/.cshrcहर बार खोलना शुरू किया गया था। सामान्य तौर पर, एक ने एलियास को ~/.cshrcऔर बाकी सभी चीजों को अंदर रखा ~/.login। cshयह भी समर्थित है ~/.logout, जो ज्यादातर मामलों में स्क्रीन को साफ किया और भाग गया fortune।
अन्य गोले ने भी यही विशेषताएं अपनाईं। kshमें पढ़ता था ~/.kshrc, में bashपढ़ता था ~/.bashrcऔर वे थे जहाँ आप अपनी अन्य परिभाषाएँ रखेंगे ।
इसलिए, एक लंबी कहानी को छोटा करने के लिए, एक शेल को जन्म देने वाले एप्लिकेशन को यह तय करने के लिए मिलता है कि क्या यह "लॉगिन शेल" होना चाहिए, जिस स्थिति '-'में शुरुआत में या एक नियमित शेल है। ज्यादातर मामलों में, एक शेल जो इंटरएक्टिव होने वाला है, उसे एक लॉगिन शेल के रूप में शुरू किया जाता है, और एक शेल का मतलब सिर्फ कुछ कमांड चलाने के लिए होता है, या तो तर्क के रूप में या स्क्रिप्ट से, और फिर बाहर निकलना एक नियमित शेल होता है।
लेकिन यह शेल शुरू होने वाले एप्लिकेशन के पूरे होने तक है।