У чому різниця між Bash, Zsh та іншими оболонками Linux?
Більшість дистрибутивів Linux за замовчуванням включають оболонку bash, але ви також можете переключитися на інше середовище оболонки. Zsh є особливо популярною альтернативою, і є інші оболонки, такі як зола, тире, риба і tcsh. Але в чому різниця, і чому їх так багато?
Що роблять оболонки?
Коли ви входите в командний рядок або запускаєте вікно терміналу під Linux, система запускає програму оболонки. Оболонки пропонують стандартний спосіб розширення середовища командного рядка. Ви можете поміняти оболонку за промовчанням на іншу, якщо хочете.
Перше середовище оболонки було Thompson Shell, розроблене в Bell Labs і випущене в 1971 році. З тих пір середовища Shell використовують цю концепцію, додаючи безліч нових функцій, функціональності та поліпшення швидкості..
Наприклад, Bash пропонує поповнення імен команд і файлів, розширені функції сценаріїв, історію команд, налаштовувані кольори, псевдоніми команд і безліч інших функцій, які не були доступні ще в 1971 році, коли вийшла перша оболонка..
Оболонка також використовується у фоновому режимі різними системними службами. Дистрибутиви Linux містять багато функцій, написаних як сценарії оболонки. Ці скрипти є командами, а інші розширені функції сценаріїв оболонки виконуються через середовище оболонки.
Оболонки, що ведуть до Bash: sh, csh, tsh і ksh
Найвідомішим родоначальником сучасних снарядів є оболонка Борна, відома також як «ш», яка була названа на честь його творця Стівена Борна, який працював у лабораторіях AT & T's Bell Labs. Випущений у 1979 році, він став типовим командним інтерпретатором в Unix через підтримку заміни команд, конвеєрів, змінних, тестування стану та циклічного перегляду, а також інших функцій. Вона не надала користувачам особливих налаштувань і не підтримувала такі сучасні тонкощі, як псевдоніми, завершення команд і функції оболонки (хоча останнє було додано).
Корпус C, або "csh", був розроблений наприкінці 1970-х років Біллом Джоєм з Каліфорнійського університету в Берклі. Він додав багато інтерактивних елементів, за допомогою яких користувачі могли контролювати свої системи, такі як псевдоніми (ярлики для довгих команд), можливості управління завданнями, історія команд та багато іншого. Він був змодельований на мові програмування С, в якому була написана сама операційна система Unix. Це також означало, що користувачі оболонки Bourne повинні були вивчити C, щоб вони могли вводити в ньому команди. Крім того, csh мав чимало помилок, які треба було виконувати користувачами та творцями протягом великого періоду часу. Люди в кінцевому підсумку використовували оболонку Bourne для сценаріїв, тому що він краще обробляв неінтерактивні команди, але закріплювався з оболонкою C для нормального використання.
З часом багато людей виправляли помилки та додавали функції до оболонки C, завершуючи кращою версією csh, відомої як "tcsh". Але csh все ще був типовим у комп'ютерах на основі Unix і додав деякі нестандартні функції. Девід Корн з Bell Labs працював над KornShell, або «ksh», який намагався поліпшити ситуацію, коли він був сумісний з мовою оболонки Bourne, але додав багато функцій з csh shell. Він був випущений в 1983 році, але під власною ліцензією. Це не було вільним програмним забезпеченням до 2000-х років, коли його випускали під різними ліцензіями з відкритим кодом.
Народження bash
Портативний інтерфейс операційної системи для Unix, або POSIX, був ще однією відповіддю на гарячі власні реалізації csh. Він успішно створив стандарт для інтерпретації команд (серед інших речей) і зрештою віддзеркалював багато функцій у KornShell. У той же час, проект GNU намагався створити безкоштовну, сумісну з Unix операційну систему. Проект GNU розробив оболонку для вільного програмного забезпечення, щоб бути частиною своєї вільної операційної системи і назвав її «Bourne Again Shell», або «bash».
Баш покращився протягом десятиліть з моменту його першого випуску в 1989 році, але він все ще є типовою оболонкою на більшості дистрибутивів Linux сьогодні. Це також оболонка за замовчуванням на MacOS від Apple, і доступна для встановлення на Windows 10 від Microsoft.
Нові оболонки: зола, тире, zsh і риба
У той час, як спільнота Linux осіла на Bash упродовж років, розробники не припиняли створювати нові оболонки, коли Bash був випущений 28 років тому.
Кеннет Альмквіст створив клон оболонки Борна, відомий як оболонка Almquish, Shell, "ash", або іноді просто "sh". він також був сумісним з POSIX і став оболонкою за замовчуванням в BSD, інший гілці Unix. Золота оболонки більш легка, ніж bash, що робить його популярним у вбудованих системах Linux. Якщо у вас є вкорінений телефон Android з інсталяцією BusyBox - або будь-який інший пристрій з програмним забезпеченням BusyBox - він використовує код з попелу.
Debian розробив оболонку оболонки на основі золи і назвав її "тире". Він розроблений як POSIX-сумісний і легкий, тому він швидше, ніж Bash, але не матиме всіх його функцій. Ubuntu використовує оболонку тире як оболонку за замовчуванням для неінтерактивних завдань, прискорюючи сценарії оболонки та інші завдання, які виконуються у фоновому режимі. Ubuntu до цих пір використовує bash для інтерактивних оболонок, тому користувачі все ще мають повноцінне інтерактивне середовище.
Одним з найбільш популярних нових оболонок є Z shell, або "zsh". Створений Пол Фальстадом у 1990 році, zsh є оболонкою стилю Борна, що містить функції, які ви знайдете в bash, і ще більше. Наприклад, zsh має перевірку орфографії, можливість спостерігати за входом / виходом, деякими вбудованими функціями програмування, такими як байт-код, підтримку наукових нотацій у синтаксисі, дозволяє для арифметики з плаваючою комою і більше можливостей.
Ще одна нова оболонка - дружня інтерактивна оболонка, або «риба», випущена в 2005 році. Вона має унікальний синтаксис командного рядка, який розроблений, щоб бути трохи легшим для вивчення, але не походить від оболонки Bourne або C shell. Це цікава ідея, але те, що ви дізнаєтеся, використовуючи рибу, не обов'язково допоможе вам використовувати bash та інші оболонки, отримані від Bourne.
Які ви повинні вибрати? (і чому Zsh є популярним)
Вам не потрібно вибирати оболонку. Ваша операційна система вибирає стандартну оболонку для вас, і цей вибір майже завжди є bash. Сідайте перед дистрибутивом Linux - або навіть Mac - і ви майже завжди будете мати середовище bash shell. Bash має досить багато розширених функцій, але ви, ймовірно, не будете використовувати їх, якщо ви не програмуєте сценарії оболонки.
На вбудованих системах Linux або BSD-системах з'явиться оболонка золи. Але зола є оболонкою на основі Борна і в значній мірі сумісна з bash. Будь-які знання, які ви отримали від використання bash, переносяться на використання оболонки ash або dash, хоча деякі розширені функції сценаріїв недоступні в цій легкій оболонці.
Майже кожна оболонка, з якою ви зіткнетеся, базується на Bourne і працює так само, як і zsh.
Тому популярний zsh. Ця нова оболонка сумісна з bash, але містить більше можливостей. Оболонка zsh пропонує вбудовану корекцію орфографії, поліпшене завершення командного рядка, завантажувані модулі, які діють як плагіни для вашої оболонки, глобальні псевдоніми, що дозволяють використовувати псевдоніми файли або що-небудь ще в командному рядку, а не просто команди, і більше підтримки підтримки. Це як bash, але з великою кількістю додаткових можливостей, додаткових функцій і налаштовуваних параметрів, які можна оцінити, якщо ви витратите багато часу на командний рядок.
Якщо ви знайомі з bash, ви можете переключитися на zsh, не вивчаючи інший синтаксис - ви просто отримаєте додаткові функції. якщо ви знайомі з zsh, ви можете переключитися на bash без вивчення іншого синтаксису - ви просто не матимете доступу до цих функцій.
"Oh My ZSH" - це інструмент, який допомагає вам легше ввімкнути плагіни zsh і переключатися між готовими темами, швидко налаштовуючи оболонку zsh, не витрачаючи годин на налаштування.
Є й інші снаряди. Наприклад, оболонка tcsh все ще знаходиться навколо і все ще є опцією. FreeBSD використовує tsch в якості кореневої оболонки за замовчуванням, а ash - як інтерактивна оболонка за замовчуванням. Якщо ви регулярно використовуєте програмування C, tsch може бути краще підходить для вас. Тим не менш, це ніде не так часто, як зазвичай використовується як bash або zsh.
Як перемикатися між оболонками
Легко перейти на нову оболонку, щоб спробувати її. Просто встановіть оболонку з менеджера пакетів вашого дистрибутива Linux і введіть команду для запуску оболонки.
Наприклад, скажімо, ви хочете спробувати zsh на Ubuntu. Щоб інсталювати, запустіть такі команди:
sudo apt install zsh zsh
Тоді ви будете сидіти за оболонкою zsh. Введіть Вхід
На оболонці, щоб залишити його і повернутися до поточної оболонки.
Це просто тимчасово. Кожного разу, коли ви відкриваєте нове вікно терміналу або входите до системи в командному рядку, ви побачите стандартну оболонку. Щоб змінити оболонку, яку ви бачите, коли ви входите в систему як відома як ваша реєстраційна оболонка, ви можете зазвичай використовувати chsh
, або "Змінити оболонку", команду.
Щоб скористатися цією командою, спочатку потрібно знайти повний шлях до оболонки з командою. Наприклад, припустимо, що ми хотіли змінити оболонку zsh. Ми виконали таку команду:
які zsh
На Ubuntu, це говорить нам, що двійковий файл zsh зберігається в / usr / bin / zsh.
Виконайте таку команду, введіть пароль, і вам буде запропоновано вибрати нову оболонку входу:
chsh
Згідно з наведеною вище командою, ми входимо / usr / bin / zsh
. Оболонка zsh тоді буде нашою умовою, поки ми не запустимо chsh
і змінили його назад.