ทำไมทุบตีมาตรฐานบน Linux?


19

ลีนุกซ์ลีนุกซ์รุ่นล่าสุดส่วนใหญ่มี bash เป็นเชลล์เริ่มต้น, แม้ว่าจะมีเชลล์อื่น, แต่มีเชลล์ที่ดีกว่า

ฉันพยายามที่จะเข้าใจว่านี่คือสิ่งที่เหลืออยู่ในประวัติศาสตร์ที่ไม่มีใครต้องการเปลี่ยนแปลงหรือมีเหตุผลที่ดีที่ทำให้การเลือกครั้งแรกเป็นเรื่องไร้สาระหรือไม่


19
คอมพิวเตอร์ส่วนใหญ่มีการจำหน่ายพร้อมติดตั้ง MS Windows แม้ว่าจะมีเครื่องอื่น แต่มีระบบปฏิบัติการที่ดีกว่า
choroba

Bash นั้นง่าย มันสามารถทำทุกอย่างที่ผู้ใช้ต้องการ คุณสามารถสลับได้อย่างง่ายดาย ที่จะไม่สนุกที่จะมี scsh ตามค่าเริ่มต้น
cnd

4
Bash เป็นการใช้งาน OSS ของมาตรฐาน UNIX /bin/sh, ซึ่งเป็นเชลล์เริ่มต้นใน 'ปกติ' UNIX-es ...
Jan Marek

ฉันรู้ว่านี่เป็นลิงค์ของวิกิ แต่มันตอบคำถามของคุณในเชิงลึกสิ่งที่เปลือกหอยหนึ่งมีกว่าอีกen.wikipedia.org/wiki/Unix_shell
whoami

6
กรุณากำหนด(เนื้อหา) ที่ดีกว่า ฉันคิดว่าbashเป็นเชลล์ที่ดีที่สุดเพราะฉันรู้ดีและมันอยู่ทุกหนทุกแห่งทำทุกอย่างที่ฉันต้องการอย่างกระชับและค่อนข้างง่ายอ่านง่ายและสามารถเข้าใจได้โดยผู้คนโดยไม่ต้องรู้วิธีสร้างสคริปต์ทุบตี คุณต้องการอะไรจากเปลือกหอย? หากคุณต้องการฟีเจอร์การเขียนโปรแกรมจำนวนมากแสดงว่าคุณใช้งานเชลล์ไม่ถูกต้อง
nicerobot

คำตอบ:


18

คำตอบสั้น ๆ ก็คือเพราะ linux เป็น GNU / Linux จริงๆ เฉพาะเคอร์เนลคือ linux แต่คอลเลกชันพื้นฐานของยูทิลิตี้ที่ให้ Unix like environment จัดทำโดยGNUและเชลล์ GNU นั้นทุบตีดัง
ที่ฉันได้กล่าวไปแล้วนั่นคือคำตอบสั้น ๆ ;)

แก้ไขเพื่อเพิ่มความเห็นเพิ่มเติม
ให้ฉันนำหน้าด้วยการบอกว่าฉันไม่ใช่นักประวัติศาสตร์ของ Unix ดังนั้นฉันจึงสามารถตอบ IMHO เท่านั้น

ไม่กี่จุดแรกของการทุบตีทั้งหมดคืออ่างครัวของเปลือกหอยเป็น emacs เป็นบรรณาธิการ
ในขณะที่ทุบตีได้รับการปล่อยตัวไม่มีการใช้งาน ksh ฟรี tcsh คือการเปลี่ยน csh ฟรี แต่ Stallman มีการพูดคุยกับ csh สำหรับการเขียนโปรแกรมเชลล์
ในฐานะที่เป็นทุบตีเชลล์เชิงโต้ตอบมีการเรียกคืนประวัติ / คำสั่งที่ยอดเยี่ยมพร้อมกับการบันทึกประวัติจากเซสชันไปยังเซสชัน มันเป็นการแทนที่สำหรับ sh, bsh, ksh สำหรับการเขียนโปรแกรมเชลล์และสร้างขึ้นสำหรับเชลล์เชิงโต้ตอบที่ดี
เช่นเดียวกับก้อนหิมะที่กลิ้งลงเนินการทุบตีได้รับแรงผลักดันและขนาด

ใช่มีกระสุนอีกหลายสิบนัด กระสุนที่เหมาะสำหรับวัตถุประสงค์หรือรสนิยมของแต่ละบุคคล แต่สำหรับกระสุนที่อยู่รอบ ๆ ตัวกระสุนทำหน้าที่ได้ดีและมีสายตาที่ดีมานานกว่า 20 ปี


