Tại sao bash tiêu chuẩn trên Linux?


19

Hầu hết các bản phân phối Linux gần đây bao gồm bash là shell mặc định, mặc dù có các shell khác (có thể nói là tốt hơn) có sẵn.

Tôi đang cố gắng để hiểu nếu đây là một số dư thừa lịch sử mà không ai muốn thay đổi, hoặc có một số lý do tốt khiến bash là lựa chọn đầu tiên?


19
Hầu hết các máy tính đang được bán với cài đặt MS Windows, mặc dù có những hệ điều hành khác tốt hơn, được cho là tốt hơn.
choroba

Bash là đơn giản. Nó thường có thể làm mọi thứ mà người dùng muốn nó làm. Bạn có thể dễ dàng chuyển đổi nó. Điều đó sẽ không vui khi có scsh theo mặc định.
cnd

4
Bash là triển khai OSS của tiêu chuẩn UNIX /bin/sh, là lớp vỏ mặc định trên 'UNIX' bình thường ...
Jan Marek

Tôi biết đây là một liên kết wiki nhưng nó trả lời sâu câu hỏi của bạn, Cái gì có vỏ hơn cái khác en.wikipedia.org/wiki/Unix_shell
whoami

6
Hãy xác định (có thể) tốt hơn . Tôi nghĩ bashlà cái vỏ tốt nhất bởi vì tôi biết nó tốt và nó ở khắp mọi nơi, mọi thứ tôi cần một cách chính xác và tương đối dễ dàng, có thể dễ dàng đọc được và mọi người có thể hiểu được phần nào mà không cần biết cách tạo tập lệnh bash. Bạn muốn gì khác từ một cái vỏ? Nếu bạn muốn có nhiều tính năng lập trình, bạn đang sử dụng shell không chính xác.
nicerobot

Câu trả lời:


18

Câu trả lời ngắn gọn là vì linux thực sự là GNU / Linux. Chỉ có hạt nhân là linux nhưng bộ sưu tập cơ sở của các tiện ích cung cấp Unix như môi trường được cung cấp bởi GNU và GNU vỏ là bash
Như tôi đã nói, đó là câu trả lời ngắn;)

được chỉnh sửa để thêm một số bình luận bổ sung ...
Hãy để tôi thêm tiền tố bằng cách nói rằng tôi không phải là nhà sử học Unix, vì vậy tôi chỉ có thể trả lời IMHO

Một vài điểm, trước hết là bash là vỏ bếp, vì emacs là biên tập viên.
Tại thời điểm bash được phát hành, không có triển khai ksh miễn phí, tcsh là một thay thế csh miễn phí, nhưng Stallman đã có một cơn thịnh nộ chống lại csh cho lập trình shell.
Như một bash shell tương tác có lịch sử / lệnh thu hồi tuyệt vời, cùng với việc lưu lịch sử từ phiên này sang phiên khác. Đó là một sự thay thế cho sh, bsh, ksh cho lập trình shell và được tạo cho một shell tương tác tốt.
Giống như một quả bóng tuyết lăn xuống dốc, bash đã đạt được động lượng và kích thước.

Vâng, có hàng tá vỏ khác; Vỏ phù hợp hơn cho mục đích cá nhân hoặc sở thích, nhưng đối với tất cả xung quanh vỏ bash làm một công việc tốt và đã có rất nhiều mắt trên nó trong hơn 20 năm.


Tôi hiểu. Tuy nhiên, hầu hết các bản phân phối bao gồm nhiều phần mềm không phải GNU khác. Dường như với tôi rằng bash được sử dụng chỉ vì nó được sử dụng, giống như choroba nhận xét từ Windows là một hệ điều hành thống trị. Tuy nhiên, trong nhiều thập kỷ, Windows có sự hỗ trợ phần cứng (trình điều khiển) tốt hơn khiến cho việc chuyển sang hệ điều hành khác trở nên khó khăn hơn. Tôi không thấy Bash cung cấp tính năng độc đáo nào để ngăn người dùng chuyển đổi?
Milan Babuškov

+1 và câu trả lời hay @bdowning cho câu trả lời ngắn gọn và đơn giản :-)
Nikhil Mulley

2
@ MilanBabuškov Bash phải được cài đặt vì có quá nhiều tập lệnh sử dụng các tính năng dành riêng cho bash. Khi bạn bắt đầu từ giả định đó, bạn phải chứng minh các vỏ bổ sung. Dash đã được đưa vào các bản phân phối như Ubuntu như một phần của kế hoạch giảm thời gian khởi động. Cho rằng bash là "đủ tốt" như một trình bao tương tác, không có trình bao nào khác đưa ra một đối số đủ mạnh để trở thành một phần của quá trình tải gói mặc định.
ssokolow

12

