$ SHLVL व्हेरिएबल आणि आपण का वापर करावा

$ SHLVL हे व्हेरिएबल तुम्हाला किती खोल शिंपल्या आहेत हे सांगण्यासाठी वापरले जाते. आपण या द्वारे गोंधळून असाल तर तो सुरूवातीस सुरू वाचतो आहे.

शेल म्हणजे काय?

शेल आज्ञा घेते आणि त्यांना अंमलीत कार्यकारी प्रणालीमध्ये कार्यप्रदर्शन देते. बहुतांश Linux प्रणाल्यांवर शेल प्रोग्रामला BASH (बॉर्न पुन्हा शेल) म्हटले जाते परंतु सी शेल (टीसीएस) आणि कॉर्न शेल (के.एस.एस.) यासह अन्य उपलब्ध आहेत.

Linux शेलमध्ये प्रवेश कसा करावा?

साधारणपणे वापरकर्ता म्हणून जेव्हा आपण टर्मिनल इम्यूलेशन प्रोग्राम जसे की XTerm, konsole किंवा gnome-terminal वापरुन शेल प्रोग्रामसह संवाद साधता.

जर आपण विंडोज व्यवस्थापक जसे की ओपनबॉक्स किंवा डेस्कटॉप पर्यावरण जसे की GNOME किंवा KDE चालवित असाल तर तुम्हाला मेनूतून किंवा डॅशमधून टर्मिनल एमुलेटर मिळेल. अनेक प्रणाल्यांवर शॉर्टकट CTRL ALT आणि T टर्मिनल विंडोही उघडेल.

वैकल्पिकरित्या आपण दुसर्या tty (टेलिटेप्राइटर) वर स्विच करू शकता जे कमांड लाइन शेलवर थेट प्रवेश प्रदान करते. आपण CTRL ALT आणि F1 किंवा CTRL ALT आणि F2 इत्यादी दाबून करु शकता.

शेल पातळी काय आहे

शेलमध्ये कमांड कार्यान्वित केल्यावर ते शेल लेव्हल म्हणतात. एक शेलमधे आपण दुसरे शेल उघडू शकता जे उघडत असलेली शेल असेल.

म्हणून पालक शेल हे कदाचित लेव्हल 1 शेल समजले जाईल आणि मूल शेल एक लेव्हल 2 शेल असेल.

शेल स्तर कसे प्रदर्शित करावे

हे लेखाच्या शीर्षकावर आधारित नाही आश्चर्यचकित करणारे असाव्यात की आपण $ SHLVL व्हेरिएबलचा वापर करून कोणत्या शेल लेव्हलमध्ये चालत आहात हे सांगू शकता.

सध्या आपण खालील टाइप करत असलेल्या शेल लेव्हल पाहण्यासाठी:

प्रतिध्वनी $ SHLVL

त्याऐवजी आपण टर्मिनल विंडोमध्ये वरील कमांड कार्यान्वित केल्यास रोचकपणे हे पाहून आश्चर्य वाटेल की परिणाम 2 परत आला आहे.

जर आपण tty वापरुन तीच कमांड कार्यान्वित केली तर result 1 आहे.

आपण असे विचारू शकतो? तसेच आपण कार्यरत असलेले डेस्कटॉप वातावरण शेलच्या वर चालत आहे. त्या शेल लेव्हल 1 होईल. त्या डेस्कटॉप पर्यायातुन आपण उघडलेल्या कोणत्याही टर्मिनल विंडोमध्ये शेलचा एक भाग असावा जो डेस्कटॉप वातावरण उघडतो आणि म्हणून शेल लेव्हल 2 पेक्षा इतर कोणत्याही संख्येने सुरूवात करू शकत नाही.

Tty डेस्कटॉप वातावरण चालवत नाही आणि त्यामुळे केवळ एक स्तर 1 शेल आहे

Subshells कसे तयार करावे

खालील प्रमाणे शेल आणि सबसिल्म्सची संकल्पना तपासण्याचा सर्वात सोपा मार्ग. टर्मिनल विंडो उघडा आणि खालील टाइप करा:

प्रतिध्वनी $ SHLVL

टर्मिनल विंडोवरून आपल्याला माहित आहे की किमान शेल लेव्हल 2 आहे.

आता टर्मिनल विंडोमध्ये खालील टाइप करा:

श कमांड स्वतः एक परस्पर शेल चालविते म्हणजे आपण शेल किंवा सबशेल्डमध्ये शेल वापरत आहात.

आपण आता हे पुन्हा टाइप केल्यास:

प्रतिध्वनी $ SHLVL

आपल्याला दिसेल की शेल लेव्हल 3 वर सेट आहे. सब शेलमधुन sh कमांड कार्यान्वित केल्याने subshell ची सबहिल्ड उघडली जाईल आणि शेल लेव्हल 4 वर असेल.

शेल स्तर का महत्त्वाचा आहे?

आपल्या स्क्रिप्टमधील वेरियेबल्सच्या व्याप्तीचा विचार करताना शेल लेव्हल महत्वाची आहे.

चला काहीतरी सोपा सह प्रारंभ करूया:

कुत्रा = म्यासी
प्रतिध्वनी $ कुत्रा

जर तुम्ही शेलमधे वरील कमांड रन केले तर शब्द "मेसी" टर्मिनल विंडोवर प्रदर्शित होईल.

खालील टाइप करून नवीन शेल उघडा:

आपण हा आदेश चालविल्यास आपल्याला दिसेल की काहीही परत केले जात नाही:

प्रतिध्वनी $ कुत्रा

कारण $ dog व्हेरबल फक्त शेल लेव्हल 2 वर उपलब्ध आहे. आपण subshell मधून बाहेर पडण्यासाठी बाहेर पडायचे असल्यास टाइप करा आणि पुन्हा $ echo चालवा पुन्हा शब्द maisie पुन्हा दर्शविला जाईल.

हे शेलमध्ये ग्लोबल व्हेरिएबल्सच्या वागणुकीबद्दल विचार करणे योग्य आहे.

नवीन टर्मिनल विंडो बंद करा आणि खालील टाइप करा:

export dog = maisie
प्रतिध्वनी $ कुत्रा

माईसी शब्द प्रदर्शित होण्याची अपेक्षा करा. आता subshell उघडा आणि पुन्हा echo $ dog टाइप करा. या वेळी आपण दिसेल की आपण एखादे सबशेल्डमध्ये असल्यावरही माईसी हा शब्द प्रदर्शित झाला आहे.

याचे कारण निर्यात आदेशाने $ डॉग वैरिएबल ग्लोबल केले आहे. आपण $ export आदेश वापरत असला तरीही subshell मधील $ कुत्रा व्हेरिएबल बदलल्याने त्याच्या मूळ शिल्लकवर काहीही परिणाम होत नाही.

आशेनेच तुम्हाला हे दिसेल की आपण ज्या स्तरीयमध्ये काम करीत आहात त्या लेव्हलची स्क्रिप्ट लिहिताना काही महत्त्व आहे.

मी दिलेली उदाहरणे अतिशय सोपी आहेत पण एक शेल स्क्रिप्टसाठी ती दुसर्या शेल स्क्रिप्टला कॉल करण्याची सामान्य आहे जी त्या दुसऱ्या शेल स्क्रिप्टला कॉल करते जे सर्व आता वेगवेगळ्या स्तरावर चालू आहे. शेल लेव्हल जाणून घेणे फार महत्वाचे असू शकते.