Tôi nên sử dụng shell nào - tcsh vs bash? [đóng cửa]


30

Tôi đã sử dụng tcshtrong một thời gian dài bây giờ. Nhưng bất cứ khi nào tôi đang tìm kiếm một cái gì đó, tôi thường thấy rằng các phương pháp được chỉ định là bashcụ thể. Ngay cả cú pháp cho các kịch bản shell cũng khác nhau.

Từ những gì tôi đã trải nghiệm tìm kiếm và học hỏi trên internet, bashdường như là vỏ phổ biến hơn được sử dụng. Ngay cả số lượng câu hỏi trên trang web này được gắn thẻ bashnhiều hơn (gấp năm lần hiện tại) so với số lượng câu hỏi được gắn thẻ tcsh.

Vì vậy, tôi tự hỏi liệu tôi có nên chuyển sang bash. Bạn nghĩ sao?

Tại sao tôi phải bám vào tcshHOẶC tại sao tôi nên chuyển sang bash?


3
Tôi không nghĩ rằng tôi đã từng nghe nói về ai đó chuyển sang bash; thông thường mọi người sử dụng bash vì đó là mặc định và sau đó chuyển sang một thứ tốt hơn :)
Michael Mrozek

6
@Michael: Chà, OS X đã chuyển từ tcsh sang bash trong phiên bản 10.3, vì vậy đó là một trường hợp mọi người chuyển sang bash.
sepp2k

5
bạn nên sử dụng zsh(mà OS X nên chuyển sang)
xenoterracide

6
nhưng viết kịch bản của bạn cho dashnhững người nên làm việc về bất cứ điều gì.
xenoterracide

2
Tôi thấy nó hơi thú vị mà mọi người đang gợi ý zsh. Đồng thời nó không gây cười bởi vì nó không thực sự trả lời câu hỏi ops. đó là lý do tại sao tôi thực hiện phản hồi zsh của mình một bình luận không phải là một câu trả lời. Nói thẳng ra, trừ khi bạn gặp vấn đề khi học cách viết shell tcsh, hãy làm theo những gì bạn biết. Nếu bạn có vấn đề sử dụng tcshđăng vấn đề của bạn trên đây. Đừng chuyển đổi chỉ vì 'nguyên nhân . Có nhiều bài viết bash hơn vì nó được cài đặt theo mặc định ở nhiều nơi hơn, điều đó không làm cho nó tốt hơn.
xenoterracide

Câu trả lời:


22

Sau khi học bash tôi thấy rằng tcsh là một bước lùi. Ví dụ, những gì tôi có thể dễ dàng làm trong bash Tôi cảm thấy khó thực hiện trong tcsh. Câu hỏi của tôi trên tcsh . Hỗ trợ và tài liệu Internet cũng tốt hơn nhiều cho bash và rất hạn chế cho tcsh. Số lượng sách O'Reilly trên bash rất nhiều nhưng tôi không tìm thấy gì tương tự cho tcsh.


26

Thật ra, bạn nên chuyển qua zsh! Về cơ bản, nó tương thích ngược và nó có tất cả các tiện ích bashvới sự giúp đỡ to lớn của sự tuyệt vời . Thậm chí còn có một cuốn sách (mặc dù tôi không có ý định đọc nó).

Tôi sẽ thừa nhận một lý do để không sử dụng zshtrên bashnhưng trừ khi bạn đang làm việc liên tục tại nhiều bản cài đặt mới nó không thực sự áp dụng. Đặc biệt là nếu bạn biết về sự khác biệt đáng kể nhất . Tuy nhiên, điều này thực sự giống với sự khác biệt giữa vimvi; bạn không muốn ngây thơ nhưng thực tế nó không phải là vấn đề lớn. Ngay cả những vimngười dùng khó tính cũng có thể tìm đường emacsvà ngược lại.


20

Bạn nên chuyển sang hệ vỏ tương thích POSIX http://pub.opengroup.org/onlinepub/009695399/utilities/xcu_chap02.html , như một trong bash, ksh, dash, nhưng không phải là zsh và chắc chắn không phải là tcsh. Đã lâu rồi kể từ khi csh được tuyên bố là một lựa chọn tồi cho kịch bản: http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ , tcsh không khác nhiều ở khu vực đó.

Khi viết tập lệnh, hãy đảm bảo chỉ sử dụng các cấu trúc POSIX (nghĩa là tránh bashism và lượt thích) nếu bạn không muốn bị khóa lại trong một thứ không thể mang theo.


7

