Nach fast drei Jahren Entwicklung wurde die neue Version des GNU-Befehlsinterpreter Bash 5.3 veröffentlicht, die standardmäßig in den meisten Linux-Distributionen verwendet wird. Gleichzeitig wurde die Version 8.3 der readline-Bibliothek veröffentlicht, die in Bash für die Bearbeitung der Befehlszeile verwendet wird.
Zu den wichtigsten Verbesserungen gehören:
- Neue Formen der Befehlsersetzung «${ command; }» und «${|command;}» wurden implementiert, die es ermöglichen, die Ausgabe eines Befehls zu erfassen, ohne einen separaten Kindprozess zu starten und ohne unbenannte Pipes zu verwenden. Die Ergebnisse der Befehlsausführung werden entweder als Ergebnis der Ersetzung zurückgegeben oder in die Variable REPLY geschrieben.
- Eine neue Variable GLOBSORT wurde hinzugefügt, die bestimmt, wie beim Ergänzen von Dateipfaden sortiert wird. Beispielsweise kann die Sortierung nach Namen (GLOBSORT=name), Größe (GLOBSORT=size) oder Änderungszeit (GLOBSORT=mtime) gewählt werden, und es kann eine aufsteigende (von klein nach groß) oder absteigende (von groß nach klein) Sortierreihenfolge festgelegt werden (zum Beispiel zeigt «GLOBSORT=-size» die größten Dateien zuerst an).
- Der eingebauten Kommando «compgen» wurde die Option «-V varname» hinzugefügt, um die generierten Ergänzungen in einer Variable zu speichern, anstatt sie in den Standardausgabestrom auszugeben.
- Der eingebauten Kommando «read» wurde die Option «-E» hinzugefügt, die beim Eingeben von Daten die readline-Bibliothek mit Auto-Vervollständigungsregeln für bash verwendet.
- Der eingebauten Kommando «source» wurde die Option «-p PATH» hinzugefügt, die es ermöglicht, die Suchliste in Dateipfaden zu überschreiben (der angegebene Wert wird anstelle der Variable $PATH verwendet).
- Der Quellcode wurde auf die Verwendung des Standards C23 umgestellt. Die Möglichkeit zur Kompilierung im Modus „K&R C“ (Stil, der der Beschreibung der Programmiersprache C im Buch „The C Programming Language“ von Kernighan und Ritchie entspricht) wurde eingestellt.
- Im eingebauten Befehl «umask» wurde die volle Kompatibilität mit den POSIX-Spezifikationen sichergestellt.
- Ein ladbares Kommando «kv» wurde hinzugefügt, das ein assoziatives Array auf Basis eines Datensatzes im Format „Schlüssel Wert“ erstellt.
- Ein ladbares Kommando «strptime» wurde hinzugefügt, das die textuelle Darstellung von Datum und Uhrzeit in die epochale Zeit (Anzahl der Sekunden seit dem 1. Januar 1970) umwandelt.
- Ein ladbares Kommando «fltexpr» wurde hinzugefügt, das es ermöglicht, arithmetische Operationen mit Fließkommazahlen ähnlich wie beim Befehl let durchzuführen.
- Eine dynamisch gesetzte Variable BASH_MONOSECONDS wurde hinzugefügt, die den aktuellen Wert der systemeigenen monotonen Uhren enthält, die kontinuierlich zunehmen, selbst wenn die Zeit zurückgestellt wird.
- Im POSIX-Modus erfolgt der Vergleich von Zeichenfolgen in dem Befehl „test“ mit den Operatoren „“ nun unter Berücksichtigung der aktuellen Locale.
- Im Befehl „bind -x“ ist das Trennen von Tasten und dem aufgerufenen Befehl durch ein Leerzeichen erlaubt, sofern die Sequenz in Anführungszeichen eingeschlossen ist.
- In der neuen Version von Readline wird die Option „search-ignore-case“ für die durchsuchung der Historie ohne Berücksichtigung der Groß- und Kleinschreibung angeboten. Der Befehl „export-completions“ wurde hinzugefügt, um Wortvervollständigungsoptionen für die Verarbeitung in anderen Prozessen zu exportieren. Außerdem wurde der Befehl „execute-named-command“ hinzugefügt, um einen Befehl auszuführen, dessen Name aus dem Standard-Eingabestrom gelesen wird.
Quelle: opennet.ru
