Sự khác biệt giữa Bash, Zsh và các Shell Linux khác là gì?

Mục lục:

Sự khác biệt giữa Bash, Zsh và các Shell Linux khác là gì?
Sự khác biệt giữa Bash, Zsh và các Shell Linux khác là gì?

Video: Sự khác biệt giữa Bash, Zsh và các Shell Linux khác là gì?

Video: Sự khác biệt giữa Bash, Zsh và các Shell Linux khác là gì?
Video: Hướng dẫn sử dụng Redmi Watch 2 Lite cực chi tiết | Thế Giới Đồng Hồ - YouTube 2024, Tháng tư
Anonim
Hầu hết các bản phân phối Linux bao gồm bash shell theo mặc định, nhưng bạn cũng có thể chuyển sang môi trường shell khác. Zsh là một lựa chọn đặc biệt phổ biến, và có những vỏ khác, như tro, gạch ngang, cá và tcsh. Nhưng sự khác biệt là gì và tại sao lại có quá nhiều?
Hầu hết các bản phân phối Linux bao gồm bash shell theo mặc định, nhưng bạn cũng có thể chuyển sang môi trường shell khác. Zsh là một lựa chọn đặc biệt phổ biến, và có những vỏ khác, như tro, gạch ngang, cá và tcsh. Nhưng sự khác biệt là gì và tại sao lại có quá nhiều?

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.

Theo thời gian, rất nhiều người đã sửa lỗi và thêm các tính năng vào trình bao C, lên đến đỉnh điểm trong một phiên bản cải tiến của csh được gọi là “tcsh”. Nhưng csh vẫn là mặc định trong các máy tính dựa trên Unix và đã thêm một số tính năng không chuẩn. David Korn từ Bell Labs đã làm việc trên KornShell, hoặc “ksh”, cố gắng cải thiện tình hình bằng cách tương thích ngược với ngôn ngữ của Bourne shell nhưng thêm nhiều tính năng từ vỏ csh. Nó được phát hành vào năm 1983, nhưng theo một giấy phép sở hữu độc quyền. Nó không phải là phần mềm miễn phí cho đến những năm 2000, khi nó được phát hành theo nhiều giấy phép nguồn mở khác nhau.
Theo thời gian, rất nhiều người đã sửa lỗi và thêm các tính năng vào trình bao C, lên đến đỉnh điểm trong một phiên bản cải tiến của csh được gọi là “tcsh”. Nhưng csh vẫn là mặc định trong các máy tính dựa trên Unix và đã thêm một số tính năng không chuẩn. David Korn từ Bell Labs đã làm việc trên KornShell, hoặc “ksh”, cố gắng cải thiện tình hình bằng cách tương thích ngược với ngôn ngữ của Bourne shell nhưng thêm nhiều tính năng từ vỏ csh. Nó được phát hành vào năm 1983, nhưng theo một giấy phép sở hữu độc quyền. Nó không phải là phần mềm miễn phí cho đến những năm 2000, khi nó được phát hành theo nhiều giấy phép nguồn mở khác nhau.

Sự ra đời của bash

Giao diện hệ điều hành di động cho Unix, hoặc POSIX, là một phản ứng khác đối với việc triển khai csh sở hữu độc quyền. Nó đã tạo thành công một tiêu chuẩn cho việc giải thích lệnh (trong số những thứ khác) và cuối cùng đã phản chiếu rất nhiều tính năng trong KornShell. Đồng thời, Dự án GNU đã cố tạo một hệ điều hành miễn phí tương thích với Unix. Dự án GNU đã phát triển một phần mềm tự do là một phần của hệ điều hành tự do của nó và đặt tên nó là "Bourne Again Shell", hoặc "bash".
Giao diện hệ điều hành di động cho Unix, hoặc POSIX, là một phản ứng khác đối với việc triển khai csh sở hữu độc quyền. Nó đã tạo thành công một tiêu chuẩn cho việc giải thích lệnh (trong số những thứ khác) và cuối cùng đã phản chiếu rất nhiều tính năng trong KornShell. Đồng thời, Dự án GNU đã cố tạo một hệ điều hành miễn phí tương thích với Unix. Dự án GNU đã phát triển một phần mềm tự do là một phần của hệ điều hành tự do của nó và đặt tên nó là "Bourne Again Shell", hoặc "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.

