© Georg Dieter, Fotolia.com
Neue Funktionen in der Bash-Version 4
Aufpoliert
von Bernhard Bablok, Nils Magnus
Erschienen im Linux-Magazin
2009/06
Die Bash begleitet Linux seit seinen Kindertagen. Trotz ihres biblischen Alters und ihres hohen Reifegrads feilen die Entwickler immer noch an der Shell. Kürzlich veröffentlichten sie Version 4.0. Das Linux-Magazin schaut sich an, ob ein Umstieg lohnt.
Die Bash [1] ist trotz leistungsstarker Konkurrenz, etwa durch die Zsh [2], der Platzhirsch auf der Linux-Konsole. Aber nicht nur interaktiv, sondern auch als überall verfügbare Skriptsprache setzen Anwender sie gerne ein. Die Bash gehört also zum Rückgrat eines funktionierenden Linux-Systems, ein Upgrade mit seinen Vor- und Nachteilen will deshalb gut überlegt sein.
Schon durchschnittlich komplexe Programmpakete geben sich sehr sperrig, wenn es um einen Wechsel auf eine höhere Hauptversion geht. Neben dem eigentlichen Programmpaket muss der Admin oft noch ganze Sammlungen von Bibliotheken aktualisieren. Das schlanke Paket der neuen Bash hängt glücklicherweise nur von Version 6 der Readline-Bibliothek ab. Unter Open Suse ist die Installation besonders einfach, Systemverwalter ersetzen nur die vorhandenen Pakete »bash« und »bash-doc« durch die neue Version und installieren parallel zur »libreadline5« die »libreadline6«. Passende Pakete gibt es im Build Service [3]. Debian bietet ein Paket im Experimental-Zweig an [4]. Anwender anderer Distributionen warten noch etwas oder bauen sich das Paket aus den Quellen selbst.
Kompatibilität
Erster Anlaufpunkt, um die Kompatibilität zu prüfen, ist die Datei »COMPAT« im Dokumentationsverzeichnis. Sie listet acht Punkte auf, die allerdings nicht grundlegender Natur, sondern hauptsächlich der Posix-Kompatibilität geschuldet sind. Ob dies im Einzelnen zu Problemen führt, muss jeder Anwender selbst testen.
Ein weiterer wichtiger Test für die Kompatibilität ist das Init-System mit seinen vielen Start- und Stop-Skripten. Hier gibt es Probleme in Open Suses Skript »/etc/init.d/network«. Die Funktion »check_firewall()« gibt negative Werte zurück, was aus zwei Gründen unsinnig ist: Einerseits sollte der Wertebereich von Returncodes zwischen 0 und 255 liegen, andererseits wertet das Skript den genauen Wert der Rückgabe sowieso nicht aus. Ein Fehler, der also auf Seiten von Open Suse liegt.
Der Parser der Bash 3.2 nimmt das nicht so genau. Unter der Bash 4 jedoch führen die negativen Returncodes zu Fehlern. Als Folge fährt Open Suse die Firewall immer hoch, auch wenn die Systemkonfiguration anderes vorsieht. Solch ein Fehler könnte gar zu Problemen auf anderen Systemen führen, die der Admin gar nicht verändert hat.
Insofern gilt es bei produktiven Systemen, ein Upgrade wohl zu überlegen. Die großen Distributionen werden die neue Version über ihre Community-Distributionen unter die Leute bringen. Bleibt zu hoffen, dass die Anwender solche beschriebenen Fehler schnell finden und beheben.
Auf Entwicklersystemen sieht die Sache anders aus: Hier ist das Produktionsrisiko kleiner. Programmierer möchten das eine oder andere Goodie so schnell wie möglich mitnehmen, etwa die neuen Möglichkeiten der Kommandozeile. Eine Auswahl der Neuerungen zeigt Tabelle 1, eine komplette Aufzählung steht in der Datei »NEWS« der Dokumentation.
|
|
|
Änderung
|
Beschreibung
|
|
Substrings
|
Erweiterung für Positionsparameter unterstützt den Offset 0
|
|
Prozess-ID
|
Aktuelle PID der Shell steht in »BASHPID«
|
|
»autocd«
|
Erlaubt die schnelle Navigation per Eingabe von Verzeichnisnamen
|
|
»checkjobs«
|
Prüft und berichtet über aktive oder angehaltene Jobs beim Exit
|
|
»read«
|
Weist auch teilweise erhaltenen Input den Variablen zu und
behält diese Werte, auch wenn das Kommando das Timelimit überschreitet
|
|
»mapfile«
|
Vereinfacht das Verarbeiten von Dateien
|
|
»command_not_found_handle«
|
Bash 4 ruft diese Shellfunktion auf, wenn sie ein Kommando nicht findet
|
|
»globstar«
|
Sucht mit »**« rekursiv über Verzeichnissen
|
|
Brace
|
Erweiterung erzeugt Wertelisten mit führenden Nullen
|
|
Standardfehlerkanal
|
Statt »2>&1 1>Datei« erlaubt Bash 4 einfacher »&>> Datei«
|
|
Standardfehlerkanal
|
Analog ersetzt »|&« jetzt »2>&1 |«
|
|
»case«
|
Für das Ende von Alternativen erlaubt Bash 4 außer
»;;« jetzt zusätzlich »;&« und
»;;&«. Im ersten Fall werden bedingungslos auch die
Anweisungen der nächsten Gruppe verarbeitet, im zweiten Fall
erfolgt zusätzlich die Prüfung und gegebenenfalls die Verarbeitung der nächsten Case-Gruppe.
|
|
Variablen-Expansion
|
Operatoren »^« und »,« ändern die Groß- oder Kleinschreibung
|
|
Automatische Wandlung
|
»declare -u« sowie »declare -l« sorgen
dafür, bei Wertzuweisungen automatisch in Groß- oder Kleinbuchstaben umzuwandeln
|
|
Assoziative Arrays
|
Indices dürfen Strings sein: »$alter["joe"]«
|
|
»coproc«
|
Erzeugt asynchrone Prozesse
|
|
Select
|
Der Aufruf »read -t 0 -u fd« prüft, ob Filedeskriptor »fd« Daten bereitstellt
|
Auf der Kommandozeile
Wer regelmäßig die Textkonsole nutzt, wird sich über einige unscheinbare, aber umso nützlichere Erweiterungen freuen: So expandiert die Zeichenfolge »**« zu einer Liste von Dateien und den Pfaden dorthin ab dem aktuellen Arbeitsverzeichnis, also ähnlich dem externen Kommando »find«. Allerdings muss der Anwender vorher mittels »shopt -s globstar« das Feature aktivieren. Eines der größten Mysterien der Bourne Shell, nämlich die Ausgabeumleitung der Standardfehlermeldungen, lösen die Entwickler nun etwas anwenderfreundlicher: Statt des Mantra »2>&1 1>Datei« dürfen Anwender nun »&>> Datei« verwenden, um sowohl die Fehler wie die normale Ausgabe in eine Datei zu lenken. Noch praktischer ist das analoge Kürzel »|&«, das in Pipes gilt.
| Whitepaper |
|
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele
Über die letzten Jahre hinweg haben sich Open Source Lösungen als fester Bestandteil des gesamten Datenintegrationsmarktes etabliert. Viele Unternehmen haben bereits das Open Source Modell für Ihre Datenintegrationsprojekte aufgegriffen. Das vorliegende White Paper illustriert anhand ausgewählter Fallstudien und Anwendungsbeispiele die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.
Download PDF (Registrierung erforderlich)
|
|
The Role of Open Source in Data Integration
Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.
Download PDF (Registrierung erforderlich)
|
Dieser Online-Artikel kann Links enthalten, die auf nicht mehr vorhandene Seiten verweisen. Wir ändern solche "broken links"
nur in wenigen Ausnahmefällen. Der Online-Artikel soll möglichst unverändert der gedrucken Fassung entsprechen.
|