Sự tương thích bị ám ảnh đang thiếu điểm, tôi nghĩ. Nếu bạn cố gắng làm cho mọi thứ tương thích bằng cách đặt #!/bin/shlên hàng đầu và sử dụng các tiện ích mở rộng .sh , nhưng không bao giờ thử nghiệm bất cứ thứ gì ngoài bash , bạn đã không đảm bảo một tập lệnh tương thích! Tốt hơn là chỉ sử dụng #!/bin/bash.bash để người dùng thực sự biết yêu cầu thực sự.

Nếu bạn biết zsh , tcsh hoặc một cái gì đó tốt hơn bash và có một hướng dẫn tham khảo tốt cho nó, đừng giữ lại . Giống như mọi người mong đợi cài đặt perl hoặc python để có thể chạy một số tập lệnh, họ cũng có thể xử lý việc cài đặt vỏ tối nghĩa của bạn! : D


1
Trên thực tế không /bin/shđược đảm bảo để trỏ đến vỏ tương thích korn trong khi tcsh là vỏ có nguồn gốc csh. Có khả năng /bin/shđã trỏ đến bash hoặc shell tương thích khác và gần như chắc chắn nó sẽ không bị ảnh hưởng khi thay đổi shell người dùng . csh và sh hoàn toàn không tương thích.
Maciej Piechotka

1
Tôi không chắc những gì được đảm bảo. Tôi biết có rất nhiều người viết kịch bản cho "/ bin / sh" bị vấy bẩn bởi Bash-isms mà Bash-as- / bin / sh chịu đựng, nhưng lại gây nhầm lẫn dash( ashvỏ tương thích của Debian và Bourne).
Kevin Cantu

Một điểm khác: #! / Bin / bash sẽ không giới hạn phiên bản Bash nào bạn đang sử dụng và có một số điểm không tương thích từ phiên bản này sang phiên bản khác, mặc dù điều tồi tệ nhất đã được giới thiệu từ lâu với v2. Tôi không biết bất kỳ sự không tương thích giữa các phiên bản trong chế độ tương thích POSIX.
Charles Stewart

Bất cứ ai cũng nên thoải mái viết cho bất cứ thứ gì họ muốn, và bạn đưa ra quan điểm hợp lệ liên quan đến #!/bin/shmột mình -nePOSIX. Tuy nhiên, lo ngại về khả năng tương thích POSIX không nên là loại xem xét được dán nhãn 'bị ám ảnh'. Gọi shmặc định dash với debian / ubfox và đã được một lúc rồi. Tôi biết rằng sẽ không đủ điều kiện là 'được bảo đảm', nhưng hiếm khi tôi sẽ xem xét bất cứ điều gì về tính di động 'được bảo đảm'. Tôi thậm chí sẽ được bảo lưu nhiều hơn với "kịch bản shell".
JM Becker

6

Vỏ nào? Dành cho người có tỷ lệ "dễ sử dụng" và "phức tạp" tốt nhất ...

Nếu bạn không thể tìm thấy đủ các ví dụ và giải thích chung cho trình bao "Maserati" của mình, thì hiệu suất bổ sung có thể là vấn đề nhiều hơn là phần thưởng ...

Tôi thấy bài viết / trang web này thú vị; nó có thể đáng để đọc:
sự khác biệt của shell UNIX và cách thay đổi shell của bạn


0

zsh có thể có một vài điểm tương đồng với tcsh hơn bash.

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

Mọi người thường cho rằng zsh có thể làm những việc không thể, nhưng tôi không thấy đó là trường hợp. Những gì tôi đã thấy là đối với zsh, nó dễ dàng hơn, được xây dựng hoặc bật theo mặc định, trong khi trong bash, nó là một tập lệnh addon, phải được bật hoặc khó khăn hơn.

(từ chối trách nhiệm: Tôi là người dùng bash đôi khi đã cân nhắc chuyển sang zsh)


-3

Đối với một số loại lý do, tôi đã sử dụng tcsh, vì tôi đã sử dụng nó hơn 20 năm trước. Như tôi biết bash có nguồn gốc từ sh nhưng tất nhiên với rất nhiều công cụ csh nhưng tcsh có nguồn gốc từ csh. Tôi thực sự thích hoàn thành lệnh trong những ngày đầu nhưng nó có sẵn trong hầu hết các shell bây giờ. Đối với kịch bản, chúng ta sẽ bám vào / bin / sh?


6
Điều này không thực sự cố gắng trả lời câu hỏi. Đó là một nhận xét nhiều hơn.
slm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.