Basic Unix Architecture

ก่อนอื่นต้องขอพูดถึงเรื่อง Basic Unix Architecture ก่อน ซึ่งองค์ประกอบหลักของ Unix ประกอบด้วย 3 ส่วนหลักๆ คือ

  • Kernel: เป็นเซ็ตของโปรแกรมที่ใช้สำหรับจัดการ และติดต่อกับอุปกรณ์ Hardware ต่างๆ
  • Shell: เป็น Command interpreter ที่ทำหน้าที่เชื่อมต่อระหว่างผู้ใช้งานกับ Kernel ตัวอย่าง shell เช่น sh, ksh, csh, bash
  • Utilities: เป็นคำสั่งที่ผู้ใช้งานสามารถเรียกใช้ได้บน Shell

สรุป Bourne SHell (sh) และ Bourne Again SHell (Bash) ก็คือ shell command-line interpreter ทั้งคู่

แล้ว sh กับ bash มันแตกต่างกันอย่างไร?

ถ้าว่ากันง่ายๆ เลย bash ก็คือ sh ที่ถูกใส่ฟีเจอร์เพิ่มเข้ามา เพื่อให้สามารถทำงานได้หลากหลายมากยิ่งขึ้น เช่น bash สามารถใช้ local variable ได้แต่ sh ทำไม่ได้

ในเมื่อ bash ดีว่า sh แล้วทำไมเรายังต้องใช้ sh อยู่อีกละ ?

เหตุผลที่ยังคงต้องใช้ sh อยู่ก็เพราะว่า:

  • sh มันเป็น shell command-line interpreter ที่เป็นมาตรฐานสำหรับ POSIX system ซึ่งเราสามารถใช้ script ที่เขียนด้วย sh ไปรันบน OS ที่ compatible กับ POSIX system ได้

Reference:

  • https://gist.github.com/mdeguzis/1d429ae8a8ccff78ea82
  • https://ragavwrittings.home.blog/2019/05/10/unix-is-always-ultimate/
  • https://medium.com/dolab/shell-script-eaff418b49a5
  • https://en.wikipedia.org/wiki/POSIX
Logo

更多推荐