ทำไม Bash อยู่ทุกหนทุกแห่ง (โดยส่วนใหญ่ถ้าไม่ใช่ลีนุกซ์ลีนุกซ์ทุกรุ่น)?


50

โดยค่าเริ่มต้นจะใช้ Bash ในการแจกแจง Linux ทุกครั้งที่ฉันลองผ่านทางเลือกเช่นZ shell (zsh) มีเหตุผลทางเทคนิคหรือประวัติศาสตร์สำหรับสิ่งนี้หรือไม่?


1
มันไม่ใช่. ในระบบ FreeBSD ของฉัน tcsh คือเชลล์เริ่มต้น!

54
ระบบ FreeBSD ของคุณไม่ใช่ Linux distro

8
พระเจ้าห้ามมีความสอดคล้องระหว่าง distros ...
OMG ม้า

4
ไม่มี แต่มันเป็น "ทุกที่" :)

คำตอบ:


106

ประวัติความเป็นมา (ไม่ได้มาจากการวิจัย แต่ผ่านการใช้เวลากับคน Bell Labs มากเกินไป):

  1. ในการเริ่มต้น (ถ้าคุณพิจารณาว่าการเริ่มต้นเป็น Unix เวอร์ชัน 7) คือ Bourne shell Steve Bourne เป็นคนแรกที่แสดงให้เห็นว่าเชลล์ที่ควบคุมการโต้ตอบของผู้ใช้อาจเป็นโปรแกรมผู้ใช้ไม่ใช่ส่วนพิเศษของระบบปฏิบัติการ ความก้าวหน้าทางประวัติศาสตร์ เชลล์เองค่อนข้างสะอาดสำหรับการเขียนสคริปต์ แต่ไม่มีการแก้ไขบรรทัดคำสั่งหรือการควบคุมงาน ข้อมูลเบื้องต้นของ Bourne เกี่ยวกับ Unix Shellยังคงมีประโยชน์สำหรับผู้ใช้ที่เริ่มต้นวันนี้

    แก้ไข : ฉันไม่สนใจ "prehistory" จาก Ken Thompson และ John Mashey บางส่วนจาก Multics ฉันแน่ใจว่าบอร์นตระหนักถึงงานนี้ทั้งหมด (เขาอยู่ในแล็บเดียวกัน, 1127, ที่เบลล์แล็บส์) แต่เชลล์ของบอร์นนั้นชัดเจนและงานก่อนหน้านี้มีอิทธิพลเพียงเล็กน้อยยกเว้นที่ตีความโดยสตีฟบอร์น ตัวอย่างเช่นแม้ว่าเคนจะเขียนคอมไพเลอร์ Plan 9 C และมีอิทธิพลอย่างมากต่อ Plan 9 แต่กระดาษของ Tom Duff บนเชลล์ Plan 9 (rc) กล่าวถึงเฉพาะเชลล์ของ Bourne ไม่ใช่ Thompson's

  2. เชลล์เป็นเพียงโปรแกรมผู้ใช้ดังนั้นทุกคนสามารถเขียนได้ เมื่อมีการสร้าง Unix รุ่น 7 ในรัฐนิวเจอร์ซีย์ Berkeley Unix ก็ถูกสร้างขึ้นในแคลิฟอร์เนีย Bill Joy ที่ Berkeley เขียนว่าcshC เชลล์ Joy เพิ่มการควบคุมงานและประวัติและการแก้ไขบรรทัดคำสั่งในภายหลัง แต่ไม่ได้ตระหนักถึงงานของ Bourne และใช้ภาษาของเขาบนเชลล์ Thompson (ซึ่งฉันคิดว่า "ยุคก่อนประวัติศาสตร์" ในกระสุนก่อนหน้า) ชุมชน Unix รักการควบคุมงาน แต่พวกเขาก็รักภาษาของบอร์นด้วย สำหรับการทะเลาะไม่ได้โดยเฉพาะอย่างยิ่งดีกับภาษา csh ดูโปรแกรม CSH พิจารณาอันตราย หลายครั้งที่คนจำนวนมากใช้cshการโต้ตอบเพื่อควบคุมคุณสมบัติและประวัติความเป็นมา แต่ใช้ Bourne's shเพื่อเขียนสคริปต์ สถานการณ์นี้น้อยกว่าอุดมคติ

    แก้ไข : ขอบคุณที่ DigitalRoss cshสำหรับการยืดผมออกมาในเหตุการณ์ของ เนื่องจากฉันได้รับการศึกษาจากคนที่อ้างถึง BSD ในฐานะ "คนนอกรีตแห่งเบิร์กลีย์" ฉันจึงไม่ค่อยเข้าใจข้อเท็จจริงที่นั่น

  3. Dave Korn ที่ Bell Labs ทำการปรับโครงสร้างของบอร์นเชลล์ใหม่เพื่อผลิต Korn เชลล์ (ksh) มันเข้ากันได้อย่างสมบูรณ์แบบย้อนหลังกับ Bourne shell shแต่ให้การปรับปรุงที่ล้ำค่า kshกลายเป็นพื้นฐานของมาตรฐาน POSIX และส่งมอบมาตรฐานพร้อมซอฟต์แวร์ของ Sun (สิ่งนี้แม้จะมีข้อเท็จจริงที่ว่าบิลจอยจากเบิร์กลีย์ไปช่วยพบซอนและเป็นหนึ่งในผู้นำด้านซอฟต์แวร์ของพวกเขา)

  4. Bell Labs และ AT&T ล้มเหลวอย่างมากในการสร้างkshโอเพนซอร์ส ksh88ใช้กันอย่างแพร่หลาย แต่การมีแหล่งข้อมูลไม่ถูกกฎหมาย คนบางคนติดจนกลายเป็นอาชญากรดิจิทัล

    แก้ไข : นี่โง่จริงๆเหรอ? ยากที่จะรู้ เบิร์กลีย์กำลังแจกจ่ายยูนิกซ์ไปแล้วและ บริษัท อื่น ๆ ก็จะตามมาในไม่ช้า แต่นี่ก็ยังเป็นยุคที่หัวหน้า บริษัท เชื่อในการเรียกเก็บเงินจากยูนิกซ์ แต่ผลลัพธ์: AT&T Unix นั้นตายไปแล้วหลังจากถูกขายให้กับหลาย ๆ ฝ่ายในหลาย ๆ ครั้ง BSD และตราสารอนุพันธ์นั้นยังมีชีวิตอยู่และดี แต่สิ่งที่พุ่งพรวดเหล่านี้เรียกว่า "Linux" และ "GNU" มีความคิดส่วนใหญ่ที่ครั้งหนึ่งเคยเป็นของ Bell Labs

  5. Free Software Foundation ทำ "clean-room" ตั้งแต่เริ่มต้นการใช้งาน POSIX shell โดยนำแนวคิดทั้งหมดของ Dave Korn มาใช้ในปัจจุบันและในรูปแบบ FSF ตามปกติเพิ่มคุณสมบัติใหม่ของตัวเองเช่นโปรแกรมที่เสร็จสมบูรณ์ พวกเขาเรียกมันว่า "บอร์นอีกครั้ง" bashเปลือกหรือ

  6. ในช่วงกลางยุค 90 AT&T โอเพ่นซอร์สksh93แต่ตอนนี้มันยังสายเกินไปที่จะยอมรับอย่างกว้างขวาง ข้อตกลงใบอนุญาตไม่ได้มาตรฐานอย่างแปลก bashและkshแตกต่างและkshไม่เคยประสบความสำเร็จส่วนแบ่งการตลาดที่สอดคล้องกับสถานที่ในประวัติศาสตร์

