พอใจกับ Bash Shell บน Linux? หรืออยากลอง Alternative? มี tsch, fish, KornShell, Z Shell ให้เลือก แต่ Shell ไหน Best?
Linux Shell คืออะไร?
เขียน Application ภาษา High-level ที่มนุษย์เข้าใจ: C#, Java, C++ แต่ Computer มองเป็น 1s/0s (Binary/Machine Code)
Compiler แปลง High-level Language -> Binary File (Executable) รันไฟล์นี้เพื่อ Launch App
มุมมอง High-level: Computer ต้องการ Translation Layer ระหว่างคำสั่งของคุณและการเข้าใจของมัน
Shell = Interpreter คล้าย Compiler แปลง Human Code -> Machine Code แตกต่าง: Interpreter ทำทีละ Statement Compiler Scan ทั้งโปรแกรม แปลงทั้งหมด
Shell = Interface ให้คุณ Interact กับ OS พิมพ์คำสั่ง Shell Interpret ทำให้ Magic เกิดขึ้น Operations: Copy Files, Piping, List Files ทั้งหมดอยู่ใน Shell's Remit
Linux Shells หลายตัว พิมพ์ใน Terminal ดู Shells ทั้งหมดในระบบ:
cat /etc/shells
ดู Shell ปัจจุบัน:
echo $0
แต่คุณใช้ Best Linux Shell ไหม? มาดูตัวเลือก
1. Bash (Bourne-Again Shell)
Popular มากที่สุดใน Linux Users ไม่คิด Shells ได้โดยไม่มี Bash หลาย Distros Ship Bash Default เพราะ Bash = Default GNU Shell Released 1989 พัฒนามา दशক
Predecessor: Bourne Shell (sh) Original Unix Shells หนึ่ง Feature ดึงดูด sh Programmers: Port Scripts ไป Bash ได้โดยไม่เปลี่ยน Bash เพิ่ม Enhancements:
- Command Completion
- Command History
Online Docs มัก Assume ใช้ Bash แต่ไม่ได้ Perfect — ใครเขียน Bash Script รู้! ไม่ได้ทำไม่ได้ แต่ไม่อย่าง Elegante อ่าน/เขียน
2. KornShell (ksh)
Alternative ยอดนิยม จาก Bell Labs 1980s ความแตกต่างกับ Bash น้อย แต่แต่ละตัวมี Minor Advantages ksh มี cd old new Command: อยู่ /Downloads/foo/bar/one/foobar อยากไป /Downloads/foo/bar/two/foobar พิมพ์ cd one two
Ksh Veterans โปรโมท Superiority ด้วย Scripting Benefits:
- Better Loop Syntax
- Natural Ways to Repeat Commands
- Associative Arrays
ต่างจาก Bash: หา Help ksh ออนไลน์ยาก ลอง ksh:
sudo apt install ksh
ksh
3. Tcsh
Tcsh รากผิดไป Unix ต้นๆ Improved Version ของ C Shell (csh) Features:
- Programmable Command-line Completion
- Command-line Editing
- Adding Arguments to Aliases
- Easy Command History Access
รัน Command ใดๆ: พิมพ์ !n แทน n ด้วย Number ใน History History Tab Completion: !a -> Expand ไป Command ล่าสุดเริ่มต้น "a" เปรียบเทียบ Bash: !a:p ดู Command แล้ว !! รัน
ลอง tcsh:
sudo apt install tcsh
tcsh
Tcsh = Default Shell BSD-based (FreeBSD) Selling Point: Scripting Language เหมาะ Programming C -> Prototyping C Programs 小さくโดยไม่สับสน Brackets (ปัญหาเมื่อ Switch ระหว่าง C และ Shell Scripting)
4. Fish (Friendly Interactive Shell)
ในความจริงจังของ Linux ทีม Fish ใส่ Humor: Website Title "Finally, a command line shell for the 90s" (Fish พัฒนา 2005) นอกจาก "Glorious VGA Color" มี Enhancements:
- Commands Invalid Syntax = แดง
- Correct Syntax = น้ำเงิน
- Auto-complete Suggestions
- Command Completion Based on Man Pages บนเครื่อง
Feature นี้เพิ่ม Syntax จาก Man Page ของ Software ใหม่เข้า Auto-complete อยากคล่อง CLI -> Fish เริ่มต้นดี
ลอง Fish:
sudo apt install fish
fish
5. Z Shell (Zsh)
หลายคนคิดว่าที่ดีที่สุดไว้ท้าย เข้าใจได้ Zsh คล้าย Bash/Ksh รวม Features จากทั้งคู่ + tcsh Features:
- Navigable Autocompletion List
- Superior Spelling Correction
- Command Line Completion
- History Shared Across Terminals
- Globbing (Wildcard Characters สำหรับ Filenames)
Globbing ใน Zsh ใช้งานได้จริง พิมพ์: vim /u/l/b/a -> เปิดไฟล์: /usr/local/bin/autoupdate.sh
Zsh Config ใช้เวลาตอนแรกหากไม่ใช้ Default Config ลอง:
sudo apt install zsh
zsh
Linux Shell ไหนดีสำหรับคุณ?
ตัวเลือกเหล่านี้มีอยู่ = Brilliant แต่ละตัว = Glimpse Computing History ที่ Programmers ตัดสินใจทำ Dinge ของพวกเขา
ความแตกต่างสำคัญอยู่ที่ Scripting Syntax แต่ละ Shell มี Nuances แยกตัวตน Bash Dominate Market Share -> หา Help ง่ายที่สุด Bash = Best All-rounder ตอบสนองทุกคนยกเว้น Advanced Users มาก
เลือก Shell แล้ว -> เรียนรู้ Basics ของ Shell Scripting