ဘယ်လိုပြီးတော့အဘယ်ကြောင့်သင်ကအဆိုပါ $ SHLVL Variable ကိုသုံးပါမလား

အဆိုပါ $ SHLVL variable ကိုသင်မည်မျှခွံနက်ရှိုင်းကိုသင်ပြောပြရန်အသုံးပြုသည်။ သင်ဤအားဖြင့်ရောထွေးနေတယ်ဆိုရင်ဒါဟာအစအဦးမှာစတင်ကျိုးနပ်သည်။

တစ်ဦးက Shell ကဘာလဲ,

တစ်ဦးက shell ကိုပညတ်တော်တို့ကိုယူလုပ်ဆောင်ပေးဖို့နောက်ခံ operating system ကိုမှသူတို့ကိုပေးသည်။ Linux အများစုစနစ်များတွင် shell ကိုအစီအစဉ်ကို Bash (အဆိုပါ Bourne တဖန် Shell က) ဟုခေါ်သည်ပေမယ့်ကို C Shell က (tcsh) နှင့် Korn shell ကို (ksh) အပါအဝင်ရရှိနိုင်ပါသည်အခြားသူတွေရှိပါတယ်။

အဆိုပါ Linux ကိုရှဲလ်ကိုဝင်ရောက်ဖို့ဘယ်လို

ယေဘုယျအားဖြင့်အသုံးပြုသူတစ်ဦးအဖြစ်သင်တစ်ဦး၏အသုံးပြုမှုကိုကနေတဆင့် shell ကို program နဲ့အပြန်အလှန် terminal ကိုအတုယူ ထိုကဲ့သို့သော XTerm, ထဲတွင် console ဖြစ်သည်သို့မဟုတ် gnome-terminal ကိုအဖြစ်ပရိုဂရမ်ဖြစ်ပါတယ်။

သငျသညျထိုကဲ့သို့သော GNOME သို့မဟုတ် KDE ကဲ့သို့သော Openbox တစ်ခုသို့မဟုတ် desktop ပေါ်မှာပတ်ဝန်းကျင်အဖြစ်ပြတင်းပေါက်မန်နေဂျာ running နေတယ်ဆိုရင်သင်ကဖြစ်စေမယ့် menu ကိုတစ်ခုသို့မဟုတ် dash ကနေ terminal ကို emulator တွေ့လိမ့်မည်။ အများအပြားစနစ်များတွင်ဖြတ်လမ်း CTRL ALT နဲ့ T အဖြစ်ကောင်းစွာ Terminal ကိုပြတင်းပေါက်ဖွင့်လှစ်ပါလိမ့်မယ်။

တနည်းအားဖြင့်သင်က command line ကို shell ကိုတိုက်ရိုက် access ကိုထောက်ပံ့ပေးသောအခြား TTY (teletypewriter) ကိုပြောင်းလဲနိုင်သည်။ သငျသညျ CTRL ALT နဲ့ F1 ကိုသို့မဟုတ်စသည်တို့ကို CTRL ALT နှင့် F2 နှိပ်ခြင်းဖြင့်ဤအလုပျနိုငျ

တစ်ဦးက Shell ကအဆင့်ဆိုတာဘာလဲ

သင်တစ်ဦး shell ကိုတစ်ဦး command ကို run တဲ့အခါမှာက shell ကိုအဆငျ့ကိုခေါ်တစ်ခုခုမှာပြေး။ တစ် shell ကိုအတွင်းမှာပဲသင်ကတစ်ဦး subshell သို့မဟုတ်ပါကဖွင့်လှစ်ခဲ့သော shell ကိုမှန်ကန်စေသည်ဖြစ်သောအခြား shell ကိုဖွင့်လှစ်နိုင်ပါ။

ထိုကြောင့်မိဘ shell ကိုဖြစ်ကောင်းအဆင့် 1 shell ကိုထည့်သွင်းစဉ်းစားမည်ဖြစ်ကြောင်းနှင့်ကလေးက shell ကိုအဆင့် 2 shell ကိုဖြစ်လိမ့်မည်။

အဆိုပါ Shell ကအဆင့်ပြသရန်လုပ်နည်း

