Open Source im professionellen Einsatz

Features und Kompatibilität

Die neue Ausgabe der Linux-Standardshell wartet mit einer Reihe nützlicher Helfer für Programmierer und Kommandozeilenfans auf. Trotz kleiner Inkompatibilitäten macht der Bash-Maintainer Mut zum Upgrade (siehe Kasten "Interview mit Bash-4-Entwickler Chet Ramey"). Schlank und rank ist die Bash in der neuen Version aber nicht gerade: Das Binary misst jetzt 730 KByte gegenüber 590 KByte in der Vorversion. Sie ist auch messbar - aber kaum fühlbar - langsamer, doch das spielt in der Praxis auf aktuellen Rechnern kaum eine Rolle.

Wer schon jetzt die neuen Funktionen nutzen will, sollte die Kontrolle über seine Zielumgebung haben, um nicht gleich die ganze Bash-Umgebung austauschen zu müssen. In eigenen Skripten sollte er zur Sicherheit zumindest die Umgebungsvariablen »BASH_VERSION« oder »BASH_VERSINFO« abfragen und es mit einer sauberen Fehlermeldung enden lassen, falls die Voraussetzungen für die Bash 4 nicht gegeben sind. (mg)

Interview mit Bash-4-Entwickler
Chet Ramey

Chet Ramey ist ein leitender Mitarbeiter des Campus-Netzwerks an der Case Western Reserve University in Cleveland, Ohio. Seit 1990 ist er der Maintainer der Bash.

Linux-Magazin:Die Version 3.2 der Bash gilt als stabil, wieso also nun Version 4?

ChetRamey:Mich freut, dass viele so von der Bash 3.2 denken. Ich veröffentliche nicht häufig Versionen, weil viele Distributionen davon abhängen. Aber es war an der Zeit, einige neue Features und Bugfixes herauszugeben.

Linux-Magazin:Welche Features gefallen Dir am besten in der neuen Version?

ChetRamey:Wir konnten endlich ein fehlendes Puzzlestück zur Posix-Compliance liefern: Es ist nun nicht mehr nötig, gleich viele öffnende und schließende Klammern in einer »$(...)«-Substitution zu haben. Gerade bei Case-Statements ist das nicht der Fall. Das war nicht einfach mit dem Yacc hinzubekommen.

Wer mit »bind -x« eine Tastensequenz an eine Shellfunktion bindet, hat nun Zugriff auf den aktuellen Readline-Buffer und die Cursorposition darin. So kann etwa ein externes Programm die aktuelle Kommandozeile umstellen. Das ist noch nicht sehr bekannt, aber ich sehe da viele Möglichkeiten.

Nicht zuletzt sind natürlich noch die assoziativen Arrays zu nennen.

Linux-Magazin:Sie sind Teil einer Reihe von neuen Programmierfunktionen von Bash 4. Will die Shell damit zu Skriptsprachen wie Perl oder Python aufschließen?

ChetRamey:Die beiden haben einen reicheren Schatz an eingebauten Funktionen. Shells hingegen sollten externe Anwendungen bequem zusammenfügen. Trotzdem lassen sich so komplexe Programme schreiben, der Bash-Debugger ist ein Beispiel dafür.

Linux-Magazin:Neu ist eine Reihe von Hilfen für Nutzer der Kommandozeile. Kann die Bash da mit Spezialshells wie der Zsh mithalten?

ChetRamey:Das denke ich schon. Wir haben nicht ganz so viele eingebaute Funktionen wie die Zsh, aber es gibt genügend Tools, um die Bash zu einer ebenso umfassenden Arbeitsumgebung zu machen.

Linux-Magazin:Viele Admins diskutieren darüber, welche Shell-Eigenschaften portable Skripte nutzen sollten. Einige nutzen ausgiebig Bash-Eigenheiten, andere plädieren für klassische Bourne Shell.

ChetRamey:Es gibt nicht wirklich eine Bourne-Shell-Kompatibilität, denn es gibt sie als Version aus Unix v7, SVR2, SVR3, SVR4, SVR4.2 und dazu Mischformen verschiedener Hersteller. Wer wirklich an portablen Skripten interessiert ist, sollte sich an den Posix-Standard halten.

Linux-Magazin:Wie adressiert die Bash 4 Kompatibilitätsfragen? Empfiehlst Du ein unmittelbares Upgrade oder einen Parallelbetrieb beider Versionen?

ChetRamey:Bash 4 ist so abwärtskompatibel wie nur möglich, aber an einigen Stellen war das Verhalten von Version 3.2 einfach fehlerhaft. Da haben wir dann etwas Kompatibilität geopfert. Ansonsten gibt\'s noch die Optionen »compat31« und »compat32«, die einige alte Verhaltensweisen bewahren.

Ich halte das Maß an Kompatibilität für hoch genug, sodass Anwender direkt auf Bash 4 aufrüsten und sich dann schrittweise mit den neuen Features vertraut machen können.

Infos

[1] Bash: [http://tiswww.case.edu/php/chet/bash/bashtop.html]

[2] Zsh: [http://www.zsh.org]

[3] Bash 4 im Open Suse Build Service: [http://software.opensuse.org/search/search?baseproject=ALL&q=bash]

[4] Bash 4 im Experimental-Repository von Debian: [http://packages.debian.org/experimental/bash-builtins]

[5] Bernhard Bablok, "Parallelarbeit: Bash-Skripte, die Multicore-Prozessoren ausreizen": Linux-Magazin 02/09, S. 70

Der Autor

Bernhard Bablok betreut bei der Allianz Shared Infrastructure Services ein Datawarehouse mit technischen Performance-Messdaten von Mainframes bis zu Servern. Wenn er nicht Musik hört, mit dem Rad oder zu Fuß unterwegs ist, beschäftigt er sich mit Linux oder Objektorientierung.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook