ฉันควรใช้เชลล์ตัวใด - tcsh vs bash? [ปิด]


30

ฉันใช้tcshงานมานานแล้ว แต่เมื่อใดก็ตามที่ฉันกำลังค้นหาบางอย่างฉันมักพบว่าวิธีการที่ระบุนั้นbashเฉพาะเจาะจง แม้แต่ไวยากรณ์สำหรับเชลล์สคริปต์ก็ยังแตกต่างกันสำหรับทั้งสอง

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

ดังนั้นฉันสงสัยว่าฉันควรเปลี่ยนเป็นทุบตี คุณคิดอย่างไร?

ทำไมฉันถึงติดtcshหรือทำไมฉันจึงควรย้ายไปที่bash?


3
ฉันไม่คิดว่าฉันเคยได้ยินว่ามีคนเปลี่ยนมาใช้ทุบตี ปกติคนจะใช้ bash เพราะมันเป็นค่าเริ่มต้นแล้วเปลี่ยนไปใช้สิ่งที่ดีกว่า :)
Michael Mrozek

6
@Michael: OS X เปลี่ยนจาก tcsh เป็น bash ในรุ่น 10.3 ดังนั้นนั่นเป็นกรณีหนึ่งที่ผู้คนเปลี่ยนไปใช้ bash
sepp2k

5
คุณควรใช้zsh(ซึ่ง OS X ควรเปลี่ยนไป)
xenoterracide

6
แต่เขียนสคริปต์ของคุณสำหรับdashผู้ที่ควรทำงานเกี่ยวกับอะไรก็ได้
xenoterracide

2
zshฉันคิดว่ามันค่อนข้างน่าขบขันว่าทุกคนจะบอกเป็นนัย ๆ ในขณะเดียวกันก็ไม่สนุกเพราะมันไม่ได้ตอบคำถามจริง ๆ ซึ่งเป็นเหตุผลที่ฉันทำ zsh ของฉันตอบความคิดเห็นไม่ใช่คำตอบ แม้ว่าจะตรงไปตรงมาเว้นแต่ว่าคุณกำลังมีปัญหาในการเรียนรู้วิธี shell script tcsh ไปกับสิ่งที่คุณรู้ หากคุณมีปัญหาในการใช้tcshโพสต์ปัญหาของคุณที่นี่ อย่าเปลี่ยนสาเหตุเพียง มีการโพสต์ทุบตีมากขึ้นเนื่องจากมีการติดตั้งตามค่าเริ่มต้นในที่อื่น ๆ ซึ่งไม่ได้ทำให้ดีขึ้น
xenoterracide

คำตอบ:


22

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


26

ที่จริงแล้วคุณควรย้ายไปที่zsh! มันเป็นหลักย้อนกลับเข้ากันและก็มีทุกยูทิลิตี้bashที่มีขนาดใหญ่ขนาดใหญ่ช่วยของawesomeness มีหนังสืออยู่เล่มหนึ่ง (แม้ว่าฉันจะไม่ได้อ่านมัน)

ฉันจะยอมรับด้วยเหตุผลข้อหนึ่งที่ไม่ควรใช้zshเกินbashแต่ถ้าคุณไม่ได้ทำงานอย่างต่อเนื่องกับการติดตั้งใหม่หลายครั้งมันก็ไม่ได้ใช้ โดยเฉพาะอย่างยิ่งถ้าคุณรู้เกี่ยวกับการที่สำคัญที่สุดความแตกต่าง อย่างไรก็ตามเรื่องนี้คล้ายกับความแตกต่างระหว่างvimและvi; คุณไม่ต้องการไร้เดียงสา แต่จริง ๆ แล้วมันไม่ใช่เรื่องใหญ่ แม้แต่vimผู้ใช้ที่ไม่ยอมใครง่ายๆก็สามารถหาทางไปรอบ ๆemacsและในทางกลับกัน


20

คุณควรเปลี่ยนไปใช้เชลล์ที่สอดคล้องกับ POSIX http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.htmlเช่น bash, ksh, dash แต่ไม่ใช่ zsh และไม่ใช่ tcsh อย่างแน่นอน เป็นเวลานานแล้วที่ csh ถูกประกาศว่าเป็นตัวเลือกที่ไม่ดีสำหรับการเขียนสคริปต์: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , tcsh นั้นไม่แตกต่างกันมากนักในพื้นที่นั้น

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


7

ฉันคิดว่าการเข้ากันได้กับความเข้ากันได้หายไปจากจุดนั้น หากคุณพยายามทำให้ทุกอย่างเข้ากันได้โดยใส่#!/bin/shที่ด้านบนและใช้ส่วนขยาย. shแต่ไม่เคยทดสอบอะไรเลยนอกจากทุบตีคุณไม่รับประกันสคริปต์ที่เข้ากันได้! ดีกว่าที่จะใช้#!/bin/bashและ. ทุบตีเพื่อให้ผู้ใช้ทราบถึงความต้องการที่แท้จริง