บทเรียน:

  • ผลิตภัณฑ์ที่เพียงพอสำหรับการทำตลาดครั้งแรก (ด)

  • ผู้คนต่างชื่นชอบคุณสมบัติใหม่ ๆ (การควบคุมงานการทำให้คำสั่งสำเร็จ) แต่พวกเขารักพวกเขามากยิ่งขึ้นเมื่อสคริปต์เก่าของพวกเขายังคงทำงานต่อไป

  • แก้ไข : อาจารย์ด้านวิศวกรรมควรปล่อยให้ประวัติศาสตร์ประวัติศาสตร์วิทยาศาสตร์ :-)


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

กระสุน (1) ต้องการการแก้ไข: ก่อนที่เชลล์ Bourne จะเป็น Mashey shell และก่อนที่ Mashey shell จะเป็น ur-Shell นั่นคือ Ken Ken Thompson ดูen.wikipedia.org/wiki/Unix_shell
Jim Ferrans

2
โดยไม่ตำหนินอร์แมนโดยเฉพาะมีข้อผิดพลาดมากมายที่นี่ Ken Thompson เขียนกระสุนแรกซึ่งเป็นกระสุนเพียงเปลือกเดียวผ่าน V6 และใช้งานแบบขนานใน V7 และ 32V Stephen Bourne ไม่ใช่นักเขียนเชลล์คนแรกเขาเขียนเชลล์ KT อีกครั้ง Csh ไม่มีการควบคุมงานจนกระทั่ง 4.1BSD ถึงแม้ว่ามันจะเป็นเชลล์ตัวแรกที่ได้รับ Csh ไม่ได้เปลี่ยนไวยากรณ์เชลล์ใด ๆ มันเข้ากันได้ย้อนหลังกับ V6 เชลล์เช่นเดียวกับ Bourne shell รหัสเกือบทั้งหมดได้รับใบอนุญาตในสมัยนั้น อะไรคือสิ่งที่โง่เกี่ยวกับการเรียกเก็บค่าธรรมเนียมใบอนุญาตสำหรับ Unix
DigitalRoss

