Shell trong Linux là gì? Có bao nhiêu loại shell

0
hack user data

Thường thì có rất nhiều người sử dụng hệ điều hành Linux/UNIX thường xuyên nhưng vẫn không hiểu rõ bản chất shell là gì. Đơn giản mọi người chỉ hiểu shell là những dòng lệnh để tương tác với hệ điều hành Linux như lệnh: cd, mv, ls,… Trong bài viết này, mình sẽ giới thiệu và giải thích cho các bạn rõ hơn về shell và các loại shell trong hệ điều hành Linux.

Shell là gì?

Shell là một chương trình cung cấp một giao diện giữa người dùng và kernel hệ điều hành. Hệ điều hành sẽ start một shell cho mỗi user khi user đăng nhập vào hệ thống hoặc mở một cửa sổ terminal.

Kernel hệ điều hành là một chương trình mà:

  • Kiểm soát tất cả hoạt động trên máy tính
  • Điều phối tất cả các tiện ích đang được thực thi
  • Đảm bảo các tiện ích đang được thực thi không can thiệp vào các tiện ích đang được thực thi khác hoặc tiêu tốn tất cả tài nguyên có trên hệ thống.
  • Lập lịch và quản lý tất cả process có trên hệ thống

Xem thêm:

Bằng cách giao tiếp với kernel, shell sẽ cho phép user thực thi các tiện ích và chương trình.

Các loại shell

Dưới đây mình sẽ liệt kê các loại shell khác nhau hầu như đều có sẵn trên các hệ điều hành UNIX/Linux. Các tính năng của shell và dấu nhắc lệnh mình cũng sẽ mô tả bên dưới:

Bourne Shell

Bourne Shell hay sh được viết ra bởi Steve Bourne tại AT&T Bell Labs chính là phiên bản shell gốc đầu tiên có mặt trên UNIX. Nó là shell được rất nhiều nhà phát triển ưa chuộng sử dụng để lập trình shell vì tính nhỏ gọn và tốc độ. Có một nhược điểm lớn của sh chính là nó thiếu các tính năng tương tác khi sử dụng, ví dụ như xem lại các command đã sử dụng trước đó (lệnh history có trong bash). Hơn nữa, Bourne shell cũng thiếu đi khả năng xử lý toán học và logic được tích hợp sẵn trong shell.

Đây là shell mặc định có trên hệ điều hành Solaris. Và nó là shell tiêu chuẩn cho các tập lệnh quản trị hệ thống Solaris. User non-root sẽ có dấu nhắc lệnh là $ và user root sẽ có dấu nhắc lệnh phía trước là #.

C Shell

C Shell hay csh là shell được cải tiến bởi Bill Joy tại đại học California ở Berkeley. Nó tích hợp sẵn các tính năng sử dụng tương tác như lệnh aliases và history. Nó cũng tích hợp luôn các tính năng lập trình tiện lợi như: cú pháp biểu thức toán học giống ngôn ngữ lập trình C .

User non-root sẽ có dấu nhắc lệnh chỗ hostname là % và user root sẽ có dấu nhắc lệnh là #.

Korn Shell

Korn Shell viết tắt là ksh được viết bởi David Korn tại AT&T Bell Labs. Là phiên bản kế thừa của Bourne shell – hỗ trợ mọi thứ mà Bourne shell có. Nó có các tính năng tương tác lập trình tiện lợi như mảng số học, thao tascc chuỗi và các hàm giống ngôn ngữ C. Và điểm đặc biệt là nó chạy nhanh hơn nhiều so với C Shell.

User non-root sẽ có dấu nhắc lệnh là $ và user root có dấu nhắc lệnh là #.

GNU Bourne-Again Shell

GNU Bourne-Again Shell hay tên gọi quen thuộc thân thương nhất là bash shell – tương thích với Bourne shell. Nó kết hợp các tính năng hữu ích từ các shell trên mà mình đã trình bày là Korn Shell và C Shell.

Nó có các phím mũi tên tự động được ánh xạ tự động dành cho mục đích chỉnh sửa và gọi lại. Đối với bash shell, user-non root sẽ có dấu nhắc lệnh là bash-x.xx$ trong đó x.xx chỉ ra số phiên bản, ví dụ: bash-3.50$

Và user root có dấu nhắc lệnh là bash-x.xx# trong đó x.xx chỉ ra số phiên bản, ví dụ: bash-3.50#

Kết luận

Dưới đây mình sẽ tổng hợp lại cái bảng so sánh giữa 4 phiên bản shell và đặc tính giữa chúng ra sao

ShellĐường dẫnDấu nhắc lệnh (user non-root)Dấu nhắc lệnh (user root)
The Bourne Shell (sh)/bin/sh and /sbin/sh$#
The C Shell (csh)/bin/csh%#
The Korn Shell (ksh)/bin/ksh$#
The GNU Bourne-Again Shell (Bash)/bin/bashbash-x.xx$bash-x.xx#
5/5 (1 Review)