Powłóczysta ekspansja powłoki Bash 5.0
Witaj dumny użytkownikowi powłoki Bash. Tak, to o Pani i Panu mówię. Nawet jeśli nie wiecie co to jest powłoka, a tym bardziej Bash. Ale w waszym Linuksie połowa rzeczy dzieje się właśnie dzięki temu „wynalazkowi”, który doczekał się wydania oznaczonego numerem 5.0.
Bourne-Again Shell jako rozwinięcie powłoki sh sprawdził się wręcz wybitnie. Co więcej, zapożyczenia z Korna i csh wzmogły tylko jego kreatywny potencjał. Nie potrafić sklecić choćby prostego skryptu w Bashu w dzisiejszych czasach to jak nie znać funkcji bramek logicznych w latach 80.
Wydanie Bash 5.0 to kolejny krok milowy w historii tej powłoki. Wersja oprócz poprawek wnosi bowiem kilka kluczowych rozwiązań. Dla niektórych osób programowanie w Bashu nie będzie już tym samym. Lista zmian to niemal artystyczny monolog z mrugnięciami w kierunku użytkowników. Ciężko nawet jednoznacznie napisać, co takiego się zmieniło. To tak, jakby po 10 latach zorientować się, że z mizernej sadzonki przed oknami naszego domu wyrosło piękne, sięgające niebios drzewo.
Na pierwszy plan wybijają się jednak nowe zmienne środowiskowe. BASH_ARGV0, EPOCHSECONDS oraz EPOCHREALTIME. Pojawiła się możliwość usuwania zakresu z history, samo history przyjmuje też parametry ujemne (co oznacza – od końca listy). Odpowiednia opcja umożliwia dziedziczenie przez zmienne lokalne wartości wcześniejszej zmiennej o tej samej nazwie. Kolejna opcja reguluje kwestie tablic asocjacyjnych i ich indeksu (przydatne gdy są używane w obliczeniach arytmetycznych). Opcja globasciiranges jest włączona domyślnie. Ciekawostką pozostaje też domyślnie wyłączona, nieudokumentowana opcja pozwalająca na wysyłanie historii poczynań w terminalu do sysloga.
Nowe wydanie wprowadza jednak też niewielkie niekompatybilności z poprzednim Bashem 4.4. Chodzi tutaj głównie o ustalanie zmiennych nameref. Zmienne BASH_ARGC oraz BASH_ARGV są ustawiane tylko w trybie debuggingu – wcześniej powodowały problemy z wydajnością kiedy skrypty przekazywały sobie duże ilości zmienny i argumentów. Bash 5.0 dogaduje się poprawnie tylko z bibliotekami Readline w wersji 8.0.
Na nową wersję powłoki zaczekamy zapewne do następnego wydania naszej ulubionej dystrybucji. Obecnie fani mogą ją testować po samodzielnej kompilacji.
Ciekaw jestem, czy doczekamy kiedykolwiek w bashu wsparcia dla standardu folderów XDG, innymi słowy: czy doczekamy momentu, gdy twórcy basha przestaną twierdzić, że XDG jest tylko dla Linuksa i tylko dla GUI.
Ciekaw jestem, czy doczekamy kiedykolwiek w bashu wsparcia dla standardu folderów XDG, innymi słowy: czy doczekamy momentu, gdy twórcy basha przestaną twierdzić, że XDG jest tylko dla Linuksa i tylko dla GUI.