КорнШелл

Оболочка Bourne — обратно совместимая оболочка Unix, созданная Дэвидом Корном
КорнШелл
Оригинальный автор(ы)Дэвид Корн
Первоначальный выпуск1983 ; 42 года назад [1] [2] ( 1983 )
Окончательный релиз
93u+ / 1 августа 2012 г. ; 12 лет назад ( 2012-08-01 )
Предварительный релиз
93v- / 24 декабря 2014 г. ; 10 лет назад ( 2014-12-24 )
Репозиторийgithub.com/att/ast
Написано вС
Операционная системаUnix и Unix-подобные (например, Linux и macOS ; также работает в Windows 10 [3] )
Доступно вАнглийский
ТипОболочка Unix
Лицензия
Веб-сайтkornshell.com
кш2020
Разработчик(и)Куртис Рейдер, Ситешвар Вашишт, сообщество
Окончательный релиз
2020 / 10 октября 2019 г. ; 5 лет назад ( 2019-10-10 )
Репозиторийgithub.com/ksh2020/ksh
Предшественник93в-
ЛицензияПубличная лицензия Eclipse
Веб-сайтkornshell.com 
кш93у+м
Разработчик(и)Мартейн Деккер, Джонотан Кинг, гиении
Стабильный релиз
1.0.10 / 2 августа 2024 г. ; 5 месяцев назад ( 2024-08-02 )
Репозиторийgithub.com/ksh93/ksh
Предшественник93у+
ЛицензияПубличная лицензия Eclipse
Веб-сайтgithub.com/ksh93/ksh/wiki

KornShell ( ksh) — оболочка Unix , разработанная Дэвидом Корном в Bell Labs в начале 1980-х годов и анонсированная на USENIX 14 июля 1983 года. [1] [2] Первоначальная разработка была основана на исходном коде оболочки Bourne . [7] Другими ранними участниками были разработчики Bell Labs Майк Вич и Пэт Салливан, которые написали код режимов редактирования строк в стиле Emacs и vi соответственно. [8] KornShell обратно совместима с оболочкой Bourne и включает в себя многие функции оболочки C , вдохновленные запросами пользователей Bell Labs.

Функции

KornShell соответствует POSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992.) Основные различия между KornShell и традиционной оболочкой Bourne включают в себя:

  • управление заданиями , псевдонимы команд и история команд разработаны на основе соответствующих функций оболочки C ; управление заданиями было добавлено в оболочку Bourne Shell в 1989 году [9]
  • выбор из трех стилей редактирования командной строки на основе vi , Emacs и Gosling Emacs
  • ассоциативные массивы и встроенные арифметические операции с плавающей точкой (доступно только в версии KornShell ksh93 )
  • динамический поиск функций
  • математические функции
  • замена процесса и перенаправление процесса
  • Выражения, подобные языку C
  • улучшенные циклы for и while, ориентированные на выражения
  • динамическая расширяемость (динамически загружаемых) встроенных команд (начиная с ksh93 )
  • справочные переменные
  • иерархически вложенные переменные
  • переменные могут иметь связанные с ними функции-члены
  • объектно-ориентированное программирование (с ksh93t )
    • переменные могут быть объектами с переменными-членами и методами-членами
    • Методы объекта вызываются с именем переменной объекта, за которым (после символа точки) следует имя метода.
    • Вызываются специальные методы объекта: инициализация или назначение объекта, отказ от объекта ( unset )
    • доступна композиция и агрегация, а также форма наследования

История

Korn Shell, работающая на Windows Services для UNIX

KornShell изначально был проприетарным программным обеспечением . В 2000 году исходный код был выпущен под лицензией, принадлежащей AT&T, но с момента выпуска ksh93q в начале 2005 года он был лицензирован под лицензией Eclipse Public License . [4] KornShell доступен как часть коллекции программного обеспечения с открытым исходным кодом AT&T Software Technology (AST). Поскольку KornShell изначально был доступен только по проприетарной лицензии от AT&T, было создано несколько бесплатных и открытых альтернатив. К ним относятся pdksh , mksh , Bash и Z shell .

Функциональность оригинального KornShell, ksh88 , была использована в качестве основы для стандарта POSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992).

Некоторые поставщики по-прежнему поставляют собственные версии старого варианта ksh88 , иногда с расширениями. ksh93 поддерживается на GitHub . [10]

