🐧 Что такое Dash Shell на Linux?

by itisgood

Dash – одно из наименее известных имен, когда мы говорим о семействе оболочек.

Но 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 (Debian Almquist Shell) менее сложен, чем bash.

Dash не предназначен для интерактивных сессий и работает под капотом для гораздо большей эффективности.

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

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

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

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

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

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

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

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

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

Для отслеживания времени я использовал утилиту “time”.

Она дала результаты, приведенные ниже:

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

Теперь давайте сделаем то же самое для тире.

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

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

Выполнение того же скрипта помощью dash заняло всего 0,87 секунды, что меньше половины того, что потребовалось при использовании bash.

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

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

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

Поскольку я тестирую только dash и bash, моя команда будет выглядеть следующим образом:

./shellbench -s bash,dash sample/*

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

Заключение

Dash превосходит bash по производительности, но его нельзя использовать, так как он не предназначен для взаимодействия.

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

см. также:

You may also like

Leave a Comment