
Много хора искат да знаят дали Dash или Bash е по-добрият вариант за тях. Bash Shell е по-известен и идва с повечето дистрибуции на Linux по подразбиране, но Dash Shell има някои различни ключови функции, които са много привлекателни. Кой да изберете? Прочетете това сравнение и разберете кой е най-подходящ за вашите нужди. Не забравяйте, че това е Linux, така че каквато и дистрибуция да имате, можете да промените сегашния ви shell и да използвате този, който ви служи по-добре.
Какво е shell?
Не можем да говорим за Dash срещу Bash Shell, без да разберем какво е shell. Това е интерфейс, команден ред (CLI) или графичен интерфейс (GI), който позволява на хората да имат достъп до услугите в операционна система (OS). Тези shell-ове създават комуникационен мост между вас (потребителя) и ядрото (kernel) на операционната система. Можете да използвате скриптове, да изпълнявате команди и автоматизация, за да взаимодействате с ядрото.
Всеки команден ред има свой собствен синтаксис. Вътре в него имате списък с команди, написани на определен език. Думата shell идва като препратка към външния слой на операционната система. На английски shell означава черупка.
Shell-ът е приложение и използва API на ядрото по същия начин като останалите приложения. Ето защо е сменяем. Има много опции за Linux с разлики в синтаксиса, команди, скорост и възможности.
Как работи един shell?
Когато въведете команда в предпочитаната от вас shell, се случва следното:
- Shell-ът ще анализира командата.
- След това ще идентифицира вградената функция или програма, свързана с въведената от вас команда.
- Заявката достига до ядрото на Linux и то ще изпълни командата.
- В зависимост от командата и използвания shell, ще видите показания резултат (ако това се отнася за командата, която сте въвели).
Пример
Използвайте Bash и въведете следната команда: “ls -l”.
Устройството ще разпознае командата “ls” (list, на български списък). След това ще прочете флага „-l“ (long, на български дълъг), който задейства ядрото да показва подробности в дългия формат (разрешения, собственик, размер и т.н.). Операцията ще се проведе и ще видите резултата.
Какво е Bash? (/bin/bash)
Bash (Bourne Again Shell) е един от тези shell версии с интерфейс на командния ред (CLI). Създаден е от Brian Fox през 1989 г., преди повече от 30 години, за проекта GNU, така че е с отворен код. Целта е била да се осигури безплатна замяна на използвания преди това Bourne (sh). Сега това е shell по подразбиране в много Linux дистрибуции и по-стари macOS (до macOS Mojave 10.14). Все още можете да го инсталирате на по-нови компютри с macOS и Windows.
Една много важна характеристика на Bash е, че прави възможно стартирането на скриптове. Можете да създадете код, който може да комбинира различни команди и да го изпълнява, вместо да пишете командите една по една.
Друго голямо предимство на този софтуер е, че поддържа интерактивни функции. Вие (потребителят) можете да взаимодействате в реално време с командния ред и да използвате екстри като преки пътища, история на командите, автоматично довършване и обратна връзка на живо.
Тъй като е изключително популярен, можете да намерите уроци навсякъде в Интернет. Намерихме много добър курс от Learn Linux TV, който може да прегледате, ако желаете.
Ще намерите Bash като опция по подразбиране в следните Linux дистрибуции: CentOS Stream, Arch Linux, Fedora, RHEL, openSUSE, Manjaro, Kali Linux, Slackware, Solus, Void Linux и др.
Между другото, вижте тези 5 отлични Linux дистрибуции за вашите сървъри, а ако все още нямате сървъри, можете да разгледате нашите облачни сървъри. Имаме много страхотни опции и персонализирани решения за вашите нужди.
Какво е Dash? (/bin/dash)
Dash е друг shell. Пълното му име е Debian Almquist Shell. Той е значително по-малък от Bash и, нещо много важно, той е POSIX-съвместим. Малкият размер го прави наистина лек и в много случаи може да бъде до 4 пъти по-бърз от Bash. Той е идеален за минимални среди.
Идва от NetBSD и друг shell, наречен The Almquist Shell (Ash). Получава името си през 1997 г. Това е друго приложение, което интерпретира команди, направени за Linux.
Когато сравняваме Dash и Bash, можем да видим, че първият е създаден за неинтерактивни сесии. Използва се най-вече за системни скриптове.
Това е shell-ът по подразбиране в Ubuntu и Debian. Ще го намерите и в дистрибуциите, базирани на двете, включително Lubuntu, Kubuntu, Xubuntu, Raspberry Pi OS и др.
Dash или Bash Shell, сравнителна таблица
Тази сравнителна таблица ще ви помогне да отговорите бързо кои са основните разлики между двата shell варианта.
Характеристика | Dash | Bash |
Скорост | Бърз, благодарение на своята лекота. Това го прави идеален за init скриптове. | По-бавен, заради своите разширени функции. |
Използване на паметта | Използва по-малко памет, което го прави добър за среди с ограничени ресурси и вградени системи. | Използва повече памет поради своите разширени функции. |
Съвместимост с POSIX | Да, напълно съвместим. | Не. Има някои разширения, които не са POSIX-съвместими, което го прави по-малко портативен. |
Поддръжка на скриптове | Да. | Да. |
Интерактивни функции | Не, не поддържа. | Да, поддържа много интерактивни функции като логове, псевдоними, автоматично довършване с Tab и др. |
Псевдоними и персонализиране | Не. | Да. Можете да създавате псевдоними за често използвани команди, като например „alias ll=’ls -l’“. |
Дневник на историята | Не. | Да. Можете да получите достъп до “~/.bash_history” и да видите предишно изпълнените команди. |
Автоматично довършване | Не. | Да. Можете да използвате тази функция с бутона „Tab“. |
Масиви | Не. | Да, поддържа масиви, които позволяват на потребителите да съхраняват множество стойности в една променлива. |
Поддръжка на функции | Да. | Да. Малко по-гъвкав от Dash. |
Поддръжка на Pipe (конвейер) | Да. | Да. |
Управление на процеси (Job Control) | Не. | Пълна поддръжка на процеси с background (bg) и foreground (fg) задачи. Bash също така позволява управление на състоянието на задачите (jobs). |
Обработка на грешки | Бърза и опростена обработка на грешки. | Подробна обработка на грешки и опции за дебъгване. |
Кога да използвате Bash?
- Интерактивно използване. Ако се нуждаете от всички разширени функции, които предлага, като история на командите, псевдоними, автоматично завършване, персонализирани заявки и контрол на работата, трябва да изберете Bash.
- Скриптиране на сложни задачи. С помощта на този shell можете да извършвате разширени обработка на низове, използване на масиви и сложни структури от данни, вградени функции, външни команди и инструменти за дебъгване.
- Използвайте, ако преносимостта не е важна. Ако знаете, че скриптът няма да бъде пренесен към друга Unix-подобна система, можете свободно да го изберете.
Не използвайте Bash, ако…
- Средата е с ограничени ресурси. Вече споменахме, но той е по-жаден за ресурси, което го прави не толкова добър избор за вградени системи и минимални сървъри. Освен това отнема повече време за зареждане при стартиране.
- Не го използвайте, ако вашият скрипт трябва да е POSIX-съвместим. Ако трябва да работи на няколко системи, по-добре е да изберете Dash.
- Избягвайте Bash, ако простотата е ключова. Ако имате нужда от по-прост инструмент, просто изберете Dash.
Кога да използвате Dash?
- Системни стартови скриптове. Несъмнено е по-бърз за тази цел.
- Вградени системи. Отнема само няколко килобайта, което го прави идеален за устройства с малко памет.
- Леки сървъри. Той използва много малко ресурси, така че е идеален за тази цел.
- Строги POSIX среди. Както споменахме, той е напълно съвместим, така че гарантира съвместимост в различни системи.
Не използвайте Dash, ако…
- Пишете сложни скриптове с масиви. За тази цел изберете Bash.
Как да проверя дали имам Dash или Bash?
Това е много лесно, просто отворете терминала и въведете „echo $0“. Ако отговорът е „–dash“, тогава имате инсталиран Dash. Ако отговорът е „-bash“, имате втория вариант.
Последни думи
Сега нашето сравнение между Dash и Bash е завършено. Използвайки тази информация, можете лесно да изберете кой от тези инструменти е по-добър за вашите нужди. По принцип, ако имате нужда от бързо, просто и леко решение, изберете Dash. Ако имате нужда от разширени функции и нямате нищо против, че ще отнеме повече време за зареждане, Bash е отговорът.
A ако искате да разширите знанията си още повече, можете да прочетете за следните команди:
Овладяването им ще ви даде допълнителни умения, които ще улеснят и ускорят работата ви.