Article de reference

Coquille de maïs

KornShell ( ksh ) est un shell Unix qui a été développé par David Korn aux Bell Labs au début des années 1980 et annoncé à USENIX le 14 juillet 1983. Le développement initial ét...

KornShell ( ksh) est un shell Unix qui a été développé par David Korn aux Bell Labs au début des années 1980 et annoncé à USENIX le 14 juillet 1983. Le développement initial était basé sur le code source du shell Bourne . Les autres premiers contributeurs étaient les développeurs des Bell Labs Mike Veach et Pat Sullivan, qui ont écrit le code des modes d'édition de ligne de style Emacs et vi , respectivement. KornShell est rétrocompatible avec le shell Bourne et inclut de nombreuses fonctionnalités du shell C , inspirées par les demandes des utilisateurs des Bell Labs.

Caractéristiques

KornShell est conforme à POSIX.2 , Shell et utilitaires, interpréteur de commandes (norme IEEE 1003.2-1992). Les principales différences entre KornShell et le shell Bourne traditionnel incluent :

  • contrôle des tâches , alias de commandes et historique des commandes conçus d'après les fonctionnalités correspondantes du shell C ; le contrôle des tâches a été ajouté au Bourne Shell en 1989
  • un choix de trois styles d'édition de ligne de commande basés sur vi , Emacs et Gosling Emacs
  • tableaux associatifs et opérations arithmétiques à virgule flottante intégrées (disponibles uniquement dans la version ksh93 de KornShell)
  • recherche dynamique de fonctions
  • fonctions mathématiques
  • substitution et redirection de processus
  • Expressions de type langage C
  • boucles for et while orientées expression améliorées
  • extensibilité dynamique des commandes intégrées (chargées dynamiquement) (depuis ksh93 )
  • variables de référence
  • variables hiérarchiquement imbriquées
  • les variables peuvent avoir des fonctions membres qui leur sont associées
  • programmation orientée objet (depuis ksh93t )
    • les variables peuvent être des objets avec des (sous-)variables membres et des méthodes membres
    • les méthodes d'objet sont appelées avec le nom de la variable d'objet suivi (après un point) du nom de la méthode
    • des méthodes d'objet spéciales sont appelées lors de : l'initialisation ou l'affectation d'un objet, l'abandon d'un objet ( unset )
    • la composition et l'agrégation sont disponibles, ainsi qu'une forme d'héritage

Histoire

Korn Shell exécuté sur les services Windows pour UNIX

KornShell était à l'origine un logiciel propriétaire . En 2000, le code source a été publié sous une licence propre à AT&T, mais depuis la sortie de ksh93q début 2005, il est sous licence Eclipse Public License . KornShell est disponible dans le cadre de la collection de logiciels open source AT&T Software Technology (AST). Comme KornShell n'était initialement disponible que sous une licence propriétaire d'AT&T, un certain nombre d'alternatives libres et open source ont été créées. Il s'agit notamment de pdksh , mksh , Bash et Z shell .

La fonctionnalité du KornShell original, ksh88 , a été utilisée comme base pour la norme POSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992).

Certains fournisseurs proposent toujours leurs propres versions de l'ancienne variante ksh88 , parfois avec des extensions. ksh93 est maintenu sur GitHub .

En tant que « Desktop KornShell » ( dtksh ), ksh93 est distribué dans le cadre de l' environnement de bureau commun . Cette version fournit également des mappages au niveau du shell pour les widgets Motif . Elle a été conçue comme un concurrent de Tcl / Tk .

Le KornShell original, ksh88 , est devenu le shell par défaut sur AIX dans la version 4, avec ksh93 disponible séparément.

UnixWare 7 inclut à la fois ksh88 et ksh93 . Le shell Korn par défaut est ksh93 , qui est fourni sous le nom /usr/bin/ksh , et l'ancienne version est disponible sous le nom /usr/bin/ksh88 . UnixWare inclut également dtksh lorsque CDE est installé.

