Bourne shell - Bourne shell

Bourne shell
Versiunea 7 UNIX SIMH PDP11 Kernels Shell.png
Interacțiunea Bourne shell pe versiunea 7 Unix
Autori originali Stephen Bourne
Dezvoltatori Laboratoarele telefonice Bell
Eliberarea inițială 1979 ; Acum 42 de ani ( 1979 )
Sistem de operare Unix
Tip Unix shell
Licență [ în discuție ]

Bourne shell ( sh) este un shell interpret de linie de comandă pentru calculator sisteme de operare .

The Bourne shell a fost implicit shell pentru versiunea 7 Unix . Unix- sisteme continua să aibă /bin/sh-care va fi Bourne shell, sau o legătură simbolică sau link - ul de greu la un compatibil shell chiar și atunci când alte învelișuri sunt folosite de majoritatea utilizatorilor.

Dezvoltat de Stephen Bourne la Bell Labs , a fost un înlocuitor pentru shell-ul Thompson , al cărui fișier executabil avea același nume - sh. A fost lansat în 1979 în versiunea Unix, versiunea 7, distribuită colegiilor și universităților. Deși este folosit ca interpret interactiv de comandă, a fost conceput și ca limbaj de scriptare și conține majoritatea caracteristicilor care sunt considerate în mod obișnuit pentru a produce programe structurate.

A câștigat popularitate odată cu publicarea The Unix Programming Environment de Brian Kernighan și Rob Pike - prima carte publicată comercial care a prezentat shell-ul ca un limbaj de programare sub formă de tutorial.

Istorie

Versiunea 7 Unix : pagina originală a manualului shell Bourne . Simulare PDP-11 cu SIMH

Origini

Lucrările la shell-ul Bourne au început inițial în 1976. Apărând pentru prima dată în versiunea 7 Unix , shell-ul Bourne a înlocuit shell-ul Mashey .

Unele dintre obiectivele principale ale shell-ului au fost:

Caracteristicile versiunii originale

Caracteristicile versiunii 7 shell UNIX Bourne includ:

  • Scripturile pot fi invocate ca comenzi folosind numele lor de fișier
  • Poate fi utilizat interactiv sau neinteractiv
  • Permite executarea sincronă și asincronă a comenzilor
  • Suportă redirecționarea și conductele de intrare și ieșire
  • Oferă un set de comenzi încorporate
  • Oferă structuri de control al fluxului, facilități de ofertare și funcții.
  • Variabile tipice
  • Oferă variabile locale și globale
  • Scripturile nu necesită compilare înainte de executare
  • Nu are o facilitate de accesare, deci poate fi necesară restructurarea codului
  • Substituirea de comenzi folosind backquotes : `command`.
  • Aici se documentează folosind <<pentru a încorpora un bloc de text de intrare într-un script.
  • for ~ do ~ donebucle, în special utilizarea de $*a bucla peste argumente, precum și for ~ in ~ do ~ donebucle pentru iterarea peste liste.
  • case ~ in ~ esacmecanism de selecție, destinat în primul rând să ajute la analiza argumentelor .
  • sh a oferit suport pentru variabilele de mediu folosind parametri de cuvinte cheie și variabile exportabile.
  • Conține prevederi puternice pentru controlul intrărilor și ieșirilor și în facilitățile sale de potrivire a expresiei .

Shell-ul Bourne a fost, de asemenea, primul care a prezentat convenția utilizării descriptorului de fișiere 2> pentru mesajele de eroare , permițând un control programatic mult mai mare în timpul scriptării, păstrând mesajele de eroare separate de date.

Stilul de codare al lui Stephen Bourne a fost influențat de experiența sa cu compilatorul ALGOL 68C la care lucrase la Universitatea Cambridge . În plus față de stilul în care programul a fost scris, Bourne reutilizat porțiuni ale ALGOL 68 „s , și " (folosind în loc de ) clauze în comun Unix sintaxa Bourne shell Mai mult, -. Deși shell v7 este scris în C - Bourne a profitat de câteva macrocomenzi pentru a da codului sursă C o aromă ALGOL 68. Aceste macrocomenzi (împreună cu comanda deget distribuită în versiunea Unix 4.2BSD ) au inspirat Concursul internațional de cod C ofuscat (IOCCC). if ~ then ~ elif ~ then ~ else ~ ficase ~ in ~ esacfor/while ~ do ~ oddoneod

Caracteristici introduse după 1979

