Muszla Bourne'a - Bourne shell
Pierwotny autor (autorzy) | Stephen Bourne |
---|---|
Deweloper(zy) | Laboratoria telefoniczne Bell |
Pierwsze wydanie | 1979 |
System operacyjny | Uniksa |
Rodzaj | Powłoka uniksowa |
Licencja | [ w trakcie dyskusji ] |
Bourne powłoki ( sh
) to powłoka Wiersz poleceń do komputerowego systemu operacyjnego .
Powłoka Bourne'a była domyślną powłoką dla wersji 7 Unix . Systemy uniksowe nadal mają /bin/sh
— co będzie powłoką Bourne'a, łączem symbolicznym lub łączem twardym do kompatybilnej powłoki — nawet jeśli większość użytkowników korzysta z innych powłok.
Opracowany przez Stephena Bourne'a w Bell Labs , był zamiennikiem powłoki Thompsona , której plik wykonywalny miał taką samą nazwę — sh
. Został wydany w 1979 roku w wersji 7 Unix, rozprowadzanej na uczelnie i uniwersytety. Chociaż jest używany jako interaktywny interpreter poleceń, został również pomyślany jako język skryptowy i zawiera większość funkcji powszechnie uważanych za tworzenie programów strukturalnych.
Popularność zyskała dzięki publikacji The Unix Programming Environment autorstwa Briana Kernighana i Roba Pike'a — pierwszej komercyjnie wydanej książki, która przedstawia powłokę jako język programowania w formie samouczka.
Historia
Początki
Prace nad powłoką Bourne'a rozpoczęły się początkowo w 1976 roku. Po raz pierwszy pojawiła się w wersji 7 Unix , powłoka Bourne zastąpiła powłokę Mashey .
Niektóre z głównych celów powłoki to:
- Aby umożliwić używanie skryptów powłoki jako filtrów .
- Zapewnienie programowalności, w tym przepływu sterowania i zmiennych .
- Kontrola nad wszystkimi deskryptorami plików wejściowych/wyjściowych .
- Kontrola nad obsługą sygnałów w skryptach.
- Brak ograniczeń długości łańcucha podczas interpretowania skryptów powłoki.
- Racjonalizuj i uogólniaj mechanizm cytowania ciągów.
- Mechanizm środowisko . Umożliwiło to ustanowienie kontekstu przy starcie i umożliwiło skryptom powłoki przekazywanie kontekstu do skryptów podrzędnych ( procesów ) bez konieczności używania jawnych parametrów pozycyjnych .
Cechy oryginalnej wersji
Cechy powłoki Bourne w wersji 7 UNIX obejmują:
- Skrypty można wywoływać jako polecenia, używając ich nazw plików
- Może być używany interaktywnie lub nieinteraktywnie
- Umożliwia zarówno synchroniczne, jak i asynchroniczne wykonywanie poleceń
- Obsługuje przekierowania wejścia i wyjścia oraz potoki
- Zapewnia zestaw wbudowanych poleceń
- Zapewnia konstrukcje kontroli przepływu, możliwości wyceny i funkcje.
- Zmienne bez typu
- Zapewnia lokalny i globalny zakres zmiennych
- Skrypty nie wymagają kompilacji przed wykonaniem
- Nie ma funkcji goto, więc może być konieczna restrukturyzacja kodu
-
Podstawianie poleceń za pomocą odwrotnych cudzysłowów :
`command`
. -
Tutaj dokumenty używają
<<
do osadzenia bloku tekstu wejściowego w skrypcie. -
for ~ do ~ done
pętle, w szczególności użycie$*
to loop over argumentów, a takżefor ~ in ~ do ~ done
pętle do iteracji po listach. -
case ~ in ~ esac
mechanizm selekcji, przeznaczony głównie do wspomagania parsowania argumentów . -
sh
zapewniono obsługę zmiennych środowiskowych przy użyciu parametrów słów kluczowych i zmiennych eksportowalnych. - Zawiera silne przepisy dotyczące kontrolowania danych wejściowych i wyjściowych oraz funkcji dopasowywania wyrażeń .
Powłoka Bourne'a była również pierwszą, w której zastosowano konwencję używania deskryptora plików 2>
dla komunikatów o błędach , umożliwiając znacznie większą kontrolę programową podczas pisania skryptów poprzez oddzielenie komunikatów o błędach od danych.
Na styl kodowania Stephena Bourne'a wpłynęły jego doświadczenia z kompilatorem ALGOL 68C , nad którym pracował na Uniwersytecie Cambridge . Oprócz stylu, w którym program został napisany Bourne ponownego wykorzystania części Algol 68 „a , a " (przy użyciu zamiast ) klauzul wspólnego Unix składni powłoki Bourne Ponadto, -., Chociaż powłoka V7 opisana w C - Bourne wykorzystał niektóre makra, aby nadać kodowi źródłowemu C smak ALGOL 68. Te makra (wraz z poleceniem finger dystrybuowanym w wersji Unix 4.2BSD ) zainspirowały Międzynarodowy Konkurs Obfuscated C Code Contest (IOCCC).
if ~ then ~ elif ~ then ~ else ~ fi
case ~ in ~ esac
for/while ~ do ~ od
done
od
Funkcje wprowadzone po 1979 r.
Z biegiem lat powłoka Bourne była ulepszana w AT&T. Różne warianty są zatem nazywane podobnie jak odpowiednia wersja AT&T Unix, z którą został wydany (niektóre ważne warianty to Version7, SystemIII, SVR2, SVR3, SVR4). Ponieważ powłoka nigdy nie była wersjonowana, jedynym sposobem na jej zidentyfikowanie było przetestowanie jej funkcji.
Cechy wersji powłoki Bourne'a od 1979 roku obejmują:
- Wbudowane
test
dowództwo – pocisk System III (1981) - # jako znak komentarza – powłoka Systemu III (1981)
- Dwukropek w podstawieniach parametrów „${parametr:=słowo}” – powłoka Systemu III (1981)
-
continue
z argumentem – powłoka Systemu III (1981) -
cat <<-EOF
za wcięte tutaj dokumenty – pocisk System III (1981) - Funkcje i
return
wbudowane – powłoka SVR2 (1984) - Wbudowane
unset
,echo
,type
– Powłoka SVR2 (1984) - Kod źródłowy de-ALGOL68-ized – powłoka SVR2 (1984)
- Współczesny „
$@
” – pocisk SVR3 (1986) - Wbudowany
getopts
– powłoka SVR3 (1986) - Oczyszczona obsługa parametrów pozwala na rekursywnie wywoływane funkcje – powłoka SVR3 (1986)
- 8-bitowy czysty – powłoka SVR3 (1986)
- Kontrola pracy – powłoka SVR4 (1989)
- Obsługa wielu bajtów – powłoka SVR4 (1989)
Warianty
Powłoka DMERT
Duplex Multi-Environment Real-Time ( DMERT ) to hybrydowy system operacyjny z podziałem czasu/czasu rzeczywistego opracowany w latach 70. w Bell Labs Indian Hill w Naperville, Illinois, wykorzystuje migawkę Bourne Shell z 1978 r. „WERSJA sys137 DATA 1978 12 października 22:39:57". Powłoka DMERT działa na komputerach 3B21D wciąż używanych w branży telekomunikacyjnej.
Powłoka Korna
Korn shell (ksh), napisany przez Davida Korna na podstawie oryginalnego kodu źródłowego Bourne Shell, była środkowa droga między Bourne shell i powłoki C . Jego składnia została zaczerpnięta głównie z powłoki Bourne'a, podczas gdy funkcje kontroli zadań przypominały te z powłoki C. Funkcjonalność oryginalnej powłoki Korn (znanej jako ksh88 od roku jej wprowadzenia) została wykorzystana jako podstawa standardu powłoki POSIX . Nowsza wersja, ksh93, jest open source od 2000 roku i jest używana w niektórych dystrybucjach Linuksa . Klon ksh88 znany jako pdksh jest domyślną powłoką w OpenBSD.
Muszla Schily Bourne
Schily-Tools Jörga Schillinga obejmuje trzy pochodne Bourne Shell.
Stosunek do innych muszli
Powłoka C
Bill Joy , autor powłoki C , skrytykował powłokę Bourne'a jako nieprzyjazną do użytku interaktywnego, za co sam Stephen Bourne uznał wyższość powłoki C. Bourne stwierdził jednak, że jego powłoka była lepsza do skryptów i była dostępna w każdym systemie Unix, a Tom Christiansen również skrytykował powłokę C jako nieodpowiednią do skryptów i programowania.
Muszle Almquista
Ze względu na problemy z prawami autorskimi dotyczącymi powłoki Bourne Shell, która była używana w historycznych wydaniach CSRG BSD, Kenneth Almquist opracował klon powłoki Bourne Shell, znany przez niektórych jako powłoka Almquist i dostępny na licencji BSD , który jest obecnie używany w niektórych BSD potomków oraz w sytuacjach o niskiej pamięci. Powłoka Almquist została przeniesiona do Linuksa, a nazwa portu została zmieniona na powłokę Debiana Almquist lub dash. Ta powłoka zapewnia szybsze wykonywanie standardowych sh
(i POSIX-standard sh
, we współczesnych potomkach) skryptów przy mniejszym zużyciu pamięci niż jej odpowiednik, Bash. Jego użycie ma tendencję do ujawniania bashizmów – bash-centrycznych założeń przyjętych w skryptach przeznaczonych do uruchamiania na sh.
Inne muszle
- Bash ( powłoka Bourne-Again ) został opracowany w 1989 roku dla projektu GNU i zawiera funkcje powłoki Bourne'a, csh i ksh. Ma być zgodny z POSIX.
- rc został stworzony w Bell Labs przez Toma Duffa jako zamiennik sh dla Version 10 Unix . Jest to domyślna powłoka dla Planu 9 firmy Bell Labs . Został przeniesiony do UNIX jako część Planu 9 z User Space .
- Powłoka Z , opracowana przez Paula Falstada w 1990 roku, jest rozszerzoną powłoką Bourne'a z dużą liczbą ulepszeń, w tym kilkoma funkcjami Bash , ksh i tcsh .
Stosowanie
Powłoka Bourne'a była kiedyś standardem we wszystkich markowych systemach Unix , chociaż historycznie systemy oparte na BSD miały wiele skryptów napisanych w csh . Jako podstawa składni POSIX sh
, skrypty powłoki Bourne'a mogą być zwykle uruchamiane z Bash lub dash w Linuksie lub innych systemach uniksopodobnych.
Zobacz też
Bibliografia
Linki zewnętrzne
- Poszczególni członkowie „Tradycyjnej rodziny Bourne Shell”
- „Charakterystyczne wspólne właściwości tradycyjnych muszli Bourne'a”
- Historyczny kod źródłowy C dla powłoki Bourne'a przy użyciu makr mac.h z 1979 r
- Oryginalna dokumentacja Bourne Shell z 1978 r.
- Port "dziedzicznej" powłoki Bourne'a SVR4 z OpenSolarisa do kilku innych systemów uniksopodobnych
- Migracja z powłoki System V (SVR4) do powłoki POSIX
- Samouczek Bourne Shell (składnia)
- Często zadawane pytania dotyczące różnic w powłokach
- Howard Dahdah, The A–Z of Programming Languages: Bourne shell, czyli sh – Szczegółowy wywiad ze Stevem Bourne, twórcą powłoki Bourne’a, czyli sh , Computerworld , 5 marca 2009 r.