เมื่อคุณเปิดเทอร์มินัลขึ้นมา อาจเป็นไปได้ว่าเทอร์มินัลจะใช้ Bash เป็นสภาพแวดล้อมเชลล์ UNIX แต่มีสภาพแวดล้อมแบบ "เชลล์" อื่นๆ อยู่
มีสภาพแวดล้อมอื่นๆ เช่น C Shell, Korn Shell, Z Shell และแม้แต่ Fish Shell สภาพแวดล้อมเชลล์ที่แตกต่างกันทั้งหมดเหล่านี้มีข้อดีและข้อเสียในตัวเอง และคุณควรพิจารณาสิ่งเหล่านี้ก่อนที่จะเลือกใช้บนระบบของคุณเอง
ในบทความนี้ ฉันจะพูดถึงเชลล์ยอดนิยมบางส่วนพร้อมกับคุณสมบัติหลักเพื่อช่วยคุณเลือกเชลล์หนึ่งตัว
เปลือกทุบตี
Bash Shell (หรือ Bourne Again Shell) เป็นเชลล์ UNIX และภาษาคำสั่ง เขียนโดย Brain Fox สำหรับโครงการ GNU เพื่อเป็นซอฟต์แวร์ทดแทนฟรีสำหรับ Bourne Shell (sh) ป>
Bash เปิดตัวครั้งแรกในปี 1989 และสำหรับ Linux ส่วนใหญ่จะใช้เป็นสภาพแวดล้อมเชลล์เริ่มต้น distros อื่นๆ เช่น Kali Linux จะใช้ Z Shell เป็นเชลล์เริ่มต้น ป>
Bash เป็นหนึ่งในโปรแกรมแรกๆ ที่ Linus Torvalds (ผู้สร้าง Linux) ย้ายไปยัง Linux ป>
แหล่งที่มาของภาพ ป>
สิ่งที่คุณไม่ควรสับสนก็คือ Bash ก็เป็นภาษาโปรแกรมเช่นกัน ดังนั้นจึงเป็น "Shell" แต่คุณสามารถตั้งโปรแกรมพฤติกรรมใน Bash ได้เช่นกัน ตัวอย่างเช่น:
#!/bin/bash
echo "Hello World"
ประเด็นสำคัญเกี่ยวกับ Bash
- ผู้ใช้ส่วนใหญ่ใช้ Bash เนื่องจากเป็นสภาพแวดล้อมเชลล์เริ่มต้นในระบบส่วนใหญ่
- Bash ไม่มีนิพจน์ตัวแทนแบบอินไลน์ นิพจน์ไวด์การ์ดคือเมื่อคุณต้องการค้นหารูปแบบใน Shell ของคุณ ซึ่งคล้ายกับ Regex ไวด์การ์ดหลักสามตัวคือ
03,15รหัส> และ21. - คุณไม่สามารถเปลี่ยนชื่อไดเรกทอรีได้โดยอัตโนมัติ
31รหัส> ถือเป็นความคิดเห็นในการเขียนสคริปต์- มี
49การตั้งค่า - Prompt มีเครื่องหมายแบ็กสแลช Escape
- การตั้งค่าการกำหนดค่าผู้ใช้อยู่ใน
56
เดอะ ซี เชลล์
Z Shell หรือ Zsh ก็เป็นเชลล์ UNIX ที่คล้ายกับ Bash มาก คุณยังสามารถเขียนสคริปต์และใช้เชลล์เป็นตัวแปลคำสั่งได้ ป>
Zsh เป็นส่วนขยายของเชลล์เป้าหมายที่มีการปรับปรุงมากมาย Zsh เปิดตัวในปี 1990 โดย Paul Falstad และมีคุณสมบัติบางอย่างที่ Bash, Korn Shell และ C Shell แบ่งปัน ป>
macOS ตามค่าเริ่มต้นจะใช้ Zsh Shell ป>
แหล่งที่มาของภาพ ป>
ประเด็นสำคัญเกี่ยวกับ Zsh
- มาพร้อมกับการเติมข้อความอัตโนมัติเมื่อใช้เทอร์มินัล ดังนั้นเมื่อคุณกด
61เพื่อเติมข้อความอัตโนมัติให้กับคำสั่งใดๆ ที่คุณต้องการเรียกใช้ ไม่เพียงแต่จะเติมข้อความอัตโนมัติให้คุณเท่านั้น แต่ยังดึงไฟล์และไดเร็กทอรีอื่นๆ ที่เป็นไปได้ทั้งหมดลงมา:

