KornShell

KornShell
Oryginalni autorzy Dawid Korn
Pierwsze wydanie 1983 ; 40 lat temu ( 1983 )
Ostateczne wydanie
93u+ / 1 sierpnia 2012 ; 10 lat temu ( 01.08.2012 )
Wersja podglądu
93v- / 24 grudnia 2014 ; 8 lat temu ( 2014-12-24 )
Magazyn github.com/att/ast _ _ _
Napisane w C
System operacyjny Unix i uniksopodobne (np. Linux i macOS ; działa również w Windows 10 )
Dostępne w język angielski
Typ powłoka Uniksa
Licencja
Strona internetowa www.kornshell.org _ _
ksh2020
Deweloperzy Kurtis Rader, Siteshwar Vashisht, społeczność
Ostateczne wydanie
2020 / 10 października 2019 ; 3 lata temu ( 2019-10-10 )
Magazyn github.com/ksh2020/ksh _ _ _
Poprzednik 93v-
Licencja Licencja publiczna Eclipse
ksh93u+m
Deweloperzy Martijn Dekker, Johnothan King, hieny
Wersja stabilna
1.0.4 / 21 października 2022 ; 4 miesiące temu ( 2022-10-21 )
Magazyn github.com/ksh93/ksh _ _ _
Poprzednik 93u+
Licencja Licencja publiczna Eclipse

KornShell ( ksh ) to powłoka systemu Unix , która została opracowana przez Davida Korna w Bell Labs na początku lat 80. i ogłoszona na USENIX 14 lipca 1983 r. Początkowy rozwój był oparty na kodzie źródłowym powłoki Bourne'a . Innymi wczesnymi współtwórcami byli programiści Bell Labs, Mike Veach i Pat Sullivan, którzy napisali odpowiednio kod trybów edycji linii w stylu Emacsa i vi . KornShell jest wstecznie kompatybilny z powłoką Bourne'a i zawiera wiele funkcji powłoki C , zainspirowany prośbami użytkowników Bell Labs.

Cechy

KornShell jest zgodny z POSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992). Główne różnice między KornShell a tradycyjną powłoką Bourne obejmują:

  • kontrola zadań , aliasowanie poleceń i historia poleceń zaprojektowana na podstawie odpowiednich funkcji powłoki C ; kontrola pracy została dodana do Bourne Shell w 1989 roku
  • wybór trzech stylów edycji wiersza poleceń opartych na vi , Emacs i Gosling Emacs
  • tablice asocjacyjne i wbudowane operacje arytmetyczne na liczbach zmiennoprzecinkowych (dostępne tylko w wersji KornShell ksh93 )
  • dynamiczne wyszukiwanie funkcji
  • funkcje matematyczne
  • substytucja procesu i przekierowanie procesu
  • Wyrażenia podobne do języka C
  • ulepszone zorientowane na wyrażenia pętle for i while
  • dynamiczna rozszerzalność (dynamicznie ładowanych) wbudowanych poleceń (od ksh93 )
  • zmienne referencyjne
  • zmienne zagnieżdżone hierarchicznie
  • zmienne mogą mieć skojarzone z nimi funkcje składowe
  • programowanie obiektowe (od ksh93t )
    • zmienne mogą być obiektami z (pod)zmiennymi składowymi i metodami składowymi
    • metody obiektowe są wywoływane z nazwą zmiennej obiektowej, po której następuje (po znaku kropki) nazwa metody
    • wywoływane są specjalne metody obiektowe: inicjalizacja lub przypisanie obiektu, porzucenie obiektu ( unset )
    • dostępny jest skład i agregacja, a także forma dziedziczenia

Historia

Korn Shell działający w usługach Windows dla systemu UNIX

KornShell był pierwotnie zastrzeżonym oprogramowaniem . W 2000 roku kod źródłowy został wydany na licencji przeznaczonej dla AT&T, ale od ksh93q na początku 2005 roku jest licencjonowany na licencji Eclipse Public License . KornShell jest dostępny jako część kolekcji oprogramowania Open Source AT&T Software Technology (AST). Ponieważ KornShell był początkowo dostępny tylko na podstawie zastrzeżonej licencji AT&T, stworzono wiele bezpłatnych i otwartych alternatyw. Należą do nich pdksh , mksh , bash i zsh .

Funkcjonalność oryginalnego KornShell, ksh88 , została wykorzystana jako podstawa dla standardu POSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992.)

Niektórzy dostawcy nadal dostarczają własne wersje starszego wariantu ksh88 , czasem z rozszerzeniami. ksh93 jest utrzymywany na GitHub .

Jako „Desktop KornShell” ( dtksh ), ksh93 jest dystrybuowany jako część Common Desktop Environment . Ta wersja zapewnia również mapowania na poziomie powłoki dla Motif . Miał być konkurentem dla Tcl / Tk .

Oryginalny KornShell, ksh88 , stał się domyślną powłoką w systemie AIX w wersji 4, przy czym ksh93 był dostępny osobno.

UnixWare 7 zawiera zarówno ksh88, jak i ksh93 . Domyślną powłoką Korn jest ksh93 , która jest dostarczana jako /usr/bin/ksh , a starsza wersja jest dostępna jako /usr/bin/ksh88 . UnixWare zawiera również dtksh , gdy CDE jest zainstalowane.

