ทำไมทุบเปลือกเริ่มต้นในระบบปฏิบัติการส่วนใหญ่ (Ubuntu, Fedora, OSX ฯลฯ ) เหตุใดผู้ใช้ขั้นสูงจำนวนมากจึงมักใช้ zsh หากเป็นสิ่งที่ดีทำไมจึงไม่เป็นค่าเริ่มต้น
ฉันใช้ทั้งฉันไม่เห็นความแตกต่างสำหรับงานทั้งหมดของฉันง่าย :)
ทำไมทุบเปลือกเริ่มต้นในระบบปฏิบัติการส่วนใหญ่ (Ubuntu, Fedora, OSX ฯลฯ ) เหตุใดผู้ใช้ขั้นสูงจำนวนมากจึงมักใช้ zsh หากเป็นสิ่งที่ดีทำไมจึงไม่เป็นค่าเริ่มต้น
ฉันใช้ทั้งฉันไม่เห็นความแตกต่างสำหรับงานทั้งหมดของฉันง่าย :)
คำตอบ:
ฉันได้อ่านเกี่ยวกับเรื่องนี้และข้อสรุปที่น่าจะเป็นว่าเป็นเชลล์เริ่มต้นของGNU (ใช้โดย Linux ส่วนใหญ่ที่ใช้ระบบปฏิบัติการ) และดังนั้นจึงมาเป็นแพคเกจที่เป็นส่วนหนึ่งของ GNU ในขณะที่มีการพัฒนา 20 ปี มีเสถียรภาพและกลมกลืนเป็นสิ่งที่ดีที่สุดสำหรับทุกคนรอบตัวตอบสนองความต้องการของทุกคน แต่เป็นผู้ใช้ขั้นสูง
อ่านเพิ่มเติมทำไม bash standard บน Linux? (คำถามเดียวกันใน Unix & Linux)
เพียงเพิ่มนิดหน่อยก็มี shell อื่น ๆ ให้ลองถ้าคุณสนใจนี่คือตัวอย่างจากคำตอบนี้ :
Zshมีสิ่งอำนวยความสะดวกแบบอินเทอร์แอคทีฟที่ทันสมัยกว่า แต่ก็มีเรื่องแปลกๆ เล็กน้อยเมื่อพูดถึงการเขียนสคริปต์ ในช่วงต้นถึงกลางปี 1990 เมื่อลีนุกซ์อยู่ในช่วงเริ่มต้น, zsh ไม่เป็นที่รู้จักอย่างแท้จริง
Kshเป็นมาตรฐานอย่างแท้จริงเกี่ยวกับการทำธุรกรรมเชิงพาณิชย์มาตั้งแต่กลางทศวรรษ 1980 แต่เป็นซอฟต์แวร์ที่เป็นกรรมสิทธิ์จนถึงปี 2000 ดังนั้นจึงไม่ใช่ตัวเลือกบน Linux นอกจากนี้ ksh มีความสามารถในการแก้ไขบรรทัดคำสั่ง subpar เทียบกับ bash
pdkshโคลนนิ่งฟรี ksh จะได้รับตัวเลือก แต่มันก็ไม่ได้รู้จักกันดีและมีความสามารถในบรรทัดคำสั่งฉบับที่ยากจน (Pdksh ไม่ได้เป็นโครงการที่ใช้งานได้อีกต่อไปแม้ว่าจะยังคงใช้ใน BSD บางส่วนตอนนี้ ATT ksh ฟรี)
กระจายบางติดตั้ง เถ้า
/bin/sh
ตัวแปรเป็น Ash (โดยที่ฉันหมายถึงเปลือกหอยหลวม ๆ ที่เรียกว่า ash) ได้รับการออกแบบให้มีขนาดเล็กและรวดเร็วโดยไม่มีคุณลักษณะแบบโต้ตอบ (เป็นเพียงสคริปต์แก้ไขเท่านั้น) การฟื้นตัวของเถ้าค่อนข้างเร็ว ในปี 1990 ตัวแปรที่มีอยู่ขาดคุณสมบัติมากมายtcshเป็นเปลือกโต้ตอบที่ทันสมัยที่สุดจนกว่า zsh มาพร้อม แต่มันไม่เข้ากันกับการดวลจุดโทษและไม่ดีกับการเขียนสคริปต์
The Bourne Shell ( ดวลจุดโทษกลับในวันที่) ของ AT & T สาขาของยูนิกซ์ได้รับการปรับปรุงให้ดีขึ้นและแทนที่ด้วย Korn Shell, ksh ksh ยังมาจาก AT & T Bell Labs และไม่ใช่ GPL (รุ่นปัจจุบันคือ Eclipse Public License) C-shell, cshออกมาจากรุ่นUnkelของ Berkeley และยังไม่ใช่ GPL (BSD license) และใช้ไวยากรณ์ที่แตกต่างจาก sh Z-เปลือกzshคือการปรับปรุงในการดวลจุดโทษ แต่ไม่ GPL (MIT เหมือนใบอนุญาต) Bash เป็นการปรับปรุงโดยใช้ GPL และจาก GNU ใบอนุญาตเพียงอย่างเดียวทุบตีอาจจะเป็นทางเลือกสำหรับระบบปฏิบัติการ GPL โดยเฉพาะอย่างยิ่งกับเปลือกหอยที่เป็นส่วนหลักของ distro
แต่แบชก็เป็นโครงการ GNU ด้วยฉันคิดว่าการพัฒนาที่กระตือรือร้นมากขึ้นและการมีส่วนร่วมได้ง่ายกว่าผลิตภัณฑ์ที่สืบทอดจาก Berkeley Unix หรือ AT&T Unix กรณีที่ดีมากอาจทำให้ zsh เป็นและเป็นเชลล์ที่ดีกว่า Bash แต่ก็ไม่เพียงพอที่จะเอาชนะใบอนุญาตที่แตกต่างกันและสถานะโครงการที่ไม่ใช่ของ GNU
ย้อนกลับไปเมื่อ Linux distros ปรากฏตัวครั้งแรกและเลือกเชลล์เริ่มต้น (ช่วงต้นถึงกลาง 90 วินาที) ไม่มี github (2008) หรือแม้แต่ SourceForge (1999) ณ จุดนั้นฉันคิดว่าโครงการ GNU มีข้อได้เปรียบเหนือโครงการที่ไม่ใช่ของ GNU ในการสังเกตและวาดรูปรวมถึงนักพัฒนาใหม่ ดังนั้น distros สามารถดู Z-shell ได้ดีกว่า แต่ก็คาดหวังว่า Bash จะได้รับการสนับสนุนและการบำรุงรักษาที่ดีต่อไปและยังมีคุณสมบัติอื่น ๆ อีกมากมายที่เพิ่มเข้ามาทำให้สามารถติดตาม zsh ได้
ตอนนี้ Bash มีสถานะเริ่มต้นเป็นเวลาหลายปีมันกลายเป็นมาตรฐาน defacto โดยมีหนังสือที่เขียนเกี่ยวกับเรื่องนี้ มีหนังสือเล่มหนึ่งที่ครอบคลุมทั้ง Bash และ Z-shellแต่ไม่มีหนังสือที่ครอบคลุมเฉพาะในขณะที่มีหนังสือหลายเล่มที่ทำเพื่อ Bash
และ ณ จุดนี้หาก distros เปลี่ยนค่าเริ่มต้นสำหรับการอัพเกรดของระบบที่มีอยู่มันจะหยุดการตั้งค่าเนื่องจากไฟล์เริ่มต้นบางไฟล์มีชื่อแตกต่างกัน (เช่น. bashrc เทียบกับ. zshrc) และเนื้อหาของไฟล์อาจมีไวยากรณ์ที่เข้ากันไม่ได้ ดังนั้นพวกเขาจะไม่เต็มใจที่จะทำเช่นนั้นปล่อยให้การดาวน์โหลดใหม่มี zsh เป็นค่าเริ่มต้นและอัปเกรดเพื่อทุบตี สองค่าเริ่มต้นที่แตกต่างกันสำหรับ distro เดียวกันคือสิ่งที่พวกเขาอาจไม่ต้องการให้การสนับสนุนและผู้ใช้ / บริษัท ก็ไม่ต้องการที่จะจัดการเช่นกัน
ภาษาของ Unix shell น่าเกลียดทั้งหมด บางคนโดยเฉพาะ ( csh
) บางคนอาจจะน้อยกว่านี้ ( ksh
? ฉันไม่รู้จริง ๆ ) แต่จริงๆแล้วเมื่อพูดถึงแง่มุมต่าง ๆ เช่นความสามารถในการอ่านและความแข็งแกร่งสำหรับโครงการขนาดใหญ่ Python, C # หรือ Haskell ดังนั้นเมื่อคุณต้องการบางอย่างที่เป็นของแข็งคุณจะไม่เลือกรสชาติของเปลือกหอยเลย
คุณจะเลือกพวกเขาเมื่อคุณต้องการที่จะได้รับสิ่งที่ง่าย สำหรับสิ่งนี้คุณต้อง:
sh
ความเข้ากันได้เป็นข้อดีอย่างมากที่นี่และยิ่งได้รับความนิยมมากเท่าไรดังนั้นคุณจะเห็นว่าความนิยมนั้นเป็นประเด็นที่ใหญ่กว่าในภาษาเชลล์เหล่านี้มากกว่าภาษาที่มีวัตถุประสงค์ทั่วไป ดังนั้นแม้ว่าksh
จะเป็น“ ดีขึ้น” เป็นภาษาในตัวเอง แต่ก็ไม่มีการให้คำแนะนำในการใช้มันหากbash
เป็นที่นิยมมากขึ้นเล็กน้อย (ซึ่งเป็นในภาคที่เกี่ยวข้องเนื่องจากมันถูกเลือกเป็นค่าเริ่มต้นเป็นครั้งแรก สำหรับ GNU)
คนที่ทำสวิตช์นั้นจะพิจารณาอย่างรอบคอบและมีประสบการณ์มากพอที่จะจัดการกับการสลับไปยังเชลล์ที่พวกเขาชื่นชอบได้อย่างง่ายดาย OTOH มือใหม่ที่ถูกบังคับให้ทำงานกับกระสุนที่ได้รับความนิยมน้อยกว่าจะสับสนอย่างรวดเร็วหากพวกเขาขออะไรจากอินเทอร์เน็ตและมันไม่ทำงาน ดังนั้น distro ใด ๆ ที่ไม่เพียง แต่มุ่งเป้าไปที่ทหารผ่านศึกของ Unix จะมีความเสี่ยงค่อนข้างมากถ้ามันทำอะไรนอกจากbash
มาตรฐานซึ่งเป็นขั้นตอนที่คนจำนวนไม่มากนักจะได้รับประโยชน์ (และเพียงเล็กน้อย)
"Critical Mass" เป็นคำตอบหลัก IMO Bash ไม่ได้มีไว้สำหรับงานบรรทัดคำสั่งเท่านั้น แต่ยังมีไว้สำหรับเขียนสคริปต์และมีสคริปต์ Bash จำนวนมากที่นั่น ไม่ว่าทางเลือกใดจะดีไปกว่าตอนนี้สำหรับการโต้ตอบความต้องการที่จะสามารถเพียงแค่ "plug and play" สคริปต์เหล่านั้นมีค่ามากกว่าข้อดีดังกล่าว ดังนั้นเชลล์เดียวที่สามารถกำจัด Bash ได้อย่างสมจริงในขณะนี้คือกระสุนที่เข้ากันได้อย่างสมบูรณ์แบบย้อนหลังและตัวเลือกที่มีแนวโน้มมากที่สุดสำหรับ ... Bash เวอร์ชั่นถัดไป
ksh
แล้วก็เป็นความจริงที่คนส่วนใหญ่ใช้เชลล์ที่แตกต่างกันและสิ่งนี้ในตัวมันเองจะอธิบายว่าทำไมksh
ไม่ใช่เชลล์เริ่มต้น อย่างไรก็ตามฉันไม่คิดว่าเป็นเหตุผลให้รอคำตอบนักฆ่าที่ฉันแน่ใจว่าคำถามนี้จะได้รับ