Поиск по сайту:

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


Немногие знают об оболочке Dash, которая обычно присутствует в дистрибутиве Debian 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 со временем стал больше, эффективность снизилась, и Dash был реализован для замены /bin/sh в сценариях по умолчанию.

Dash (Debian Almquist Shell) менее сложен и удобен, чем bash. Dash не предназначен для интерактивных сессий и работает скрытно, обеспечивая гораздо большую эффективность.

Теперь давайте посмотрим на преимущества Dash:

  • Вы получаете значительный прирост производительности по сравнению с bash.

  • Он использует меньше дискового пространства по сравнению с другими оболочками, что важно для сценариев-оболочек, предназначенных для очистки при наличии основной проблемы.

  • Dash полагается только на libc (основную системную библиотеку), тогда как bash нуждается в библиотеках поддержки терминала, и без них вы даже не сможете запустить скрипт. Это означает, что Dash может работать намного лучше на сломанных системах!

Сравнение производительности между Dash и Bash

Как я уже упоминал выше, тире должно быть эффективным, но каковы точные цифры или во сколько раз оно быстрее, можно узнать только в результате теста.

Поэтому я буду сравнивать bash и Dash, чтобы вы могли лучше понять его производительность.

Тестирование времени запуска

Я собираюсь использовать простой скрипт оболочки, который будет отслеживать точное время открытия оболочки 1000 раз без выполнения каких-либо операций.

Итак, начнем с bash.

#!/bin/bash
for i in $(seq 1 1000);
do bash -c ":" ;
done

Для отслеживания времени я использовал утилиту времени. Это дало мне результаты, как показано ниже:

Используемый скрипт вызовет bash для запуска оболочки без каких-либо операций 1000 раз, и это заняло около 3 секунд.

Теперь давайте сделаем то же самое для тире. С некоторыми изменениями в том же сценарии, что и выше, он будет готов к тестированию на приборной панели.

#!/bin/dash
for i in $(seq 1 1000);
do dash -c ":" ;
done

Когда я выполнил приведенный выше скрипт, он дал мне следующий результат:

Тот же сценарий, выполненный с помощью тире, занял всего 1,1 секунды, что вдвое меньше, чем при использовании bash.

Тестирование производительности с помощью скрипта ShellBench

ShellBench — это утилита для тестирования оболочек POSIX, которая предоставляет вам различные тесты, с помощью которых вы можете тестировать оболочки по различным параметрам.

ShellBench выполняет заданный набор команд в бесконечном цикле в течение 1-2 секунд, а затем возвращает количество выполнений в секунду.

Поскольку я тестирую только Dash и Bash, моя команда будет следующей:

./shellbench -s bash,dash sample/*

Как вы можете ясно видеть, Dash намного превосходит его по производительности.

Заключительные слова

Dash превосходит bash по производительности, но его нельзя использовать, поскольку он не предназначен для взаимодействия. Ubuntu по-прежнему использует bash в качестве оболочки входа и во многом полагается на него, поскольку в Dash по-прежнему отсутствуют некоторые функции, необходимые для полной замены bash.

Статьи по данной тематике: