KornShell
Oryginalni autorzy | Dawid Korn |
---|---|
Pierwsze wydanie | 1983 |
Ostateczne wydanie | 93u+ / 1 sierpnia 2012
|
Wersja podglądu | 93v- / 24 grudnia 2014
|
Magazyn | |
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 |
Deweloperzy | Kurtis Rader, Siteshwar Vashisht, społeczność |
---|---|
Ostateczne wydanie | 2020 / 10 października 2019
|
Magazyn | |
Poprzednik | 93v- |
Licencja | Licencja publiczna Eclipse |
Deweloperzy | Martijn Dekker, Johnothan King, hieny |
---|---|
Wersja stabilna | 1.0.4 / 21 października 2022
|
Magazyn | |
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
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:
- Laboratoria AT&T Bell
- Międzynarodowe systemy sieciowe AT&T
- Laboratoria AT&T (obecnie AT&T Labs)
- Inżynieria oprogramowania Omnium
- Korporacja Oracle
- czerwony kapelusz
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
- Morris I. Bolsky; David G. Korn (1995). Nowy język poleceń i programowania KornShell . Prentice Hall PTR. ISBN 978-0-13-182700-4 .
- David G. Korn, Charles J. Northrup i Jeffery Korn The New KornShell — ksh93 , Linux Journal , wydanie 27, lipiec 1996
Linki zewnętrzne
- Strona podręcznika ksh93 w Wayback Machine (archiwum 5 czerwca 2013 r.)
- Strona podręcznika ksh88 w Wayback Machine (archiwum 5 listopada 2015 r.)
- Public Domain Korn shell (pdksh) w Wayback Machine (archiwum 21 października 2016)
- MirBSD Korn Shell (mksh)
- Podręcznik poleceń ogólnych systemu MirOS BSD i386 -