Debian đã phát triển một môi trường vỏ dựa trên tro và gọi nó là "dấu gạch ngang". Nó được thiết kế tuân thủ POSIX và nhẹ, vì vậy nó nhanh hơn Bash, nhưng sẽ không có tất cả các tính năng của nó. Ubuntu sử dụng dấu gạch ngang làm shell mặc định cho các tác vụ không tương tác, tăng tốc các kịch bản lệnh shell và các tác vụ khác đang chạy trong nền.Tuy nhiên, Ubuntu vẫn sử dụng bash cho các trình vỏ tương tác, vì vậy người dùng vẫn có môi trường tương tác đầy đủ tính năng.
Debian đã phát triển một môi trường vỏ dựa trên tro và gọi nó là "dấu gạch ngang". Nó được thiết kế tuân thủ POSIX và nhẹ, vì vậy nó nhanh hơn Bash, nhưng sẽ không có tất cả các tính năng của nó. Ubuntu sử dụng dấu gạch ngang làm shell mặc định cho các tác vụ không tương tác, tăng tốc các kịch bản lệnh shell và các tác vụ khác đang chạy trong nền.Tuy nhiên, Ubuntu vẫn sử dụng bash cho các trình vỏ tương tác, vì vậy người dùng vẫn có môi trường tương tác đầy đủ tính năng.
Một trong những shell mới nhất phổ biến nhất là Z shell hoặc “zsh”. Được tạo bởi Paul Falstad vào năm 1990, zsh là một trình bao kiểu Bourne chứa các tính năng bạn sẽ tìm thấy trong bash, cộng thêm nhiều hơn nữa. Ví dụ, zsh có kiểm tra chính tả, khả năng xem thông tin đăng nhập / đăng xuất, một số tính năng lập trình tích hợp như bytecode, hỗ trợ ký hiệu khoa học theo cú pháp, cho phép số học dấu phẩy động và nhiều tính năng hơn.
Một trong những shell mới nhất phổ biến nhất là Z shell hoặc “zsh”. Được tạo bởi Paul Falstad vào năm 1990, zsh là một trình bao kiểu Bourne chứa các tính năng bạn sẽ tìm thấy trong bash, cộng thêm nhiều hơn nữa. Ví dụ, zsh có kiểm tra chính tả, khả năng xem thông tin đăng nhập / đăng xuất, một số tính năng lập trình tích hợp như bytecode, hỗ trợ ký hiệu khoa học theo cú pháp, cho phép số học dấu phẩy động và nhiều tính năng hơn.
Một shell mới hơn là Friendly Interactive Shell, hoặc “fish”, được phát hành vào năm 2005. Nó có một cú pháp dòng lệnh duy nhất được thiết kế dễ học hơn một chút, nhưng không bắt nguồn từ shell Bourne hoặc C shell. Đó là một ý tưởng thú vị, nhưng những gì bạn học bằng cách sử dụng cá sẽ không nhất thiết giúp bạn sử dụng bash và các loại vỏ có nguồn gốc Bourne khác.
Một shell mới hơn là Friendly Interactive Shell, hoặc “fish”, được phát hành vào năm 2005. Nó có một cú pháp dòng lệnh duy nhất được thiết kế dễ học hơn một chút, nhưng không bắt nguồn từ shell Bourne hoặc C shell. Đó là một ý tưởng thú vị, nhưng những gì bạn học bằng cách sử dụng cá sẽ không nhất thiết giúp bạn sử dụng bash và các loại vỏ có nguồn gốc Bourne khác.

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 đó.

"Oh My ZSH" là một công cụ giúp bạn dễ dàng kích hoạt các trình cắm thêm zsh và chuyển đổi giữa các chủ đề đã được tạo trước, nhanh chóng tùy biến vỏ zsh của bạn mà không cần tốn nhiều giờ chỉnh sửa.
"Oh My ZSH" là một công cụ giúp bạn dễ dàng kích hoạt các trình cắm thêm zsh và chuyển đổi giữa các chủ đề đã được tạo trước, nhanh chóng tùy biến vỏ zsh của bạn mà không cần tốn nhiều giờ chỉnh sửa.

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.

Đây chỉ là tạm thời. Bất cứ khi nào bạn mở một cửa sổ dòng lệnh mới hoặc đăng nhập vào hệ thống của bạn tại dòng lệnh, bạn sẽ thấy trình bao mặc định của mình. Để thay đổi trình bao bạn thấy khi bạn đăng nhập - được gọi là shell đăng nhập của bạn - bạn thường có thể sử dụng
Đây chỉ là tạm thời. Bất cứ khi nào bạn mở một cửa sổ dòng lệnh mới hoặc đăng nhập vào hệ thống của bạn tại dòng lệnh, bạn sẽ thấy trình bao mặc định của mình. Để thay đổi trình bao bạn thấy khi bạn đăng nhập - được gọi là shell đăng nhập của bạn - bạn thường có thể sử dụng

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ó.

Đề xuất: