Ksh

Το **κέλυφος Korn** (**Korn shell**, **ksh**) είναι ένα κέλυφος του Unix που δημιουργήθηκε από τον David Korn (στα AT&T Bell Laboratories) στις αρχές της δεκαετίας του 1980. Είναι αναδρομικά συμβατό με το κέλυφος Bourne και περιλαμβάνει πολλά χαρακτηριστικά του κελύφους C, όπως η ιστορία των εντολών που έχει εισάγει ο χρήστης, λόγω των απαιτήσεων των χρηστών στα Bell Labs.

## Σχεδίαση

Το βασικό πλεονέκτημα του ksh σε σχέση με το παραδοσιακό κέλυφος του Unix είναι η χρήση του σαν γλώσσα προγραμματισμού. Κατά τη διάρκεια της ιστορίας του προστέθηκαν σταδιακά πολλά χαρακτηριστικά, κρατώντας όμως σημαντική συμβατότητα με το κέλυφος Bourne.

Η έκδοση *ksh93* υποστηρίζει πίνακες αντιστοίχισης (associative array) και ενσωματωμένη αριθμητική κινητής υποδιαστολής.

Για αλληλεπιδραστική χρήση, το ksh παρέχει τη δυνατότητα στο χρήστη να τροποποιεί τη γραμμή εντολών με πιστό τρόπο (WYSIWYG), με τα πλήκτρα "βέλος-πάνω" ή "προηγούμενη-γραμμή" μπορεί να επιστρέψει σε μια προηγούμενη εντολή και στη συνέχεια να την επεξεργαστεί σαν ο χρήστης να ήταν σε κατάσταση τροποποίησης γραμμής. Τρεις καταστάσεις είναι διαθέσιμες, συμβατές με τον vi), τον emacs και τον XEmacs.

Το ksh προσπαθεί να είναι σύμφωνο με το πρότυπο *Shell Language Standard* (POSIX 1003.2 "Shell and Utilities Language Committee").

## Ιστορία

Μέχρι το 2000, το κέλυφος Korn παρέμενε ιδιόκτητο λογισμικό της AT&T. Από τότε έχει γίνει ελεύθερο λογισμικό, αρχικά με μια ειδική άδεια κατά την AT&T και στη συνέχεια, μετά την έκδοση 93q στις αρχές του 2005, με την άδεια Common Public License. Το κέλυφος Korn είναι διαθέσιμο στη συλλογή "AT&T Software Technology (AST) Open Source Software Collection".  Επειδή το ksh αρχικά ήταν διαθέσιμο μόνο με την ιδιόκτητη άδεια της AT&T, δημιουργήθηκαν αρκετά εναλλακτικά κελύφη ελεύθερου ή ανοικτού λογισμικού. Σε αυτά περιλαμβάνεται το κοινόχρηστο (public domain) *pdksh* και ο διάδοχός του mksh που συνεχίζει να αναπτύσσεται, το bash (*Bourne-Again-Shell*) από το Free Software Foundation και το κέλυφος Z.

Αν και η έκδοση *ksh93* πρόσθεσε αρκετές βελτιώσεις, πολλές φορές η παλαιότερη έκδοση *ksh88* διανέμεται σαν `/bin/ksh`, μερικές φορές με επεκτάσεις. Σταδιακά όμως φαίνεται ότι σχεδόν όλοι οι διανομείς λειτουργικών συστημάτων Unix περιλαμβανουν πια το *ksh93*, με ελάχιστες εξαιρέσεις.

## Παραλλαγές

Υπάρχουν δύο τροποποιημένες εκδόσεις του ksh93 που προσθέτουν χαρακτηριστικά για το χειρισμό του γραφικού περιβάλλοντος του χρήστη: το *dtksh* που περιλαμβάνεται στο CDE και το *tksh* που επιτρέπει την πρόσβαση στη βιβλιοθήκη γραφικών Tk.

Το *mksh* (MirOS BSD Korn Shell) είναι μια έκδοση του ksh που αναπτύσσεται ενεργά, με την άδεια BSD. Είναι απευθείας απόγονος του */bin/ksh* του OpenBSD και διάδοχος του pdksh. Η ανάπτυξη του *mksh* εστιάζεται στη μεταφερσιμότητα του κώδικα, τις διορθώσεις ασφαλείας, την υποστήριξη UTF-8, και προσπαθεί να αποφύγει τα άχρηστα επιπλέον χαρακτηριστικά. Είναι διαθέσιμο για πολλά Unix-οειδή λειτουργικά συστήματα  και είναι το προεπιλεγμένο κέλυφος των MirBSD, FreeWRT και MidnightBSD.

Το *SKsh* είναι μια έκδοση για AmigaOS, που προσφέρει αρκετά χαρακτηριστικά σχετικά με Amiga, όπως η αλληλεπίδραση με κώδικα ARexx.

Το *MKS Korn shell* της MKS Inc. είναι άλλη μια ιδιόκτητη υλοποίηση του ksh. Ήταν μέρος του Services for Unix (SFU) της Microsoft μέχρι την έκδοση 2.0. Σύμφωνα με τον David Korn, το MKS Korn shell δεν ήταν πλήρως συμβατό με τη δική του υλοποίηση του κελύφους Korn του 1998.

Στην έκδοση 3.0 των SFU, η Microsoft αντικατέστησε το *MKS Korn shell* με ένα νέο και πλήρως συμβατό κατά POSIX κέλυφος Korn, βασιζόμενη στην νέα τεχνολογία του υποσυστήματος Interix. Υποστηρίζεται στα Windows NT 4.0 SP6a+, στα Windows 2000, στα Windows XP Professional και στα Windows Server 2003. Είναι επίσης διαθέσιμο στα Subsystem for UNIX-based Applications (SUA) των εκδόσεων Windows Vista Enterprise και Ultimate και στα Windows Server 2008.

## Αναφορές


## Εξωτερικοί σύνδεσμοι

* Korn shell home page 
* ksh93 man page  
* Public Domain Korn shell (pdksh) 
* MirBSD Korn Shell 
* mksh man page 

Κατηγορία:Γλώσσες προγραμματισμού σεναρίων
Κατηγορία:Ελεύθερο λογισμικό
Κατηγορία:Κελύφη του Unix