KornShell - KornShell

KornShell
OpenBSD ksh Interaction.png
Interaktion mit der Standard-Shell von OpenBSD , pdksh
Originalautor(en) David Korn
Erstveröffentlichung 1983 ; Vor 38 Jahren ( 1983 )
Endgültige Veröffentlichung
93u+ / 1. August 2012 ; Vor 9 Jahren ( 2012-08-01 )
Vorschauversion
93v- / 24. Dezember 2014 ; vor 6 Jahren ( 2014-12-24 )
Repository github .com /att /ast
Geschrieben in C
Betriebssystem Unix und Unix-ähnlich (zB Linux und macOS ; funktioniert auch unter Windows 10 )
Verfügbar in Englisch
Typ Unix-Shell
Lizenz
Webseite www .kornshell .org
ksh2020
Entwickler Kurtis Rader, Siteshwar Vashisht, Gemeinde
Endgültige Veröffentlichung
2020 / 10. Oktober 2019 ; vor 2 Jahren ( 2019-10-10 )
Repository github .com /ksh2020 /ksh
Vorgänger 93v-
ksh93u+m
Entwickler Martijn Dekker, Gemeinde
Repository github .com /ksh93 /ksh
Vorgänger 93u+

KornShell ( ksh) ist eine Unix-Shell, die Anfang der 1980er Jahre von David Korn in den Bell Labs entwickelt und am 14. Juli 1983 bei USENIX angekündigt wurde. Die anfängliche Entwicklung basierte auf dem Quellcode der Bourne-Shell . Andere frühe Mitwirkende waren die Bell Labs-Entwickler Mike Veach und Pat Sullivan, die den Code der Emacs- bzw. vi- Stil-Linienbearbeitungsmodi geschrieben haben. KornShell ist abwärtskompatibel mit der Bourne-Shell und enthält viele Funktionen der C-Shell , inspiriert von den Anforderungen von Bell Labs-Benutzern.

KornShell, dh ksh2020 , eine "Hauptversion aus mehreren Gründen" (z. B. Entfernung der EBCDIC- Unterstützung, eingestellte Unterstützung für binäre Plugins, die für ksh93u+ geschrieben wurden und Entfernung einiger defekter mathematischer Funktionen), wurde von AT&T veröffentlicht, wird aber nicht gewartet oder unterstützt ( von AT&T; war noch nicht einmal am Erscheinungsdatum).

Merkmale

KornShell entspricht POSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992.) Zu den Hauptunterschieden zwischen KornShell und der traditionellen Bourne-Shell gehören:

  • Jobsteuerung , Befehlsaliasing und Befehlshistorie wurden nach den entsprechenden C-Shell- Funktionen entwickelt; Die Jobkontrolle wurde 1989 der Bourne Shell hinzugefügt
  • eine Auswahl von drei Befehlszeilenbearbeitungsstilen basierend auf vi , Emacs und Gosling Emacs
  • assoziative Arrays und integrierte arithmetische Gleitkommaoperationen (nur in der ksh93- Version von KornShell verfügbar )
  • dynamische Suche nach Funktionen
  • mathematische Funktionen
  • Prozesssubstitution und Prozessumleitung
  • C-sprachliche Ausdrücke
  • verstärkte Expression orientiert für und während Schlaufen
  • dynamische Erweiterbarkeit von (dynamisch geladenen) eingebauten Befehlen (seit ksh93 )
  • Referenzvariablen
  • hierarchisch verschachtelte Variablen
  • Variablen können mit ihnen verknüpfte Elementfunktionen haben
  • objektorientierte Programmierung (seit ksh93t )
    • Variablen können Objekte mit Member-(Unter-)Variablen und Member-Methoden sein
    • Objektmethoden werden mit dem Namen der Objektvariablen gefolgt (nach einem Punkt) vom Methodennamen aufgerufen
    • spezielle Objektmethoden werden aufgerufen: Objektinitialisierung oder -zuweisung, Objektabbruch ( unset )
    • Zusammensetzung und Aggregation ist verfügbar, sowie eine Form der Vererbung

Geschichte

KornShell war ursprünglich proprietäre Software . Im Jahr 2000 wurde der Quellcode unter einer speziellen Lizenz von AT&T veröffentlicht, aber seit der Veröffentlichung von ksh93q Anfang 2005 steht er unter der Eclipse Public License . KornShell ist als Teil der Open Source Software Collection von AT&T Software Technology (AST) verfügbar. Da KornShell zunächst nur über eine proprietäre Lizenz von AT&T erhältlich war, wurden eine Reihe von kostenlosen und Open-Source-Alternativen geschaffen. Dazu gehören pdksh , mksh , bash und zsh .

Die Funktionalität der ursprünglichen KornShell, ksh88 , wurde als Basis für den Standard POSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992.) verwendet.

Einige Anbieter liefern noch ihre eigenen Versionen der älteren ksh88- Variante aus, manchmal mit Erweiterungen. ksh93 wird auf GitHub gepflegt .

Als "Desktop KornShell" ( dtksh ) wird ksh93 als Teil der Common Desktop Environment vertrieben . Diese Version bietet auch Mappings auf Shell-Ebene für Motif- Widgets. Es war als Konkurrent zu Tcl / Tk gedacht .

