Ответ
Bash и Dash — это разные командные оболочки (shell) в Unix-подобных системах, созданные для различных целей.
| Критерий | Bash (Bourne Again SHell) | Dash (Debian Almquist SHell) |
|---|---|---|
| Назначение | Мощная интерактивная оболочка и язык сценариев. | Быстрая, легковесная оболочка, ориентированная на выполнение системных скриптов. |
| Функциональность | Богатый функционал: автодополнение, арифметические операции ((...)), расширенные конструкции [[ ... ]]. |
Строго соответствует стандарту POSIX, минимальный набор функций. |
| Скорость | Медленнее при запуске из-за размера и сложности. | Запускается и выполняется значительно быстрее. |
| Использование | Часто используется как оболочка по умолчанию для пользователей (/bin/bash). |
Часто является символьной ссылкой для /bin/sh, используется для системных скриптов при загрузке. |
Пример кода, который работает в Bash, но не в Dash:
# Этот цикл работает только в Bash (и других расширенных оболочках)
for ((i=0; i<3; i++)); do
echo "Bash: $i"
done
# POSIX-совместимый аналог, который работает и в Bash, и в Dash
for i in 0 1 2; do
echo "POSIX: $i"
done
Почему это важно: Для переносимых системных скриптов, где важна скорость запуска (например, init-скрипты), пишут на POSIX-совместимом синтаксисе, который выполнит Dash. Для интерактивной работы и сложных скриптов используют Bash.