ဒါဟာသင်အတွက်အပြေးနေကြရသော shell ကိုအဆင့်ကိုပြောပြနိုင်လမ်း $ SHLVL variable ကို အသုံးပြု. သောဆောင်းပါး၏ခေါင်းစဉ်ကိုအပေါ်အခြေခံပြီးအံ့သြစရာမရှိပါအဖြစ်လာသင့်ပါတယ်။

သင်လက်ရှိအမျိုးအစားထဲတွင်အောက်ပါအပြေးသော shell ကိုအဆင့်ကိုကြည့်ရှုရန်:

$ SHLVL ပဲ့တင်သံ

သင်တစ်ဦး terminal ကိုပြတင်းပေါက်အတွင်းအထက်ပါ command ကို run မယ်ဆိုရင်အဲဒီအစားစိတ်ဝင်စားစရာသင်သည်ပြန်လာသောရလဒ် 2 ကြောင်းကိုကြည့်ဖို့အံ့သြသွားပါလိမ့်မယ်။

သင် TTY သုံးပြီးတူညီတဲ့ command ကို run သို့သော် အကယ်. ထို့နောက်ရလဒ် 1 ဖြစ်ပါတယ်။

အဘယ်ကြောင့်ဤသူသည်သင်တို့ကိုမေးစေခြင်းငှါ, ကိစ္စတွင်ပါသနည်း ကောင်းစွာသင် run နေတဲ့ desktop environment ကိုတစ် shell ကို၏ထိပ်ပေါ်မှာ run နေပါသည်။ အဲဒီ shell ကိုသင် desktop ပေါ်မှာပတ်ဝန်းကျင်အတွင်းကနေဖွင့်မဆို Terminal Window ကို desktop ပေါ်မှာပတ်ဝန်းကျင်ဖွင့်လှစ်ခြင်းနှင့်ထို့ကြောင့် shell ကိုအဆင့် 2 ထက်အခြားမည်သည့်အရေအတွက်ကိုမှာမစတင်နိုငျသော shell ကို၏ကလေးတစ်ဦးဖြစ်ပါတယ်အဆင့် 1. လိမ့်မည်။

အဆိုပါ TTY တစ်ဦးက desktop environment ကိုအပြေးနှင့်ရိုးရိုးထို့ကြောင့်အဆင့် 1 shell ကိုတစ်ခုဖြစ်သည်မပေးပါ။

Subshells Create ရန်ကဘယ်လို

အောက်မှာဖေါ်ပြတဲ့အတိုင်းခွံနှင့် subshells များ၏ concept ကိုစမ်းသပ်ဖို့အလွယ်ကူဆုံးနည်းလမ်းဖြစ်ပါတယ်။ Terminal ကိုပြတင်းပေါက်ဖွင့်ကိုဖွင့်, အောက်ပါရိုက်ထည့်:

$ SHLVL ပဲ့တင်သံ

ကျွန်တော်တစ်ဦး terminal ကိုပြတင်းပေါက်ကနေသိကြသည့်အတိုင်းနိမ့်ဆုံး shell ကိုအဆင့် 2 ဖြစ်ပါတယ်။

အခုတော့ terminal ကိုပြတင်းပေါက်အတွင်းကအောက်ပါရိုက်ထည့်:

sh

၎င်း၏ကိုယ်ပိုင်အပေါ် sh command ကိုသင်တစ်ဦး shell ကိုတစ်ခုသို့မဟုတ် subshell အတွင်း shell ကိုအသုံးပြုနေသည်ဆိုလိုတာကတစ်ဦးအပြန်အလှန် shell ကိုပြေး။

သငျသညျယခုနောက်တဖန်ဒီရိုက်ထည့်ပါလျှင်:

$ SHLVL ပဲ့တင်သံ

သင်က shell ကို level သည် subshell အတွင်းကနေ sh command ကတော့ subshell တစ် subshell ဖွင့်လှစ်မည်ထို့ကြောင့် shell ကိုအဆင့်အဆင့် 4 မှာဖွစျလိမျ့မညျကို run 3. ဟုသတ်မှတ်ကြောင်းမြင်လိမ့်မည်။

အဘယ်ကြောင့်အဆိုပါ Shell ကအဆင့်အရေးကြီးလား?