- รองรับนิพจน์ไวด์การ์ดแบบอินไลน์
- กำหนดค่าได้มากกว่า Bash
- รองรับปลั๊กอินและธีม นี่คือรายการปลั๊กอินสำหรับ Zsh
นอกจากนี้ยังมีเฟรมเวิร์กที่สร้างขึ้นรอบ ๆ Z Shell หนึ่งในสิ่งที่ได้รับความนิยมมากที่สุดคือ Oh My Zsh ซึ่งเป็นเฟรมเวิร์กโอเพ่นซอร์สที่ขับเคลื่อนโดยชุมชนสำหรับจัดการการกำหนดค่า Zsh (ฉันใช้ Oh My Zsh 😄)
แหล่งที่มาของภาพ ป>
Zsh และ Oh My Zsh มีความคล้ายคลึงกัน แต่ไม่เหมือนกันทุกประการ ขอย้ำอีกครั้งว่า Oh My Zsh เป็นวิธีการจัดการการกำหนดค่า Zsh ของคุณ ไม่ใช่ตัวเชลล์เอง ป>
เปลือกปลา
Fish เป็นสภาพแวดล้อมเชลล์ UNIX ที่เน้นการโต้ตอบและการใช้งาน ต่างจาก Zsh ตรงที่ Fish ตั้งเป้าที่จะให้การโต้ตอบกับผู้ใช้เป็นค่าเริ่มต้น แทนที่จะเชื่อใจผู้ใช้ให้นำการกำหนดค่าของตนเองไปใช้ ป>
มันถูกสร้างขึ้นโดย Axel Liljencrantz ในปี 2548 ปลาถือเป็น "เปลือกหอยที่แปลกใหม่" เนื่องจากมันไม่เป็นไปตามมาตรฐานเปลือกหอย POSIX [[ที่มา](https://en.wikipedia.org/wiki/Fish_(Unix_shell)]
แหล่งที่มาของภาพ ป>
ประเด็นสำคัญเกี่ยวกับปลา
- Fish มีคำแนะนำอัตโนมัติ "ค้นหาขณะที่คุณพิมพ์" ตามประวัติคำสั่งของคุณและไดเร็กทอรีที่คุณอยู่ เช่นเดียวกับการค้นหาประวัติของ Bash ประวัติการค้นหาของ Fish Shell นั้น เสมอ เปิดแล้ว ด้วยวิธีนี้ ผู้ใช้จะสามารถรับคำติชมแบบโต้ตอบได้เมื่อทำงานในเทอร์มินัลของตน
แหล่งที่มาของภาพ ป>
- Fish ยังชอบคุณสมบัติเป็นคำสั่งมากกว่าไวยากรณ์ ทำให้มองเห็นคุณสมบัติต่างๆ ในแง่ของคำสั่งพร้อมตัวเลือกและข้อความช่วยเหลือ
- เนื่องจากโดยค่าเริ่มต้น Fish มาพร้อมกับการกำหนดค่ามากมายที่ตั้งไว้แล้ว จึงเชื่อว่าเป็นมิตรกับผู้เริ่มต้นมากกว่า
76อื่นๆ ตัวเลือกเช่น Zsh - ภาษาสคริปต์ของ Fish แตกต่างจาก Zsh และ Bash Zsh ใช้นามแฝงมากกว่า ในขณะที่ Fish หลีกเลี่ยงการใช้นามแฝงในภาษาสคริปต์
หากคุณเพียงสร้างสคริปต์โดยใช้คำสั่งพื้นฐาน เช่น
ความแตกต่างที่ใหญ่ที่สุดประการหนึ่งคือเมื่อคุณพยายามจับเอาต์พุตจากคำสั่ง ใน Bash คุณอาจคุ้นเคยกับสิ่งนี้:
ในขณะที่ Fish การจับเอาต์พุตจะทำงานแตกต่างออกไป สิ่งที่เทียบเท่ากับ Fish ในการเขียนสคริปต์จะมีลักษณะดังนี้:
Bash, Z Shell และ Fish Shell ต่างก็มีข้อดีและมีความคล้ายคลึงกัน คุณสามารถใช้แต่ละอย่างได้อย่างมีประสิทธิภาพในสภาพแวดล้อมการทำงานของคุณตอนนี้เมื่อคุณรู้จักพวกเขามากขึ้นแล้ว ป>
หากคุณต้องการสิ่งที่กำหนดค่าได้มากขึ้น คุณสามารถใช้ Zsh (หรือแม้แต่ติดตั้ง Oh My Zsh) หากคุณต้องการประสบการณ์เทอร์มินัลแบบโต้ตอบมากขึ้นโดยไม่ต้องมีการกำหนดค่ามากนัก คุณสามารถใช้ Fish Shell ได้ หากคุณต้องการความรู้สึกคลาสสิก คุณสามารถเก็บ Bash ไว้ได้ ป>
ทั้งหมดนี้ขึ้นอยู่กับความชอบของคุณในฐานะนักพัฒนา ดังนั้นเพียงแค่เลือกเชลล์ที่เหมาะกับคุณที่สุด
หวังว่านี่จะช่วยคุณได้! ขอบคุณสำหรับการอ่าน 🐚🐚🐚
เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น 88 , 91รหัส> , 107รหัส> , 111รหัส> และอื่นๆ คุณจะไม่สังเกตเห็นความแตกต่างใดๆ ในภาษาสคริปต์ของ Fish และ Bash ป> todays_date=$(date)
echo "Todays date is $todays_date"

Todays Date is Tue Dec 13 15:29:28 CST 2022
set date (date)
echo "Todays Date $date"
todays date is Tue Dec 13 21:35:03 UTC 2022
บทสรุป