So sánh hệ vỏ Unix


9

Trong số các shell Unix chính (bash, ksh, tcsh, zsh, những cái khác?), Có bất kỳ lý do thuyết phục nào để sử dụng cái này hơn cái khác không?

  • Cái nào thân thiện với dòng lệnh / tương tác nhất?
  • Đó là thuận lợi nhất / trực quan để viết kịch bản?
  • Có bất kỳ tính năng tích hợp chính nào mà một vỏ cung cấp mà người khác không cung cấp không?
  • Có bất kỳ trong số các shell này thực sự tốt cho một loại chức năng, nhưng không phải là một loại khác? Hay tất cả đều khá tròn trịa / linh hoạt?
  • Có phải chỉ là vấn đề sở thích cá nhân?

Tôi có thể tạo wiki cộng đồng này nếu có ai thích.

Câu trả lời:


17

Hiện hành:

  • bash- Bourne shell shell, shell mặc định trong hầu hết các bản phân phối Linux. Các tính năng của Decent;
  • zsh - tính năng phong phú nhất, nhưng vẫn hiếm khi được sử dụng;
  • ksh - shell mặc định trong Solaris, AIX và một số đơn vị khác;
  • tcsh - shell mặc định trong các hiệp nhất hương vị BSD khác nhau;

Mang tính lịch sử:

  • sh- Vỏ Bourne nguyên bản (phát hành năm 1977). Bị lỗi thời bởi bash;
  • csh- Vỏ C gốc (phát hành 1978). Bị lỗi thời bởi tcsh và ksh;

Lưu ý rằng bash, ksh và zsh xuất phát từ cú pháp sh, trong khi tcsh xuất phát từ cú pháp csh. Đây là hai cú pháp khá khác nhau.

Biểu đồ tính năng (wiki).


Hầu hết các tập lệnh thường được viết là tuân thủ sh, vì việc khởi chạy một tập lệnh qua sh thường nhanh hơn nhiều so với bash.
Mikeage

Thế nào Trên Linux / bin / sh là symlink đến / bin / bash.
vartec

2
/ bin / sh không phải lúc nào cũng là một liên kết tượng trưng đến / bin / bash
Brad Gilbert

1
Khi bạn khởi tạo bash là "sh", nó sẽ chạy ở chế độ "sh" hỗ trợ một tập hợp các lệnh bash. Tôi tin rằng cú pháp "sh" là một tiêu chuẩn POSIX.
duffbeer703

Trên Debian, bạn có thể sử dụng 'dash' thay thế cho '/ bin / sh'.
Drybjed

9

là một vỏ mới có lẽ thú vị hơn các loại khác, không phải vì nó nhất thiết phải có nhiều tính năng hơn, mà vì chúng chỉ hoạt động theo mặc định và vì cá cố gắng vì khả năng sử dụng.

Một vài ảnh chụp màn hình ( 1 , 2 , 3 , 4 ) là đủ để đưa ra ý tưởng chung.

bây giờ cá là vỏ mặc định trên máy Mac của tôi tại nơi làm việc. Đi hình.


2

Nếu bạn sẽ học một shell khác ngoài sh/ bash, bạn cũng có thể đi cùng zsh. Tôi không nghĩ bất cứ ai nghiêm túc tranh luận rằng đó là loại đạn thay thế mạnh nhất và có tính năng nhất; cho dù đó chỉ là sự phình to, tất nhiên, vẫn còn tranh luận.

Tôi đã nghe những điều tốt về fish, nhưng không bao giờ nỗ lực để bận tâm với chúng.

Quản trị viên mà tôi biết cân nhắc cshtcshlà những điều ghê tởm nên tránh bằng mọi giá, và tôi đồng ý với họ mặc dù chưa bao giờ bị buộc phải đặt mình vào một trong hai vỏ.


2

Tôi khuyên bạn nên biết bash vì đây là một trong những cách phổ biến nhất (nói chung là mặc định của Linux). Cá nhân, tôi yêu zsh như vỏ tương tác của tôi. Nó có các tính năng hoàn thành tuyệt vời. Ví dụ: bạn có thể thiết lập danh sách các máy chủ lưu trữ và khi bạn thực hiện một số thứ như ssh Ser [tab], nó sẽ biết để thử tự động hoàn thành một trong những máy chủ đó. Nó cũng có sự hả hê đệ quy, vì vậy nếu bạn muốn tìm tất cả các tệp jpeg trong thư mục hiện tại và thư mục con, bạn có thể sử dụng ls -ld **/*.jpg. Có rất nhiều tính năng thú vị với zsh (tìm kiếm tệp .zshrc của mọi người) và bạn có thể đặt nó thành 'bash tương thích', vì vậy rất dễ dàng để chuyển đổi giữa hai. Nếu bạn kết hợp điều này với GNU Screen, bạn có thể thấy dòng lệnh trở nên khá thú vị khi làm việc.


1

Đừng quên câu hỏi khác của bạn Shell Unix / Linux phổ biến nhất - shell phổ biến nhất có lẽ là phổ biến nhất vì một lý do ;-)

Đối với những gì nó có giá trị, hầu hết mọi người không tắt giữa các vỏ thường xuyên, do đó, thật khó để có được một so sánh toàn diện về các tùy chọn khác nhau; bạn sẽ có nhiều khả năng nhìn thấy những người khác nhau thể hiện những ưu điểm của những chiếc vỏ yêu thích của họ. Từ những gì tôi đã nghe về các shell khác nhau, tất cả chúng đều cung cấp một số tính năng cơ bản giống nhau (như chuyển hướng I / O, lịch sử lệnh, v.v.) để sở thích cá nhân có thể là một thành phần lớn.


1

Một lý do thuyết phục để sử dụng ZSH chưa được đề cập là chế độ vi và chế độ emacs .

Đối với những người thích sử dụng bộ nhớ cơ vi của họ trong vỏ, đây là một tính năng sát thủ.

Và đối với những người thích emacs, bạn cũng có thể sử dụng các keybindings đó, nhưng các tín đồ thực sự có lẽ sẽ nói rằng emacs là vỏ yêu thích của họ.

;-)


0

Ưu tiên cho việc sử dụng hàng ngày thực sự là một mớ sở thích cá nhân, tuy nhiên, khi viết kịch bản, tôi cố gắng tuân thủ theo tiêu chuẩn cho mục đích di động.


0

Giống như Heads Up: Ubuntu mặc định "sh" thành "dash" dẫn đến một số vấn đề trong quá khứ với khả năng tương thích POSIX. Rõ ràng, các lệnh echo hơi khác nhau.

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.