Trang chủ » làm thế nào để » Sự khác biệt giữa Bash, Zsh và các vỏ Linux khác là gì?

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

    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 thay thế đặc biệt phổ biến, và có các loại vỏ khác, như tro, gạch ngang, cá và tcsh. Nhưng sự khác biệt là gì và tại sao có quá nhiều?

    Vỏ ốc làm gì?

    Khi bạn đăng nhập tại dòng lệnh hoặc khởi chạy một 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ể trao đổi shell mặc định cho cái khác, nếu bạn thích.

    Môi trường shell đầu tiên là Shell Shell, được phát triển tại Bell Labs và được phát hành vào năm 1971. Môi trường Shell đã được xây dựng dựa trên ý tưởng kể từ đó, thêm nhiều tính năng mới, chức năng và cải thiện tốc độ.

    Ví dụ, Bash cung cấp hoàn thành tên lệnh và tệp, các tính năng kịch bản nâng cao, lịch sử lệnh, màu sắc có thể định cấu hình, bí danh lệnh và một loạt các 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.

    Shell cũng được sử dụng trong nền bởi các dịch vụ hệ thống khác nhau. Các bản phân phối Linux bao gồm nhiều hàm được viết dưới dạng shell script. Các tập lệnh này là các lệnh và các hàm kịch bản shell nâng cao khác chạy qua môi trường shell.

    Shell dẫn đến Bash: sh, csh, tsh và ksh

    Tiên sinh nổi bật nhất của vỏ sò hiện đại là vỏ Bourne - còn được gọi là vỏ shiêu - được đặt theo tên của người tạo ra nó là Stephen Bourne, người làm việc tại Phòng thí nghiệm Bell 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ợ thay thế lệnh, đường ống, biến, kiểm tra điều kiện và 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ư bí danh, hoàn thành lệnh và các hàm shell (mặc dù cái cuối cùng này đã được thêm vào).

    Vỏ C, hay còn gọi là 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 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 các 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 theo ngôn ngữ lập trình C, mà chính hệ điều hành Unix đã được viết. Điều này cũng có nghĩa là người dùng shell Bourne phải học C để họ có thể nhập lệnh trong đó. Ngoài ra, csh có khá nhiều lỗi phải được người dùng và người sáng tạo xử lý trong một khoảng thời gian lớn. Mọi người cuối cùng đã sử dụng shell 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 trình bao 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, đỉnh cao là phiên bản cải tiến của csh được biết đến với tên gọi là Tcshật. 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, hay từ kshv, người đã 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 vỏ Bourne 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 giấy phép độ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, hay POSIX, là một phản ứng khác đối với việc triển khai csh độc quyền bận rộn. Nó đã tạo thành công một tiêu chuẩn để giải đoán lệnh (trong số những thứ khác) và cuối cùng được nhân đôi rất nhiều tính năng trong KornShell. Đồng thời, Dự án GNU đã cố gắng tạo ra 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 lớp vỏ phần mềm miễn phí để trở thành một phần của hệ điều hành miễn phí của nó và đặt tên cho nó là một phần mềm Bour Bourne Again Shell, hay còn gọi là bash Hồi.

    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à vỏ mặc định trên hầu hết các bản phân phối Linux ngày nay. Đây cũng là lớp vỏ mặc định trên macOS của Apple và có sẵn để cài đặt trên Windows 10 của Microsoft.

    Vỏ mới hơn: tro, gạch ngang, zsh và cá

    Trong khi cộng đồng Linux đã định cư với Bash trong những năm kể từ đó, các nhà phát triển đã không ngừng tạo ra các shell mới khi Bash được phát hành lần đầu tiên cách đây 28 năm.

    Kenneth Almquist đã tạo ra một bản sao vỏ Bourne được gọi là vỏ Almquish, Vỏ sò, tro tro, hoặc đôi khi chỉ là sh sh. nó cũng tương thích POSIX và trở thành hệ vỏ mặc định trong BSD, một nhánh khác của Unix. Vỏ tro nhẹ hơn bash, khiến nó trở nên phổ biến trong các hệ thống nhúng Linux. Nếu bạn đã cài đặt điện thoại Android đã root với 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 shell dựa trên tro và gọi nó là dash dash. 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 shell dash làm shell mặc định cho các tác vụ không tương tác, tăng tốc các tập lệnh shell và các tác vụ khác đang chạy trong nền. Ubuntu vẫn sử dụng bash cho shell tương tác, tuy nhiên, 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 hơn phổ biến nhất là shell Z, hay Z zay. Được tạo bởi Paul Falstad vào năm 1990, zsh là một vỏ theo phong cách Bourne chứa các tính năng bạn sẽ tìm thấy trong bash, cộng với nhiều hơn nữa. Ví dụ: zsh có tính năng kiểm tra chính tả, khả năng theo dõi đăng nhập / đăng xuất, một số tính năng lập trình tích hợp như mã byte, 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, hay còn gọi là cá cá, đượ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ừ vỏ Bourne hoặc vỏ C. Đó là một ý tưởng thú vị, nhưng những gì bạn học được thông qua việc 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 cái nào? (và tại sao Zsh là phổ biến)

    Bạn không cần phải chọn vỏ. Hệ điều hành của bạn chọn shell mặc định cho bạn và lựa chọn đó hầu như luôn luôn là bash. Ngồi xuống trước một bản phân phối Linux - hoặc thậm chí là máy Mac - và hầu như bạn sẽ luôn có môi trường bash shell. Bash có khá nhiều tính năng nâng cao, nhưng có lẽ 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 các hệ thống nhúng Linux hoặc hệ thống BSD, bạn sẽ kết thúc với lớp vỏ tro. Nhưng tro là vỏ dựa trên Bourne và phần lớn tương thích với bash. Mọi kiến ​​thức 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ập lệnh nâng cao không có sẵn trong lớp vỏ nhẹ này.

    Hầu hết mọi vỏ bạn sẽ gặp đều dựa trên Bourne và hoạt động tương tự - bao gồm cả zsh.

    Đó là lý do tại sao zsh là phổ biến. Shell 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. Shell zsh cung cấp sửa lỗi chính tả tích hợp, hoàn thành dòng lệnh được cải thiện, các mô-đun có thể tải hoạt động như các trình cắm cho shell của bạn, các bí danh toàn cầu cho phép bạn đặt bí danh tên tệp hoặc bất cứ thứ gì khác trên dòng lệnh thay vì chỉ các lệnh và hỗ trợ thêm theo chủ đề. Nó giống như bash, nhưng với rất nhiều tính năng bổ sung, tính năng bổ sung và các tùy chọn có thể định cấu hình mà bạn có thể đánh giá cao nếu bạn dành nhiều thời gian cho 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 học một 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 học một cú pháp khác - bạn sẽ không có quyền truy cập vào các tính năng đó.

    Đây là một công cụ giúp bạn dễ dàng kích hoạt các trình cắm zsh và chuyển đổi giữa các chủ đề hàng đầu, nhanh chóng tùy chỉnh trình bao zsh của bạn mà không mất nhiều giờ để điều chỉnh mọi thứ.

    Có những cái vỏ khác nữa. Ví dụ, shell tcsh vẫn ở xung quanh và vẫn là một tùy chọn. FreeBSD sử dụng tsch làm vỏ gốc mặc định và tro làm vỏ tương tác mặc định của nó. Nếu bạn sử dụng lập trình C thường xuyên, tsch có thể phù hợp hơn với bạn. Tuy nhiên, không nơi nào được sử dụng phổ biến như bash hoặc zsh.

    Cách chuyển đổi giữa các vỏ

    Thật dễ dàng để chuyển sang một vỏ mới để thử nó. Chỉ cần cài đặt shell từ trình quản lý gói phân phối Linux của bạn và nhập lệnh để khởi chạy shell.

    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 nó:

    sudo apt cài đặt zsh zsh

    Sau đó, bạn sẽ ngồi ở vỏ zsh. Kiểu " lối thoát hiểm Chỏm vào vỏ để lại nó và trở về vỏ 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ổ đầu cuối 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 vỏ mặc định của mình. Để thay đổi hệ vỏ bạn nhìn thấy khi đăng nhập - được gọi là vỏ đăng nhập - bạn thường có thể sử dụng chsh , hoặc Thay đổi Shell Shell, lệnh.

    Để sử dụng lệnh này, trước tiên bạn cần tìm đường dẫn đầy đủ đến trình bao của mình bằng lệnh nào. Ví dụ: giả sử chúng tôi muốn thay đổi sang vỏ zsh. Chúng tôi sẽ chạy lệnh sau:

    mà zsh

    Trên Ubuntu, điều này cho chúng ta biết 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 vỏ đăng nhập mới:

    chsh

    Theo lệnh trên, chúng tôi sẽ nhập / usr / bin / zsh . Shell zsh sau đó sẽ là mặc định của chúng tôi cho đến khi chúng tôi chạy chsh ra lệnh và thay đổi lại.