Historia

Pochodzenie nazwy

Nazwa Bash jest skrótem od “Bourne-Again Shell” i nawiązuje do nazwiska autora oryginalnej powłoki uniksowej Sh, Steva Bourne'a. Nazwę Bash można odczytywać jako “Ponownie narodzony SH” (Bourne brzmi bardzo podobnie jak born), co jednoznacznie wskazuje pochodzenie nazwy Bash.

Autorzy

Powłoka Bourne'a Sh została stworzona około roku 1977 przez Briana Foxa, pracownika Free Software Foundation. Projekt najsilniej był rozwijany w drugiej połowie lat osiemdziesiatych. W roku 1990 jej głównym opiekunem został Chet Ramey.

Popularność

Bash jest najpopularniejszą powłoką znajduje się on niemal w każdej dystrybucji systemu GNU/Linux oraz w systemie Mac OS X w wersji 10.4 Tiger. Istnieją także wersje dla większości systemów Unixowych (np *BSD). Bash jest także domyślną powłoką w środowisku Cygwin dla systemów Win32.

Licencja

Program jest rozprowadzany na licencji GPL. W Sieci jest rzecz jasna dostępny na serwerze Free Software Foundation i jego mirrorach.

Podobieństwa do …

Jak już powiedziano, Bash jest powłoką opartą o Sh, więc obie posiadają bardzo wiele wspólnych cech (ale nie są to te same powłoki), orócz nich zawiera również szereg niezwykle pożytecznych rozszerzeń zapożyczonych z powłoki Korna (ksh), autorstwa Davida Korna i powłoki C (Csh), autorstwa Billego Joy'a. Free Software Foundation zaprojektowało Basha w taki sposób, by był zgodny ze specyfikacją “IEEE POSIX Shell and Utilities”, opracowywaną przez Grupę Roboczą 1003.2+IEEE.

Sh

Większość funkcji Bash dziedziczy po powłoce Bourne'a - Sh. Bash tak samo obsługuje przekierowania strumieni we/wy, czy rozszerzanie zmiennych i parametrów (ang. expansion). Posiada wszystkie funkcje sterujące i warunkowe takie jak for, while, czy if i pozostałe występujące w Sh. Gramatyka Basha jest pełną implementacją gramatyki Sh włącznie z funkcjami powłoki function. Standardowe zmienne określające zachowanie powłoki, takie jak PS1, IFS czy PATH również istnieją w Bashu. W Bashu można znaleźć szereg funkcji będących rozszerzeniem możliwości Sh, które w Sh nie występują. Przykładem może być polecenie wbudowane command czy rozbudowane polecenie test. W Bashu zaimplementowano nowe polecenie $(…) będące odpowiednikiem konstrukcji `…`. Poza tym są również możliwości definiowania lokalnych zmiennych w funkcjach powłoki, wyłączania, włączania i podstawiania nowych wersji poleceń wbudowanych.

Ksh

Bash ma również zmienne RANDOM i REPLY. Pierwsza z nich zwraca liczbę pseudo losową gdy się wyświetli jej wartość, lub inicjalizuje generator gdy się jej przypisze nową wartość. Zmienna REPLY jest domyślną zmienną przechowującą wartość zwracaną przez polecenie read. Wbudowane polecenie typeset pozwala na nadawanie atrybutów zmiennym powłoki. Przykładowo można nadawać atrybut „tylko do odczytu” (readonly). Z powłoki Korna został także przejęty mechanizm operacji arytmetycznych (ang. arithmetic evaluation). Zmienne powłoki mogą być używane jako operandy operatorów arytmetycznych, oraz przechowywać wyniki operacji. Zaimplementowano prawie wszystkie operatory arytmetyczne występujące w języku ANSI C, wraz z kolejnością wykonywania działań. Innym rozszerzeniem wziętym z ksh jest rozbudowany mechanizm aliasów. Pozwalają one nadawać poleceniom nowe nazwy, np. alias del=rm, co spowoduje, że polecenie del bedzie tożsame z wykonaniem polecenia rm. W aliasach można także zdefiniować domyślne parametry wywołania komendy, np. alias ls="/bin/ls -lF".

Csh

Powłoka C jest źródłem mechanizmu historii linii poleceń powłoki dostępnego przez polecenie: ! polecenie. Z tej powłoki przeniesiono również mechanizm rozszerzania zawartości nawiasów klamrowych (ang. brace expansion), mechanizm podstawiania katalogu domowego użytkowników przy pomocy tyldy ($HOME), a także polecenia pushd, popd i dirs

Przykład użycia brace expansion jest pokazany poniżej:

$ mkdir /tmp/new-{alfa,beta,gamma}-dir
$ ls /tmp
new-alfa-dir
new-beta-dir
new-gamma-dir
$ echo ba-{b,c,d}-sh
ba-b-sh ba-c-sh ba-d-sh

Jak korzystać z Basha?

Jeśli uzywamy systemu z rodziny Linux to Bash najprawdopodobniej już nie tylko jest zainstalowany, ale z niego już korzystamy, więc warto nauczyć się wykorzystywać jego pełny potencjał. Dzięki temu korzystanie z systemu będzie przyjemniejsze i bardziej produktywne. Dlaczego jednak uczyć się programowania w bashu? To proste - już myślimy w kategoriach wykonywania komend, kopiowania plików, tworzenia strumieni i przekierowań. Warto jest uczyć się języka, który umożliwia wykorzystanie znanych nam już potężnych i pozwalających na oszczędzenie czasu narzędzi. Bash wysokopoziomowym pośrednikiem pomiędzy nami i komputerem.

Dokumentacja

Dokumentacja nie jest mocną stroną tego języka programowania, niestety w systemie nie ma dobrego przewodnika do nauki Basha. Istnieje strona podręcznika systemowego, ale nie jest ona zbyt przyjazna dla osób nie mających wcześniej z Bashem kontaktu - dla osób nie znających powłoki jest ona niemal bezużyteczna.

Podsumowanie

Warto wspomnieć, że choć Bash był zaprojektowany z myślą o uniksopodobnym systemie GNU, to w tej chwili pracuje, podobnie jak całe oprogramowanie GNU, na praktycznie każdej platformie uniksowej, Linuksie a nawet w środowiskach DOS, Windows i OS/2.

Dodatkowe informacje

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License