If-Koubou

Каква е разликата между Bash, Zsh и други Linux Shells?

Каква е разликата между Bash, Zsh и други Linux Shells? (Как да)

Повечето Linux дистрибуции включват баш черупката по подразбиране, но можете също да превключите към друга среда на shell. Zsh е особено популярна алтернатива и има и други черупки като пепел, тире, риба и tcsh. Но каква е разликата и защо има толкова много?

Какво правят Shells?

Когато влезете в командния ред или стартирате терминален прозорец на Linux, системата стартира програмата на shell. Shells предлагат стандартен начин за разширяване на средата на командния ред. Можете да замените приставката по подразбиране за друга, ако искате.

Първата среда на Shell е Thompson Shell, разработена в Bell Labs и издадена през 1971 година. Shell среди са се основава на концепцията оттогава, добавяйки разнообразие от нови функции, функционалност и подобрения на скоростта.

Например, Bash предлага завършване на команди и имена на файлове, усъвършенствани скриптови функции, история на командите, конфигурируеми цветове, псевдоними на команди и множество други функции, които не са били налични още през 1971 г., когато е била освободена първата shell.

Черупката се използва и на фона от различни системни услуги. Линукс дистрибуциите включват много функции, написани като скриптове на Shell. Тези скриптове са команди и други функции за разширено сканиране на черупки, които преминават през средата на корпуса.

Shells Leading до баш: sh, csh, tsh и ksh

Най-изявеният предшественик на модерните черупки е черупката "Бур", позната още като "Ш", която е кръстена на създателя й Стивън Бур, който работи в лабораториите на Bell & AT & T. Издаден през 1979 г., той стана по подразбиране командния интерпретатор в Unix, благодарение на подкрепата си за заместване на команди, тръбопроводи, променливи, тестване на състояния и цикли, заедно с други функции. Той не предложи много персонализиране за потребителите и не поддържа такива модерни нюанси като псевдоними, завършване на команди и функции на черупки (макар че последното беше добавено в крайна сметка).

C черупката, или "csh", е разработена в края на 70-те години от Бил Джой в Калифорнийския университет, Бъркли. Добавени са много интерактивни елементи, с които потребителите могат да контролират своите системи, като псевдоними (бързи команди за дълги команди), способности за управление на работата, история на командите и др. Той бе моделиран от езика за програмиране C, в който е написана самата операционна система Unix. Това също означаваше, че потребителите на shell Bourne трябваше да научат C, за да могат да въвеждат команди в него. В допълнение, csh имаше доста бъгове, които трябваше да бъдат изтласкани от потребители и творци, така и през голям период от време. Хората завършиха с помощта на Bourne shell за скриптове, защото се справиха по-добре с не-интерактивни команди, но останаха с черупката C за нормална употреба.

С течение на времето много хора поправяли бъгове и добавили функции към черупката C, завършвайки с подобрена версия на csh, известна като "tcsh". Но csh все още е по подразбиране в Unix-базираните компютри и добавя някои нестандартни функции. Дейвид Корн от Bell Labs работи върху KornShell или "ksh", който се опитва да подобри ситуацията, като е обратно съвместим с езика на черупката на Bourne, но добавя многобройни функции от csh shell. Издаден е през 1983 г., но под собствена лицензия. Той не е бил свободен софтуер до 2000-те години, когато е бил освободен под различни лицензии с отворен код.

Раждането на бас

Портативният интерфейс за операционни системи за Unix или POSIX беше още един отговор на забързаното използване на csh приложения. Той успешно създаде стандарт за интерпретация на командите (между другото) и в крайна сметка огледа много от функциите на KornShell. В същото време проектът GNU се опитваше да създаде безплатна, съвместима с Unix операционна система. Проектът GNU разработи безплатна софтуерна обвивка, за да бъде част от безплатната си операционна система и го нарече "Bourne Again Shell" или "bash".

Баш се подобри в десетилетия след първото му пускане през 1989 г., но все още е стандартната черупка на повечето Linux дистрибуции днес. Това е и стандартната черупка на macOS на Apple и е достъпна за инсталиране на Microsoft Windows 10.

По-нови черупки: пепел, тире, zsh и риба

Докато общността на Линукс се е установила в Баш през годините, разработчиците не са спрели да създават нови черупки, когато Баш е бил освободен за първи път преди 28 години.

Kenneth Almquist създаде клонинг на Bourne Shell, известен като Almquish shell, A Shell, "пепел" или понякога просто "sh". тя също е POSIX съвместима и стана по подразбиране черупка в BSD, различен клон на Unix. Пепелта от пепелта е по-лека от баш, което я прави популярна в системите за вграден Linux. Ако имате коренно инсталиран телефон с Android с BusyBox инсталиран или друго устройство с комплект софтуер BusyBox, използва се код от пепел.

