Vorlesunggskript 03

Die Unix-Programmierumgebung

Die Kommandozeile hat ihre Ursprünge in der Zeit, als ein einziger Computer mehrere Schränke füllen konnte, aber noch nicht einmal Bildschirme hatte. Man benutzte Hardcopy-Terminals, um sie zu bedienen. Das waren schreibmaschinenähnliche Geräte. Man gab ein Kommando über die Tastatur ein, und der Output wurde auf Papier ausgedruckt. Später kamen dann Bildschirmterminals auf, bei denen der Drucker durch einen Bildschirm ersetzt wurde.

Big old computer with printing terminals
Computer mit Hardcopy-Terminals. By Peter Hamer - Ken Thompson (sitting) and Dennis Ritchie at PDP-11 Uploaded by Magnus Manske, CC BY-SA 2.0, Link
Video terminal
Bildschirmterminal. By Jason Scott - Flickr: IMG_9976, CC BY 2.0, Link

In der Zeit der Terminals wurde das Betriebssystem UNIX erfunden und mit ihm viele Technologien und Ideen, die noch heute weit verbreitet sind. Dazu zählen zum Beispiel die Programmiersprache C und ein bestimmtes Kommandozeilen-Bedienkonzept. Dazu zählt auch die Unix-Philosophie, nach der Programme (vor allem Kommandozeilenprogramme) so geschrieben werden sollten, dass sie minimalistisch sind, sich auf eine simple Aufgabe konzentrieren und sich gut mit anderen Programmen kombinieren lassen, um komplexere Aufgabe zu lösen. Zum „Lieferumfang“ von UNIX gehörten eine Reihe von Standardprogrammen, die dieser Philosophie folgen und vielfältig einsetzbar sind – zum Beispiel das Programm wc, das wir in Vorlesungsskript 02 schon kurz gesehen haben. Alles zusammen bildet die „Unix-Programmierumgebung“, die z.B. in Kernighan und Pike (1984) beschrieben wird.

Heutige Computer haben keine Terminals mehr, und das ursprüngliche UNIX-Betriebssystem ist kaum noch verbreitet. Die Unix-Programmierumgebung aber ist überall – auf jedem heute verbreiteten Betriebssystem kann man sie benutzen. Dazu braucht man zunächst einen Terminal-Emulator. Das ist ein Programm, das innerhalb der grafischen Oberfläche eines modernen Betriebssystems ein Fenster öffnet, das ein Video-Terminal simuliert und so die schlichte, textbasierte Kommunikation zwischen Benutzer und Betriebssystem ermöglicht.

Terminal emulator
Ein Terminal-Emulator läuft als Programm auf einem grafischen Betriebssystem.

Des weiteren braucht man die oben erwähnten Standardprogramme (auch davon gibt es für alle gängigen Betriebssysteme moderne Versionen) und schließlich eine Möglichkeit, neue Programme zu installieren, wenn man sie braucht. Und fertig ist die Unix-Programmierumgebung.

Viele heutige Betriebssysteme wurden von Anfang an so konzipiert, dass sie dem ursprünglichen UNIX ähneln. Hier gibt es zwei große Gruppen: die BSD-basierten Systeme (z.B. FreeBSD, NetBSD, OpenBSD, aber auch macOS) und die GNU/Linux-basierten Systeme (z.B. Ubuntu, openSUSE, Fedora). All diese Systeme haben eine vorinstallierte Unix-Programmierumgebung, ja, sie ist sogar zentraler Bestandteil dieser Systeme. Windows hat keine vorinstallierte Unix-Programmierumgebung, aber man kann eine installieren. Bis vor Kurzem war der übliche Weg, entweder das Softwarepaket Cygwin zu installieren oder eine virtuelle Maschine, in der z.B. ein GNU/Linux-basiertes System läuft. Unter Windows 10 gibt es jetzt einen einfacheren Weg, nämlich offiziell unterstützte Unix-Programmierumgebungen, die man als Apps über den Windows Store installieren kann. Sie basieren auf Ubuntu, openSUSE und Fedora und heißen auch so.

Einmal installiert sind sich alle Unix-Arbeitsumgebungen in ihrer Funktionsweise und den zur Verfügung stehenden Programmen sehr ähnlich. Die größten Unterschiede liegen darin, wie man zusätzliche Programme installiert, hier hat noch jede Umgebung ihr eigenes System. In diesem Kurs werden wir uns hauptsächlich auf das Betriebssystem Ubuntu 16.04 stützen.

Lektüre zur Vertiefung