Что такое Dash Shell в Linux?

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

Добавить комментарий 0