Post

#06 What is Shell?

#06 What is Shell?

What is Shell?

  • အားလုံးပဲ မင်္ဂလာပါဗျာ။ ကျွန်တော် ဒီ post လေးမှာတော့ shell အကြောင်းလေးကို ပြောပြချင်ပါတယ်။

Image

  • Shell သည် command line interpreter ဖြစ်ပါတယ်။ Linux system ကို အသုံးပြုနေတဲ့ user နဲ့ kernel ကြားထဲမှာ interpreting ပြုလုပ်ပေးတဲ့ program လေး တစ်ခုပဲ ဖြစ်ပါတယ်။
  • ဆိုလိုတာက user က command တွေ run ချင်တဲ့အခါ၊ system resources တွေကို manage ပြုလုပ်ချင်တဲ့အခါ shell ကနေ တစ်ဆင့် linux kernel ကို ခိုင်းစေရတာ ဖြစ်ပါတယ်။ Kernel ကမှ တစ်ဆင့် hardware တွေကို ထပ်မံ ခိုင်းစေမှာ ဖြစ်ပါတယ်။
  • ဥပမာ user က date and time စစ်ချင်တဲ့အခါ terminal မှာ date command ကို ရိုက်ပြီး အလွယ်တစ်ကူ စစ်နိုင်ပါတယ်။ ဒါပေမဲ့ kernel က date command ကို တန်းပြီးနားလည်တာ မဟုတ်ပါဘူး။
  • kernel တစ်ကယ်နားလည်တာက /usr/bin/date ဆိုတဲ့ C language ကို အသုံးပြုပြီးရေးထားတဲ့ compiled ပြုလုပ်ထားပြီးသား executable binary file လေးကို ဘဲ နားလည်တာ ဖြစ်ပါတယ်။ အဲ့ဒီ file လေးကို တစ်ကယ် execute ပြုလုပ်ပေးတာက shell က ပြုလုပ်ပေးနေတာ ဖြစ်ပါတယ်။

Image

  • ဒါဆိုရင် shell ရဲ့ တာဝန်က user execute ပြုလုပ် လိုက်တဲ့ command binary file တွေကို ရှာဖွေ execute ပြုလုပ်ပေးတာ ဖြစ်ပါတယ်။
  • shell က environment variable တစ်ခုဖြစ်တဲ့ ${PATH} မှာ သတ်မှတ်ထားတဲ့ directory path လမ်းကြောင်းတွေမှာ user ရိုက်သမျှ command တွေကို ရှာဖွေ execute ပြုလုပ်ပေးနေမှာ ဖြစ်ပါတယ်။
  • Linux system တော်တော်များများမှာ command binary file အများစုကို /usr/bin /usr/sbin/ /usr/local/bin /usr/local/sbin /bin /sbin စတဲ့ directory path လမ်းကြောင်းတွေမှာ အများဆုံး သိမ်းပါတယ်။

Image

  • အပေါ်က example ကို ကြည့်ကြည့်ပါ။ Directory path တစ်ခုနဲ့ တစ်ခုကြားမှာ : လေး ခြားပြီး ရေးထားတာကို တွေ့ပါလိမ့်မယ်။

  • command တစ်ခုရဲ့ binary file location ကို သိချင်တယ်ဆိုရင် which command ကို အသုံးပြုပြီး စစ်ကြည့်နိုင်ပါတယ်။

Image

  • တစ်ကယ်လို့ user က command တစ်ခုခုကို မှား ရိုက်တာ ဖြစ်ဖြစ်၊ ဒါမှမဟုတ် shell ရှာဖွေ execute ပြုလုပ်ပေးနိုင်တဲ့ ${PATH} မှာ မရှိတဲ့ command တစ်ခုခုကို execute ပြုလုပ်မိတယ်ဆိုရင်တော့ “command not found” ဆိုပြီး standard error message လေး output ထုပ်ပေးမှာ ဖြစ်ပါတယ်။

Image

Checking the shell type of the current user

  • နောက်ပြီး ကိုယ် လက်ရှိ အသုံးပြုနေတဲ့ shell အမျိုးအစားကို သိလိုတဲ့အခါ echo ${0} ဒါမှမဟုတ် echo ${SHELL} command ကို အသုံးပြုပြီး စစ်ကြည့်နိုင်ပါတယ်။

Image

  • အထက်ပါ example ကို ကြည့်ချင်းအားဖြင့် လက်ရှိ user အသုံးပြုနေတဲ့ shell သည် bash shell အမျိုးအစား ဖြစ်ပါတယ်။

Checking the available shell type

  • ကိုယ် အသုံးပြုနေတဲ့ linux system မှာ pre installed ပြုလုပ်ထားတဲ့ shell အမျိုးအစားတွေကို သိလိုတဲ့အခါ cat /etc/shells command ကို အသုံးပြုပြီး စစ်ကြည့်နိုင်ပါတယ်။

