Die Bash (Bourne Again Shell) ist die Standard-Shell vieler Unix- und Linux-Systeme. Sie ist gleichzeitig interaktive Kommandozeile und Skriptsprache — und damit das vielleicht wichtigste Werkzeug für Administratoren, Entwickler und alle, die mit Servern, Build-Pipelines oder Automatisierung arbeiten.
Bash ist Nachfolgerin der Bourne Shell (sh) aus den 1970ern, mit der sie weitgehend kompatibel ist. Sie ergänzt diese um zahlreiche Komfort-Funktionen — Arrays, assoziative Arrays, Brace Expansion, erweiterte Bedingungen und vieles mehr.
Zwei Welten
Bash wird auf zwei Wegen genutzt, die ineinander übergehen:
- Interaktiv — als Kommandozeile, in der einzelne Befehle eingegeben und sofort ausgeführt werden. Hier zählen Komfort-Features wie Tab-Completion, History, Aliase und Prompt-Anpassungen.
- Als Skript — in Dateien (üblicherweise mit
#!/usr/bin/env bashals Shebang), die Abläufe automatisieren: Backups, Deployment, Datenmigration, CI/CD-Schritte.
In beiden Fällen besteht der Code aus dem Aufrufen von Programmen und der Verkettung ihrer Ein- und Ausgaben über Pipes (|), Umleitungen (>, >>, <) und Substitutionen ($(…)).
Stärken und Grenzen
Bash glänzt bei genau einer Aufgabenklasse: andere Programme orchestrieren. Dateien suchen, transformieren, kopieren, Binärprogramme aufrufen und ihre Ausgaben weiterverarbeiten — dafür ist sie gemacht. Sobald komplexere Logik, robuste Fehlerbehandlung oder strukturierte Daten im Spiel sind, stoßen Skripte schnell an Grenzen. Die übliche Empfehlung lautet: Bash bis ~100 Zeilen, danach besser Python, Go oder eine andere Sprache.
Disziplin im Skript
Robuste Bash-Skripte beginnen mit ein paar Konventionen: set -euo pipefail für sofortigen Abbruch bei Fehlern, doppelte Anführungszeichen um Variablen, Vermeidung von eval, und eine kritische Haltung gegenüber Eingaben. Werkzeuge wie ShellCheck finden zuverlässig die häufigsten Fallen — gepflegte Skripte sind ohne ShellCheck-Lauf eine seltene Ausnahme.
Alternativen
Neben Bash sind in der Praxis verbreitet: Zsh (mit Erweiterungen wie Oh My Zsh) als komfortablere interaktive Shell, Fish mit modernem Design, POSIX sh als kleinster gemeinsamer Nenner für portable Skripte. Für Skript-Logik jenseits des Trivialen sind außerdem Python, Perl oder Go häufig die bessere Wahl.