Những người khác đã chỉ ra rằng các tiền đề của câu hỏi, rằng vỏ Bourne Again là mặc định và có mặt khắp nơi, là hoàn toàn sai.
Thêm vào đó, thực sự có những lý do chính đáng để sử dụng một cái gì đó ngoài shell Bourne Again để diễn giải các kịch bản shell. Những lý do thúc đẩy dự án lớn của Ubuntu và Debian, trong một số năm, để loại bỏ bashisms và để làm cho càng nhiều của các kịch bản shell chạy bởi hệ thống khởi tạo (mà là một rất nhiều của kịch bản shell với hệ thống 5 rc
) và gói cài đặt / gỡ bỏ sử dụng các Vỏ Shell Almquist thay vì vỏ Bourne Again.
Nói một cách đơn giản: Shell Bourne Again, chứa đầy đủ các tính năng tương tác, không phải là trình thông dịch shell nhanh nhất cho tập lệnh shell tuân thủ POSIX. Vì vậy, nếu ai đó có thể tạo các tập lệnh shell của một người tuân thủ POSIX, diễn giải chúng bằng một chương trình nhẹ hơn, như trình vỏ Debian Almquist, hệ thống của một người sẽ hoạt động tốt hơn. (Cuối cùng, Debian phải điều chỉnh một chút cho hệ vỏ Almquist, để thêm hỗ trợ cho một vài cấu trúc vỏ không phải POSIX đơn giản là được nhúng quá sâu và rộng rãi và quá hữu dụng để loại bỏ.)
Kết quả của tất cả là một lợi ích lớn trong hiệu suất bootstrap.
Vì vậy, có hai lớp vỏ khác nhau để xem xét, ở đây:
- Các shell với tất cả các tính năng tương tác hào nhoáng, được cấu hình là các shell đăng nhập tương tác cho người dùng trong cơ sở dữ liệu tài khoản.
- Các shell giải thích rất nhiều script một cách nhanh chóng, được sử dụng làm trình thông dịch script bởi các chương trình shell script.
Lưu ý rằng nói về điều này là "thích /bin/sh
" là quá đơn giản. Debian thực sự có ít nhất hai mục tiêu:
Đối mặt với các quản trị viên sử dụng shell Debian Almquist, Z Shell (ở chế độ POSIX), shell Bourne Again (ở chế độ POSIX), shell MirBSD Korn và các loại khác /bin/sh
, có cả
Không thể tạo ra các tập lệnh có khả năng di động nhất có thể, do đó, việc chuyển đổi những gì /bin/sh
được ánh xạ sang không phá vỡ mọi thứ; hoặc là
Tập lệnh làm cho các tập lệnh không di động rõ ràng nhắm mục tiêu chương trình thông dịch chính xác , thay vì chỉ đơn giản là mong đợi /bin/sh
bản đồ đó đến nó.
Có làm cho Almquist Debian shell lập bản đồ mặc định cho /bin/sh
thay cho Bourne Shell, để cho những kịch bản đó là POSIX-tuân thủ QTI (hoặc, đúng hơn, chính sách Debian Manual tuân thủ QTI) chạy nhanh hơn.
Và tất nhiên một khi có được điều này, người ta có thể đưa nó đi xa hơn nhiều; chẳng hạn như xem xét sự đánh đổi hiệu quả của các lượt thích /bin/true
và /usr/bin/clear
là các kịch bản shell hoặc các chương trình được biên dịch. Nhưng điều đó vượt quá phạm vi của câu trả lời này, may mắn thay. ☺
Tất nhiên, không có cái nào là rất mới, thậm chí là dành riêng cho Unix. Quay trở lại trước thế kỷ, tôi đã viết và xuất bản một trình thông dịch dòng lệnh có cả hai hương vị "tương tác" và "không tương tác", giải thích chính sự phân chia này trong tài liệu của nó và lưu ý sự khác biệt giữa các biến môi trường COMSPEC
và OS2_SHELL
biến. Tương tự như vậy, thảo luận về việc loại bỏ bashism trong System V rc
và các tập lệnh cài đặt / gỡ bỏ gói có từ những năm 1990.
đọc thêm
/bin/sh
nếu bạn không sử dụng cácbash
chức năng cụ thể . Một ngày nào đó bạn có thể phải sử dụng một trong các tập lệnh của mình trên một hệ thống chưa được cài đặt (máy chủ từ xa, máy tính nhúng ...)