Từ ý kiến của bạn, bạn dường như bối rối về chính xác vỏ là gì. Nhân chịu trách nhiệm quản lý hệ thống. Đó là phần thực sự tải và chạy chương trình, truy cập tệp, cấp phát bộ nhớ, v.v. Nhưng kernel không có giao diện người dùng; bạn chỉ có thể giao tiếp với nó bằng cách sử dụng một chương trình khác làm trung gian.
Shell là một chương trình in lời nhắc, đọc một dòng đầu vào từ bạn và sau đó diễn giải nó dưới dạng một hoặc nhiều lệnh để thao tác các tệp hoặc chạy các chương trình khác. Trước khi phát minh ra GUI, shell là giao diện người dùng chính của HĐH. Trên MS-DOS, shell được gọi command.com
và rất ít người từng thử sử dụng một cái khác. Tuy nhiên, trên Unix, đã có nhiều shell mà người dùng có thể chọn.
Chúng có thể được chia thành 3 loại. Các shell tương thích với Bourne sử dụng cú pháp xuất phát từ shell Bourne ban đầu . Shell C sử dụng cú pháp từ shell C ban đầu . Sau đó, có các shell không điều kiện phát minh ra cú pháp của riêng chúng hoặc mượn một từ một số ngôn ngữ lập trình và thường ít phổ biến hơn nhiều so với hai loại đầu tiên.
Lệnh tích hợp đơn giản là một lệnh mà shell tự thực hiện, thay vì diễn giải nó như một yêu cầu tải và chạy một số chương trình khác. Điều này có hai tác dụng chính. Đầu tiên, nó thường nhanh hơn, vì tải và chạy chương trình cần có thời gian. Tất nhiên, lệnh chạy càng lâu, thời gian tải càng ít đáng kể so với thời gian chạy tổng thể (vì thời gian tải khá không đổi).
Thứ hai, một lệnh tích hợp có thể ảnh hưởng đến trạng thái bên trong của shell. Đó là lý do tại sao các lệnh như cd
phải được tích hợp sẵn, bởi vì một chương trình bên ngoài không thể thay đổi thư mục hiện tại của trình bao. Các lệnh khác, như echo
, có thể được tích hợp sẵn để đạt hiệu quả, nhưng không có lý do nội tại nào chúng không thể là các lệnh bên ngoài.
Những lệnh nào được tích hợp tùy thuộc vào trình bao mà bạn đang sử dụng. Bạn sẽ phải tham khảo tài liệu của nó để biết danh sách (ví dụ: bash
các lệnh dựng sẵn được liệt kê trong Chương 4 của hướng dẫn sử dụng ). Các type
lệnh có thể cho bạn biết nếu một lệnh là built-in (nếu shell của bạn là POSIX tương thích), bởi vì POSIX đòi hỏi type
có một built-in. Nếu which
không phải là tích hợp trong trình bao của bạn, thì có lẽ nó sẽ không biết về phần tích hợp của trình bao của bạn, nhưng sẽ chỉ tìm các chương trình bên ngoài.