Как "Desktop KornShell" ( dtksh ), ksh93 распространяется как часть Common Desktop Environment . [11] Эта версия также обеспечивает сопоставления на уровне оболочки для виджетов Motif . Она была задумана как конкурент Tcl / Tk . [12]

Оригинальная оболочка KornShell, ksh88 , стала оболочкой по умолчанию в AIX в версии 4, [13] [14] а ksh93 была доступна отдельно. [15]

UnixWare 7 включает в себя как ksh88 , так и ksh93 . Оболочка Korn по умолчанию — ksh93 , которая поставляется как /usr/bin/ksh , а более старая версия доступна как /usr/bin/ksh88 . [16] UnixWare также включает в себя dtksh, если установлена ​​CDE .

Дистрибутив ksh93 претерпел менее стабильную судьбу после того, как авторы покинули AT&T около 2012 года на стабильной версии ksh93u+ . Основные авторы продолжали работать над веткой ksh93v- beta примерно до 2014 года. В конечном итоге эта работа была продолжена в первую очередь Red Hat в 2017 году (из-за запросов клиентов) и привела к окончательному первоначальному выпуску ksh2020 [17] осенью 2019 года. Этот первоначальный выпуск (хотя и исправил несколько предыдущих проблем со стабильностью) привел к некоторым незначительным проблемам сбоев и совместимости. [18] В марте 2020 года AT&T решила откатить изменения сообщества, спрятать их в ветке и перезапустить с ksh93u+ , поскольку изменения были слишком обширными и слишком сфокусированными на ksh, чтобы компания могла включить их в проект в режиме обслуживания. [19] [20] Разработка исправлений ошибок продолжается в ветке ksh93u+m , основанной на последнем стабильном релизе AT&T ( ksh93u+ 2012-08-01). [21] ksh2020 [22] был выпущен как «основной релиз по нескольким причинам» [23] , таким как удаление поддержки EBCDIC , прекращение поддержки бинарных плагинов, написанных для ksh93u+ , и удаление некоторых сломанных математических функций, но никогда не поддерживался и не поддерживался AT&T (даже в первоначальную дату выпуска).

Основной вклад в основную отрасль программного обеспечения

Для целей списков ниже основная программная ветвь KSH определяется как исходная программа, датируемая с июля 1983 года и до выпуска KSH2020 в конце 2019 года. Продолжающаяся разработка последующих версий (ветвей) KSH разделилась на разные группы, начиная с 2020 года, и ниже не рассматривается.

Основные индивидуальные участники

Ниже приведен список в примерном хронологическом порядке возрастания их вклада:

  • Дэвид Г. Корн (AT&T Bell Laboratories, AT&T Laboratories и Google; и создатель)
  • Гленн С. Фаулер (AT&T Bell Laboratories, AT&T Laboratories)
  • Кием-Фонг Во (AT&T Bell Laboratories, AT&T Laboratories)
  • Адам Эдгар (AT&T Bell Laboratories)
  • Майкл Т. Вич (AT&T Bell Laboratories)
  • Патрик Д. Салливан (AT&T Bell Laboratories)
  • Маттейс Н. Мельхиор (AT&T Network Systems International)
  • Карстен-Фляйшер (Omnium Software Engineering)
  • Бойер-Мур
  • Ситешвар Вашишт (Красная Шапка)
  • Куртис Рейдер

Консультант по интеграции

  • Роланд Майнц

Основные корпоративные вкладчики

Ниже приведен список в примерном хронологическом порядке возрастания их вклада:

Пожертвованные корпоративные ресурсы

Помимо основных крупных корпораций-доноров (перечисленных выше), некоторые компании внесли бесплатные ресурсы в разработку KSH. Они перечислены ниже (в алфавитном порядке):

Варианты

