stringtranslate.com

Ракушка Альмквиста

Almquist shell (также известный как A Shell , ash и sh ) — это облегченная оболочка Unix , изначально написанная Кеннетом Альмквистом в конце 1980-х годов. Изначально являясь клоном варианта System V.4 оболочки Bourne shell , она заменила оригинальную оболочку Bourne shell в версиях BSD Unix, выпущенных в начале 1990-х годов.

История

ash был впервые выпущен посредством публикации в группе новостей Usenet comp.sources.unix , одобренной и модерируемой Ричем Сальцем 30 мая 1989 года . Он был описан как «повторная реализация оболочки System V [с] большинством функций этой оболочки, а также некоторыми дополнениями». [1]

Быстрый, небольшой и практически совместимый [ требуется ссылка ] со спецификацией стандарта POSIX оболочки Unix, ash не предоставлял механизмов редактирования строк или истории команд , поскольку Альмквист считал, что такую ​​функциональность следует перенести в драйвер терминала . Однако текущие варианты поддерживают ее.

Следующая информация извлечена из информации о пакете ash из Slackware v14:

ясень (раковина из ясеня Кеннета Алмквиста)

Облегченная (92K) оболочка, совместимая с Bourne. Отлично подходит для машин с небольшим объемом памяти, но не предоставляет всех дополнительных возможностей оболочек, таких как bash , tcsh и zsh . Запускает большинство сценариев оболочки, совместимых с оболочкой Bourne. Обратите внимание, что в Linux большинство сценариев, похоже, используют по крайней мере некоторый синтаксис, специфичный для bash. Скрипты установки Slackware являются заметным исключением, поскольку ash — это оболочка, используемая на установочных дисках. NetBSD использует ash в качестве своего /bin/sh.

Из оригинального релиза ash было создано множество ответвлений. [2] Эти производные ash устанавливаются как оболочка по умолчанию ( /bin/sh) на FreeBSD , NetBSD , DragonFly BSD , MINIX , и в некоторых дистрибутивах Linux . MINIX 3.2 использовала оригинальную версию ash , чья тестовая функция отличалась от POSIX. [3] Эта версия оболочки была заменена в MINIX 3.3. Android использовал ash до Android 4.0 , после чего переключился на mksh . [4]

Бросаться

В 1997 году Герберт Сюй перенес проект ashс NetBSD на Debian Linux . В сентябре 2002 года, с выпуском 0.4.1, этот порт был переименован в Dash ( Debian Almquist shell ). Главными приоритетами Сюя являются соответствие POSIX и тонкая реализация. [2]

Как и его предшественник, Dash не поддерживает ни интернационализацию и локализацию , ни многобайтовую кодировку символов (оба требуются в POSIX). [ необходима ссылка ] Редактирование строк и поддержка истории на основе GNU Readline необязательны ( --with-libedit).

Внедрение в Debian и Ubuntu

Из-за его тонкости Ubuntu решила принять Dash в качестве оболочки по умолчанию /bin/sh[6] [7] в 2006 году. Причиной использования Dash является более быстрое выполнение сценариев оболочки , [8] особенно во время запуска операционной системы, по сравнению с предыдущими версиями Debian и Ubuntu, которые использовали Bash для этой цели, хотя Bash по-прежнему является оболочкой входа по умолчанию для интерактивного использования. [9] Dash стал оболочкой по умолчанию /bin/shв Ubuntu , начиная с выпуска 6.10 в октябре 2006 года. [7] Dash заменил Bash и стал оболочкой по умолчанию /bin/shв Debian 6 (Squeeze), выпущенном в феврале 2011 года. [6]

Результатом этого сдвига стало то, что было обнаружено, что многие скрипты оболочки используют специфичные для Bash функциональные возможности («башизмы») без надлежащего объявления их в строке shebang . [10] [11] Впервые проблема была обнаружена в Ubuntu, и разработчики Ubuntu решили привести все скрипты в соответствие со стандартом POSIX . Позднее изменения были перенесены в Debian, который в конечном итоге /bin/shтакже принял Dash в качестве своего стандарта. В результате политика Debian была изменена, чтобы позволить разработчикам скриптов использовать оболочку, в значительной степени совместимую с POSIX, за исключением расширений, объединенных в Dash для удобства ( local, echo -n, test -a / -o). [12] [13] Похожий переход произошел в Slackware Linux, хотя их версия ashоснована на Dash лишь частично. [2]

Встроенный Linux

Ash (в основном форк Dash) также довольно популярен во встраиваемых системах Linux . Dash версии 0.3.8-5 был включен в BusyBox , исполняемый файл-ловушку, часто используемый в этой области, и используется в таких дистрибутивах, как DSLinux, Alpine Linux , Tiny Core Linux и прошивках маршрутизаторов на базе Linux , таких как OpenWrt , Tomato и DD-WRT . Многие поставщики коммерческих систем также включают его, поскольку он не является GPL -Ware, но имеет лицензию, которая его позволяет, например, на Sophos XGs он ошибочно называется «Advanced Shell».

Смотрите также

Ссылки

  1. ^ Альмквист, Кеннет (30 мая 1989 г.). Рич Сальц (ред.). "v19i001: Повторная реализация оболочки System V, часть 01/08". Группа новостей Usenet , comp.sources.unix.
  2. ^ abc Mascheck, Свен. «Варианты Ясеня (Алмквиста)». www.in-ulm.de .
  3. ^ Томас Э. Дики (2015). "TEST против Portability" . Получено 1 марта 2020 г. .
  4. ^ Эллиот Хьюз (2018-06-20). "Оболочка и утилиты Android" . Получено 29-02-2020 .
  5. ^ Сюй, Герберт. "КОПИРОВАНИЕ". Архив ядра Linux . Получено 23 декабря 2023 г.
  6. ^ ab "Неинтерактивная оболочка". Debian Wiki . 2020-01-13 . Получено 2020-02-29 .
  7. ^ ab "Dash as /bin/sh". Ubuntu Wiki . 2017-12-16 . Получено 2020-02-29 .
  8. ^ Нил Кравец (2011). Ubuntu: мощные хаки и настройки. John Wiley & Sons . стр. 178. ISBN 9781118080382.
  9. ^ Кристофер Негус; Франсуа Кан (2011). Ubuntu Linux Toolbox. John Wiley & Sons. стр. 49. ISBN 9781118079140.
  10. ^ Эгил Хастинг (2006-09-20). "Скрипт, использующий bash, может быть сломан новой символической ссылкой". Launchpad . Получено 29-02-2020 .
  11. ^ comotion (21.09.2007). "dash as #!/bin/sh вносит бесчисленные несовместимости". Launchpad . Получено 29.02.2020 .
  12. ^ "10. Файлы". Руководство по политике Debian v4.5.0.2 .
  13. ^ checkbashisms(1)  –  Руководство по основным командам Linux

Внешние ссылки