Giải thích về Linux Bourne Shell
Shell Bourne là một trong những shell lâu đời nhất vẫn được sử dụng trên các hệ thống Linux hiện đại, mặc dù nó không được sử dụng rộng rãi như Bash. Đây là những gì bạn cần biết về Bourne shell trên Linux.
Mục Lục
Vỏ Bourne là gì?
Shell Bourne, thường được viết tắt là “sh”, được đặt theo tên của nhà khoa học máy tính người Anh Stephen R. Bourne, người đã phát triển nó khi làm việc tại Bell Labs vào năm 1978. Shell thay thế Thompson Shell trước đó, được viết bởi một trong những người sáng tạo ban đầu của Unix, Ken Thompson.
Shell Bourne ra mắt với Phiên bản 7 Unix vào năm 1979. Nó có các tính năng như kiểm soát luồng, biến và xử lý chuỗi được cải thiện. Các tính năng này làm cho việc sử dụng trình bao làm ngôn ngữ lập trình trở nên dễ dàng hơn thay vì chỉ là một cách để gọi các chương trình khác.
Mặc dù trình bao Bourne vẫn phổ biến để viết các tập lệnh di động trên các hệ thống Unix, nhưng nó đã được thay thế để sử dụng tương tác bởi trình bao C, KornShell, trình bao Bourne Again, còn được gọi là Bash và trình bao Z. Các trình bao này cung cấp các tính năng như lịch sử lệnh và chỉnh sửa dòng lệnh giúp người dùng và quản trị viên dễ dàng hơn.
KornShell, Bash và Z shell (được đề cập sau) có cú pháp chịu ảnh hưởng của Bourne shell.
Các ngôn ngữ kịch bản đa nền tảng mạnh mẽ hơn với các tính năng thậm chí còn nâng cao hơn như Perl và Python cũng thay thế phần lớn kịch bản lệnh shell.
Tuy nhiên, trình bao Bourne được hiểu rộng rãi và rất nhiều tập lệnh được cung cấp cùng với các chương trình Linux sử dụng cú pháp của nó cho các tác vụ khác nhau.
Hành vi của trình bao Bourne đã được mã hóa thành tiêu chuẩn POSIX, vì vậy nhiều hệ thống giống Unix hiện đại triển khai nó theo một cách nào đó bằng cách sử dụng trình bao tương thích.
Các lựa chọn thay thế Bourne Shell hiện đại
Có một số giải pháp thay thế mã nguồn mở hiện đại cho trình bao Bourne ban đầu trên các hệ thống Linux. Dưới đây là một số nổi tiếng nhất:
1. Bourne Again Shell (Bash)
Cái tên Bourne Again shell (Bash) là một cách chơi chữ của Bourne shell. Shell này ban đầu được phát triển như một thành phần của hệ thống GNU, có trước Linux vài năm.
Phần lớn nó tương thích với các tập lệnh ban đầu được viết cho Bourne shell. Nó cũng kết hợp các tính năng như chỉnh sửa dòng lệnh do KornShell tiên phong.
Bash là trình bao mặc định trên nhiều bản phân phối Linux và do đó đã trở thành một tiêu chuẩn thực tế của riêng nó.
2. KornShell
KornShell, còn được gọi là ksh, ban đầu được phát triển bởi David Korn, cũng tại Bell Labs, vào những năm 1980. Được xây dựng dựa trên trình bao Bourne, KornShell đã giới thiệu một số tính năng bổ sung như kiểm soát công việc, mảng và chỉnh sửa dòng lệnh. Cái sau là một tính năng mang tính cách mạng khi nó xuất hiện lần đầu tiên vì nó dễ dàng hơn nhiều so với việc sử dụng cơ chế lịch sử của trình bao C.
Nếu bạn cần chỉnh sửa lại lệnh đã ban hành trước đó, bạn có thể sử dụng các lệnh tương tự như Vi hoặc Emacs để thực hiện.
KornShell là một mặc định trên một số hệ thống Linux thương mại như Oracle Solaris. Vì KornShell ban đầu được AT&T phát hành theo giấy phép độc quyền, nên một phiên bản nguồn mở có tên pdksh cuối cùng đã được phát hành.
3. Vỏ Almquist/Debian Almquist
Vỏ Almquist ban đầu được viết bởi Kenneth Almquist và được dự định là một sự thay thế nhẹ cho vỏ Bourne. Nhiều hệ thống BSD bao gồm nó dưới dạng triển khai sh.
Một phiên bản đã được chuyển sang Debian vào những năm 1990 và được gọi là Debian Almquist shell. Như tên ngụ ý, đó là việc triển khai sh trên các hệ thống Debian và Ubuntu.
4. Vỏ Z
Shell Z, hay zsh, là một trong những shell mới nhất, được phát triển lần đầu vào năm 1990 bởi Paul Falsted. Vỏ Z đã trở nên nổi tiếng với các tính năng tiên tiến của nó. Một ví dụ điển hình là toàn cầu hóa đệ quy hoặc khả năng khớp các ký tự đại diện trong các thư mục con.
Shell Z là shell đăng nhập mặc định cho macOS và Kali Linux.
Khả năng tương thích của Bourne Shell
Mặc dù các trình bao này phần lớn tương thích với các tập lệnh ban đầu được viết cho trình bao Bourne, nhưng vẫn có nhiều cách để thay đổi hành vi của chúng sao cho giống với trình bao ban đầu hơn.
Cách chính để làm điều này là thông qua một liên kết tượng trưng. Hầu hết các hệ thống sẽ liên kết tượng trưng /bin/sh sang Bash hoặc shell khác. Khi được gọi theo cách này, trình bao sẽ chuyển sang chế độ tương thích với trình bao Bourne.
Bạn có thể thấy cái vỏ nào /bin/sh được liên kết với lệnh ls:
ls -l /bin/sh
Bây giờ bạn đã biết về Bourne Shell
Trình bao Bourne là một trong những tiêu chuẩn lâu đời nhất để tạo tập lệnh trên các hệ thống giống Unix. Ngay cả khi nó được thay thế bằng shell khác, nó vẫn rất quan trọng để chạy các tập lệnh do người khác viết.
Bash là một trong những dẫn xuất Bourne tốt nhất để mã hóa, đặc biệt là cách tiếp cận các biến của nó. Nó có một số biến độc đáo có thể khiến bạn muốn xem xét nó cho dự án tiếp theo của mình.