Muszla Bourne'a - Bourne shell

Muszla Bourne'a
Wersja 7 Jądra UNIX SIMH PDP11 Shell.png
Interakcja powłoki Bourne'a w wersji 7 Unix
Pierwotny autor (autorzy) Stephen Bourne
Deweloper(zy) Laboratoria telefoniczne Bell
Pierwsze wydanie 1979 ; 42 lata temu ( 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

Wersja 7 Unix : oryginalna strona podręcznika powłoki Bourne'a . Symulacja PDP-11 z SIMH

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:

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 ~ donepętle, w szczególności użycie $*to loop over argumentów, a także for ~ in ~ do ~ donepętle do iteracji po listach.
  • case ~ in ~ esacmechanizm 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 ~ ficase ~ in ~ esacfor/while ~ do ~ oddoneod

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 testdowó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 returnwbudowane – 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

Interakcja z pdksh w OpenBSD (domyślna powłoka)

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

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