Po prawie trzech latach prac opublikowano nową wersję interpretera poleceń GNU Bash 5.3, używanego domyślnie w większości dystrybucji Linuxa. Jednocześnie wydano wersję biblioteki readline 8.3, wykorzystywanej w bash do organizacji edytowania wiersza poleceń.
Wśród kluczowych ulepszeń można wymienić:
- Wprowadzono nowe formy podstawienia poleceń „${ command; }” i „${|command;}”, które pozwalają przechwycić wyjście polecenia bez tworzenia osobnego procesu potomnego i bez użycia nieoznaczonych kanałów. Wyniki wykonania polecenia są zwracane jako wynik podstawienia lub zapisywane w zmiennej REPLY.
- Dodano nową zmienną GLOBSORT, określającą sposób sortowania podczas uzupełniania ścieżki pliku. Na przykład, można wybrać sortowanie według nazwy (GLOBSORT=name), rozmiaru (GLOBSORT=size) lub czasu modyfikacji (GLOBSORT=mtime), a także określić kierunek sortowania (od mniejszego do większego) lub odwrotny (od większego do mniejszego) (na przykład przy „GLOBSORT=-size” najpierw będą wyświetlane największe pliki).
- Do wbudowanego polecenia „compgen” dodano opcję „-V varname”, umożliwiającą zapisanie wygenerowanych uzupełnień w zmiennej, zamiast wyprowadzania do standardowego strumienia.
- Do wbudowanego polecenia „read” dodano opcję „-E”, która podczas wprowadzania danych wykorzystuje bibliotekę readline z zasadami autouzupełniania konstrukcji bash.
- Do wbudowanego polecenia „source” dodano opcję „-p PATH”, pozwalającą nadpisać listę wyszukiwania w ścieżkach plików (określona wartość jest używana zamiast zmiennej $PATH).
- Kod źródłowy został przeniesiony do użycia standardu C23. Zaprzestano możliwości kompilacji przez kompilatory w trybie „K&R C” (styl odpowiadający opisowi języka C w książce „The C Programming Language” Kernighana i Ritchie).
- W wbudowanym poleceniu „umask” zapewniono pełną zgodność ze specyfikacjami POSIX.
- Dodano ładowane polecenie „kv”, które tworzy tablicę asocjacyjną na podstawie zestawu danych w formacie „klucz wartość”.
- Dodano ładowane polecenie „strptime”, które przekształca tekstową reprezentację daty i czasu w czas epokowy (liczba sekund od 1 stycznia 1970 roku).
- Dodano ładowane polecenie „fltexpr”, które pozwala wykonywać operacje arytmetyczne z liczbami zmiennoprzecinkowymi na podobieństwo polecenia let.
- Dodano dynamicznie ustalaną zmienną BASH_MONOSECONDS, która zawiera bieżącą wartość systemowego monotonicznego zegara, który ciągle rośnie, nawet przy zmianach czasu na wcześniejsze wartości.
- W trybie POSIX porównanie ciągów w poleceniu „test”, używając operatorów „”, teraz odbywa się z uwzględnieniem bieżącej lokalizacji.
- W poleceniu „bind -x” dozwolone jest oddzielenie przycisku i wywoływanej komendy spacją, pod warunkiem, że sekwencja jest zamknięta w podwójnych cudzysłowach.
- W nowej wersji Readline wprowadzono opcję „search-ignore-case” do przeszukiwania historii bez uwzględnienia wielkości liter. Dodano polecenie „export-completions” do eksportowania opcji uzupełnienia słowa do przetworzenia w innych procesach. Dodano polecenie „execute-named-command” do wykonywania polecenia, którego nazwa jest pobierana z standardowego wejścia.
Źródło: opennet.ru
