আপনি কেন $ SHLVL ভেরিয়েবল ব্যবহার করবেন?

$ SHLVL ভেরিয়েবলটি আপনাকে বলবে যে আপনি কতগুলি শেলগুলিকে গভীর করেছেন। যদি আপনি এই দ্বারা বিভ্রান্ত হয় এটি শুরু থেকে শুরু মূল্য

একটি শেল কি?

একটি শেল কমান্ডগুলি পরিচালনা করে এবং সঞ্চালন করার জন্য তাদের অন্তর্নিহিত অপারেটিং সিস্টেমটি দেয়। বেশীরভাগ লিনাক্স সিস্টেমে শেল প্রোগ্রামকে বলা হয় BASH (বোর্ন এন্ড শেল) কিন্তু সি শেল (টিসিএস) এবং কর্ন শেল (কিশ) সহ অন্যান্য উপলব্ধ রয়েছে।

কিভাবে Linux শেল অ্যাক্সেস করতে

সাধারনত একটি ব্যবহারকারী হিসাবে আপনি শেল প্রোগ্রামের সাথে একটি টার্মিন্যাল এমুলেশন প্রোগ্রাম যেমন এক্সট্রম, কনসোল বা গনোোম-টার্মিনাল ব্যবহার করে ইন্টারঅ্যাক্ট করেন।

যদি আপনি একটি উইন্ডো ম্যানেজার যেমন Openbox বা একটি ডেস্কটপ এনভায়রনমেন্ট যেমন গনোম বা কেডিই চালু করেন তবে আপনি একটি মেনু বা ড্যাশ থেকে একটি টার্মিনাল এমুলেটর পাবেন। অনেক সিস্টেমে শর্টকাট CTRL ALT এবং T একটি টার্মিনাল উইন্ডো খুলবে।

বিকল্পভাবে আপনি অন্য tty (টেলিটাইপ্রেটার) এ সুইচ করতে পারেন যা একটি কমান্ড লাইন শেলে সরাসরি অ্যাক্সেস প্রদান করে। আপনি CTRL ALT এবং F1 বা CTRL ALT এবং F2 ইত্যাদি টিপে এটি করতে পারেন।

একটি শেল স্তর কি

যখন আপনি একটি শেল এ একটি কমান্ড চালান এটি শেল স্তর নামক কিছু রান। একটি শেলের মধ্যে আপনি অন্য শেলটি খুলতে পারেন যা এটি একটি সাবসহিল বা শেল তৈরি করেছে যা এটি খোলা হয়েছে।

অতএব পিতা বা মাতার শেল সম্ভবত লেভেল 1 শেল বলে গণ্য হবে এবং শিশু শেলটি একটি স্তর 2 শেল হবে।

শেলের স্তর প্রদর্শন করতে কিভাবে

এটি এমন নিবন্ধের শিরোনামের উপর ভিত্তি করে কোন আশ্চর্যের বিষয় হওয়া উচিত নয় যে আপনি যে শেল লেভেলটি চালনা করছেন তা আপনি বলতে পারেন যে $ এসএইচএলভিএল ভেরিয়েবল ব্যবহার করে।

শেল স্তর দেখতে আপনি বর্তমানে নিম্নলিখিত টাইপ চলছে:

echo $ SHLVL

বরং আকর্ষণীয়ভাবে যদি আপনি উপরের কমান্ডটি একটি টার্মিনাল উইন্ডোর মধ্যে চালান তবে আপনি দেখতে পাবেন যে ফলাফলটি ফিরে এসেছে 2।

যদি আপনি tty ব্যবহার করে একই কমান্ড চালান তবে ফলাফলটি 1।

কেন এই ক্ষেত্রে আপনি জিজ্ঞাসা করতে পারে? ভাল যে ডেস্কটপ পরিবেশটি আপনি চালাচ্ছেন সেটি একটি শেলের উপরে চলছে। যে শেলটি লেভেল 1 থাকবে। যে ডেস্কটপ এনভায়রনমেন্টের মাধ্যমে আপনি যে কোনও টার্মিনাল উইন্ডো খুলবেন সেটি শেলের একটি শিশু হতে হবে যা ডেস্কটপ এনভায়রনমেন্ট খুলেছে এবং তাই শেল লেভেল 2 এর চেয়ে অন্য যে কোনও নম্বর থেকে শুরু করতে পারে না।