သင့်ရဲ့ script များအတွင်း variable တွေကိုများ၏နယ်ပယ်အကြောင်းကိုစဉ်းစားသည့်အခါအဆိုပါ shell ကိုအဆငျ့အရေးကြီးပါသည်။

ရိုးရှင်းတဲ့အရာတစ်ခုခုနဲ့စတင်ဖွင့်ကြစို့:

ခွေး = maisie
$ ခွေးပဲ့တင်သံ

သင်တစ်ဦး shell ကိုနှုတ်ကပတ်တရားတော်ကို maisie အတွက်အထက် command ကို run လိုက်ပါလျှင် Terminal Window ကိုမှပြသပါလိမ့်မည်။

အောက်ပါစာရိုက်ခြင်းဖြင့်အသစ်တခု shell ကိုဖွင့ ်. :

sh

သငျသညျဒီ command ကို run ပါလျှင်သင်တို့သည်အလျှင်းမတကယ်ပြန်ရောက်ကြောင်းမြင်ရပါလိမ့်မည်:

$ ခွေးပဲ့တင်သံ

သင် subshell ပိတ်ပြီးနောက်တဖန် maisie နောက်တဖန်ပြသပါလိမ့်မည်ဟူသောစကားလုံးပဲ့တင်သံ $ ခွေးကို run ဖို့ထွက်ပေါက်ရိုက်ထည့်လျှင် $ ခွေး variable ကို shell ကိုအဆင့် 2. မှာသာရရှိနိုင်သောကွောငျ့သောကွောငျ့ဖွစျသညျ။

ဒါဟာအစတစ် shell ကိုအတွင်းကမ္ဘာလုံးဆိုင်ရာ variable တွေကို၏အပြုအမူနှင့် ပတ်သက်. စဉ်းစားရကျိုးနပ်သည်။

အသစ်တစ်ခုကို terminal ကိုပြတင်းပေါက်၌ပယ် Start နှင့်အောက်ပါအချက်များကိုရိုက်ထည့်:

ပို့ကုန်ခွေး = maisie
$ ခွေးပဲ့တင်သံ

သငျသညျ maisie ပြသသောစကားလုံးမျှော်လင့်ထားလိမ့်မည်ဖြစ်သည်။ အခုတော့တစ်ဦး subshell ဖွင့်လှစ်ခြင်းနှင့်နောက်တဖန်ပဲ့တင်သံ $ ခွေးရိုက်ထည့်ပါ။ ဤအချိန်ကိုသင်စကားလုံး maisie သင်တစ်ဦး subshell ၌ရှိကြ၏သော်လည်းပြသကြောင်းမြင်လိမ့်မည်။

ဒီအကြောင်းပြချက်ပို့ကုန် command ကိုကမ္ဘာလုံးဆိုင်ရာဟာ $ ခွေး variable ကိုဖန်ဆင်းသောကွောငျ့ဖွစျသညျ။ အဆိုပါ subshell အတွင်း $ ခွေး variable ကိုပြောင်းခြင်းသင်အသုံးပြုလျှင်ပင်တင်ပို့ command ကိုအဘယ်သူမျှမက၎င်း၏မိဘခွံအပေါ်အကျိုးသက်ရောက်စေခဲ့သည်။

မျှော်လင့်ဒီကနေသင်တို့ကို script များရေးသားခြင်းအခါသင်အတွက်အလုပ်လုပ်နေကြ shell ကိုအဆင့်ကို သိ. အချို့အရေးပါမှုရှိတယ်လို့မြင်နိုင်ပါသည်။

ငါပေးပြီဥပမာအလွန်ရိုးရှင်းတဲ့ဖြစ်ကြသည်မဟုတ်တဦးတည်း shell ကို script ကိုအလှည့်အတွက်ထိုသူအပေါင်းတို့သည်ယခုကွဲပြားခြားနားသောအဆင့်ဆင့်မှာ running အခြား shell ကို script ကိုခေါ်ဆိုရသောအခြား shell ကို script ကိုဖုန်းဆက်ဖို့အတှကျကအတော်လေးဘုံဖြစ်ပါတယ်။ shell ကိုအဆင့်ကိုသိမှတ်ကြလော့အလွန်အရေးကြီးပါသည်နိုင်ပါတယ်။