shell

Shell คืออะไร

ผู้ทีเริ่มใช้งาน Unix หรือ Linux อาจจะได้ยินคำว่า shell กันบ่อยๆ และจริงๆ shell คืออะไร หละ ?  ตามความหมายแล้วมันคือตัวแปลงคำสั่งที่ช่วยให้ผู้ใช้งานสามารถเข้าถึงระบบ operating system มีด้วยกัน 2 แบบคือ

  • CLI – Command line interface รับคำสั่งโดยข้อมูล text และแสดงผลในรูปแบบ text เช่นกัน
  • GUI – Graphical user interface รับคำสั่งโดยอาศัย mouse และ รูปบนจอ monitor

ขึ้นอยู่กับระบบ computer ที่ใช้งานว่าออกแบบมาสำหรับงานประเภทไหน โดยคำว่า “shell” มีที่มาจากการที่มันทำหน้าที่เป็น layer ครอบคลุมการทำงานของ Kernel อีกที

shell-kernel

 

ส่วนมากแล้ว ตัว shell ไม่ได้มีการเชื่อมต่อโดยตรงภายใต้ Kernel ถึงแม้ว่าตัว shell จะสื่อสารกับผู้ใช้งานผ่านทางอุปกรณ์ที่เชื่อมต่อกับ computer แต่ shell ก็ยังคงใช้ Kernel API เหมือนๆกับ application ที่ใช้งานกัน โดย shell จะเข้ามาบริการจัดการระบบโดยอาศัยการแปลงคำสั่งที่ user ป้อนเข้ามา และนำผลลัพธ์กลับไปแสดง ซึ่งการที่ shell ทำงานเหมือน application ทำให้ง่ายต้องการเปลี่ยนแปลงไปใช้ application อื่นที่ทำงานเหมือนกัน นอกจากนี้สำหรับ shell ที่ทำงานในดับภายใน (local system) ยังมีวิธีในการที่ผู้ใช้งานภายนอกสามารถเข้ามาใช้งานได้โดยอาศัย remote access เช่น secure shell protocol ที่นิยมใช้งานกันในรูปแบบ text command line และก็ยังมี remote desktop ที่ใช้งานแบบ GUI ให้สามารถเข้ามา remote จัดการได้จากภายนอก

 

Text Shell (CLI)

Command-line interface หรือ CLI เป็น shell ชนิดเริ่มแรกที่อาศัยเพียง keyboard ในการทำงานส่งข้อมูลให้กับ OS เช่น การ load ข้อมูล application, แสดงข้อมูล file หรือ เก็บข้อมูลของผู้ใช้งานเอง โดยระบบปฏิบัติการ (OS) ประเภท Unix มักจะมีจำนวน Shell program ที่หลากหลายชนิดมาก ด้วยความหลากหลายของคำสั่ง รวมถึง ความสามารถต่างๆที่แต่กต่างกัน แต่สำหรับบาง OS ก็อาจจะมี CLI แค่ชนิดเดียวเช่น MS-DOS

ลักษณะของ shell prompt คือ $ หรือมักเรียกกันว่า command prompt เมื่อ prompt นี้แสดงขึ้นมาแสดงว่าระบบเตรียมรอรับคำสั่ง โดย shell จะอ่านจาก input ข้อมูลที่ผู้ใช้ป้อนเข้าไปก่อน enter และทำงานด้วยวิธีตรวจสอบข้อมูลของคำแรกที่ป้อนเข้าว่าคำนั้นไม่ใช้กลุ่มตัวอักษรที่ไม่มีความหมาย รวมถึง space และ tab

  • Bourne shell (sh)
  • Debian Almquist shell (dash)
  • Bourne-Again shell (bash)
  • C shell (csh)

Shell ทำการอ่านค่า configure file ตามสภาพแวดล้อมที่ต่างกันของ shell โดย file พวกนี้มักจะประกอบด้วยคำสั่งเฉพาะของ shell แต่ละชนิด รวมถึงพวกตัวแปรต่างๆ และก็รูปลักษณ์ที่แสดงออกมา ตารางต่อไปนี้แสดงให้เห็นถึง configure file ของ shell แต่ละชนิด

 

sh ksh csh tcsh bash zsh
  /etc/.login     login login    
  /etc/csh.cshrc     yes yes    
  /etc/csh.login     login login    
  ~/.tcshrc       yes    
  ~/.cshrc     yes yes    
  ~/etc/ksh.kshrc   int.        
  /etc/sh.shrc int          
  $ENV (typically ~/.kshrc) int. int.     int.  
  ~/.login     login login    
  ~/.logout     login login    
  /etc/profile login login     login login
  ~/.profile login login     login login
  ~/.bash_profile         login  
  ~/.bash_login         login  
  ~/.bash_logout         login  
~/.bashrc         int.+n/login  
  /etc/zshenv           yes
  /etc/zprofile           login
  /etc/zshrc           int.
  /etc/zlogin           login
  /etc/zlogout           login
  ~/.zshenv           yes
  ~/.zprofile           login
  ~/.zshrc           int.
  ~/.zlogin           login

 

Graphical shell

Graphical shell หลักๆมีการใช้งานอยู่บน GUI ซึ่งเป็น graphical user interface โดยจะอนุญาตให้ผู้ใช้งานสามารถเข้าถึง เปิด ปิด หรือโยกย้าย รวมถึงย่อขนาดของ windows ได้ ส่วนมากแล้ว GUI จะมีลักษณะที่ประกอบด้วย desktop environment, start menu และ task bar อย่างที่เราคุ้นเคยในการใช้งาน window OS ตัวอย่างเช่น

  • Window 3.x series
  • Window 95 , NT
  • Window XP
  • Linux Desktop

 

 

Reference

 

Author: Suphakit Annoppornchai

Credit: https://saixiii.com, https://en.wikipedia.org

3 Thoughts to “Shell คืออะไร Unix Shell หรือ Linux Shell คือ โปรแกรมรับคำสั่งให้กับ Kernel”

  1. […] Script คือ การทำงานในแบบ Command-line interopreter ผ่าน Shell ทำงานได้เปรียบเสมือนภาษา program […]

Leave a Reply