2
ฉันอาจจะอธิบายได้ไม่ดีนักให้ฉันลองใหม่อีกครั้ง Csh ถือกำเนิด Bourneหรือล่าสุดคือการใช้งานแบบคู่ขนานที่ห่างไกลออกไป (ก่อนที่อินเทอร์เน็ตจะมีความสำคัญ) ฉันนั่งถัดจาก Bill Joy ใน Cory Hall เป็นครั้งคราวเมื่อเขาเขียนมัน ฉันรับรองได้เลยว่าเขาเขียนไว้ใน V6 ดังที่ฉันพูด csh (และ Bourne) เป็น V6-Thompson-backward-compatible เพราะนั่นคือทั้งหมดที่มีอยู่เมื่อพวกเขาเขียนมัน แน่นอนว่ามันไม่เข้ากันได้กับ Bourne พรสวรรค์ของ AFAIK Bill Joy ไม่ได้รวมการมองเห็นอนาคตด้วย
DigitalRoss

1
ไม่ได้bashรับแนวคิดเกี่ยวกับความสำเร็จที่โปรแกรมได้tcshใช่หรือไม่

46

Bash มีสองสิ่งที่แตกต่างอย่างสิ้นเชิง

  1. มันเป็นเปลือกที่ดี มันเป็นหนึ่งในบางที 2 เชลล์ (อีกอันคือ zsh) ที่รวมเอาcshคุณสมบัติเจ๋ง ๆ บางอย่างเช่นการ!ทดแทนประวัติลงในไวยากรณ์ posix มีส่วนขยายมากมายรวมถึงอาร์เรย์

  2. เป็นเชลล์ FSF / GNU ในโลกโอเพนซอร์สสิ่งนี้ทำให้มันเป็นเหมือนตราประทับ

ฉันควรเพิ่มว่ามันไม่ได้เป็นค่าเริ่มต้นเสมอ ashมักใช้เป็น / bin / sh เพื่อที่ในขณะที่bashอาจเป็นเชลล์แบบโต้ตอบashคือเชลล์"เพิ่งรันไฟล์คำสั่ง" เนื่องจากashมีขนาดเล็กและเร็วกว่าและมีคุณสมบัติ posix ดังนั้นจึงเป็นชุดย่อยที่เหมาะสม การใช้ashเป็นเชลล์แบบโต้ตอบบางครั้งก็มีปัญหา บนพูด NetBSD มันทำงานได้ดีเพราะมันถูกสร้างขึ้นด้วยคุณสมบัติทั้งหมด มันเป็นเปลือกหอยชนิดหนึ่งในขณะที่bashเป็นแพ็คเกจภายนอก แต่บนลีนุกซ์ashนั้นมักจะถือว่าไม่ใช่แบบอินเทอร์แอคทีฟดังนั้นพวกเขาจึงรวบรวมมันโดยไม่มีประวัติและไม่มีการแก้ไขบรรทัด (สำคัญ) ตามทฤษฎีที่ว่ามันถูกใช้เพื่อรันgnu configureสคริปต์ขนาดใหญ่เหล่านั้น

