
Shell làm gì?
Khi bạn đăng nhập tại dòng lệnh hoặc khởi chạy cửa sổ đầu cuối trên Linux, hệ thống sẽ khởi chạy chương trình shell. Shell cung cấp một cách tiêu chuẩn để mở rộng môi trường dòng lệnh. Bạn có thể hoán đổi vỏ mặc định cho một cái khác, nếu bạn muốn.
Môi trường shell đầu tiên là Thompson Shell, được phát triển tại Bell Labs và được phát hành vào năm 1971. Các môi trường Shell đã được xây dựng trên khái niệm từ đó, bổ sung thêm nhiều tính năng, chức năng và cải tiến tốc độ mới.
Ví dụ, Bash cung cấp hoàn thành tên và tên tệp, các tính năng kịch bản nâng cao, lịch sử lệnh, màu cấu hình, bí danh lệnh và nhiều tính năng khác không có sẵn vào năm 1971 khi trình bao đầu tiên được phát hành.
Vỏ cũng được sử dụng trong nền bởi các dịch vụ hệ thống khác nhau. Bản phân phối Linux bao gồm nhiều hàm được viết dưới dạng tập lệnh shell. Các script này là các lệnh và các hàm shell script nâng cao khác chạy qua môi trường shell.
Shells dẫn đến Bash: sh, csh, tsh và ksh
Người tiên phong nổi bật nhất của vỏ hiện đại là vỏ Bourne - còn được gọi là "sh" - được đặt tên theo người sáng tạo Stephen Bourne, người đã làm việc tại phòng thí nghiệm Bell & AT của AT & T. Được phát hành vào năm 1979, nó đã trở thành trình thông dịch lệnh mặc định trong Unix vì nó hỗ trợ cho việc thay thế lệnh, đường ống, biến, kiểm tra điều kiện và vòng lặp, cùng với các tính năng khác. Nó không cung cấp nhiều tùy chỉnh cho người dùng và không hỗ trợ các tính năng hiện đại như các bí danh, hoàn thành lệnh và các hàm vỏ (mặc dù điều này cuối cùng đã được thêm vào).
C shell, hay “csh”, được phát triển vào cuối những năm 1970 bởi Bill Joy tại Đại học California, Berkley. Nó thêm vào rất nhiều yếu tố tương tác mà người dùng có thể kiểm soát hệ thống của họ, như bí danh (phím tắt cho lệnh dài), khả năng quản lý công việc, lịch sử lệnh và hơn thế nữa. Nó được mô phỏng hóa bằng ngôn ngữ lập trình C, bản thân hệ điều hành Unix đã được viết. Điều này cũng có nghĩa là người dùng vỏ Bourne phải học C để họ có thể nhập các lệnh trong đó. Ngoài ra, csh có khá nhiều lỗi đã bị người dùng và người sáng tạo rèn luyện trong một khoảng thời gian dài. Mọi người đã kết thúc bằng cách sử dụng vỏ Bourne cho các tập lệnh vì nó xử lý các lệnh không tương tác tốt hơn, nhưng bị mắc kẹt với vỏ C để sử dụng bình thường.

Sự ra đời của bash

Bash đã được cải thiện trong nhiều thập kỷ kể từ lần phát hành đầu tiên vào năm 1989, nhưng nó vẫn là trình bao mặc định trên hầu hết các bản phân phối Linux hiện nay. Đây cũng là trình bao mặc định trên hệ điều hành MacOS của Apple và có sẵn để cài đặt trên Windows 10 của Microsoft.
Vỏ mới hơn: tro, dấu gạch ngang, zsh và cá
Trong khi cộng đồng Linux đã giải quyết trên Bash trong những năm kể từ đó, các nhà phát triển đã không ngừng tạo ra các vỏ mới khi Bash được phát hành lần đầu tiên 28 năm trước.
Kenneth Almquist tạo ra một bản sao vỏ Bourne được gọi là vỏ Almquish, A Shell, “tro”, hoặc đôi khi chỉ “sh”. nó cũng tương thích với POSIX và trở thành shell mặc định trong BSD, một nhánh khác của Unix. Vỏ tro là nhẹ hơn bash, mà làm cho nó phổ biến trong các hệ thống nhúng Linux. Nếu bạn có một điện thoại Android bắt nguồn với cài đặt BusyBox - hoặc bất kỳ thiết bị nào khác có bộ phần mềm BusyBox - đó là sử dụng mã từ tro.



