What is dash linux

Dash

Dash (Debian Almquist shell) is a modern POSIX-compliant implementation of /bin/sh (sh, Bourne shell).

Dash is not Bash compatible, but Bash tries to be mostly compatible with POSIX, and thus Dash.

  • Speed of execution. Roughly 4x times faster than Bash and others.
  • Very limited resources (disk space, RAM or CPU). As minimalistic as possible — much smaller (134.1 kB vs 6.5 MB installed, 13 kSLOC vs 176 kSLOC) than Bash and others.
  • Security. Dash is a long-established, tiny project with simple and long-established functionality; one that is still very much alive, and with many active developers. Thus, Dash has a much smaller attack surface, while still having many eyes on its code.
  • If classic /bin/sh needed only.

Installation

Use Dash as /bin/sh

Most POSIX compliant scripts specify /bin/sh at the first line of the script, which means it will run /bin/sh as the shell, which by default in Arch is a symlink to /bin/bash .

You can re-symlink /bin/sh to /bin/dash , which can improve system performance, but first you must verify that none of the scripts that are not explicitly #!/bin/bash require any of Bash’s features and that all /bin/sh scripts are safely POSIX compliant.

Identifying bashisms

Features of bash that are not included in Dash (‘bashisms’) will not work without being explicitly pointed to /bin/bash . The following instructions will allow you to find any scripts that may need modification.

Common places to check

$ IFS=:; grep -Irl '#!/bin/sh' $PATH |xargs -r checkbashisms

Relinking /bin/sh

Once you have verified that it will not break any functionality, it should be safe to relink /bin/sh . To do so use the following command:

Updates of Bash will overwrite /bin/sh with the default symlink. To prevent this, use the following pacman hook, which will relink /bin/sh after every affected update:

[Trigger] Type = Package Operation = Install Operation = Upgrade Target = bash [Action] Description = Re-pointing /bin/sh symlink to dash. When = PostTransaction Exec = /usr/bin/ln -sfT dash /usr/bin/sh Depends = dash

See also

Источник

Читайте также:  Uefi boot iso linux

What is Dash Shell in Linux?

Not many people are aware of a dash shell which is usually found in the Debian Linux distribution. Here’s a quick introduction.

Dash is one of the least known names when you think about shell family. But Dash is not meant to replace your current shell and works under the hood.

You must have many questions related to Dash such as what is its use case, how it’s different from your regular shell, and so on. So let’s dive deep into Dash.

What is a Dash shell?

Dash stands for Debian Almquist Shell. It is a POSIX-compliant implementation of Bourne Shell. It replaces the /bin/sh in default scripts and provides better execution speed while consuming fewer resources.

If you are using a Debian-based distro, you are already using Dash by default. You’d say, Bash, is my default shell. You’re right about your default shell so let me explain this contradictory statement.

Before the release of Ubuntu 6.10, Bash was used when your default scripts wanted to execute /bin/sh as a symbolic link to provoke bash.

As bash grew bigger over time, the efficiency was compromised and Dash was implemented to replace /bin/sh in default scripts.

Dash (Debian Almquist Shell) is less complex and lite than bash. Dash is not meant for interactive sessions and works under the hood for much better efficiency.

Now, let’s have a look at the advantages of Dash:

  • You get significant performance improvements over bash
  • It uses less disk space compared to other shells which is important for wrapper scripts intended for cleanups when the underlying problem exists.
  • Dash only relies on libc (the core system library) whereas bash needs to have terminal support libraries and without them, you can’t even run a script. This means, Dash can work quite better on broken systems!

Performance Comparison between Dash and Bash

As I mentioned above, the dash is meant to be efficient but what are the exact numbers or how many times it is faster can only be derived from the test.

So I’ll be doing a comparison between bash and dash so you can have a better idea about its performance.

Testing Start-up times

I’m going to use a simple shell script that will track the exact time to open the shell 1000 times without any operation performed.

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

To track time, I used the time utility. It gave me results as given below:

Читайте также:  Grub for linux mint

Running benchmark test for bash

The used script will invoke bash to run a shell with no operation 1000 times and it took around 3 seconds.

Now, let’s do the same for the dash. With the few changes over the same script as above and it’ll be ready for being tested for the dash.

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

When I executed the above script, it gave me the following result:

Running benchmark test for bash

The same script when executed with the dash, it only took 1.1 seconds which is less than half of what it took with bash.

Testing Performance Using ShellBench Script

ShellBench is a benchmark utility for POSIX shells and avails you of various tests through which you can test shells on different parameters.

ShellBench runs a given set of commands in an infinity loop for 1-2 seconds and then it returns numbers of executions/second.

As I’m only testing between dash and bash, my command will be as follows:

./shellbench -s bash,dash sample/*

Using ShellBench to compare dash and bash

As you can clearly see, dash is far superior in terms of performance.

Final Words

Dash outstands bash in terms of performance but can not be used as it is not made for interaction. Ubuntu still uses bash as a login shell and relies heavily upon it as dash still lacks some features required to replace bash completely.

Источник

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

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.

Читайте также:  Linux как выбрать папку

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.

Источник

Оцените статью
Adblock
detector