Bourne shell - Bourne shell
Autori originali | Stephen Bourne |
---|---|
Dezvoltatori | Laboratoarele telefonice Bell |
Eliberarea inițială | 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
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:
- Pentru a permite scripturilor shell să fie utilizate ca filtre .
- Pentru a oferi programabilitate, inclusiv fluxul de control și variabile .
- Control asupra tuturor descriptorilor de fișiere de intrare / ieșire .
- Control asupra gestionării semnalului în cadrul scripturilor.
- Nu există limite pentru lungimile șirurilor la interpretarea scripturilor shell.
- Raționalizați și generalizați mecanismul de citare a șirurilor.
- Mecanismul de mediu . Acest lucru a permis stabilirea contextului la pornire și a oferit o modalitate prin care scripturile shell pot transmite contextul către sub scripturi ( procese ) fără a fi nevoie să utilizeze parametri de poziție expliciți .
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 ~ done
bucle, în special utilizarea de$*
a bucla peste argumente, precum șifor ~ in ~ do ~ done
bucle pentru iterarea peste liste. -
case ~ in ~ esac
mecanism 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 ~ fi
case ~ in ~ esac
for/while ~ do ~ od
done
od
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:
test
Comandă î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
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
- Bash ( shell-ul Bourne-Again ) a fost dezvoltat în 1989 pentru proiectul GNU și încorporează caracteristici din shell-ul Bourne, csh și ksh. Este menit să fie conform cu POSIX.
- rc a fost creat la Bell Labs de Tom Duff ca înlocuitor pentru sh pentru versiunea 10 Unix . Este shell-ul implicit pentru Plan 9 de la Bell Labs . A fost portat la UNIX ca parte a Planului 9 din Spațiul utilizatorului .
- Z shell , dezvoltat de Paul Falstad în 1990, este un shell Bourne extins cu un număr mare de îmbunătățiri, inclusiv unele caracteristici ale Bash , ksh și tcsh .
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
- Membrii individuali ai „The Traditional Bourne Shell Family”
- "Proprietăți comune caracteristice ale cochiliilor Bourne tradiționale"
- Codul sursă istoric C pentru shell-ul Bourne utilizând macrourile mac.h din 1979
- Documentație originală Bourne Shell din 1978
- Un port al shell-ului "heirloom" SVR4 Bourne de la OpenSolaris la alte sisteme similare Unix
- Migrarea de la Shell-ul System V (SVR4) la Shell-ul POSIX
- Tutorial Bourne Shell (sintaxă)
- Întrebări frecvente despre diferențele de coajă
- Howard Dahdah, The A – Z of Programming Languages: Bourne shell, or sh - Un interviu aprofundat cu Steve Bourne, creatorul Bourne shell, sau sh , Computerworld , 5 martie 2009.