ความแตกต่างระหว่าง Bash, Zsh และ Linux เชลล์อื่น ๆ คืออะไร
การแจกแจง Linux ส่วนใหญ่จะรวม bash shell ไว้ตามค่าเริ่มต้น แต่คุณสามารถเปลี่ยนไปใช้สภาพแวดล้อมของเชลล์อื่นได้ Zsh เป็นทางเลือกที่ได้รับความนิยมเป็นพิเศษและมีเปลือกหอยอื่น ๆ เช่นขี้เถ้าประปลาและ tcsh แต่ความแตกต่างคืออะไรและทำไมจึงมีมากมาย?
Shells ทำอะไรได้บ้าง?
เมื่อคุณลงชื่อเข้าใช้ที่บรรทัดคำสั่งหรือเปิดหน้าต่างเทอร์มินัลบน Linux ระบบจะเปิดโปรแกรมเชลล์ เชลล์เสนอวิธีการมาตรฐานในการขยายสภาพแวดล้อมของบรรทัดคำสั่ง คุณสามารถสลับเปลือกเริ่มต้นสำหรับอีกอันได้ถ้าต้องการ.
สภาพแวดล้อมของเชลล์ตัวแรกคือ Thompson Shell พัฒนาขึ้นที่ Bell Labs และเปิดตัวในปีพ. ศ. 2514 สภาพแวดล้อมของเชลล์ได้รับการพัฒนาจากแนวคิดนับตั้งแต่นั้นมาได้เพิ่มคุณสมบัติใหม่ ๆ การใช้งานและการปรับปรุงความเร็วที่หลากหลาย.
ตัวอย่างเช่น Bash เสนอคำสั่งและชื่อไฟล์ให้เสร็จสมบูรณ์คุณสมบัติการเขียนสคริปต์ขั้นสูงประวัติคำสั่งสีที่กำหนดค่าได้นามแฝงคำสั่งและคุณสมบัติอื่น ๆ ที่หลากหลายซึ่งไม่สามารถใช้งานได้ในปี 1971 เมื่อปล่อยเชลล์แรก.
เชลล์ยังใช้ในเบื้องหลังโดยบริการระบบต่างๆ การแจกแจง Linux ประกอบด้วยฟังก์ชั่นมากมายที่เขียนเป็นเชลล์สคริปต์ สคริปต์เหล่านี้เป็นคำสั่งและฟังก์ชั่นการเขียนสคริปต์เชลล์ขั้นสูงอื่น ๆ ที่ทำงานผ่านสภาพแวดล้อมของเชลล์.
เชลล์ที่นำไปสู่ Bash: sh, csh, tsh และ ksh
ต้นกำเนิดที่โดดเด่นที่สุดของเชลล์สมัยใหม่คือเชลล์ Bourne หรือที่รู้จักกันในนาม "sh" ซึ่งได้รับการตั้งชื่อตามผู้สร้างสตีเฟ่นบอร์นซึ่งทำงานที่ AT & T's Bell Labs เปิดตัวในปี 1979 มันกลายเป็นล่ามคำสั่งเริ่มต้นใน Unix เพราะมันรองรับการทดแทนคำสั่ง, ไพพ์, ตัวแปร, การทดสอบเงื่อนไขและลูปพร้อมกับคุณสมบัติอื่น ๆ มันไม่ได้มีการปรับแต่งมากนักสำหรับผู้ใช้และไม่สนับสนุนนิคส์สมัยใหม่เช่นนามแฝงการเติมคำสั่งและฟังก์ชั่นเชลล์ (แม้ว่าอันนี้จะถูกเพิ่มเข้าไปในที่สุด).
C เชลล์หรือ“ csh” ได้รับการพัฒนาในช่วงปลายทศวรรษ 1970 โดย Bill Joy ที่ University of California, Berkley มันเพิ่มองค์ประกอบแบบโต้ตอบจำนวนมากซึ่งผู้ใช้สามารถควบคุมระบบของพวกเขาเช่นนามแฝง (ทางลัดสำหรับคำสั่งยาว) ความสามารถในการจัดการงานประวัติคำสั่งและอื่น ๆ มันถูกจำลองจากภาษาการเขียนโปรแกรม C ซึ่งระบบปฏิบัติการ Unix นั้นถูกเขียนขึ้นเองซึ่งหมายความว่าผู้ใช้เชลล์เป้าหมายต้องเรียนรู้ C เพื่อให้สามารถป้อนคำสั่งได้ นอกจากนี้ csh ยังมีข้อบกพร่องบางอย่างที่ผู้ใช้และผู้สร้างต้องตะลุยกันเป็นระยะเวลานาน ผู้คนลงเอยด้วยการใช้ Bourne shell สำหรับสคริปต์เพราะมันจัดการกับคำสั่งที่ไม่ใช่แบบโต้ตอบได้ดีขึ้น แต่ติดกับ C เชลล์สำหรับการใช้งานปกติ.
เมื่อเวลาผ่านไปผู้คนจำนวนมากแก้ไขข้อผิดพลาดในและเพิ่มคุณสมบัติให้กับ C เชลล์ซึ่งปิดท้ายด้วย csh รุ่นปรับปรุงที่รู้จักกันในชื่อ "tcsh" แต่ csh ยังคงเป็นค่าเริ่มต้นในคอมพิวเตอร์ที่ใช้ Unix และได้เพิ่มคุณสมบัติบางอย่างที่ไม่ได้มาตรฐาน David Korn จาก Bell Labs ทำงานกับ KornShell หรือ "ksh" ซึ่งพยายามปรับปรุงสถานการณ์โดยการใช้งานร่วมกับภาษาของ Bourne shell ได้ แต่ใช้คุณสมบัติหลายอย่างจาก csh shell มันได้รับการปล่อยตัวในปี 1983 แต่ภายใต้ใบอนุญาตกรรมสิทธิ์ มันไม่ใช่ซอฟต์แวร์ฟรีจนถึงยุค 2000 เมื่อมีการเปิดตัวภายใต้ใบอนุญาตโอเพนซอร์ซต่างๆ.
กำเนิดของทุบตี
อินเตอร์เฟสของระบบปฏิบัติการแบบพกพาสำหรับ Unix หรือ POSIX เป็นอีกคำตอบของการใช้งาน csh ที่เป็นกรรมสิทธิ์ มันประสบความสำเร็จในการสร้างมาตรฐานสำหรับการตีความคำสั่ง (เหนือสิ่งอื่นใด) และในที่สุดก็สะท้อนคุณสมบัติมากมายใน KornShell ในเวลาเดียวกันโครงการ GNU พยายามสร้างระบบปฏิบัติการ Unix ที่ใช้งานได้ฟรี โครงการ GNU พัฒนาเชลล์ซอฟต์แวร์ฟรีเพื่อเป็นส่วนหนึ่งของระบบปฏิบัติการฟรีและตั้งชื่อว่า "Bourne Again Shell" หรือ "bash".
Bash ได้รับการปรับปรุงในทศวรรษที่ผ่านมานับตั้งแต่เปิดตัวครั้งแรกในปี 1989 แต่ก็ยังคงเป็นเชลล์เริ่มต้นสำหรับการกระจาย Linux ส่วนใหญ่ในปัจจุบัน เป็นเชลล์เริ่มต้นบน macOS ของ Apple และสามารถติดตั้งใน Windows 10 ของ Microsoft ได้.
ใหม่กว่า Shells: ash, dash, zsh และ fish
ในขณะที่ชุมชน Linux ได้ตัดสิน Bash มาหลายปีแล้ว แต่นักพัฒนาไม่ได้หยุดสร้างเชลล์ใหม่เมื่อ Bash เปิดตัวครั้งแรกเมื่อ 28 ปีที่แล้ว.
Kenneth Almquist สร้าง Bourne shell clone ที่รู้จักกันในชื่อ Almquish shell, A Shell,“ ash” หรือบางครั้งก็แค่“ sh” มันยังรองรับ POSIX และกลายเป็นเชลล์เริ่มต้นใน BSD ซึ่งเป็นสาขาที่แตกต่างของ Unix เปลือกเถ้ามีน้ำหนักเบากว่าทุบตีซึ่งทำให้เป็นที่นิยมในระบบ Linux ที่ฝังตัว หากคุณมีโทรศัพท์ Android รูทที่ติดตั้ง BusyBox หรืออุปกรณ์อื่น ๆ ที่มีชุด BusyBox ของซอฟต์แวร์ - มันใช้รหัสจากเถ้า.
Debian พัฒนาสภาพแวดล้อมของเชลล์ขึ้นกับขี้เถ้าและเรียกมันว่า "เส้นประ" มันถูกออกแบบมาให้เป็นไปตาม POSIX และน้ำหนักเบาดังนั้นจึงเร็วกว่า Bash แต่ไม่มีคุณสมบัติทั้งหมด Ubuntu ใช้เปลือกประเป็นเปลือกเริ่มต้นสำหรับงานที่ไม่ต้องมีการโต้ตอบเพิ่มความเร็วเชลล์สคริปต์และงานอื่น ๆ ที่ทำงานในพื้นหลัง อย่างไรก็ตามอูบุนตูยังคงใช้ bash สำหรับเชลล์เชิงโต้ตอบดังนั้นผู้ใช้ยังคงมีสภาพแวดล้อมแบบอินเทอร์แอคทีฟเต็มรูปแบบ.
หนึ่งในเชลล์ที่ใหม่กว่าที่นิยมมากที่สุดคือ Z shell หรือ“ zsh” สร้างโดย Paul Falstad ในปี 1990 zsh เป็นเชลล์สไตล์ Bourne ที่มีฟีเจอร์ที่คุณจะพบในการทุบตีและอีกมาก ตัวอย่างเช่น zsh มีการตรวจสอบการสะกดคำ, ความสามารถในการดูการเข้าสู่ระบบ / การออกจากระบบ, คุณสมบัติการเขียนโปรแกรมในตัวบางอย่างเช่น bytecode, รองรับสัญลักษณ์ทางวิทยาศาสตร์ในรูปแบบไวยากรณ์, อนุญาตให้ใช้เลขทศนิยมแบบลอยตัวและคุณสมบัติอื่น ๆ.
เชลล์ที่ใหม่กว่าอีกอันคือ Friendly Interactive Shell หรือ“ fish” ซึ่งเปิดตัวในปี 2005 มันมีไวยากรณ์บรรทัดคำสั่งที่ไม่เหมือนใครซึ่งออกแบบมาให้เรียนรู้ได้ง่ายขึ้นเล็กน้อย แต่ไม่ได้มาจาก Bourne shell หรือ C เชลล์ มันเป็นแนวคิดที่น่าสนใจ แต่สิ่งที่คุณเรียนรู้จากการใช้ปลาไม่จำเป็นต้องช่วยให้คุณใช้ทุบตีและเปลือกหอยที่ได้มาจากบอร์นอื่น ๆ.
คุณควรเลือกแบบไหน (และทำไม Zsh ถึงได้รับความนิยม)
คุณไม่จำเป็นต้องเลือกเปลือก ระบบปฏิบัติการของคุณเลือกเชลล์เริ่มต้นสำหรับคุณและตัวเลือกนั้นจะถูกทุบตีเกือบตลอดเวลา นั่งลงหน้าลินุกซ์หรือแม้แต่ Mac และคุณมักจะมีสภาพแวดล้อมของเชลล์ bash Bash มีคุณสมบัติขั้นสูงค่อนข้างน้อย แต่คุณอาจจะไม่ใช้มันเว้นแต่ว่าคุณจะเขียนโปรแกรมเชลล์สคริปต์.
ในระบบ Linux หรือระบบ BSD แบบฝังคุณจะต้องจบลงด้วยเถ้าเชลล์ แต่เถ้าเป็นเปลือกแบบบอร์นและส่วนใหญ่เข้ากันได้กับการทุบตี ความรู้ใด ๆ ที่คุณมีจากการใช้ bash จะถ่ายโอนไปยังการใช้ขี้เถ้าหรือประเปลือกแม้ว่าคุณสมบัติการเขียนสคริปต์ขั้นสูงบางอย่างไม่สามารถใช้ได้ในเปลือกที่มีน้ำหนักเบานี้.
เชลล์เกือบทุกตัวที่คุณพบนั้นใช้บอร์นและทำงานในลักษณะเดียวกันรวมถึง zsh.
นั่นเป็นเหตุผลที่ zsh ได้รับความนิยม เชลล์รุ่นใหม่นี้เข้ากันได้กับ bash แต่มีคุณสมบัติเพิ่มเติม เชลล์ zsh เสนอการแก้ไขการสะกดคำในตัวปรับปรุงบรรทัดคำสั่งที่ปรับปรุงให้ดีขึ้นโมดูลที่โหลดได้ซึ่งทำหน้าที่เป็นปลั๊กอินสำหรับเชลล์นามแฝงส่วนกลางที่ให้คุณนามแฝงชื่อไฟล์หรืออะไรก็ได้ในบรรทัดคำสั่งแทนที่จะเป็นเพียงคำสั่งและ สนับสนุนชุดรูปแบบเพิ่มเติม มันเหมือนกับทุบตี แต่ด้วยคุณสมบัติพิเศษมากมายคุณสมบัติเพิ่มเติมและตัวเลือกที่กำหนดค่าได้คุณอาจชื่นชมถ้าคุณใช้เวลามากที่บรรทัดคำสั่ง.
หากคุณคุ้นเคยกับ bash คุณสามารถสลับไปที่ zsh โดยไม่ต้องเรียนรู้ไวยากรณ์ที่แตกต่างกัน - คุณจะได้รับคุณสมบัติเพิ่มเติม หากคุณคุ้นเคยกับ zsh คุณสามารถเปลี่ยนไปใช้ bash โดยไม่ต้องเรียนรู้ไวยากรณ์ที่แตกต่าง - คุณจะไม่สามารถเข้าถึงคุณลักษณะเหล่านั้นได้.
“ Oh My ZSH” เป็นเครื่องมือที่ช่วยให้คุณเปิดใช้งานปลั๊กอิน zsh ได้ง่ายขึ้นและสลับไปมาระหว่างธีมที่สร้างไว้ล่วงหน้าปรับแต่งเปลือก zsh ของคุณได้อย่างรวดเร็วโดยไม่ต้องเสียเวลาปรับแต่งอะไรมากมาย.
มีกระสุนอื่น ๆ ด้วย ตัวอย่างเช่นเปลือก tcsh ยังคงอยู่รอบ ๆ และยังคงเป็นตัวเลือก FreeBSD ใช้ tsch เป็นรูทเชลล์เริ่มต้นและแอชเป็นเชลล์แบบโต้ตอบเริ่มต้น หากคุณใช้การเขียนโปรแกรม C เป็นประจำ tsch อาจเหมาะสำหรับคุณมากขึ้น อย่างไรก็ตามไม่มีที่ไหนใกล้ที่ใช้กันโดยทั่วไปว่าเป็น bash หรือ zsh.
วิธีการสลับระหว่างเชลล์
ง่ายที่จะเปลี่ยนเป็นเชลล์ใหม่เพื่อทดลองใช้ เพียงแค่ติดตั้งเชลล์จากตัวจัดการแพ็กเกจการแจกจ่าย Linux ของคุณและพิมพ์คำสั่งเพื่อเรียกใช้เชลล์.
ตัวอย่างเช่นสมมติว่าคุณต้องการลอง zsh บน Ubuntu คุณจะเรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งแล้วเปิดมัน:
sudo apt ติดตั้ง zsh zsh
จากนั้นคุณจะนั่งที่เปลือก zsh ประเภท” ทางออก
” ที่เปลือกเพื่อทิ้งไว้และกลับสู่เปลือกปัจจุบันของคุณ.
นี่เป็นเพียงชั่วคราว เมื่อใดก็ตามที่คุณเปิดหน้าต่างเทอร์มินัลใหม่หรือลงชื่อเข้าใช้ระบบของคุณที่บรรทัดคำสั่งคุณจะเห็นเชลล์เริ่มต้นของคุณ ในการเปลี่ยนเปลือกที่คุณเห็นเมื่อคุณลงชื่อเข้าใช้ในชื่อของเปลือกเข้าสู่ระบบ - โดยทั่วไปคุณสามารถใช้ chsh
, หรือ "เปลี่ยน Shell" คำสั่ง.
ในการใช้คำสั่งนี้คุณจะต้องค้นหาเส้นทางแบบเต็มไปยังเชลล์ด้วยคำสั่ง which ตัวอย่างเช่นสมมติว่าเราต้องการเปลี่ยนเป็นเชลล์ zsh เราจะเรียกใช้คำสั่งต่อไปนี้:
อันไหน
บน Ubuntu นี่บอกเราว่าไบนารี zsh ถูกเก็บไว้ที่ / usr / bin / zsh.
เรียกใช้คำสั่งต่อไปนี้ป้อนรหัสผ่านของคุณแล้วคุณจะได้รับแจ้งให้เลือกเชลล์ล็อกอินใหม่:
chsh
ตามคำสั่งข้างต้นเราจะป้อน / bin / usr / zsh
. เชลล์ zsh จะเป็นค่าเริ่มต้นของเราจนกว่าเราจะรัน chsh
คำสั่งและเปลี่ยนมันกลับมา.