Powłoka Bourne’a lub sh – historyczna powłoka systemu Unix.

Historia Stephen Bourne rozpoczął prace nad powłoką pod koniec 1975 roku w Bell Labs w czasie, gdy Ken Thompson przebywał na rocznym urlopie na Uniwersytecie w Berkeley. Powłoka była rozwinięciem wcześniejszego interpretera poleceń o nazwie shell. Jej pierwsze wydanie miało miejsce w 1977 roku w ramach Unix Version 7, dla którego była domyślną powłoką – zastępując wspomnianą powłokę autorstwa Kena Thompsona.

Na większości systemów Unix oraz pokrewnych oryginalna ścieżka /bin/sh wskazuje na plik wykonywalny powłoki zgodnej z nią składniowo, np. ash czy mkshObecnie oryginalny Bourne shell jest już przestarzały [patrz: Ograniczenia] i nie jest wykorzystywany..

Język sh ustanowi także początkowo nieformalny – za sprawą popularyzacji przez książkę The Unix Programming Environment Briana Kernighana i Roba Pike’a – a potem ustandaryzowany przez POSIX język skryptowy.

Składnia struktur kontrolnych została zainspirowana dialektem języka ALGOL 68, nad którym Bourne pracował na Uniwersytecie Cambridge. Wywodzą się z niego postacie if ~ then ~ elif ~ then ~ else ~ fi, case ~ in ~ esac z jedynym odstępstwem w postaci zamiany od na done, jako słowa kończącego pętle for/while.

Przykład kodu: #!/bin/sh echo Hello World! echo Dzisiaj jest: date echo "wszystko OK?: " read odp if [ "$odp" != "n" ] then echo to fajnie else echo szkoda fi

Wynikiem tego programu jest: Hello World! Dzisiaj jest: 10-10-2006 wszystko OK?: t to fajnie

Skrypt uruchamiało się podając interpreterowi jego ścieżkę: sh /tmp/przyklady/skrypt. Skrypt można uruchomić bezpośrednio, jeśli nadano mu prawa wykonywania w systemie plików i znajduje się (jak w przykładzie powyżej) jako pierwsza linia #!/bin/sh, która wywołuje ścieżkę powłoki mającej go wykonać.

Ograniczenia Jednym z ograniczeń powłoki sh jest brak możliwości operowania na liczbach całkowitych bez tworzenia nowego procesu.

Zobacz też powłoka bash powłoka C (Csh) powłoka Korna (Ksh) powłoka Z (Zsh)

Uwagi

Przypisy

Bibliografia

Kategoria:Powłoki systemowe UNIX