КорнШелл
Оригинальный автор(ы) | Дэвид Корн |
---|---|
Первоначальный выпуск | 1983 год [ 1 ] [ 2 ] |
Финальный выпуск | 93u+
/ 1 августа 2012 г |
Предварительный выпуск | 93в-
/ 24 декабря 2014 г |
Репозиторий | github |
Написано в | С |
Операционная система | Unix и Unix-подобные (например, Linux и macOS ; также работает в Windows 10). [ 3 ] ) |
Доступно в | Английский |
Тип | оболочка Unix |
Лицензия |
|
Веб-сайт | Корншелл |
Разработчик(и) | Куртис Рейдер, Ситешвар Вашишт, сообщество |
---|---|
Финальный выпуск | 2020 год
/ 10 октября 2019 г |
Репозиторий | github |
Предшественник | 93v- |
Лицензия | Публичная лицензия Eclipse |
Веб-сайт | Корншелл |
Разработчик(и) | Мартейн Деккер, Джонотан Кинг, гиении |
---|---|
Стабильная версия | 1.0.9
/ 2 июля 2024 г |
Репозиторий | github |
Предшественник | 93u+ |
Лицензия | Публичная лицензия Eclipse |
Веб-сайт | Корншелл |
КорнШелл ( 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.
- ассоциативные массивы и встроенные арифметические операции с плавающей запятой (доступны только в версии ksh93 версия KornShell)
- динамический поиск функций
- математические функции
- подмена процессов и перенаправление процессов
- Выражения, подобные языку C
- расширенный, ориентированный на выражение для и пока циклы
- динамическая расширяемость (динамически загружаемых) встроенных команд (поскольку кш93 )
- ссылочные переменные
- иерархически вложенные переменные
- переменные могут иметь связанные с ними функции-члены
- объектно-ориентированное программирование (поскольку кш93т )
- переменные могут быть объектами с переменными-членами и методами-членами.
- методы объекта вызываются с именем объектной переменной, за которым (после точки) следует имя метода
- вызываются специальные методы объекта: инициализация или присвоение объекта, отказ от объекта ( не установлено )
- доступна композиция и агрегация, а также форма наследования
История
[ редактировать ]KornShell изначально был проприетарным программным обеспечением . В 2000 году исходный код был выпущен под лицензией, принадлежащей AT&T, но с момента выпуска ksh93q в начале 2005 года он лицензировался под лицензией Eclipse Public License . [ 4 ] KornShell доступен как часть коллекции программного обеспечения с открытым исходным кодом AT&T Software Technology (AST). Поскольку KornShell изначально был доступен только по собственной лицензии от AT&T, был создан ряд бесплатных альтернатив с открытым исходным кодом. К ним относятся извини , mksh , Bash и Z-оболочка .
Функционал оригинального KornShell, ksh88 использовался в качестве основы для стандарта POSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992).
Некоторые поставщики до сих пор поставляют свои собственные версии старых версий. вариант ksh88 , иногда с расширениями. ksh93 поддерживается на GitHub . [ 10 ]
Как «Настольный KornShell» ( сек ), ksh93 распространяется как часть Common Desktop Environment . [ 11 ] Эта версия также предоставляет сопоставления на уровне оболочки для виджетов Motif . Он был задуман как конкурент Tcl / Tk . [ 12 ]
Оригинальный KornShell, ksh88 стал оболочкой по умолчанию в AIX версии 4, [ 13 ] [ 14 ] ksh93 доступен отдельно. [ 15 ]
UnixWare 7 включает в себя оба кш88 и кш93 . Оболочка Korn по умолчанию: ksh93 , который поставляется как /usr/bin/ksh , а более старая версия доступна как /usr/bin/ksh88 . [ 16 ] UnixWare также включает в себя dtksh, когда CDE установлен .
Судьба дистрибутива ksh93 стала менее стабильной после того, как примерно в 2012 году авторы покинули AT&T и выпустили стабильную версию 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 ] кш2020 [ 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)
- Бойер-Мур
- Ситешвар Вашишт (Красная шляпа)
- Куртис Рейдер
Консультант по интеграции
[ редактировать ]- Роланд Майнц
Основные корпоративные участники
[ редактировать ]Следующие перечислены примерно в возрастающем хронологическом порядке их вклада:
- AT&T Bell Laboratories
- AT&T Network Systems International
- Лаборатории AT&T (ныне AT&T Labs)
- Вся программная инженерия
- Корпорация Oracle
- Красная шляпа
Пожертвованные корпоративные ресурсы
[ редактировать ]Помимо основных корпораций-участников (перечисленных выше), некоторые компании предоставили бесплатные ресурсы для развития KSH. Они перечислены ниже (в алфавитном порядке):
Варианты
[ редактировать ]Существует несколько вилок и клонов KornShell:
- dtksh – форк ksh93 включен в состав CDE .
- tksh – вилка ksh93 , который обеспечивает доступ к Tk набору инструментов виджетов .
- oksh - порт варианта KornShell для OpenBSD , предназначенный для максимальной переносимости. [ 24 ] между операционными системами. Она использовалась в качестве оболочки по умолчанию в DeLi Linux 7.2.
- loksh — Linux порт OpenBSD с минимальными изменениями. варианта KornShell для [ 25 ]
- mksh — бесплатная реализация языка KornShell, ответвление OpenBSD. пдкш . Первоначально он был разработан для MirOS BSD и лицензируется на разрешительных (но не общедоступных) условиях; в частности, лицензия MirOS . [ 6 ] Помимо использования в BSD, этот вариант заменил пдкш в 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 на BSD Дуга Гвина (армия США BRL) включал версию SVR2 Рона Натали. /bin/sh , в котором было и управление заданиями, и редактирование командной строки. Это был современник оригинала ksh в то время, когда он еще не ускользнул от AT&T. Впоследствии это было /bin/sh , который поставлялся со всеми системами, производными от CMU Mach. [ 32 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Перейти обратно: а б Рон Гомес (9 июня 1983 г.). «Расписание конференции USENIX в Торонто (предварительное)» . Группа новостей : net.usenix . Проверено 29 декабря 2010 г.
- ^ Перейти обратно: а б Гай Харрис (10 октября 1983 г.). «вопрос csh» . Группа новостей : net.flame . Проверено 29 декабря 2010 г.
- ^ «Korn Shell Launcher для подсистемы Windows для Linux «Размышления» . blog.fpmurphy.com . Проверено 29 января 2021 г.
- ^ Перейти обратно: а б «аст-открытый пакет» . Исследование AT&T. nd Архивировано из оригинала 1 октября 2015 г. Проверено 19 декабря 2022 г.
- ^ «ЛЕГАЛЬНО» . Архивировано из оригинала 6 февраля 2012 г. Проверено 10 июня 2010 г.
- ^ Перейти обратно: а б «МирBSD Корн Шелл» . Мирбсд.орг . Проверено 10 декабря 2018 г.
- ^
Корн, Дэвид Г. (26 октября 1994 г.), «ksh - расширяемый язык высокого уровня» , Труды симпозиума USENIX 1994 г. по языкам очень высокого уровня , Ассоциация USENIX , получено 5 февраля 2015 г. ,
Вместо изобретения нового скриптового языка, мы создали систему ввода форм, изменив оболочку Bourne, добавив при необходимости встроенные команды.
- ^ Больский, Моррис И.; Корн, Дэвид Г. (1989). «Благодарности». Язык команд и программирования KornShell . Энглвуд Клиффс, Нью-Джерси: Прентис Холл. стр. XII. ISBN 0-13-516972-0 .
- ^ «Традиционная семья раковин Борнов / история и развитие» . In-ulm.de . Проверено 10 декабря 2018 г.
- ^ «Это сайт загрузки программного обеспечения AT&T Software Technology ast от AT&T Research. Коллекция программного обеспечения AT&T AST OpenSource содержит обзор и практическое многоразовое программное обеспечение UNIX». Гитхаб.com . 10 декабря 2018 года . Проверено 10 декабря 2018 г.
- ^ Билл Розенблатт; Арнольд Роббинс (2002). Изучение Korn Shell (2-е изд.). О'Рейли. стр. VIII–IX. ISBN 978-0-596-00195-7 .
- ^ Пендерграст, Дж. Стивен (1995). Графическое программирование рабочего стола KornShell . Аддисон-Уэсли. п. 359. ИСБН 978-0-201-63375-7 .
- ^ Кейси Кэннон; Скотт Трент; Кэролин Джонс (1999). Просто AIX 4.3 . Прентис Холл. п. 21. ISBN 978-0-13-021344-0 .
- ^ «Центр знаний IBM» . ИБМ . Проверено 10 декабря 2018 г.
- ^ «Центр знаний IBM» . ИБМ . Проверено 10 декабря 2018 г.
- ^ «Соответствие UNIX95» . Uw714doc.sco.com . Проверено 10 декабря 2018 г.
- ^ «кш2020» . Гитхаб . 26 февраля 2021 г.
- ^ «Журнал изменений ksh2020» . Гитхаб . 29 мая 2020 г.
- ^ «Перемотка этого репозитория и поощрение сообщества · Проблема № 1466 · att/ast» . Гитхаб .
- ^ "segfault с расширенными glob · #1464 · att/ast" . Гитхаб .
- ^ "кш 93у+м " . Гитхаб . 17 ноября 2021 г.
- ^ «2020.0.0: Стабильная версия ksh-2020.0.0» . Гитхаб . Проверено 29 января 2021 г.
Примечание. ksh2020 не поддерживается и не поддерживается.
- ^ "ksh 2020.0.0 ИЗМЕНЕНИЯ" . Гитхаб . 29 января 2021 г.
- ^ «ОКШ на GitHub» . Гитхаб . 1 августа 2020 г.
- ^ «локш на GitHub» . Гитхаб . 15 октября 2021 г.
- ^ «5.11. Переход ПДКШ на МКШ» . Архивировано из оригинала 28 июля 2014 г. Проверено 28 июля 2014 г.
- ^ "Аминет - утилита/Shell/SKsh21.LZH" .
- ^ «Дэвид Корн рассказывает все» . Слэшдот . Проверено 22 октября 2009 г.
- ^ «Джерри Фельдман — участник конференции USENIX NT/LISA NT» . Lists.blu.org. 29 августа 1998 года . Проверено 22 октября 2009 г.
- ^ «Службы Windows для UNIX версии 3.0» . Technet.microsoft.com . Проверено 22 октября 2009 г.
- ^ Анатоль Ольчак (2001). Оболочка Korn: Руководство по программированию для Unix и Linux . Аддисон-Уэсли Профессионал. п. 4. ISBN 978-0-201-67523-8 .
- ^ Натали, Рон (30 января 2023 г.). " "Контроль заданий и другие терминальные развлечения" " . Из списка рассылки TUHS («Общество наследия Unix»). Архивировано из оригинала 7 июля 2024 г. Проверено 7 июля 2024 г.
... Контроль занятости в Беркли был интересным трюком. Для нас в BRL проблема заключалась в том, что я абсолютно ненавидел синтаксис оболочки C. Оболочка Korn еще не вышла из-под контроля AT&T, поэтому я потратил время на то, чтобы выяснить, как она на самом деле работает в оболочке C (не очень хорошо документирована), в основном путем проверки, а затем повторно реализовал ее в Bourne Shell (мы использовали оболочку Korn). Версия исходного кода System V для этого). Я все еще не мог добиться от BRL поддержки в использовании оболочки Bourne, поскольку к тому времени в tcsh появилась возможность редактирования командной строки. Итак, вернемся к исходникам оболочки. К этому времени вышел 5R2, поэтому я взял исходный код оболочки [ sic ]. [...] Я переработал редактирование командной строки в стиле emacs в оболочке. Впоследствии у меня состоялся приятный разговор с Дэвидом Корном из USENIX, который, вероятно, на тот момент был двумя наиболее знакомыми с внутренними компонентами управления заданиями оболочки Bourne. Я также сел с ребятами, пишущими либо bash, либо pdksh (не помню какой), и объяснил, как это работает[ так в оригинале ]. ... Спустя годы я покинул BRL, три года проработал администратором Rutgers и работал в небольшом стартапе в Вирджинии. Там была рабочая станция MIPS. Я с трудом использовал ed... Не думая об этом, я попытался получить фоновую работу, набрав «fg». К моему удивлению, оболочка напечатала «Управление заданиями не включено». Хм, говорю я. Это похоже на мое сообщение об ошибке. «set -J» я печатаю. «Управление заданиями включено». Привет! Это моя оболочка. Оказывается, Дуг Гвин поместил мои моды на свою дистрибутивную ленту «System V on BSD», и они проникли в базу кода Mach, и поэтому каждая система, основанная на Mach, в конечном итоге получила их.
Дальнейшее чтение
[ редактировать ]- Моррис И. Больский; Дэвид Г. Корн (1995). Новый язык команд и программирования KornShell . Прентис Холл PTR. ISBN 978-0-13-182700-4 .
- Дэвид Г. Корн; Чарльз Дж. Нортруп; Джеффри Корн (июль 1996 г.). «Новый KornShell — ksh93» . Linux-журнал (27). Архивировано из оригинала 11 октября 2015 г.
Внешние ссылки
[ редактировать ]- Официальный сайт
- Справочная страница ksh93 на Wayback Machine (архивировано 5 июня 2013 г.)
- Справочная страница ksh88 на Wayback Machine (архивировано 5 ноября 2015 г.)
- Оболочка Korn в общественном достоянии (pdksh) на Wayback Machine (архивировано 21 октября 2016 г.)
- МирBSD Корн Шелл (мкш)
- по общим командам MirOS BSD i386 Руководство –