Unix Shell

Unix-Shell für Entwickler

Nicht jeder Entwickler ist mit der Unix Shell »aufgewachsen«, hat ein Linux-System auf dem Rechner oder einen eigenen Server, der betreut werden muss. Viele Entwickler die ich kenne, nutzen mittlerweile einen Mac OS X Desktop. Aus meiner Sicht die richtige Wahl, das System ist sowohl grafisch als auch technisch der Windows-Welt weit überlegen. Allerdings ist sich nicht jeder über die Fülle an Möglichkeiten des darunterliegenden Unixsystems bewusst. Die Unix-Shell ist ein mächtiger Verbündeter. Der Mix aus Unix und ansprechendem grafischem Desktop ist aktuell noch einmalig. Im Rahmen einer Artikelserie wird nun die »Unix-Shell für Entwickler« vorgestellt.

Unix-Shell für Entwickler

Ich arbeite seit etwa 15 Jahren mit Unix Systemen. Angefangen mit Linux, bin ich über FreeBSD und OpenBSD bei Mac OS X gelandet, was auf einem angepassten FreeBSD basiert. Die Artikelserie startet mit diesem Artikel und behandelt Grundlagen zur Shell. In der nächsten Zeit werden weitere Artikel erscheinen, die sich mit Themen rund um die Shell befassen. Geplant sind Folgende:

  • Navigation in der Shell
  • Dateien und die Shell
  • Zugriffsrechte
  • Unix Prozesse
  • Tools

Ich bin komplett offen für weitere Vorschläge und freue mich natürlich über jegliches Feedback.

Grundlagen

Nur einige Features der Unixshell erklären, wird der Sache nicht komplett gerecht. Es handelt sich bei der Shell um viel mehr als nur eine zusätzliche Option zur Dateneingabe oder Steuerung des Computers. Sie ist ein integraler Bestandteil des Unixkonzepts. Sie ist das erste Programm, das gestartet und das Letzte, das beendet wird. Das ist bewusst etwas vereinfacht ausgedrückt, da es technisch nicht vollständig korrekt ist. Aber hier geht es ja nicht um Betriebssystem-Theorie, sondern um Tipps für Anwender.

Die Shell ist die Benutzerschnittstelle, die auf einem Unixsystem seit Beginn existiert. Die grafische Oberfläche ist ein optionales Programm, das gestartet wird. Es wurde erst viel später entwickelt. Bei Mac OS X ist zugegeben fester Bestandteil des Betriebssystems. Allerdings entwickelt Apple ein Desktop-System und kein Unix Derivat, das im Kern trotzdem existiert. Von Apple wurden lediglich Automatismen implementiert, die automatisch die grafische Oberfläche starten und die Unixvergangenheit »maskieren«.

Eine Shell unter Mac OS X

Eine Unixshell, die Bourne-Again-Shell oder »bash«, kann unter Mac OS X jederzeit über die Anwendung »Terminal« geöffnet werden. Die findet man im »Utilities« bzw. »Dienstprogramme« Verzeichnis von Mac OS X. Nach dem Start begrüßt ein Fenster ähnlich wie das folgende den Anwender:

Terminal-Screenshot

Im Verlauf dieser Artikelserie stütze ich mich auf die »bash«, da es die Standardshell von Mac OS X sowie vielen Linux-Systemen ist.

Eine Shell ist nur ein Programm

Das Terminalfenster ist nur eine Art »grafischer Wrapper«. Die Shell arbeitet auch ohne grafische Unterstützung. Das kannst Du in einem Experiment ausprobieren. Wir holen zuerst die ProzessID oder »pid« (in einem späteren Artikel mehr) der aktuellen Shell. Diese können wir aus der Variable »$$« auslesen:

Jans-iMac:~ jbrinkmann$ echo $$
 10972

Die PID ändert sich ständig und ist zum Zeitpunkt bei diesem Beispiel die »10972«. Sie wird auf Deinem System abweichen.

Anschließend wird eine Shell in der aktuellen Shell gestartet. Dazu rufen wir wie folgt das Programm »bash« auf:

Jans-iMac:~ jbrinkmann$ bash
 bash-3.2$

Hier ist zu beachten: Es gibt keinen Hinweis wie »Shell erfolgreich gestartet«. Das ist unter Unix ein Quasi-Standard. Solange kein Fehler auftritt, gibt es keine Ausgabe. Der erneute »Prompt« (die neue Eingabeaufforderung) ist das einzige Indiz für eine neue Shell. Nun prüfen wir die ProzessID der Shell, um sicher zugehen:

bash-3.2$ echo $$
 11173

Die gestarte Shell hat die PID »11173« erhalten. Wir sind also in einer anderen Shell als vorher. Eine zusätzliche Kontrolle können wir durchführen, indem wir die neue Shell mit dem Befehl »exit« beenden und noch einmal die PID der Shell kontrollieren. Wir sollten theoretisch wieder bei der PID »10972« sein:

bash-3.2$ exit
 exit
 Jans-iMac:~ jbrinkmann$ echo $$
 10972

Das sieht gut aus und verdeutlich, die Shell ist ein gewöhnliches Programm wie jedes andere auch. Es hat auf einem Unixsystem lediglich eine elementare Bedeutung.

Ausblick

Im nächsten Artikel der Serie geht es dann um die grundlegende Verwendung der Shell und der Navigation in dieser. Alle Verzeichnisse und Dateien, die über den »Finder« angesprochen werden können, sind über die Shell erreichbar. Wir zeigen, wie man sich in der Shell orientiert.