ถ้าคุณรู้ว่าzsh , tcshหรือสิ่งอื่นที่ดีกว่าการทุบตีและมีคู่มืออ้างอิงที่ดีสำหรับมันไม่ถือกลับ เช่นเดียวกับที่ผู้คนคาดหวังว่าจะติดตั้งPerlหรือหลามเพื่อให้สามารถเรียกใช้สคริปต์บางอย่างพวกเขาสามารถจัดการการติดตั้งเชลล์ที่คลุมเครือของคุณได้เช่นกัน! : D


1
จริงๆแล้วไม่/bin/shรับประกันว่าจะชี้ไปที่เชลล์ที่เข้ากันได้กับ korn ในขณะที่ tcsh เป็นเชลล์ที่มาจาก csh มีโอกาสที่/bin/shชี้ไปที่ทุบตีหรือเปลือกอื่น ๆ ที่เข้ากันได้และเกือบจะแน่ใจว่าจะไม่ได้รับผลกระทบจากการเปลี่ยนเชลล์ผู้ใช้ csh และ sh ไม่เข้ากันอย่างสมบูรณ์
Maciej Piechotka

1
ฉันไม่แน่ใจว่าสิ่งที่รับประกัน ฉันรู้ว่ามีคนจำนวนมากที่เขียนสคริปต์สำหรับ "/ bin / sh" ที่เกลื่อนไปด้วย Bash-isms ซึ่ง Bash-as- / bin / sh นั้นทนได้ แต่สร้างความสับสนdash( ashเชลล์ที่เข้ากันได้กับDebian และ Bourne)
Kevin Cantu

จุดอื่น: #! / bin / bash จะไม่ จำกัด เวอร์ชันของ Bash ที่คุณใช้และมีความไม่ลงรอยกันจากรุ่นหนึ่งไปยังอีกรุ่นหนึ่งแม้ว่าที่เลวร้ายที่สุดนั้นถูกนำมาใช้เป็นเวลานานแล้วด้วย v2 ฉันไม่ทราบถึงความเข้ากันไม่ได้ระหว่างรุ่นต่างๆในโหมดความเข้ากันได้ของ POSIX
Charles Stewart

ทุกคนควรรู้สึกฟรีที่จะเขียนสำหรับเชลล์ที่ต้องการและคุณสร้างจุดที่ถูกต้องเกี่ยวกับPOSIX #!/bin/shเพียงอย่างเดียว -neอย่างไรก็ตามความกังวลเกี่ยวกับความเข้ากันได้ของ POSIX ไม่ควรเป็นประเภทของการพิจารณาที่มีข้อความว่า 'หลง' การเรียกใช้shค่าเริ่มต้นเส้นประกับเดเบียน / อูบุนตูและมีในขณะนี้ ฉันรู้ว่าจะไม่ผ่านการรับรองในฐานะ 'รับประกัน' แต่ฉันไม่ค่อยจะพิจารณาสิ่งใดที่ 'พกพา' รับประกันว่าพกพาได้ ฉันจะจองมากกว่านี้ด้วย 'เชลล์สคริปต์'
JM Becker

6

เปลือกไหน เลือกตัวเลือกที่มีอัตราส่วน "ใช้งานง่าย" เทียบกับ "ความยุ่งยาก" ที่ดีที่สุด ...

หากคุณไม่พบตัวอย่างทั่วไปและคำอธิบายที่เพียงพอสำหรับกระสุน "Maserati" ของคุณแสดงว่าประสิทธิภาพพิเศษอาจมีปัญหามากกว่าโบนัส ...

ฉันพบบทความ / ไซต์นี้น่าสนใจ; อาจเป็นสิ่งที่ควรค่าแก่การอ่าน:
ความแตกต่างของเชลล์ UNIX และวิธีเปลี่ยนเชลล์ของคุณ


0

zsh อาจมีความคล้ายคลึงกับ tcsh มากกว่า bash เล็กน้อย

ดู: http://zsh.sourceforge.net/FAQ/zshfaq02.html#l13

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

(ข้อจำกัดความรับผิดชอบ: ฉันเป็นผู้ใช้ทุบตีซึ่งบางครั้งก็พิจารณาเปลี่ยนเป็น zsh)


-3

ด้วยเหตุผลบางอย่างฉันใช้ tcsh เพราะฉันใช้มันเมื่อ 20 กว่าปีที่แล้ว อย่างที่ฉันรู้ว่า bash นั้นมีต้นกำเนิดมาจาก sh แต่แน่นอนว่ามีของ csh มากมาย แต่ tcsh นั้นมีต้นกำเนิดมาจาก csh ฉันชอบความสมบูรณ์ของคำสั่งในช่วงแรก ๆ แต่ตอนนี้มันพร้อมใช้งานแล้วในเชลล์ส่วนใหญ่ สำหรับการเขียนสคริปต์เราจะติดกับ / bin / sh หรือไม่


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