Bạn nên chọn loại nào? (và Tại sao Zsh là phổ biến)
Bạn không cần phải chọn một trình bao. Hệ điều hành của bạn chọn trình bao mặc định cho bạn và lựa chọn đó hầu như luôn luôn bash. Ngồi xuống trước một bản phân phối Linux - hoặc thậm chí là một máy Mac - và bạn hầu như sẽ luôn có một môi trường bash shell. Bash có một vài tính năng nâng cao, nhưng có thể bạn sẽ không sử dụng chúng trừ khi bạn lập trình các tập lệnh shell.
Trên hệ thống Linux nhúng hoặc hệ thống BSD, bạn sẽ kết thúc với vỏ tro. Nhưng tro là một vỏ bọc dựa trên Bourne và phần lớn tương thích với bash. Bất kỳ kiến thức nào bạn có từ việc sử dụng bash sẽ chuyển sang sử dụng vỏ tro hoặc dấu gạch ngang, mặc dù một số tính năng tạo kịch bản nâng cao không có sẵn trong lớp vỏ nhẹ này.
Hầu hết mọi trình bao bạn sẽ gặp phải là dựa trên Bourne và hoạt động tương tự - bao gồm zsh.
Đó là lý do tại sao zsh là phổ biến. Vỏ mới hơn này tương thích với bash, nhưng bao gồm nhiều tính năng hơn. Vỏ zsh cung cấp tính năng sửa lỗi chính tả được tích hợp sẵn, cải thiện dòng lệnh, các mô-đun có thể tải hoạt động như các trình cắm thêm cho shell, các bí danh chung cho phép bạn đặt tên tệp hoặc bất kỳ thứ gì khác trên dòng lệnh thay vì chỉ lệnh và hỗ trợ theming theming. Nó giống như bash, nhưng với rất nhiều tính năng bổ sung, các tính năng bổ sung và các tùy chọn có thể định cấu hình bạn có thể đánh giá cao nếu bạn dành nhiều thời gian ở dòng lệnh.
Nếu bạn quen thuộc với bash, bạn có thể chuyển sang zsh mà không cần phải tìm hiểu cú pháp khác - bạn sẽ chỉ nhận được các tính năng bổ sung. nếu bạn quen thuộc với zsh, bạn có thể chuyển sang bash mà không cần tìm hiểu cú pháp khác - bạn sẽ không có quyền truy cập vào các tính năng đó.

Có những vỏ khác nữa. Ví dụ, vỏ tcsh vẫn còn xung quanh và vẫn là một tùy chọn. FreeBSD sử dụng tsch như vỏ gốc và tro mặc định của nó làm shell tương tác mặc định của nó. Nếu bạn thường xuyên sử dụng chương trình C, tsch có thể phù hợp hơn với bạn. Tuy nhiên, nó gần như thường được sử dụng như bash hoặc zsh.
Cách chuyển đổi giữa các Shell
Thật dễ dàng để chuyển sang một trình bao mới để dùng thử. Chỉ cần cài đặt trình bao từ trình quản lý gói của phân phối Linux của bạn và nhập lệnh để khởi chạy trình bao.
Ví dụ: giả sử bạn muốn thử zsh trên Ubuntu. Bạn sẽ chạy các lệnh sau để cài đặt và sau đó khởi chạy lệnh:
sudo apt install zsh zsh
Bạn sẽ ngồi ở vỏ zsh. Kiểu"
exit
”Tại vỏ để rời khỏi nó và trở về trình bao hiện tại của bạn.

chsh
hoặc "Thay đổi Shell", lệnh.
Để sử dụng lệnh này, trước tiên bạn sẽ cần phải tìm đường dẫn đầy đủ đến trình bao của bạn bằng lệnh nào. Ví dụ: giả sử chúng tôi muốn thay đổi thành vỏ zsh. Chúng tôi sẽ chạy lệnh sau:
which zsh
Trên Ubuntu, điều này cho chúng ta biết số nhị phân zsh được lưu trữ tại / usr / bin / zsh.
Chạy lệnh sau, nhập mật khẩu của bạn và bạn sẽ được nhắc chọn một vỏ đăng nhập mới:
chsh
Theo lệnh trên, chúng tôi sẽ nhập
/usr/bin/zsh
. Vỏ zsh sau đó sẽ là mặc định của chúng tôi cho đến khi chúng tôi chạy
chsh
và đổi lại nó.
