Korn shell
# Korn shell

In informatica la Korn shell è una Unix shell, ovvero un interprete di comandi interattivo che gode di un linguaggio di programmazione proprio per impartire comandi al sistema tramite script; fra le caratteristiche peculiari vi è la retrocompatibilità con la bourne shell, da cui deriva, nonché l'aver incorporato diverse funzionalità della C shell (csh). È la shell di default del sistema operativo, unix-like, OpenBSD.

## Storia

La Korn shell (ksh) è stata sviluppata presso AT&T Bell Laboratories da David Korn nel 1980; l'annuncio del suo rilascio invece è stato ufficializzato allo USENIX nel 1983.

## Caratteristiche

La Korn shell è retrocompatibile con la Bourne shell, include peraltro diverse caratteristiche della C shell, come ad esempio la storia dei comandi (history), tali proprietà furono inserite grazie al feedback di diversi utenti dei laboratori AT&T. È conforme allo standard internazionale POSIX (Portable Operating System Interface for Computer Environments) relativo ai sistemi operativi Unix, in particolare alla parte 2 inerente shell and utilities (IEEE Std 1003.2-1992), e proprio per questa caratteristica è detta anche POSIX shell.

Le features condivise sia con la C shell sia con la Bourne shell sono:

* capacità di redirezione dell'I/O;
* sostituzione di variabile;
* sostituzione di filename.

## Versioni

Diversi software sono nati poiché direttamente derivati dalla Korn shell, alcuni di essi sono i seguenti:

* dtksh (Desktop Korn Shell) è un fork della versione ksh93, è stata prodotta per consentire agli utenti di interagire al meglio con l'ambiente grafico, è peraltro parte integrante di CDE;
* Rksh è una versione ridotta di ksh, utilizzata principalmente per il settaggio del login utente;
* tksh è un fork della versione ksh93, è stata progettata per essere una libreria Tcl per ksh, quindi dalla shell si ha un accesso diretto al widget toolkit Tk:
* PD-ksh è un clone di ksh, ha diverse features della versione ksh88 ma poche della versione ksh93;
* Sksh è una versione per AmigaDos, che fornisce un ambiente unix-like.