Tale of Two Shells

ประวัติความเป็นจริงของเชลล์

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

  1. กระสุนนัดแรกแน่นอนที่สุดไม่ใช่เปลือกหอย Bourne แต่เขียนโดย Ken Thompson ด้วยตัวเองและเผยแพร่ใน V6 ซึ่งเป็นรุ่น AT&T ที่ส่งไปยังมหาวิทยาลัยและห้องปฏิบัติการของรัฐบาลหลายแห่ง นี่คือสิ่งที่วาง Unix ไว้บนแผนที่ มันมีพื้นฐานทั้งหมด<, >, >>, |, &แต่มันมีgotoไวยากรณ์ควบคุมอย่างง่ายผ่านทางโปรแกรมภายนอกที่ค้นหาอินพุตมาตรฐาน ไม่มีเชลล์สคริปต์ที่ซับซ้อนแล้ว เชลล์หลังจากนั้นจะเปิดอินพุตคำสั่งบน fd แยกต่างหาก มันอาจดูง่ายในวันนี้ แต่ในหนังสยองขวัญที่ใช้คอมพิวเตอร์ในปี 1970 มันเป็นสิ่งที่ดีที่สุดในโลก เชื่อหรือไม่ว่ากระสุนโบราณนี้มีกระแสทวิตเตอร์ของตัวเองในวันนี้และแน่นอนเป็นหน้าแรก
  2. เปลือกสองถูกcsh, เขียน (เช่นvi) โดยบิลจอยที่ UCB นี่คือก่อน GNU readline และ NetBSD editline ดังนั้นจึงต้องมีเหตุผลอย่างสมบูรณ์ที่จะทำประวัติด้วย!ไวยากรณ์ Csh เพิ่มคุณสมบัติเชลล์ส่วนใหญ่ในปัจจุบัน แต่มีไวยากรณ์ csh csh ไม่ได้เปลี่ยนไวยากรณ์ใด ๆฟรีหรืออย่างอื่น อันที่จริงมันเข้ากันได้กับเชลล์ ธ อมป์สันและเดิมรวมรหัสแหล่ง TS
  3. เชลล์ตัวที่สามคือบอร์นเชลล์ซึ่งมีไวยากรณ์ต่างกัน ยูนิกซ์ได้รับการพัฒนาแบบขนานที่ UCB และ AT&T เชลล์ตัวนี้มีตัวจัดสรรหน่วยความจำแปลก ๆ (ฉันคิดว่ามันใช้หน่วยความจำมากขึ้นติดกับ SIGSEGV, ทำ brk ใหม่ (2), จากนั้นลองอีกครั้ง) ซึ่งทำให้ยากต่อการทำงานบนพอร์ต Unix ใหม่oshและcshยังคงได้รับความนิยมในบางเวลา . ไม่มีอินเทอร์เน็ตและได้รับใบอนุญาตจาก SW ดังนั้นในสภาพแวดล้อมที่เป็นไปได้ที่Stephen Bourneไม่ทราบเกี่ยวกับเชลล์ของ Joy และแน่นอนว่า Joy ไม่ทราบเกี่ยวกับ Bourne มันเป็นไปได้ว่าทั้งสองเปลือกหอยพบกันครั้งแรกเมื่อเลือดจากสายสะดือมี VAX และก่อนวางจำหน่ายในตอนนี้ลืม Unix ฉันจำได้ว่าบิลบ่นเกี่ยวกับการจัดสรรหน่วยความจำ โปรดทราบว่าทั้งสองเชลล์สามารถใช้งานร่วมกับ V6 ได้แบบย้อนหลังพวกเขาเพียงแค่ขยายไวยากรณ์ไปในทิศทางที่แตกต่างกัน
  4. ขณะนี้มีจริงๆหอยเข้ากันไม่ได้หลายที่ AT & T kshเพิ่มบอร์นที่เข้ากันได้ ในที่สุดcshมีรหัสที่มากึ่งเผื่อ แต่มันก็ถูกผูกขึ้นในคดีระหว่าง AT & T และมหาวิทยาลัยแคลิฟอร์เนีย ถึงกระนั้นสิ่งเหล่านี้เป็นวันแห่งความรุ่งโรจน์ของ BSD Unix ในฐานะ บริษัท ที่มีความซับซ้อนซึ่งสามารถจ่ายค่าธรรมเนียม 50,000 ดอลลาร์จะซื้อใบอนุญาต AT&T แต่ติดตั้งดิสทริบิวชั่น 4.x BSD และมหาวิทยาลัยได้ฟรี
  5. ในสถานการณ์นี้มีปัญหาทางกฎหมายและทางเทคนิคมากมายมีการใช้งานที่เป็นอิสระต่าง ๆ อย่างน้อยก็มีหลายคนที่ไปกับcshไวยากรณ์เช่นเดียวกับที่ไปกับเชลล์เชลล์ Bourne และบางคนก็รวมทั้งสองอย่างเข้าด้วยกัน คุณมีอย่างน้อยtcsh, zsh, และbash ashไวยากรณ์ของ Bourne เป็น "ทางการ" ซึ่งเป็นส่วนหนึ่งของ AT&T ที่เผยแพร่ แต่ในสมัยนั้น BSD ค่อนข้างสำคัญและในตอนแรก BSD ได้แจกจ่าย Unix SW ในปริมาณที่พอสมควรแก่โลก
  6. ส่วนหนึ่งเป็นเพราะ USL คดี FSF และ Linux มีเขตข้อมูลเปิด ในขณะเดียวกัน AT&T จัดการเลือกต่อสู้กับหนึ่งในไม่กี่หน่วยงานบนโลกที่ใหญ่กว่าพวกเขา (รัฐแคลิฟอร์เนีย) และในที่สุดพวกเขาก็ไม่ชนะคดีนี้และท้ายที่สุดการกระจาย BSD ก็ถูกกฎหมาย ที่เกาะ แต่แล้วลินุกซ์และทุบตีก็มีอยู่ทั่วไปดังนั้นทุกวันนี้ BSD เป็นช่องว่าง
  7. ในที่สุดทุบตีเป็นเปลือกที่ดี (แม้ว่าเห็นได้ชัดว่าเป็นการส่วนตัวโดยผู้เขียนต้นฉบับ) และสมควรได้รับเครดิตอย่างเต็มที่สำหรับความสำเร็จของตนเอง csh จะถูกบดบังโดย tcsh และ zsh แม้ว่าเถ้าทุบตีและ ksh ไม่เคยชนะสงครามซินแท็คซ์

