जवाबों:
यदि आप उबंटू डेस्कटॉप के एक सामान्य उपयोगकर्ता हैं, तो एकमात्र लॉगिन शेल है ... आपका डेस्कटॉप (आप सही में, पाने के लिए पासवर्ड टाइप करते हैं?) ठीक है, तकनीकी रूप से यह एक लॉगिन शेल है जो एक जीयूआई शुरू करता है, लेकिन यह शब्दजाल में आ रहा है। और हाँ, यह सेटिंग्स को पढ़ेगा.profile
केवल समय आप (एक सामान्य उपयोगकर्ता) शायद एक लॉगिन खोल कि देखेंगे लग रहा है एक लॉगिन कवच की तरह आप अपने डेस्कटॉप के साथ कुछ समस्या हो रही है और आप के साथ एक आभासी टर्मिनल के लिए स्विच अगर है Ctrl+ Alt+ F1शॉर्टकट।
ssh
(या स्थानीय रूप से कनेक्ट करना ssh localhost
)bash -l
(या sh -l
) के साथ एक प्रारंभिक लॉगिन शेल का अनुकरण करनाroot
साथ एक प्रारंभिक लॉगिन शेल का अनुकरण करनाsudo -i
sudo -u username -i
root
root
उपयोगकर्ता के रूप में प्रमाणितsu - username
sudo login
उपयोगकर्ता को स्विच करने के लिए कमांड का उपयोग करना~/.pam_environment
(केवल चर, वहां कोई बैश कमांड नहीं!) डालें , लॉगआउट करें, लॉगिन करें और सब कुछ जादुई रूप से डेस्कटॉप के साथ-साथ सूक्ति-टर्मिनल में भी देखें!
/etc/profile
, /etc/profile.d
या ~/.profile
।
मुझे नहीं लगता कि "तकनीकी शब्दजाल" के बिना सही उत्तर दिया जा सकता है। चूँकि यह प्रश्न Google में पहले प्रश्न के लिए है कि "एक लॉगिन शेल क्या है" मैं नीचे अधिक सही उत्तर प्रदान कर रहा हूँ:
लॉगिन शेल केवल एक शेल है जिसे लॉगिन शेल कहा गया था। इसका मतलब यह नहीं है कि आप लॉगिन करने के बाद पॉप अप करते हैं, हालांकि आमतौर पर जो एप्लिकेशन आपको लॉग इन करता है, वह शेल को यह बताता है कि यह लॉगिन शेल है। शेल को यह बताने के लिए निम्न तरीके मौजूद हैं कि यह एक लॉगिन होना चाहिए:
-l
या --login
तर्क के साथ यह मान लेना कि वह इसे जानता है (मैं किसी ऐसे शेल को नहीं जानता जो नहीं जानता -l
, लेकिन --login
केवल कुछ शेल द्वारा समर्थित है)।argv[0]
टू सेट -{some_string}
(यानी HYPHEN-MINUS के साथ सामान्य argv[0]
या किसी अन्य स्ट्रिंग के लिए पूर्वनिर्मित )। यह ssh और su क्या है: su बस के -su
रूप में निष्पादन योग्य है argv[0]
( जैसा कि हर कोई सोच रहा argv[0]
है कि वर्तमान में चल रहे नाम के साथ कुछ करने के लिए कुछ है) के साथ निष्पादन योग्य है, ssh -zsh
उपयोगकर्ता के /bin/zsh
अपने शेल के रूप में सेट होने पर zsh चलाता है ।शेल की तार्किकता का किसी से कोई लेना-देना नहीं है, जो आपसे पासवर्ड पूछ रहा है या कुछ अन्य प्रक्रिया कर रहा है। कुछ प्रोग्राम जैसे ssh या login (या कुछ टर्मिनल एमुलेटर जैसे urxvt) argv[0]
एक HYPHEN-MINUS के साथ शुरू होने वाले लॉगिन का उपयोग करके गोले चलाते हैं । सु या सुडो (या zsh: जैसे कि -
प्रीकमैंड मॉडिफ़र इन सेक्शन में वर्णित प्रीकैंड मॉडिफ़ायर देखें man zshmisc
) डिफ़ॉल्ट रूप से ऐसा नहीं करते हैं, लेकिन ऐसा कहा जा सकता है। शेल को अपने तर्क (अर्थात bash -l
) का उपयोग करके लॉगिन बताने का एकमात्र विकल्प है : ssh एक कमांड तर्क के साथ (जो स्पष्ट रूप से ssh को बताता है कि रिमोट अंत पर क्या चलाना है)।
आम तौर पर यह पहली बार खोल आह्वान करने के लिए इस्तेमाल किया कार्यक्रम के प्रलेखन से परामर्श करने के (जोड़कर जैसे यह निर्धारित खोल लॉगिन एक हो जाएगा और दूसरा निर्धारित करने के लिए एप्लिकेशन एक लॉगिन खोल शुभारंभ करेंगे कि क्या कुछ परीक्षण करने के लिए बेहतर है echo
करने के लिए .profile
)।
argv[0]
किसी एक exec*
कार्य, प्राकृतिक और अपरिहार्य को सीधे आपूर्ति करके किया जाता है : आप हमेशा दोनों को आपूर्ति करते हैंargv[0]
और कमांड का पथ वास्तव में exec*
फ़ंक्शन का उपयोग करते समय चलाते हैं , भले ही आप कभी भी argv[0]
कमांड रन से अलग नहीं होना चाहते । अन्य भाषाएं अपने तरीके प्रदान करती हैं। विशेष रूप से बैश का उपयोग करने की अनुमति देता है exec -a new_argv0 bash
, लेकिन यह, ज़ाहिर है, वर्तमान में चल रहे शेल को बदलेगा जो भी आप exec
एड करते हैं, इसलिए आपको (exec -a -zsh zsh)
$0
, और, शायद कुछ और भी (चर, सेटिंग, आदि) सेट किया गया है ताकि कॉन्फ़िगरेशन फ़ाइल में शेल की तार्किकता का पता लगाया जा सके, लेकिन कौन वास्तव में इसका पता लगाता है, इसलिए इससे कोई फर्क पड़ेगा? मुझे बस इतना पता है।