Дебиан разработи среда на черупки, базирана на пепел, и го нарече "тире". Той е проектиран да бъде POSIX-съвместим и лек, затова е по-бърз от Bash, но няма да има всичките си функции. Ubuntu използва таблото за чертане като стандартна черупка за неинтерактивни задачи, ускорявайки скриптовете на Shell и други задачи, изпълнявани във фонов режим. Ubuntu все още използва bash за интерактивни черупки, обаче, така че потребителите все още имат пълнофункционална интерактивна среда.

Една от най-популярните по-нови черупки е Z shell, или "zsh". Създаден от Пол Фалстад през 1990 г., zsh е черупка стил Бърн, която съдържа функциите, които ще намерите в бас, плюс още повече. Например, zsh има проверка на правописа, възможността да гледате за влизания / излизания, някои вградени програмни функции като bytecode, поддръжка на научна нотация в синтаксис, позволява аритметика с плаваща запетая и повече функции.

Друга по-нова черупка е "Friendly Interactive Shell" или "риба", издадена през 2005 г. Тя има уникален синтаксис на командния ред, който е проектиран да бъде малко по-лесен за учене, но не произлиза нито от черупката Bourne, нито от C черупката. Това е интересна идея, но това, което научавате чрез използването на риба, няма непременно да ви помогне да използвате баш и други черупки, получени от Бурне.

Кой трябва да избереш? (и защо Zsh е популярен)

Не е нужно да избирате черупки. Операционната ви система избира вашата стандартна черупка за вас, а този избор е почти винаги bash. Седнете пред дистрибуция на Linux - или дори в Mac - и почти винаги ще имате среда на баш черупки. Баш има доста напредничави функции, но вероятно няма да ги използвате, освен ако не програмирате скриптове.

На вградени Linux системи или BSD системи, ще завършите с черупката пепел. Но пепелта е основана на "Бърн" черупка и е до голяма степен съвместима с баш. Всяко познание, което имате от използването на bash, ще се прехвърли на използването на пепел или тире черупка, въпреки че някои от разширените функции за скриптове не са налични в тази лека черупка.

Почти всяка черупка, която ще срещнете, е базирана на Борн и работи по подобен начин - включително zsh.

Ето защо zsh е популярен. Тази по-нова черупка е съвместима с bash, но включва повече функции. Шаблонът zsh предлага вградена корекция на правописа, подобрена завършване на командния ред, зареждащи се модули, които действат като приставки за вашата черупка, глобални псевдоними, които ви позволяват да създадете псевдоним на имена на файлове или нещо друго на командния ред, а не просто на команди, и повече тематична подкрепа. Това е като bash, но с много екстри, допълнителни функции и конфигурируеми опции, които бихте могли да оцените, ако отделите много време на командния ред.

Ако сте запознати с bash, можете да превключите към zsh без да научите друг синтаксис - ще спечелите допълнителни функции. ако сте запознати с zsh, можете да превключите към bash без да научите друг синтаксис - просто няма да имате достъп до тези функции.

"Oh My ZSH" е инструмент, който ви помага лесно да активирате zsh плъгини и да превключвате между предметни теми, бързо да персонализирате вашата zsh shell без да харчите часове да променяте нещата.

Има и други черупки. Например, tcsh черупката все още е наоколо и все още е опция. FreeBSD използва tsch като основна коренна обвивка и пепел като стандартна интерактивна черупка. Ако използвате програмирането C редовно, tsch може да бъде по-подходяща за вас. Въпреки това, тя не е толкова близо, колкото обикновено се използва като bash или zsh.

Как да превключвате между Shells

Лесно е да преминете към нова обвивка, за да я изпробвате. Просто инсталирайте корпуса от мениджъра на пакетите на Linux дистрибуцията и напишете командата за стартиране на корпуса.

Например, да речем, че искате да опитате zsh на Ubuntu. Бихте изпълнили следните команди, за да инсталирате и след това да го стартирате:

sudo apt инсталирате zsh zsh

Тогава щеше да седиш в черупката. Тип " изход "В черупката, за да я напуснете и да се върнете към текущата ви обвивка.

Това е само временно. Когато отворите нов терминален прозорец или влезете в системата си на командния ред, ще видите стандартната ви обвивка. За да промените корпуса, който виждате, когато се регистрирате като потребителска кошница, обикновено можете да го използвате CHSH , или "Change Shell", команда.

За да използвате тази команда, първо трябва да намерите пълния път към черупката си с коя команда. Да приемем например, че искаме да променим обвивката на zsh. Ще изпълним следната команда:

който zsh

На Ubuntu това ни показва, че двойното зхх се съхранява на / usr / bin / zsh.

Изпълнете следната команда, въведете паролата си и ще бъдете подканени да изберете нов профил за вход:

CHSH

Съгласно горната команда щяхме да влезем / ЮЕсАр / хамбар / zsh , По този начин, zsh shell ще бъде нашата по подразбиране, докато не стартираме CHSH команда и го промени.