Image

  • ကိုယ်လက်ရှိအသုံးပြုနေတဲ့ Shell အမျိုးအစား တစ်ခုက နေ တစ်ခြား Shell အမျိုးအစား တစ်ခုကို ပြောင်းလဲ အသုံးပြုချင်တဲ့အခါ ကိုယ်ပြောင်းလဲ အသုံးပြုချင်တဲ့ shell name ကို execute ပြုလုပ်ပြီး အလွယ်တကူ ပြောင်းလဲ အသုံးပြုနိုင်ပါတယ်။

Image

  • အပေါ်က example မှာဆိုရင် echo ${0} command ကို အသုံးပြုပြီး လက်ရှိအသုံးပြုနေတဲ့ shell အမျိုးအစားကို စစ်ကြည့်ပါတယ်။ လက်ရှိအသုံးပြုနေတာက bash အမျိုးအစား ဖြစ်ပါတယ်။ sh shell ကို ပြောင်းလဲ အသုံးပြုချင်တာ ဖြစ်တဲ့အတွက်ကြောင့် shell name sh ကို ရိုက်ပြီး ပြောင်းလဲ temporarily ပြောင်းလဲ အသုံးပြုနိုင်ပါတယ်။ အသုံးမပြုလိုတဲ့အခါ exit command ကို အသုံးပြုပြီး ပြန်ထွက်နိုင်ပါတယ်။

Type of Shells

  • Linux OS မှာ အကြမ်းမျဥ်းအားဖြင့် shell အမျိုးစား (၂) မျိုး ပါဝင်ပါတယ်။
  • Bourne Shell
    • $ သည် Bourne Shell ရဲ့ Default Prompt ဖြစ်ပါတယ်။
  • C shell
    • % သည် C shell ရဲ့ Default Prompt ဖြစ်ပါတယ်။
  • Bournce Shell မှာ လည်း အောက်ပါ အမျိုးအစားခွဲတွေ ရှိသေးတယ်။
    • Bournce Shell (sh)
    • Korn Shell (ksh)
    • Bourne-Again Shell ( bash )
  • Shell အမျိုးအစား တော်တော်များကို /bin ဒါမှမဟုတ် /usr/bin အောက်မှာ pre installed ပြုလုပ်ထားတာကို တွေ့နိုင်ပါတယ်။
  • Bournce Shell (sh)
    • sh shell က တော့ နှစ် အတော် ကြာကြာ Unix operating system တွေမှာ ကတည်းက အသုံးများတဲ့ shell အမျိုးအစား တစ်ခု ဖြစ်ခဲ့ပါတယ်။ Bell Labs က Stephen Bourne ကနေ developed ပြုလုပ်ခဲ့တာ ဖြစ်ပါတယ်။ standard shell လို့လည်း ခေါ်ခဲ့ပါသေးတယ်။
  • Bourne-Again-Shell ( Bash )
    • Bash shell ကတော့ sh ကို enhanced ပြုလုပ်ထားတဲ့ version ဖြစ်ပါတယ်။ sh shell မှာတုန်းက မပါဝင်ခဲ့တဲ့ added-on features တွေ ပါဝင်လာပါတယ်။
  • Bash shell မှာဆိုရင် sh shell မှာတုန်းက မပါဝင်ခဲ့တဲ့ features တွေ ဖြစ်တဲ့
    • Command History
    • Command Alias
    • Tab Completion
    • Job Control
    • Command-Line Editing စတဲ့ features တွေ ပါဝင်လာခဲ့ပါတယ်။
  • ဒါကြောင့် Bash ( Bourne-Again Shell ) ကတော့ အသုံးအများဆုံး၊ Popular အဖြစ်ဆုံး ဖြစ်ပြီး Linux Distribution တော်တော်များများမှာ Default အနေနဲ့ Pre-Installed ပါဝင်တာ ဖြစ်ပါတယ်။

  • နောက်ထပ် Shell အမျိုးအစား တစ်ခုကတော့ Zsh ( Z shell ) ပဲ ဖြစ်ပါတယ်။ Zsh shell ကလည်း bash ပေါ်မှာ အလုပ် လုပ်တာ ဖြစ်ပြီး bash shell ထက် additional features တွေ ပိုမို စုံလင်စွာ ပါဝင်တာ ဖြစ်ပါတယ်။
  • macOS နဲ့ Kali Linux တို့မှာတော့ zsh shell ကို default shell အနေနဲ့ အသုံးပြုတာ ဖြစ်ပါတယ်။

Comparison between Shells

Image

  • ကဲ ဒီလောက်ဆိုရင်တော့ shell နဲ့ ပတ်သတ်ပြီး နားလည် လောက်ပြီလို့ ထင်ပါတယ်။
This post is licensed under CC BY 4.0 by the author.