De-a lungul anilor, shell-ul Bourne a fost îmbunătățit la AT&T. Diferitele variante sunt astfel numite ca versiunea respectivă AT&T Unix cu care a fost lansată (unele variante importante fiind Version7, SystemIII, SVR2, SVR3, SVR4). Deoarece shell-ul nu a fost niciodată versionat, singurul mod de a-l identifica a fost testarea caracteristicilor sale.

Caracteristicile versiunilor shell Bourne din 1979 includ:

  • testComandă încorporată - System III shell (1981)
  • # ca personaj de comentariu - System III shell (1981)
  • Colon în înlocuiri de parametri „$ {parametru: = cuvânt}” - System III shell (1981)
  • continue cu argument - System III shell (1981)
  • cat <<-EOF pentru documente indentate aici - System III shell (1981)
  • Funcții și returnîncorporat - SVR2 shell (1984)
  • Built-in-uri unset, echo, type- SVR2 coajă (1984)
  • Cod sursă de-ALGOL68-ized - SVR2 shell (1984)
  • Modern " $@" - SVR3 shell (1986)
  • Incorporat getopts- SVR3 shell (1986)
  • Gestionarea parametrilor curățați permite funcții apelabile recursiv - SVR3 shell (1986)
  • 8-bit curat - SVR3 shell (1986)
  • Controlul postului - SVR4 shell (1989)
  • Suport multi-octet - SVR4 shell (1989)

Variante

Coajă DMERT

Duplex Multi-Environment Real-Time ( DMERT ) este un sistem de operare hibrid de partajare a timpului / în timp real dezvoltat în anii 1970 la locația Bell Labs Indian Hill din Naperville, Illinois utilizează un instantaneu din 1978 al Bourne Shell "VERSION sys137 DATA 1978 Oct 12 22:39:57 ". Carcasa DMERT rulează pe computere 3B21D încă utilizate în industria telecomunicațiilor.

Coajă Korn

Interacțiune cu pdksh în OpenBSD (shell implicit)

Korn shell (KSH) , scris de David Korn bazat pe original codul sursă Bourne Shell, a fost un drum de mijloc între Bourne shell și coajă C . Sintaxa sa a fost extrasă în principal din shell-ul Bourne, în timp ce caracteristicile sale de control al posturilor s- au asemănat cu cele ale shell-ului C. Funcționalitatea Korn Shell originală (cunoscută sub numele de ksh88 din anul introducerii sale) a fost utilizată ca bază pentru standardul shell POSIX . O versiune mai nouă, ksh93, este open source din 2000 și este utilizată pe unele distribuții Linux . O clonă de ksh88 cunoscută sub numele de pdksh este shell-ul implicit în OpenBSD.

Schily Bourne Shell

Schily-Tools a lui Jörg Schilling include trei instrumente derivate Bourne Shell.

Relația cu alte scoici

C coajă

Bill Joy , autorul shell-ului C , a criticat shell-ul Bourne ca fiind neprietenos pentru utilizarea interactivă, sarcină pentru care Stephen Bourne însuși a recunoscut superioritatea lui C shell. Bourne a declarat, totuși, că shell-ul său era superior pentru scripting și că era disponibil pe orice sistem Unix, iar Tom Christiansen a criticat și shell-ul C că nu este potrivit pentru scripting și programare.

Cochilii Almquist

Din cauza problemelor legate de drepturile de autor legate de Bourne Shell, așa cum a fost folosit în versiunile istorice CSRG BSD, Kenneth Almquist a dezvoltat o clonă a Bourne Shell, cunoscută de unii ca shell Almquist și disponibilă sub licența BSD , care este utilizată astăzi pe unele BSD descendenți și în situații cu memorie slabă. Almquist Shell a fost portat pe Linux, iar portul a redenumit shell-ul Debian Almquist sau liniuță. Acest shell oferă executarea mai rapidă a scripturilor standard sh(și POSIX-standard sh, în descendenții moderni) cu o amprentă de memorie mai mică decât omologul său, Bash. Utilizarea sa tinde să expună bashisme - presupuneri bash-centric făcute în scripturi menite să ruleze pe sh.

Alte scoici

Utilizare

Shell-ul Bourne a fost odată standard pe toate sistemele Unix de marcă , deși sistemele bazate pe BSD din punct de vedere istoric aveau multe scripturi scrise în csh . Ca bază a sintaxei POSIX sh , scripturile shell Bourne pot fi de obicei rulate cu Bash sau dash pe Linux sau alte sisteme similare Unix .

Vezi si

Referințe

linkuri externe