अनिवार्य रूप से, एक शेल लॉगिन है या नहीं, इंटरैक्टिव है या बिल्कुल एक कारण से मायने नहीं रखता है:
आरंभिक फ़ाइलें और डिफ़ॉल्ट विकल्प सेट इस बात पर निर्भर करते हैं कि कोई शेल लॉगिन है या नहीं और इंटरेक्टिव है या नहीं।
इसके विपरीत, एक शेल लॉगिन है या नहीं या इंटरैक्टिव या पूरी तरह से इस्तेमाल किए गए आह्वान पर निर्भर करता है - सटीक कमांड नाम और विकल्प।
दो गुण अन्यथा orthogonal हैं - चाहे कोई शेल लॉगिन हो या नहीं, यह निर्धारित करने पर कोई असर नहीं है कि यह इंटरैक्टिव है या नहीं।
यदि इनमें से कोई भी सत्य है, तो बैश एक लॉगिन शेल शुरू करता है:
argv[0]
कमांड का नाम, जिसे लागू किया गया था, a से शुरू होता है -
-l
विकल्प निर्दिष्ट
यदि इनमें से कोई भी सत्य हो तो इसी तरह, बैश एक इंटरैक्टिव शेल शुरू करता है:
- इसे निष्पादित करने के लिए एक फ़ाइल निर्दिष्ट नहीं की गई थी (यानी, कमांड नहीं थी
bash some/file
) या चलाने के लिए एक कमांड स्ट्रिंग ( bash -c 'foo'
) (वास्तविक स्थिति थोड़ी अधिक जटिल है, मैनुअल देखें)
-i
विकल्प निर्दिष्ट किया गया था
विशेष रूप से (और विरोधाभासी रूप से), बाद का तात्पर्य है कि bash -ic 'foo'
एक इंटरैक्टिव शेल शुरू होता है।
तो निम्नलिखित में एक लॉगिन, इंटरेक्टिव शेल शुरू होता है, भले ही इसके बारे में कुछ भी इंटरएक्टिव न हो और इनवोकेशन का लॉग इन से कोई लेना-देना नहीं है:
bash -lic true
कंसोल या GUI के माध्यम से लॉग इन करने पर एक लॉगिन शेल शुरू होता है (या शायद नहीं) पूरी तरह से उपयुक्त इनवोकेशन का उपयोग करके लॉगिन प्रक्रिया का एक प्रभाव है।
परिस्थितियों और प्रभावों को बॅश मैनुअल, स्टार्टअप फाइलों पर अनुभाग में विस्तार से वर्णित किया गया है ।
भ्रम का एक प्रमुख स्रोत यह है कि "लॉगिन" शेल के लिए एक और सामान्य अर्थ है:
उपयोगकर्ता का लॉगिन शेल उस उपयोगकर्ता की passwd
प्रविष्टि (जो कि /etc/passwd
LDAP या किसी अन्य स्रोत से आ सकता है) में परिभाषित शेल है ।
login
कार्यक्रम, SSH, आदि एक के रूप में इस खोल शुरू लॉगिन भावना जवाब के बाकी हिस्सों में मतलब में खोल - एक प्रमुख के साथ -
आदेश के नाम पर, आम तौर पर। यदि आप विशेष रूप से भ्रमित होना चाहते हैं, तो आप कह सकते हैं:
कुछ लॉगिन प्रक्रियाएं उपयोगकर्ता के लॉगिन शेल को लॉगिन शेल के रूप में शुरू करती हैं।
ध्यान दें कि GUI लॉगिन एक लॉगिन शेल को शुद्ध रूप से शुरू करता है क्योंकि डेवलपर्स ने इसे सुविधाजनक समझा - LightDM लॉगिन पर एक स्क्रिप्ट चलाता है जो स्पष्ट रूप से इंटरैक्टिव नहीं है और निश्चित रूप से उपयोगकर्ता के लॉगिन शेल (दूसरे अर्थ में) पर निर्भर नहीं करता है। हालांकि, लॉगिन प्रबंधक शुरू करने वाले प्रदर्शन प्रबंधक पर निर्भर नहीं होते हैं, हालांकि - उनमें से सभी नहीं करते हैं, और वेनलैंड और गनोम पर, लॉगिन प्रक्रिया बिल्कुल भी स्क्रिप्ट का उपयोग नहीं करती है।
non-interactive login shell
वह गलत है।