Die ursprüngliche KornShell, ksh88 , wurde in Version 4 zur Standard-Shell unter AIX , wobei ksh93 separat erhältlich ist.

UnixWare 7 enthält sowohl ksh88 als auch ksh93 . Die Standard-Korn-Shell ist ksh93 , die als /usr/bin/ksh bereitgestellt wird , und die ältere Version ist als /usr/bin/ksh88 verfügbar . UnixWare enthält auch dtksh, wenn CDE installiert ist.

Die ksh93- Distribution erfuhr ein weniger stabiles Schicksal, nachdem die Autoren AT&T um 2012 mit der stabilen Version ksh93u+ verlassen hatten . Die Hauptautoren arbeiteten bis etwa 2014 an einem ksh93v- beta-Zweig. Diese Arbeit wurde schließlich 2017 hauptsächlich von Red Hat (aufgrund von Kundenanfragen) aufgenommen und führte schließlich zur ersten Veröffentlichung von ksh2020 im Herbst 2019. Release (obwohl mehrere frühere Stabilitätsprobleme behoben wurden) führte zu einigen kleineren Fehlern und Kompatibilitätsproblemen. Im März 2020 beschloss AT&T, die Community-Änderungen rückgängig zu machen, sie in einem Zweig zu verstauen und von ksh93u+ neu zu starten , da die Änderungen zu umfassend und zu ksh-fokussiert waren, als dass das Unternehmen sie in ein Projekt im Wartungsmodus aufnehmen könnten . Die Entwicklung von Bugfixes wird im ksh93u+m- Zweig fortgesetzt , basierend auf der letzten stabilen AT&T-Version ( ksh93u+ 2012-08-01).

Primärbeiträge zum Hauptzweig Software

Für die Zwecke der folgenden Listen ist der Hauptsoftwarezweig von KSH definiert als das ursprüngliche Programm vom Juli 1983 bis zur Veröffentlichung von KSH2020 Ende 2019. Weiterentwicklung der Nachfolgeversionen (Zweige) von KSH haben sich ab 2020 in verschiedene Gruppen aufgeteilt und werden im Folgenden nicht näher erläutert.

Primäre einzelne Mitwirkende

In grob aufsteigender chronologischer Reihenfolge ihrer Beiträge sind aufgeführt:

  • David G. Korn (AT&T Bell Laboratories, AT&T Laboratories und Google; und Schöpfer)
  • Glenn S. Fowler (AT&T Bell Laboratories, AT&T Laboratories)
  • Kiem-Phong Vo (AT&T Bell Laboratories, AT&T Laboratories)
  • 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 (Omnium Software Engineering)
  • Boyer-Moore
  • Siteshwar Vashisht (Roter Hut)
  • Kurtis Raider

Integrationsberater

  • Roland Mainz

Hauptbeitragszahler des Unternehmens

In grob aufsteigender chronologischer Reihenfolge ihrer Beiträge sind aufgeführt:

Gespendete Unternehmensressourcen

Neben den wichtigsten großen Unternehmen (siehe oben) haben einige Unternehmen kostenlose Ressourcen zur Entwicklung von KSH beigetragen. Diese sind nachfolgend aufgelistet (alphabetisch geordnet):

Varianten

Es gibt mehrere Forks und Klone von KornShell:

  • dtksh  – eine Abzweigung von ksh93, die als Teil von CDE enthalten ist .
  • tksh  – ein Fork von ksh93 , der Zugriff auf das Tk- Widget-Toolkit bietet .
  • oksh  - eine Portierung von OpenBSD ‚s - Variante von Kornshell, sollte für alle Betriebssysteme maximal tragbar sein. Es wurde als Standard-Shell in DeLi Linux 7.2 verwendet.
  • loksh  - ein Linux - Port von OpenBSD ‚s - Variante von Kornshell, mit minimalen Änderungen.
  • mksh  – eine freie Implementierung der KornShell-Sprache, abgezweigt von OpenBSD pdksh . Es wurde ursprünglich entwickelt für MirOS BSD und wird unter Lizenz permissiven (wenn auch nicht public domain) angegeben; insbesondere die MirOS-Lizenz . Zusätzlich zur Verwendung auf BSD hat diese Variante pdksh auf Debian ersetzt und ist die Standard-Shell auf Android.
  • SKsh  – eine AmigaOS- Variante, die mehrere Amiga-spezifische Funktionen wie ARexx- Interoperabilität bietet . In dieser Tradition MorphOS Anwendungen pdksh in seinem SDK.
  • MKS Korn-Shell von MKS Inc. – eine proprietäre Implementierung der KornShell-Sprache von Microsoft Windows Services für UNIX (SFU) bis Version 2.0; Laut David Korn war die MKS-Korn-Shell 1998 nicht vollständig kompatibel mit der KornShell. In der SFU-Version 3.0 ersetzte Microsoft die MKS-Korn-Shell durch eine neue POSIX.2-kompatible Shell als Teil von Interix .
  • KornShell ist in UWIN enthalten , einem Unix-Kompatibilitätspaket von David Korn.

Siehe auch

Verweise

Weiterlesen

Externe Links