ฉันเข้าใจ. อย่างไรก็ตามการแจกแจงส่วนใหญ่รวมถึงซอฟต์แวร์อื่น ๆ ที่ไม่ใช่ GNU สำหรับฉันมันดูเหมือนว่า bash จะถูกใช้เพียงเพราะมันถูกใช้เช่นเดียวกับ choroba ที่แสดงความคิดเห็นจาก Windows ว่าเป็นระบบปฏิบัติการที่โดดเด่น อย่างไรก็ตาม Windows เป็นเวลาหลายทศวรรษที่มีการรองรับฮาร์ดแวร์ (ไดรเวอร์) ที่ดีกว่าซึ่งทำให้ยากที่จะเปลี่ยนไปใช้ระบบปฏิบัติการอื่น ฉันไม่เห็นฟีเจอร์พิเศษใดที่ Bash นำเสนอเพื่อป้องกันผู้ใช้จากการสลับ?
Milan Babuškov

+1 และดี @bdowning สำหรับคำตอบสั้น ๆ และง่าย ๆ :-)
Nikhil Mulley

2
@ MilanBabuškov Bash ต้องติดตั้งเนื่องจากมีสคริปต์มากเกินไปซึ่งใช้คุณลักษณะเฉพาะของ bash เมื่อคุณเริ่มจากสมมติฐานดังกล่าวคุณจะต้องพิสูจน์เชลล์เพิ่มเติม Dash ถูกรวมอยู่ใน distos เช่น Ubuntu ซึ่งเป็นส่วนหนึ่งของแผนการลดเวลาบูต เนื่องจาก bash นั้น "ดีพอ" ในฐานะเชลล์เชิงโต้ตอบเชลล์อื่น ๆ ยังไม่ได้ให้อาร์กิวเมนต์ที่แข็งแกร่งเพียงพอที่จะเป็นส่วนหนึ่งของการโหลดแพ็กเกจเริ่มต้น
ssokolow

12

ทุบตีมีคู่แข่ง:

  • Zshมีสิ่งอำนวยความสะดวกแบบอินเทอร์แอคทีฟที่ทันสมัยกว่า แต่ก็มีเรื่องแปลกๆ เล็กน้อยเมื่อพูดถึงการเขียนสคริปต์ ในช่วงต้นถึงกลางปี ​​1990 เมื่อลีนุกซ์อยู่ในช่วงเริ่มต้น, zsh ไม่เป็นที่รู้จักอย่างแท้จริง
  • Kshเป็นมาตรฐานอย่างแท้จริงเกี่ยวกับการทำธุรกรรมเชิงพาณิชย์มาตั้งแต่กลางทศวรรษ 1980 แต่เป็นซอฟต์แวร์ที่เป็นกรรมสิทธิ์จนถึงปี 2000 ดังนั้นจึงไม่ใช่ตัวเลือกบน Linux นอกจากนี้ ksh มีความสามารถในการพิมพ์บรรทัดคำสั่ง subpar เทียบกับทุบตี
  • Pdkshซึ่งเป็นโคลฟรี ksh จะเป็นตัวเลือก แต่มันไม่เป็นที่รู้จักและมีความสามารถในการพิมพ์บรรทัดคำสั่งไม่ดี (Pdksh ไม่ได้เป็นโครงการที่ใช้งานได้อีกต่อไปแม้ว่าจะยังคงใช้ใน BSD บางส่วนตอนนี้ ATT ksh ฟรี)
  • กระจายบางติดตั้งเถ้า/bin/shตัวแปรเป็น Ash (โดยที่ฉันหมายถึงเปลือกหอยหลวม ๆ ที่เรียกว่า ash) ได้รับการออกแบบให้มีขนาดเล็กและรวดเร็วโดยไม่มีคุณลักษณะแบบโต้ตอบ (สำหรับการแก้ไขสคริปต์เท่านั้น) การฟื้นตัวของเถ้าค่อนข้างเร็ว ในปี 1990 ตัวแปรที่มีอยู่ขาดคุณสมบัติมากมาย
  • tcshเป็นเปลือกโต้ตอบที่ทันสมัยที่สุดจนกว่า zsh มาพร้อม แต่มันไม่เข้ากันกับการดวลจุดโทษและไม่ดีกับการเขียนสคริปต์

นอกจากนี้ทุบตีเป็นเชลล์GNUอย่างเป็นทางการและระบบลีนุกซ์เป็นGNU / Linuxจริง ๆ: โปรแกรมหลักจำนวนมากมาจาก GNU แม้ว่าส่วนที่รู้จักกันดีที่สุดคือเคอร์เนล Linux จะไม่ทำเช่นนั้น ในเวลานั้นมันกลายเป็นมาตรฐานอย่างแท้จริงทุบตีเป็นที่รู้จักกันดีมีสถานะเป็นทางการและมีคุณสมบัติที่เหมาะสม


ดังที่ฉันเข้าใจมาตรฐาน POSIX ระบุคุณลักษณะที่จำเป็นสำหรับเชลล์เป้าหมายที่ / bin / sh และการแจกแจง Linux ส่วนใหญ่ขึ้นอยู่กับสคริปต์เชลล์ที่เขียนเพื่อใช้เชลล์เป้าหมาย BASH อยู่ที่ฐานรุ่นที่ปรับปรุงของเชลล์เป้าหมายและ / bin / sh เป็นลิงก์ไปยัง / bin / bash จริง ๆ แล้วเมื่อดำเนินการรันด้วยคุณลักษณะเชลล์เป้าหมายเท่านั้น
bgvaughan