La distribution ksh93 a connu un sort moins stable après que les auteurs ont quitté AT&T vers 2012 à la version stable ksh93u+ . Les auteurs principaux ont continué à travailler sur une branche bêta ksh93v- jusqu'en 2014 environ. Ce travail a finalement été repris principalement par Red Hat en 2017 (en raison des demandes des clients) et a abouti à la version initiale de ksh2020 à l'automne 2019. Cette version initiale (bien que corrigeant plusieurs problèmes de stabilité antérieurs) a introduit quelques problèmes mineurs de rupture et de compatibilité. En mars 2020, AT&T a décidé d'annuler les modifications de la communauté, de les stocker dans une branche et de redémarrer à partir de ksh93u+ , car les modifications étaient trop larges et trop axées sur ksh pour que l'entreprise les absorbe dans un projet en mode maintenance. Le développement des correctifs de bugs continue sur la branche ksh93u+m , sur la base de la dernière version stable d'AT&T ( ksh93u+ 2012-08-01). ksh2020 a été publié en tant que « version majeure pour plusieurs raisons » telles que la suppression du support EBCDIC , l'abandon du support des plugins binaires écrits pour ksh93u+ et la suppression de certaines fonctions mathématiques cassées, mais n'a jamais été maintenu ou pris en charge par AT&T (pas même à sa date de sortie initiale).

Principales contributions à la branche principale du logiciel

Aux fins des listes ci-dessous, la branche logicielle principale de KSH est définie comme le programme original, datant de juillet 1983, jusqu'à la sortie de KSH2020 fin 2019. Le développement continu des versions suivantes (branches) de KSH s'est divisé en différents groupes à partir de 2020 et n'est pas développé ci-dessous.

Principaux contributeurs individuels

Les éléments suivants sont énumérés dans un ordre chronologique approximativement croissant de leurs contributions :

  • David G. Korn (AT&T Bell Laboratories, AT&T Laboratories et Google ; et créateur)
  • Glenn S. Fowler (Laboratoires AT&T Bell, Laboratoires AT&T)
  • Kiem-Phong Vo (laboratoires AT&T Bell, laboratoires AT&T)
  • Adam Edgar (laboratoires AT&T Bell)
  • Michael T. Veach (laboratoires AT&T Bell)
  • Patrick D. Sullivan (laboratoires AT&T Bell)
  • Matthijs N. Melchior (AT&T Network Systems International)
  • Karsten-Fleischer (Génie logiciel Omnium)
  • Boyer-Moore
  • Siteshwar Vashisht (Chapeau rouge)
  • Kurtis Raider

Consultante en intégration

  • Roland Mayence

Principaux contributeurs corporatifs

Les éléments suivants sont énumérés dans un ordre chronologique approximativement croissant de leurs contributions :

Dons de ressources d'entreprise

Outre les principales entreprises contributrices (énumérées ci-dessus), certaines entreprises ont contribué gratuitement au développement de KSH. Celles-ci sont énumérées ci-dessous (par ordre alphabétique) :

Variantes

Il existe plusieurs forks et clones de KornShell :

  • dtksh – un fork de ksh93 inclus dans le cadre de CDE .
  • tksh – un fork de ksh93 qui donne accès à la boîte à outils du widget Tk .
  • oksh – un portage de la variante de KornShell d' OpenBSD , destiné à être le plus portable possible sur plusieurs systèmes d'exploitation. Il a été utilisé comme shell par défaut dans DeLi Linux 7.2.
  • loksh – un portage Linux de la variante de KornShell d' OpenBSD , avec des modifications minimes.
  • mksh – une implémentation libre du langage KornShell, dérivée de pdksh d'OpenBSD . Il a été développé à l'origine pour MirOS BSD et est sous licence selon des termes permissifs (mais pas du domaine public) ; plus précisément, la licence MirOS . En plus de son utilisation sur BSD, cette variante a remplacé pdksh sur Debian, et est le shell par défaut sur Android.
  • SKsh – une variante d'AmigaOS qui fournit plusieurs fonctionnalités spécifiques à Amiga, telles que l'interopérabilité ARexx . Dans cette tradition, MorphOS utilise pdksh dans son SDK.
  • Le shell MKS Korn de MKS Inc. est une implémentation propriétaire du langage KornShell de Microsoft Windows Services for UNIX (SFU) jusqu'à la version 2.0 ; selon David Korn, le shell MKS Korn n'était pas entièrement compatible avec KornShell en 1998. Dans la version 3.0 de SFU, Microsoft a remplacé le shell MKS Korn par un nouveau shell compatible POSIX.2 dans le cadre d' Interix .
  • KornShell est inclus dans UWIN , un package de compatibilité Unix de David Korn.
  • /bin/sh dans le package System V sur BSD de Doug Gwyn (US Army BRL) incluait la version de Ron Natalie du /bin/sh SVR2 qui possédait à la fois le contrôle des tâches et l'édition de la ligne de commande. Il s'agissait d'un contemporain du ksh original à une époque où il n'avait pas échappé à AT&T. Il s'agissait ensuite du /bin/sh fourni avec tous les systèmes dérivés de CMU Mach.

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index