นอกจากนี้ / bin / sh จะต้องเชื่อมโยงแบบคงที่

หากมีสิ่งใดใน/binและ/sbinขึ้นอยู่กับ/usrว่ามันถูกทำลายและจำเป็นต้องได้รับการแก้ไข; พวกเขาควรพึ่งพาไลบรารีใน/libเท่านั้น loginต้องการเพียงPAM "newer API" ซึ่งต้องการ libs แบบไดนามิกจะเป็น NSS "Trend to" หรือไม่ NetBSD 2.0 เปลี่ยนไปเป็นแบบไดนามิกเต็มรูปแบบ/binและ/sbin5 ปีที่ผ่านมา FreeBSD 5.2 ยิ่งนานกว่านี้และ Linux ... ดีที่แตกต่างกันตาม distro แต่นั่นก็เป็นเวลานานเกินไป
ephemient

2
ฉันต้องการทำให้ชัดเจนว่าคำตอบของฉันคืองานดั้งเดิมของฉัน ไม่มีการคัดลอกคำจากที่ใดก็ได้
Norman Ramsey

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

6

หากต้องการเพิ่มสิ่งที่ @DigitalRoss พูด

  • Bash เป็นการแทนที่ซูเปอร์เซ็ตที่สมบูรณ์แบบสำหรับ posix-sh ถึงจุดที่เรียกว่า / bin / sh จะเลียนแบบ posix-sh โดยสิ้นเชิง Posix-sh เป็น "มาตรฐาน" สำหรับระบบยูนิกซ์เชิงพาณิชย์ในฐานะเชลล์ตัวส่วนร่วม ดังนั้นสิ่งที่เริ่มต้นและสร้างมันขึ้นมานั้นเริ่มต้นด้วยสิ่งต่างๆมากมาย

