Bạn muốn biết Shell là gì? Shell có mấy loại? Shell có những chức năng nào? Tham khảo bài viết sau đây của BKNS để có đáp án chi tiết cho những thắc mắc đó.

Tóm Tắt Bài Viết
1. Shell là gì?
Shell là một chương trình làm việc giữa người dùng và nhân Linux. Mỗi lệnh mà người dùng gõ sẽ được Shell biên dịch và chuyển đến nhân Linux. Hiểu một cách đơn giản thì Shell là bộ biên dịch các ngôn ngữ lệnh. Bên cạnh đó, Shell còn sử dụng triệt để các chương trình và tiện ích có trên hệ thống.
Nhân (Kernel) có nhiệm vụ kiểm soát các hoạt động của máy tính, điều phối tiện ích trong xử lý lệnh, đảm bảo sự hòa hợp giữa các tiện ích, đảm bảo các tiện ích không tiêu thụ hết tài nguyên của hệ thống và lên lịch quản lý các quy trình hệ thống.

Shell tạo nên môi trường cho người dùng tùy chỉnh các file khởi tạo. Các file này cung cấp thông tin cài đặt sao cho phù hợp với đặc điểm của môi trường giữa những người dùng khác nhau. Cụ thể:
- Tìm đường dẫn đến lệnh
- Set quyền mặc định trên file mới
- Giá trị các biến mà các chương trình khác sử dụng
- Các giá trị mà người dùng có khả năng tùy chỉnh

2. Có mấy loại Shell?
Sau đây, BKNS sẽ giới thiệu với bạn những loại Shell phổ biến trên thế giới.
2.1 Shell Bourne – SH
Shell Bourne được viết bởi Steven Bourne. Đây là một loại Shell nguyên thủy, nó có mặt trên hầu hết hệ thống Unix, Linux,… Shell Bourne rất hữu ích trong việc lập trình Shell. Tuy nhiên, hạn chế của Shell Bourne đó là không có khả năng xử lý tương tác với người sử dụng giống như các loại Shell khác.
2.2 Bourne Again Shell – Bash
Bourne Again Shell là phần mở rộng thêm của Shell Bourne. Shell này kế thừa tất cả những gì mà Shell Bourne đã có đồng thời phát triển thêm những gì mà Shell Bourne vẫn còn thiếu. Bourne Again Shell có giao diện lệnh dễ sử dụng, mạnh mẽ và lập trình linh hoạt,… Bourne Again Shell là một Shell được cài đặt mặc định trên các hệ thống của Linux.

2.3 Shell C – CSH
CSH là Shell đáp ứng và tương thích cho người dùng. Shell này hỗ trợ đắc lực cho Programmer C và các tính năng tự động hoàn thành các dòng lệnh.
2.4 Shell Korn – KSH
Shell Korn là loại Shell được đánh giá tốt nhất. Shell Korn được kết hợp cùng các tính năng của Shell Bourne và Shell C.

