# Kommandozeileninterpreter

Ein Kommandozeileninterpreter, englisch command-line interpreter (CLI) oder command-line shell, sowie kurz Kommandozeile, aber auch Kommandointerpreter und Befehlsinterpreter genannt, ist ein Programm, das Benutzereingaben von einer Kommandozeile einliest und als Anweisung ausführt. Die Anweisung wird interpretiert ausgeführt, und gegebenenfalls wird ihr Ergebnis dem Benutzer angezeigt.
Während Kommandozeilen bei vielen Programmen integriert sein können, ist bei Kommandozeileninterpretern die Kommandozeile die Hauptfunktion, um den integrierten Interpreter zu nutzen. Beispiele sind die Konsole oder Terminal, eine Shell oder eine Terminalemulation.

## Geschichte

In seiner ursprünglichen Form macht ein Kommandozeileninterpreter dem Endanwender betriebssystemeigene Funktionen durch eine zeilenorientierte Syntax auf einer Systemkonsole zugänglich. Nach der Entwicklung der ersten Röhrenbildschirme wurden auch die Befehlsinterpreter entsprechend angepasst. Der Cursor wurde erfunden. Es kamen immer komplexere Kommandozeilenparameter und Befehle hinzu, bis hin zu einfachen Elementen aus Programmiersprachen, wie z. B. Schleifen oder Variablen.

### Multics und Unix

Technisch gesehen sind Unix-Shells, die von der Multics-Shell inspiriert waren, ebenfalls Kommandozeileninterpreter, werden jedoch fast ausschließlich mit „Shell“ bezeichnet. In vielen Bereichen gelten daher Shell und Kommandozeileninterpreter als Synonyme.

### CP/M

Das in den 1970er Jahren auf PCs dominierende Betriebssystem CP/M war in drei Ebenen, genannt Schalen, aufgeteilt: Die erste Schale beinhaltete alle hardwarenahen Funktionen, die vom Kernel in der zweiten Schale auf einer Vielzahl unterschiedlicher Computer für die Grundfunktionen des Betriebssystems verwendet wurden. Der Kommandozeileninterpreter war die dritte Schale und wurde CCP genannt, für englisch Console Command Processor.

### DOS/Windows
#### DOS Eingabeaufforderung

Die Entwicklung des ersten Befehlsinterpreters in den DOS-Reihen begann mit der Entwicklung von 86-DOS, das sich CP/M als Vorbild nahm. Der Befehlsinterpreter von 86-DOS wurde auf der Befehlsebene command.com genannt und später in MS-DOS und danach in die Windows-9x-Reihe übernommen sowie dafür weiterentwickelt. Die Hauptentwicklung der command.com fand in den 80er- und 90er-Jahren statt.

#### Windows NT Eingabeaufforderung

Mit der Einführung der Windows NT-Reihe folgte die cmd.exe, in deren Entwicklung die vorangegangene Entwicklung der command.com einfloss und die diese bis zum gegenwärtigen Windows 10 emuliert. Eine bedeutende Weiterentwicklung der cmd.exe wurde nicht vollzogen, weil bei der Entwicklung vorrangig auf die Kompatibilität mit dem ehemaligen MS-DOS geachtet wurde.

#### PowerShell

Windows NT bot lange keinen den Unix-Shells ebenbürtigen Kommandozeileninterpreter. Dies machte viele administrative Aufgaben unnötig kompliziert. Das Konzept, dem cmd.exe folgt, war dem der modernen Unix-Shells weit unterlegen. Deshalb wurde im Jahr 2006 die erste Version der PowerShell veröffentlicht, welche sich in vielen Eigenschaften an bekannten Unix-Shells wie Bash oder zsh orientiert. Im Gegensatz zu den Unix-Shells folgt die PowerShell dem Paradigma der objektorientierten Programmierung und basiert auf dem .Net-Framework. Die Abwärtskompatibilität mit MS-DOS spielte dabei eine untergeordnete Rolle.

## Aufgaben

Der Befehlsinterpreter kapselt das Betriebssystem gegenüber dem Benutzer ab und wird daher auch als Benutzeroberfläche oder auch als Shell (englisch für Schale) bezeichnet.
Für erfahrene Benutzer haben Befehlsinterpreter den Vorteil der schnellen und unmittelbaren Kontrolle sowie der leichten Erreichbarkeit aller Funktionen, nachdem die Syntax, die Befehle und ihre Kommandozeilenparameter einmal erlernt wurden. Zudem lassen sich häufig wiederkehrende Befehlsfolgen durch Stapelverarbeitung, Batchdateien, Makros oder Skripte automatisieren, was bei einer grafischen Oberfläche grundsätzlich nur sehr schwer zu verwirklichen ist.

## Beispiele

Im Folgenden wird Software genannt, welche einen Kommandozeileninterpreter (CLI) implementiert. Die Liste ist unvollständig, da sie nur einige Beispiele aufzeigen soll.
* Betriebssystem-Shells
** 4DOS für PC-kompatibles DOS, 4OS2 für OS/2 und 4NT für Windows NT
** CL von OS/400
** CCP von CP/M
** CLI/Amiga Shell von AmigaOS
** cmd.exe von OS/2, der Windows-NT-Linie und Windows CE
** COMMAND.COM von OS/2, einigen PC-kompatiblen DOS wie MS-DOS, PC DOS, DR-DOS, sowie der Windows-9x-Linie
** Commodore DOS Wedge für den Commodore 64
** DCL von VMS/OpenVMS
** DDT von ITS
** FreeCOM von FreeDOS
** iSeries QSHELL von OS/400
** JCL von OS/360 und z/OS
** PowerShell für Windows (ab Windows XP)
** rc Shell von Plan 9
** SDF von BS2000
** TSO von MVS und z/OS
** Unix-Shells nach dem Vorbild der Bourne-Shell; bekannte Unix-Shells sind u. a. Bash (Bourne-Again-Shell), Kornshell, C-Shell und Z shell
* Programmiersprachen mit interaktiven Shells
** BASIC, wie z. B. GW-BASIC
** Lisp
** Perl
** Python, auch mit IPython
** Ruby, auch mit Interactive Ruby Shell
* Programme mit Kommandozeile
** AutoCAD CLI
** Emacs

## Belege und Anmerkungen

* ↑ Befehlsinterpreter – Wissen-digital.de (abgerufen am 14. Juli 2019); auch mit „Kommandointerpreter“