4

เพราะลีนุกซ์เป็นเพียงเคอร์เนล (และจำเป็นต้องมีการสนับสนุน) ในขณะที่ GNU ให้ (หรือไม่ได้ให้) ซอฟต์แวร์โคลนยูนิกซ์พื้นฐานทั้งหมดที่ทำให้สิ่งที่เราเรียกว่า "Linux" ใช้งานได้ Bash คือเชลล์ของโครงการ GNU ที่เขียนเป็นโคลนของเชลล์Bourneรุ่นเก่า(sh) จาก Unix เวอร์ชัน 7


เขาไม่ได้ถามว่า "ทำไมมีโปรแกรมเปลือก"
hasen

@hasen j: คำถามถูกถามว่ามีเหตุผลทางประวัติศาสตร์หรือไม่ว่าทำไมระบบ Linux ทั้งหมดที่เขาใช้เป็นค่าเริ่มต้นเพื่อ Bash เป็นเชลล์
beggs

2
@hasen j: beggs ไม่ตอบ "ทำไมจึงมีโปรแกรมเชลล์" คุณพลาดจุดคำตอบเช่นเดียวกับคนอื่น ๆ ที่มีหัวเข่าที่หัวเข่าดังนั้นผู้ที่มองข้าม

1

จากการสำรวจของ unix.com พบว่ามันไม่ได้ไกลมากไปกว่า ksh
/ bin / sh 83 8.96%
/ bin / csh 36 3.89%
/ bin / ksh 370 39.96%
/ bin / tcsh 36 3.89%
/ bin / bash 401 43.30%


0

Bash ได้รับการยอมรับอย่างกว้างขวางเนื่องจากคุณสมบัติที่หลากหลาย นอกจากนี้ยังใช้คุณสมบัติจากเปลือกอื่น ๆ เช่น C-shell และ Korn-shell โปรดดูชุดคุณสมบัติเหล่านี้


0

เนื่องจาก 'bash' คือ 100% 'sh / ksh' ที่เข้ากันได้และ 'ksh' เป็นเชลล์ POSIX

ดังนั้นถ้าคุณต้องการระบบที่สอดคล้องกับ POSIX และคุณอยู่บน Linux คุณก็ใช้ bash

ถ้าคุณอยู่บนยูนิกซ์เชิงพาณิชย์โดยทั่วไปคุณจะได้รับ ksh เป็นเชลล์เริ่มต้น (บางครั้งก็แค่ sh เก่า) ด้วยเหตุผลบางอย่างซันยังคงค่าเริ่มต้นไปยัง csh c-shell ที่ไม่มั่นคง

ข้อดีคือความสะดวกในการพกพา a .sh ที่เขียนขึ้นสำหรับ hp-ux หรือ AIX มีโอกาสที่ดีในการทำงานเป็น linux 'bash' โดยไม่มีการเปลี่ยนแปลงใด ๆ


kshไม่ได้เป็นเปลือก POSIX ไม่มีสิ่งดังกล่าวเป็นเปลือก POSIX มีเชลล์ที่สอดคล้องกับข้อกำหนด POSIX ซึ่งkshเป็นหนึ่งในนั้น แต่ไม่ได้หมายความว่ามีเพียงเชลล์เดียว

0

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

ฉันใช้zshเป็นเชลล์เชิงโต้ตอบปกติของฉัน แต่bash/ dashดูเหมือนว่าฉันจะมีสติมากกว่าสำหรับภาษาสคริปต์เชลล์; พวกเขาใช้เวทย์มนตร์น้อยลงและสามารถคาดเดาได้มากขึ้น ... นี่เป็นสิ่งสำคัญสำหรับฉันเมื่อฉันเขียนสคริปต์ที่ใช้งานได้นานหลายปี


0

เพียงเพื่อสร้างความสับสนเรื่องที่shคำสั่งบางครั้งก็เป็นเพียงแค่การเชื่อมโยงสัญลักษณ์ในการเขียนโปรแกรมเปลือกอื่นเช่นash, หรือbashdash

Ubuntu เคยเชื่อมโยงกับมันbashเนื่องจากbashได้รับการออกแบบให้รันสคริปต์เชลล์ Bourne ที่สอดคล้องกัน

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

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