Существует несколько форков и клонов KornShell:

  • dtksh  – форк ksh93, входящий в состав CDE .
  • tksh  – форк ksh93 , предоставляющий доступ к набору виджетов Tk .
  • oksh  – порт варианта KornShell от OpenBSD , предназначенный для максимальной переносимости [24] между операционными системами. Он использовался как оболочка по умолчанию в DeLi Linux 7.2.
  • loksh  – порт Linux версии KornShell от OpenBSD с минимальными изменениями. [25]
  • mksh  – свободная реализация языка KornShell, ответвление от OpenBSD pdksh . Первоначально он был разработан для MirOS BSD и лицензирован на условиях разрешительного характера (хотя и не в качестве общественного достояния); в частности, MirOS License . [6] Помимо использования в BSD, этот вариант заменил pdksh в Debian, [26] и является оболочкой по умолчанию в Android.
  • SKsh  – вариант AmigaOS , который предоставляет несколько специфичных для Amiga функций, таких как совместимость с ARexx . [27] В этой традиции MorphOS использует pdksh в своем SDK.
  • Оболочка MKS Korn компании MKS Inc. — фирменная реализация языка KornShell из Microsoft Windows Services for UNIX (SFU) до версии 2.0; по словам Дэвида Корна, оболочка MKS Korn не была полностью совместима с KornShell в 1998 году. [28] [29] В версии SFU 3.0 Microsoft заменила оболочку MKS Korn на новую оболочку, совместимую с POSIX.2, как часть Interix . [30]
  • KornShell включен в UWIN , пакет совместимости с Unix, разработанный Дэвидом Корном. [31]
  • /bin/sh в пакете System V Дуга Гвина (US Army BRL) на BSD включал версию SVR2 /bin/sh Рона Натали , которая имела как управление заданиями, так и редактирование командной строки. Это был современник оригинального ksh в то время, когда он не избежал AT&T. Впоследствии это был /bin/sh , который поставлялся со всеми системами, производными от CMU Mach. [32]

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