dystrybucję ksh93 po tym, jak autorzy opuścili AT&T około 2012 roku w stabilnej wersji ksh93u+ . Pierwsi autorzy kontynuowali pracę nad ksh93v- beta do około 2014 roku. Praca ta została ostatecznie podjęta głównie przez firmę Red Hat w 2017 roku (ze względu na prośby klientów) i ostatecznie doprowadziła do pierwszego wydania ksh2020 jesienią 2019 r. Ta pierwsza wersja (chociaż naprawiła kilka wcześniejszych problemów ze stabilnością) wprowadziła kilka drobnych problemów z awariami i kompatybilnością. W marcu 2020 r. AT&T zdecydowało się wycofać zmiany społeczności, ukryć je w oddziale i ponownie uruchomić z ksh93u + , ponieważ zmiany były zbyt ogólne i zbyt skoncentrowane na ksh, aby firma mogła je wchłonąć w projekt w trybie konserwacji. Prace nad poprawkami błędów są kontynuowane w ksh93u+m w oparciu o ostatnią stabilną wersję AT&T ( ksh93u+ 2012-08-01). ksh2020 został wydany jako „główne wydanie z kilku powodów”, takich jak usunięcie EBCDIC , porzucona obsługa wtyczek binarnych napisanych dla ksh93u + i usunięcie niektórych zepsutych funkcji matematycznych, została wydana przez AT&T, ale nigdy nie była przez nią utrzymywana ani obsługiwana (nawet w początkowej dacie wydania).

Podstawowy wkład w główną gałąź oprogramowania

Na potrzeby poniższych list główna gałąź oprogramowania KSH jest zdefiniowana jako oryginalny program, datowany na okres od lipca 1983 r. Do wydania KSH2020 pod koniec 2019 r. Ciągły rozwój kolejnych wersji (gałęzi) KSH ma podzielone na różne grupy począwszy od 2020 r. i nie zostały omówione poniżej.

Pierwsi indywidualni współtwórcy

Poniższe są wymienione w mniej więcej rosnącej kolejności chronologicznej ich składek:

  • David G. Korn (AT&T Bell Laboratories, AT&T Laboratories i Google; oraz twórca)
  • Glenn S. Fowler (Laboratoria AT&T Bell, Laboratoria AT&T)
  • Kiem-Phong Vo (Laboratoria AT&T Bell, Laboratoria AT&T)
  • Adam Edgar (AT&T Bell Laboratories)
  • Michael T. Veach (AT&T Bell Laboratories)
  • Patrick D. Sullivan (AT&T Bell Laboratories)
  • Matthijs N. Melchior (AT&T Network Systems International)
  • Karsten-Fleischer (inżynieria oprogramowania Omnium)
  • Boyera-Moore'a
  • Siteshwar Vashisht (czerwony kapelusz)
  • Kurtis Raider

Konsultant integracyjny

  • Rolanda Moguncji

Główni współtwórcy korporacyjni

Poniższe są wymienione w mniej więcej rosnącej kolejności chronologicznej ich składek:

Podarowane zasoby korporacyjne

Oprócz głównych głównych korporacji wnoszących wkład (wymienionych powyżej), niektóre firmy wniosły bezpłatne środki na rozwój KSH. Są one wymienione poniżej (kolejność alfabetyczna):

Warianty

Istnieje kilka rozwidleń i klonów KornShell:

  • dtksh – rozwidlenie ksh93 zawarte jako część CDE .
  • tksh – rozwidlenie ksh93 , które zapewnia dostęp do zestawu narzędzi widżetów Tk .
  • oksh - port wariantu KornShell OpenBSD , mający na celu maksymalną przenośność między systemami operacyjnymi. Był używany jako domyślna powłoka w DeLi Linux 7.2.
  • loksh linuksowy port wariantu KornShell z OpenBSD , z minimalnymi zmianami.
  • mksh darmowa implementacja języka KornShell, rozwidlona z OpenBSD pdksh . Został pierwotnie opracowany dla MirOS BSD i jest licencjonowany na warunkach zezwalających (choć nie należących do domeny publicznej); w szczególności Licencja MirOS . Oprócz użycia w BSD, ten wariant zastąpił pdksh w Debianie i jest domyślną powłoką w systemie Android.
  • SKsh - wariant AmigaOS , który zapewnia kilka funkcji specyficznych dla Amigi, takich jak interoperacyjność ARexx . Zgodnie z tą tradycją MorphOS używa pdksh w swoim SDK.
  • MKS Inc. - zastrzeżona implementacja języka KornShell z Microsoft Windows Services for UNIX (SFU) do wersji 2.0; według Davida Korna powłoka MKS Korn nie była w pełni kompatybilna z KornShell w 1998 roku. W wersji SFU 3.0 Microsoft zastąpił powłokę MKS Korn nową powłoką zgodną z POSIX.2 jako część Interix .
  • KornShell jest zawarty w UWIN , pakiecie kompatybilności z Unixem autorstwa Davida Korna.
  • /bin/sh w Doug Gwyn's (US Army BRL) System V w pakiecie BSD zawierał wersję SVR2 /bin/sh Rona Natalie, która miała zarówno kontrolę zadań, jak i edycję wiersza poleceń. [ potrzebne źródło ] To było współczesne oryginalnemu ksh w czasie, gdy nie umknęło AT&T. [ potrzebne źródło ] To był następnie /bin/sh, który był dostarczany ze wszystkimi systemami pochodzącymi z CMU Mach. [ potrzebne źródło ]

Zobacz też

Dalsza lektura

Linki zewnętrzne