Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

История [ править ]

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

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

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

ясень (ясеневый панцирь Кеннета Альмквиста)

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

Мириады вилок были произведены из исходного пепла. [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 году Герберт Сю портировал ashNetBSD на Debian Linux . В сентябре 2002 года с выпуском 0.4.1 этот порт был переименован в dash( оболочка Debian Almquist ). Основными приоритетами Сюй являются соответствие POSIX и тонкая реализация. [2]

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

Принятие в Debian и Ubuntu [ править ]

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

В результате сдвига было обнаружено, что многие сценарии оболочки используют специфические для bash функции ("bashisms") без должного объявления этого в строке shebang . [9] [10] Проблема была впервые обнаружена в Ubuntu, и специалисты по сопровождению Ubuntu решили привести все сценарии в соответствие со стандартом POSIX . Позднее изменения были перенесены в Debian, который вскоре также принял тире по умолчанию /bin/sh. В результате, все /bin/shскрипты в Debian и Ubuntu гарантированно POSIX-совместимых, за исключением расширений объединяются в dashдля удобства ( local, echo -n, test -a / -o). [11] [12]Аналогичный переход произошел в 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 .

См. Также [ править ]

  • Сравнение компьютерных оболочек

Ссылки [ править ]

  1. ^ Альмквист, Кеннет (30 мая 1989). Рич Зальц (ред.). «v19i001: повторная реализация оболочки System V, часть 01/08» . Группа новостей Usenet , comp.sources.unix.
  2. ^ a b c Mascheck, Свен. "Варианты ясеня (ракушки Альмквиста)" . www.in-ulm.de .
  3. ^ Томас Э. Дики (2015). «ТЕСТ против портативности» . Проверено 1 марта 2020 года .
  4. ^ Эллиот Хьюз (2018-06-20). «Оболочка и утилиты Android» . Проверено 29 февраля 2020 .
  5. ^ a b «Неинтерактивная оболочка» . Debian Wiki . 2020-01-13 . Проверено 29 февраля 2020 .
  6. ^ a b "Тире как / bin / sh" . Ubuntu Wiki . 2017-12-16 . Проверено 29 февраля 2020 .
  7. ^ Нил Кравец (2011). Ubuntu: мощные хаки и настройки . Джон Вили и сыновья . п. 178. ISBN 9781118080382.
  8. ^ Кристофер Негус; Франсуа Кан (2011). Панель инструментов Ubuntu Linux . Джон Вили и сыновья. п. 49. ISBN 9781118079140.
  9. Эгиль Гастинг (20 сентября 2006 г.). «Скрипт, использующий bash, может быть нарушен новой символической ссылкой» . Launchpad . Проверено 29 февраля 2020 .
  10. ^ comotion (21 сентября 2007 г.). «тире как #! / bin / sh вводит бесчисленное множество несовместимостей» . Launchpad . Проверено 29 февраля 2020 .
  11. ^ «10. Файлы» . Руководство по политике Debian, версия 4.5.0.2 .
  12. ^ checkbashisms(1)  -  Руководство по основным командам Linux

Внешние ссылки [ править ]

  • Официальный веб-сайт