Ссылки

  1. ^ ab Ron Gomes (9 июня 1983 г.). "Расписание конференции USENIX в Торонто (предварительное)". Группа новостей : net.usenix . Получено 29 декабря 2010 г.
  2. ^ ab Guy Harris (10 октября 1983 г.). "csh question". Группа новостей : net.flame . Получено 29 декабря 2010 г.
  3. ^ "Korn Shell Launcher for Windows Subsystem for Linux « Musings». blog.fpmurphy.com . Получено 29.01.2021 .
  4. ^ ab "ast-open package". AT&T Research. nd Архивировано из оригинала 1 октября 2015 г. Получено 19 декабря 2022 г.
  5. ^ ab "MirBSD Korn Shell". Mirbsd.org . Получено 10 декабря 2018 г. .
  6. ^ Korn, David G. (26 октября 1994 г.), «ksh — расширяемый язык высокого уровня», Труды симпозиума по языкам очень высокого уровня USENIX 1994 г. , Ассоциация USENIX , получено 5 февраля 2015 г. Вместо того чтобы изобретать новый язык сценариев, мы построили систему ввода форм, изменив оболочку Bourne, добавив встроенные команды по мере необходимости.
  7. ^ Bolsky, Morris I.; Korn, David G. (1989). "Благодарности". Язык команд и программирования KornShell. Englewood Cliffs, NJ: Prentice Hall. стр. xii. ISBN 0-13-516972-0.
  8. ^ "традиционная семья Борн Шелл / история и развитие". In-ulm.de . Получено 10 декабря 2018 г. .
  9. ^ "Это сайт загрузки программного обеспечения AT&T Software Technology ast от AT&T Research. Коллекция программного обеспечения AT&T AST OpenSource содержит обзор и практическое повторно используемое программное обеспечение UNIX". Github.com . 10 декабря 2018 г. . Получено 10 декабря 2018 г. .
  10. ^ Билл Розенблатт; Арнольд Роббинс (2002). Learning the Korn Shell (2-е изд.). O'Reilly. стр.  viii– ix. ISBN 978-0-596-00195-7.
  11. ^ Pendergrast, J. Stephen (1995). Графическое программирование KornShell для настольных компьютеров. Addison-Wesley. стр. 359. ISBN 978-0-201-63375-7.
  12. ^ Кейси Кэннон; Скотт Трент; Кэролин Джонс (1999). Simply AIX 4.3 . Prentice Hall. стр. 21. ISBN 978-0-13-021344-0.
  13. ^ "IBM Knowledge Center". IBM . Получено 10 декабря 2018 г. .
  14. ^ "IBM Knowledge Center". IBM . Получено 10 декабря 2018 г. .
  15. ^ "Соответствие UNIX95". Uw714doc.sco.com . Получено 10 декабря 2018 г. .
  16. ^ "ksh2020". GitHub . 26 февраля 2021 г.
  17. ^ "ksh2020 changelog". GitHub . 29 мая 2020 г.
  18. ^ "Перематываем этот репозиторий и призываем сообщество · Проблема № 1466 · att/ast". GitHub .
  19. ^ "segfault с расширенными glob · #1464 · att/ast". GitHub .
  20. ^ "ksh 93u+m". GitHub . 17 ноября 2021 г.
  21. ^ "2020.0.0: Стабильный выпуск ksh-2020.0.0". GitHub . Получено 2021-01-29 . Примечание: ksh2020 не поддерживается и не обслуживается
  22. ^ "ksh 2020.0.0 CHANGELOG". GitHub . 2021-01-29.
  23. ^ "oksh на GitHub". GitHub . 1 августа 2020 г.
  24. ^ "loksh на GitHub". GitHub . 15 октября 2021 г.
  25. ^ "5.11. Переход от PDKSH к MKSH". Архивировано из оригинала 2014-07-28 . Получено 2014-07-28 .
  26. ^ "Aminet - util/Shell/SKsh21.LZH".
  27. ^ "David Korn Tells All". Slashdot. 7 февраля 2001 г. Получено 22 октября 2009 г.
  28. ^ "Джерри Фельдман — участник конференции USENIX NT/LISA NT". Lists.blu.org. 29 августа 1998 г. Получено 22 октября 2009 г.
  29. ^ "Службы Windows для UNIX версии 3.0". Technet.microsoft.com. 5 декабря 2007 г. Получено 22 октября 2009 г.
  30. ^ Анатоль Олчак (2001). Оболочка Korn: руководство по программированию в Unix и Linux. Addison-Wesley Professional. стр. 4. ISBN 978-0-201-67523-8.
  31. ^ Натали, Рон (30.01.2023). ""Управление заданиями и другие терминальные забавы"". Из списка рассылки TUHS ("The Unix Heritage Society"). Архивировано из оригинала 07.07.2024 . Получено 07.07.2024 . ... Управление заданиями Беркли было интересным хаком. Для нас в BRL проблема была в том, что я абсолютно ненавидел синтаксис оболочки C. Оболочка Korn еще не ушла от AT&T, поэтому я потратил время на выяснение того, как это на самом деле работает в оболочке C (не очень хорошо документированной), в основном путем проверки, а затем повторно реализовал ее в оболочке Bourne Shell (для этого мы использовали версию исходного кода System V). Я все еще не мог получить поддержку в BRL за использование оболочки Bourne, потому что к тому времени вышел tcsh с редактированием командной строки. Поэтому я вернулся к исходникам оболочки. К этому времени вышел 5R2, поэтому я схватил исходный код оболочки [ sic ], который. [...] Я переделал редактирование командной строки в стиле emacs в оболочку. Впоследствии у меня состоялся приятный разговор с Дэвидом Корном из USENIX, которые, вероятно, на тот момент были двумя наиболее знакомыми с внутренними элементами управления заданиями оболочки Bourne. Я также посидел с ребятами, которые писали либо bash, либо pdksh (не помню, что именно), и объяснили, как это работает [ sic ]. ... Годы спустя я ушел из BRL, провел три года в качестве администратора Ратгерса и работал в небольшом стартапе в Вирджинии. Там была рабочая станция MIPS. Я корпел над ней, используя ed... Не думая об этом, я попытался извлечь фоновое задание, набрав "fg". К моему удивлению, оболочка выдала "Управление заданиями не включено". Хм, говорю я. Похоже на мое сообщение об ошибке. "set -J" я набираю. "Управление заданиями включено". Эй! Это моя оболочка. Оказалось, что Дуг Гвин поместил мои модификации на свою дистрибутивную ленту «System V on BSD», и они попали в кодовую базу Mach, и поэтому все производные от Mach системы в конечном итоге содержали их.

Дальнейшее чтение

  • Моррис И. Больски; Дэвид Г. Корн (1995). Новый язык команд и программирования KornShell. Prentice Hall PTR. ISBN 978-0-13-182700-4.
  • Дэвид Г. Корн; Чарльз Дж. Нортрап; Джеффри Корн (июль 1996 г.). «Новый KornShell—ksh93». Linux Journal (27). Архивировано из оригинала 2015-10-11.
Взято с "https://en.wikipedia.org/w/index.php?title=KornShell&oldid=1267751426#Variants"