2.5 Shell ZSH
Tính đến thời điểm hiện tại thì Shell ZSH được đánh giá là Shell mạnh nhất. Nó hỗ trợ các tính năng cực mạnh. Bên cạnh đó, việc cài đặt Shell ZSH lại cực kỳ đơn giản và nhanh chóng.
Shell NFSSH, SSH, MCSH,… cũng là những loại Shell được sử dụng phổ biến hiện nay.
3. Shell có chức năng gì?
Shell được xây dựng để bao quanh lớp Kernel. Bởi vì, việc thao tác với Kernel rất phức tạp và đòi hỏi kỹ thuật cao để giảm được tính phức tạp đó. Với những lớp bao quanh (Shell) sẽ giúp cho lớp Kernel được bảo vệ từ tránh sai sót của người sử dụng. Khi đó, người dùng chỉ cần gửi yêu cầu đến Shell và đợi nó biên dịch sau đó gửi đến Kernel. Thông thường, các loại Shell được sử dụng phổ biến đều có chức năng:
- Biên dịch lệnh
- Khởi tạo chương trình
- Dịch hướng vào ra
- Kết nối đường ống
- Thao tác trên các file
- Lập trình Shell
- Điều khiển môi trường
- Duy trì các biến
4. Shell trong Linux khác gì so với Terminal và Kernel?
4.1 Shell và Terminal
Terminal không phải là Shell. Terminal (hay Terminal Emulator) là ứng dụng giao diện đồ họa cung cấp cửa sổ để người dùng nhìn thấy và gõ lệnh, còn Shell là chương trình chạy bên trong Terminal để xử lý lệnh đó.
Một số Terminal Emulator phổ biến:
- GNOME Terminal: terminal mặc định trên Ubuntu/GNOME
- Konsole: terminal mặc định trên KDE Plasma
- iTerm2: terminal mạnh mẽ được ưa chuộng trên macOS
- Windows Terminal: terminal hiện đại của Microsoft, hỗ trợ PowerShell, CMD và WSL
- Alacritty: terminal cực nhanh viết bằng Rust, ưa chuộng trong giới developer
4.2 Shell và Kernel
Kernel là nhân hệ điều hành, tầng thấp nhất trực tiếp điều khiển phần cứng, quản lý bộ nhớ và điều phối tiến trình. Còn Shell là tầng ngoài cùng, lớp giao tiếp với người dùng, không bao giờ trực tiếp chạm đến phần cứng.
Kiến trúc phân lớp của Linux từ trong ra ngoài như sau:
┌─────────────────────────────┐
│ Người dùng │ ← Tầng 4: User Space
├─────────────────────────────┤
│ Shell / Ứng dụng │ ← Tầng 3: Shell & Applications
├─────────────────────────────┤
│ Kernel │ ← Tầng 2: Kernel Space
├─────────────────────────────┤
│ Phần cứng (Hardware) │ ← Tầng 1: Hardware
└─────────────────────────────┘
Dưới đây là nhiệm vụ của Kernel:
- Quản lý bộ nhớ: Phân bổ và thu hồi RAM cho từng tiến trình
- Quản lý tiến trình: Lên lịch CPU (CPU scheduling) để các chương trình chia sẻ tài nguyên
- Quản lý thiết bị: Giao tiếp với ổ cứng, card mạng, USB thông qua driver
- Bảo mật: Kiểm soát quyền truy cập file và tài nguyên hệ thống
4.3 Bảng so sánh Shell với Terminal và Kernel trong Linux
| Tiêu chí | Shell | Terminal | Kernel |
|---|---|---|---|
| Vai trò | Thông dịch & thực thi lệnh | Hiển thị giao diện nhập/xuất | Điều khiển phần cứng & tài nguyên |
| Vị trí kiến trúc | Tầng ứng dụng (user space) | Tầng ứng dụng (user space) | Tầng nhân (kernel space) |
| Người dùng tương tác | Trực tiếp qua lệnh | Trực tiếp qua cửa sổ | Không tương tác trực tiếp |
| Ví dụ | Bash, Zsh, sh | GNOME Terminal, iTerm2 | Linux Kernel, Darwin |
| Thay thế được không | Có (đổi shell khác) | Có (đổi terminal khác) | Không (thành phần bắt buộc) |
5. Một số câu hỏi liên quan đến Shell
5.1 Shell Linux là gì?
Shell Linux là chương trình giữa người dùng và nhân Linux. Mỗi lệnh mà người dùng gõ sẽ được Shell biên dịch và chuyển đến nhân Linux. Shell Linux chính là một bộ biên dịch ngôn ngữ lệnh.
5.2 Bash shell là gì?
Bash shell là sự kết hợp các tính năng từ Korn Shell và C Shell. Bash shell tuân thủ các thông số kỹ thuật Shell POSIX 2. Bash shell cung cấp một giao diện dòng lệnh CLI để làm việc trên các hệ thống “* Nix”. Đây là Shell được sử dụng rộng rãi trên các hệ thống Linux. Có 3 file quan trọng đối với Bash đó là: “.bash_profile”, “.bashrc” và “.bash_logout”.

5.3 File .sh là gì?
File .sh là một Shell Script chứa chuỗi các lệnh cho hệ thống dựa trên nền tảng hệ điều hành Unix, Linux, Ubuntu, Debian,…
5.4 Shell Script là gì?
Shell Script (trong Unix, Linux) là một danh sách các lệnh được liệt kê lần lượt theo thứ tự thi hành. Shell Script tốt sẽ có các comment và dấu thăng (#) đứng trước để miêu tả các bước. Shell Script và các hàm không được biên dịch mà chỉ được thông dịch.

Trên đây là thông tin chi tiết về Shell, các loại Shell phổ biến trên thế giới và chức năng của nó. Nói chung, Shell là một môi trường mà người dùng có thể chạy các lệnh, chương trình và Shell Script. Shell có rất nhiều phiên bản, mỗi phiên bản Shell sẽ có bộ thiết lập các lệnh, hàm được công nhận riêng của nó.
Nếu còn điều gì thắc mắc, hãy cho BKNS biết thông qua phần bình luận bên dưới bài viết. Thường xuyên truy cập website bkns.vn để cập nhật thêm nhiều bài viết hữu ích khác liên quan đến dịch vụ công nghệ thông tin và giải pháp mạng nhé!




