@ bgvaughan การกระจายบางอย่างทุบตีเรือในขณะที่/bin/shคนอื่น ๆ ส่งเถ้า ยกตัวอย่างเช่นอูบุนตู/bin/shได้รับdash(เดือยแยกไว้โดย Debian) อยู่พักหนึ่ง ทุบตีมีคุณสมบัติมากขึ้นเถ้ามีขนาดเล็กลงและเร็วขึ้น ทั้งสองเป็นไปตาม POSIX (หรืออย่างน้อยสอดคล้องกับการปฏิบัติ)
Gilles 'หยุดความชั่วร้าย'

4

คำตอบที่ง่ายที่สุด? เพราะบางสิ่ง "จะต้อง" เป็นค่าเริ่มต้น ค่าเริ่มต้นที่สมเหตุสมผลที่สุดคือสิ่งที่ผู้ใช้ส่วนใหญ่คุ้นเคยอยู่แล้ว ตรงจุดนั้น Bash เป็นตัวเลือกที่ดี ทุกคนมีอิสระในการเลือกสิ่งที่ดีที่สุดในโลกของพวกเขา ส่วนใหญ่จะเลือกที่จะใช้ค่าเริ่มต้นหากทำสิ่งที่พวกเขาต้องการเสมอ


3

มาจาก DOS (พร้อมติดตั้ง doskey) ฉันพลาดฟีเจอร์เพื่อเรียกคำสั่งสุดท้ายโดยเพียงแค่เลื่อนเคอร์เซอร์ขึ้น / ลง BASH เป็น IMO เชลล์ตัวแรกที่ใช้สิ่งนี้ใน * ระวัง

ดังนั้นคนส่วนใหญ่อาจจะชอบทุบตี


ในขณะที่ไม่ได้ใช้คอมพิวเตอร์จนถึงปี 1990 ฉันอยู่ภายใต้การสันนิษฐานว่าtcshเป็นเชลล์ * nix ตัวแรกที่ใช้ปุ่มลูกศรเพื่อนำทางไปมาผ่านประวัติเชลล์
Anthony G - ความยุติธรรมสำหรับโมนิก้า

1

คำตอบอื่น ๆ ทั้งหมดนั้นยอดเยี่ยม แต่จากมุมมองที่ใช้งานได้จริง: ถ้าฉันนั่งอยู่หน้าระบบที่ไม่คุ้นเคย (หรือเข้าถึงมันจากระยะไกล) และฉันต้องทำบางสิ่งบางอย่างฉันสามารถวางใจในการทุบตีได้ ฉันสามารถไปข้างหน้าและทำสิ่งต่าง ๆ ให้สำเร็จ

ตามที่ระบุไว้ในคำตอบอื่น ๆ และในคำถามของคุณมีเชลล์จำนวนมาก (ฉันได้ยินสิ่งดีๆมากมายเกี่ยวกับ zsh แต่ไม่ได้ลองเลย) แต่พวกมันต่างกันไปตามไวยากรณ์และบางครั้งคำสั่งที่ใช้ เพื่อให้งานสำเร็จลุล่วง ถ้าฉันแค่อยากทำอะไรให้สำเร็จทุบตีก็ยากพอโดยไม่ต้องปรับตัวเข้ากับกระสุนอีกตัว

นอกจากนี้เมื่อฉันเขียนเชลล์สคริปต์ที่อาจเป็นประโยชน์โดยทั่วไปฉันเขียนมันเพื่อทุบตีและฉันรู้ว่าถ้าฉันระมัดระวังอย่างมากที่จะไม่ทำสิ่งต่าง ๆ ในระบบมันจะทำงานเกือบทุกที่


1

ความเฉื่อย

ทุบตีเกิดขึ้นจะเป็นเปลือกฟรีใช้ได้ง่ายที่สุดเมื่อระบบ Linux (GNU / Linux ถ้าคุณต้องการ) เริ่มปรากฏ ความจริงที่ว่ามันมาจากโครงการ GNU ไม่ได้เจ็บ

สำหรับเหตุผลที่มันยังเป็นเชลล์เริ่มต้นก็ไม่เคยมีเหตุผลที่ดีพอที่จะเปลี่ยนมัน แม้ว่าเชลล์อื่นบางส่วนจะดีกว่า แต่ก็มีข้อดีที่จะมีเชลล์ล็อกอินเริ่มต้นเหมือนกันในแต่ละดิสทริบิวชันที่แตกต่างกันและมันก็ยากที่จะทำให้ทุกคน (Debian, Red Hat, Suse ฯลฯ ) ยอมรับการเปลี่ยนเป็นอย่างอื่น

และหลังจากทั้งหมดเป็นเพียงค่าเริ่มต้น ผู้ใช้สามารถใช้chshเพื่อเปลี่ยนเปลือกเข้าสู่ระบบของเขาหรือเธอ ไม่จำเป็นต้องเปลี่ยนค่าเริ่มต้นสำหรับทุกคน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.