Оригинальный автор(ы) | Дэвид Корн |
---|---|
Первоначальный выпуск | 1983 ( 1983 ) | [1] [2]
Окончательный релиз | 93u+ / 1 августа 2012 г. ( 2012-08-01 ) |
Предварительный релиз | 93v- / 24 декабря 2014 г. ( 2014-12-24 ) |
Репозиторий | github.com/att/ast |
Написано в | С |
Операционная система | Unix и Unix-подобные (например, Linux и macOS ; также работает в Windows 10 [3] ) |
Доступно в | Английский |
Тип | Оболочка Unix |
Лицензия |
|
Веб-сайт | kornshell.com |
Разработчик(и) | Куртис Рейдер, Ситешвар Вашишт, сообщество |
---|---|
Окончательный релиз | 2020 / 10 октября 2019 г. ( 2019-10-10 ) |
Репозиторий | github.com/ksh2020/ksh |
Предшественник | 93в- |
Лицензия | Публичная лицензия Eclipse |
Веб-сайт | kornshell.com |
Разработчик(и) | Мартейн Деккер, Джонотан Кинг, гиении |
---|---|
Стабильный релиз | 1.0.10 / 2 августа 2024 г. ( 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 включают в себя:
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 года, и ниже не рассматривается.
Ниже приведен список в примерном хронологическом порядке возрастания их вклада:
Ниже приведен список в примерном хронологическом порядке возрастания их вклада:
Помимо основных крупных корпораций-доноров (перечисленных выше), некоторые компании внесли бесплатные ресурсы в разработку KSH. Они перечислены ниже (в алфавитном порядке):
Существует несколько форков и клонов KornShell:
того чтобы изобретать новый язык сценариев, мы построили систему ввода форм, изменив оболочку Bourne, добавив встроенные команды по мере необходимости.
Примечание: ksh2020 не поддерживается и не обслуживается
... Управление заданиями Беркли было интересным хаком. Для нас в 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 системы в конечном итоге содержали их.