Bash có một số đối thủ tiềm năng:

  • Zsh có các phương tiện tương tác tiên tiến hơn, nhưng một vài điều kỳ quặc khi nói đến kịch bản (ít hơn bây giờ so với trước đây). Vào đầu những năm 1990 đến khi Linux còn ở giai đoạn đầu, zsh hầu như không được biết đến.
  • Ksh là tiêu chuẩn thực tế trên các đơn vị thương mại từ giữa những năm 1980, nhưng nó là phần mềm độc quyền cho đến năm 2000, do đó không phải là một tùy chọn trên Linux. Ngoài ra, ksh có khả năng phiên bản dòng lệnh phụ, so với bash.
  • Pdksh , một bản sao miễn phí của ksh, sẽ là một lựa chọn, nhưng nó không nổi tiếng và có khả năng phiên bản dòng lệnh kém. (Pdksh không còn là một dự án rất tích cực, mặc dù nó vẫn được sử dụng trong một số BSD, nhưng bây giờ ATT ksh là miễn phí.)
  • Một số bản phân phối cài đặt một biến thể tro như /bin/sh. Tro (theo ý tôi là bất kỳ họ vỏ lỏng lẻo nào được gọi là tro) được thiết kế nhỏ và nhanh, không có tính năng tương tác (chỉ dành cho chỉnh sửa tập lệnh). Sự hồi sinh tro tương đối gần đây; trong những năm 1990, các biến thể hiện có thiếu rất nhiều tính năng.
  • Tcsh là trình vỏ tương tác tiên tiến nhất cho đến khi zsh xuất hiện, nhưng nó không tương thích với sh và không tốt lắm với kịch bản .

Hơn nữa, bash là trình bao GNU chính thức và các hệ thống Linux thực sự là GNU / Linux : nhiều chương trình cốt lõi đến từ GNU, ngay cả khi phần nổi tiếng nhất, nhân Linux, không. Vào thời điểm nó trở thành tiêu chuẩn thực tế, bash nổi tiếng, có tư cách chính thức và có một bộ tính năng hợp lý.


Theo tôi hiểu, tiêu chuẩn POSIX chỉ định các tính năng cần thiết cho trình bao Bourne, tại / bin / sh và hầu hết các bản phân phối Linux phụ thuộc vào các tập lệnh shell được viết để sử dụng trình bao Bourne. BASH là phiên bản nâng cao của vỏ Bourne và / bin / sh thực sự là một liên kết đến / bin / bash, khi được thực thi chạy chỉ với các tính năng của vỏ Bourne.
bgvaughan

@bgvaughan Một số bản phân phối tàu bash như /bin/sh, những người khác vận chuyển tro. Ví dụ, Ubuntu /bin/shđã được dash(một nhánh tro được duy trì bởi Debian) trong một thời gian. Bash có nhiều tính năng hơn, tro nhỏ hơn và nhanh hơn. Cả hai đều tuân thủ POSIX (hoặc ít nhất là đủ tuân thủ trong thực tế).
Gilles 'SO- ngừng trở nên xấu xa'

4

Câu trả lời đơn giản nhất? Bởi vì một cái gì đó "phải là" mặc định. Mặc định hợp lý nhất là cái mà hầu hết người dùng đã cảm thấy thoải mái. Về điểm đó Bash là một lựa chọn tốt. Mọi người đều có quyền tự do lựa chọn cái tốt nhất trong thế giới của họ. Hầu hết sẽ chọn sử dụng mặc định nếu nó luôn luôn làm những gì họ cần.


3

Đến từ DOS (đã cài đặt doskey) Tôi thực sự đã bỏ lỡ tính năng nhớ lại các lệnh cuối cùng bằng cách di chuyển con trỏ lên / xuống. BASH là IMO shell đầu tiên thực hiện điều này trên * nix.

Vì vậy, có lẽ hầu hết các chàng trai từ thế hệ đó trở đi thích bash.


Mặc dù không sử dụng máy tính cho đến những năm 1990, tôi đã giả định rằng đó tcshlà vỏ * nix đầu tiên sử dụng các phím mũi tên để điều hướng qua lại trong lịch sử hệ vỏ.
Anthony G - công lý cho Monica

1

Tất cả các câu trả lời khác đều rất hay, nhưng theo quan điểm thực tế: Nếu tôi ngồi xuống trước một hệ thống xa lạ (hoặc truy cập từ xa) và tôi cần phải làm gì đó, tôi có thể tin tưởng vào bash có sẵn trên tất cả các hệ thống trừ các hệ thống lâu đời nhất. Tôi chỉ có thể đi trước và hoàn thành công việc.

Như đã chỉ ra trong các câu trả lời khác và trong câu hỏi của bạn, có rất nhiều shell khác (tôi nghe rất nhiều điều hay về zsh, nhưng chưa thử nó.), Nhưng chúng thay đổi theo cú pháp và đôi khi các lệnh được sử dụng để hoàn thành công việc Nếu tôi chỉ muốn hoàn thành một cái gì đó, bash là đủ khó khăn mà không cần phải thích nghi với vỏ khác.

Ngoài ra, khi tôi viết một kịch bản shell có thể thường hữu ích, tôi viết nó cho bash và tôi biết rằng nếu tôi rất cẩn thận không làm những thứ phụ thuộc hệ thống, nó sẽ chạy gần như mọi nơi.


1

Quán tính.

Bash tình cờ là hệ vỏ miễn phí dễ dàng nhất khi các hệ thống Linux (GNU / Linux, nếu bạn thích) bắt đầu xuất hiện. Thực tế là từ dự án GNU đã không bị tổn thương.

Về lý do tại sao nó vẫn là vỏ mặc định, chưa bao giờ có một lý do đủ tốt để thay đổi nó. Ngay cả khi một số shell khác tốt hơn, vẫn có những lợi thế khi có cùng một vỏ đăng nhập mặc định trên các bản phân phối khác nhau và sẽ rất khó để mọi người (Debian, Red Hat, Suse, v.v.) đồng ý chuyển sang thứ khác.

Và sau tất cả, nó chỉ là một mặc định. Bất kỳ người dùng nào cũng có thể sử dụng chshđể thay đổi vỏ đăng nhập của mình. Không cần phải thay đổi mặc định cho mọi người.

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.