Tty একটি ডেস্কটপ পরিবেশ চালনা করা হয় না এবং তাই কেবল একটি স্তর 1 শেল।

কিভাবে সাবস্হেলস তৈরি করবেন

শেল এবং subshells ধারণা পরীক্ষা করার সবচেয়ে সহজ উপায় নিম্নরূপ। একটি টার্মিনাল উইন্ডো খুলুন এবং নিম্নলিখিত টাইপ করুন:

echo $ SHLVL

আমরা একটি টার্মিনাল উইন্ডো থেকে জানি হিসাবে সর্বনিম্ন শেল স্তর 2 হয়।

এখন টার্মিনাল উইন্ডোর মধ্যে নিম্নলিখিত টাইপ করুন:

SH

Sh কমান্ডটি নিজেই একটি ইন্টারেক্টিভ শেল চালায় যার মানে আপনি শেল বা একটি সাশেলে শেল ব্যবহার করছেন।

আপনি যদি আবার এই টাইপ করুন:

echo $ SHLVL

আপনি দেখতে পাবেন যে শেল লেভেলটি 3 তে নির্ধারিত হয়। Subshell- এর মধ্যে থেকে sh কমান্ডটি চালানো subshell এর একটি সাবসহিল খুলবে এবং শেল লেভেল 4 এ থাকবে।

শেল স্তর গুরুত্বপূর্ণ কেন?

আপনার স্ক্রিপ্ট মধ্যে ভেরিয়েবল সুযোগ সম্পর্কে চিন্তা করার সময় শেল স্তর গুরুত্বপূর্ণ।

আসুন কিছু সহজ সঙ্গে শুরু করুন:

কুকুর = Maisie
echo $ কুকুর

আপনি যদি শেলটিতে উপরের কমান্ডটি চালান তবে শব্দ মাইসি টার্মিনাল উইন্ডোতে প্রদর্শিত হবে।

নিম্নলিখিত টাইপ করে একটি নতুন শেল খুলুন:

SH

আপনি যদি এই কমান্ডটি চালান তবে আপনি দেখতে পাবেন যে কিছুই আসলে ফিরে আসেনি:

echo $ কুকুর

এটা কারণ $ কুকুর পরিবর্তনশীল শেল স্তর 2 এ শুধুমাত্র উপলব্ধ। আপনি subshell থেকে প্রস্থান করার জন্য প্রস্থান থেকে টাইপ করুন এবং echo $ কুকুর চালানোর পরে শব্দ maisie আবার প্রদর্শিত হবে।

এটি একটি শেলের মধ্যে বৈশ্বিক ভেরিয়েবলের আচরণ সম্পর্কেও মূল্যবান।

একটি নতুন টার্মিনাল উইন্ডোতে বন্ধ এবং নিম্নলিখিত টাইপ করুন:

রপ্তানি কুকুর = মাইসি
echo $ কুকুর

আপনি মাইসির শব্দ প্রদর্শিত হবে আশা করি। এখন একটি subshell খুলুন এবং echo $ dog টাইপ করুন। এই সময় আপনি দেখতে পাবেন যে আপনি একটি subshell মধ্যে যদিও maisie শব্দ প্রদর্শিত হয়।

এই কারণটি হল এক্সপোর্ট কমান্ড $ কুকি বৈকল্পিক বৈশ্বিক তৈরি। Subshell- এর মধ্যে $ কুকি ভেরিয়েবল পরিবর্তন করলেও আপনি এক্সপোর্ট কমান্ডটি ব্যবহার করলে তার প্যারেন্ট শেলগুলিতে কোন প্রভাব ফেলবে না।

আশা করি এখান থেকে আপনি দেখতে পাবেন যে আপনি যে শেল স্তরটি কাজ করছেন সেটি স্ক্রিপ্ট লেখার সময় কিছু গুরুত্ব রয়েছে।

আমি যেসব উদাহরণ দিয়েছি তা খুবই সরলীকৃত কিন্তু এটি একটি শেল স্ক্রিপ্টের জন্য বেশ প্রচলিত একটি শেল স্ক্রিপ্টকে কল করার জন্য যা অন্য একটি শেল স্ক্রিপ্টে কল করে যা এখন বিভিন্ন স্তরে চলছে। শেল স্তর জানতে খুব গুরুত্বপূর্ণ হতে পারে।