Dash — одно из наименее известных имен, когда вы думаете о семействе шеллов. Но Dash не предназначен для замены вашей текущей оболочки и работает «на заднем плане».
Возникает много вопросов, связанных с Dash, например, как его использовать, чем он отличается от вашей обычной оболочки и так далее. Давайте разбираться.
Что такое оболочка Dash?
Dash означает Debian Almquist Shell. Это POSIX-совместимая реализация Bourne Shell. Она заменяет /bin/sh в сценариях по умолчанию и обеспечивает более высокую скорость выполнения при меньшем потреблении ресурсов.
Если вы используете дистрибутив на основе Debian, вы уже используете Dash по умолчанию. Вы можете возразить и сказать, что Bash — это моя оболочка по умолчанию. Тут Вы будете правы насчет оболочки по умолчанию, но не совсем. Попробую теперь объяснить что к чему.
Давным-давно, до выпуска Ubuntu 6.10 использовался bash. При выполнении ваших сценариев. по умолчанию использовалась /bin/sh как символическая ссылка, чтобы запустить bash.
По мере того, как bash рос, эффективность снижалась, и вместо /bin/sh в сценариях по умолчанию был реализован Dash.
Dash менее сложен и более удобен, чем bash. Dash не предназначен для интерактивных сессий и работает скрытно для большей эффективности.
Преимущества Dash перед bash cледующие:
- Значительное улучшение производительности по сравнению с bash.
- Используется меньше места на диске по сравнению с другими оболочками, что важно для сценариев-оболочек, предназначенных для очистки, когда существует такая проблема.
- Dash полагается только на libc (базовую системную библиотеку), тогда как bash нуждается в библиотеках поддержки терминала, а без них вы даже не сможете запустить скрипт. Это означает, что Dash может лучше работать на сломанных системах.
Сравнение производительности между Dash и Bash
Но все вышесказанное всего лишь слова, но каковы точные цифры или во сколько раз dash быстрее, можно получить только протестировав его в деле. Для этого сравним работу bash и dash, чтобы лучше понять их производительность.
Время запуска тестирования
Я собираюсь использовать простой сценарий оболочки, который будет отслеживать точное время открытия оболочки 1000 раз без выполнения каких-либо операций.
#!/bin/bash
for i in $(seq 1 1000);
do bash -c ":" ;
done
Для отслеживания времени я использовал утилиту time. В случае bash, я получил следующие результаты:
$ time bash bash_test.sh real 0m1.551s user 0m0.531s sys 0m0.715s
Используемый сценарий вызвал bash для запуска оболочки без каких-либо операций 1000 раз, и это заняло около 1,5 секунд.
Теперь давайте сделаем то же самое для dash. С несколькими изменениями в том же скрипте, что и выше.
#!/bin/dash
for i in $(seq 1 1000);
do dash -c ":" ;
done
Когда я выполнил приведенный выше скрипт, он дал мне следующий результат:
$ time dash dash_test.sh real 0m0.794s user 0m0.335s sys 0m0.214s
Тот же скрипт при выполнении с тире занял всего чуть меньше 0,8 секунд, что составляет почти половину времени от того, что потребовалось с bash.
Как вы можете ясно видеть, dash намного лучше с точки зрения производительности.
Резюме.
Dash превосходит bash по производительности, но его нельзя использовать как обычную оболочку, так как он не предназначен для взаимодействия. Ubuntu, например, по-прежнему использует bash в качестве оболочки для входа в систему и в значительной степени полагается на нее, поскольку в dash по-прежнему отсутствуют некоторые функции, необходимые для полной замены bash.
P. S. Если Вам понравилась статья, сайт, и то что я делаю, то можете поддержать этот проект, собирающий в себя статьи и руководства по IT технологиям. Это можно сделать нажав, кнопочку ниже и закинув полтишок в копилку на развитие
Was this helpful?
0 / 0