Bourne shell este un program mic care rulează pe sistemele de operare Unix® și LINUX® și oferă o interfață pentru a executa programe pe sistem. Este adesea denumită interfață de linie de comandă sau interpret de comandă, deoarece nu oferă utilizatorului nicio interfață grafică cu utilizatorul (GUI). Comenzile și orice parametri necesari care urmează să fie executați sunt introduși în shell. Shell-ul Bourne este, de asemenea, un limbaj de scripting, care permite utilizatorilor să creeze și să execute fișiere de script care pot procesa date prin mai multe programe printr-o singură comandă. Pe sistemele asemănătoare Unix®, programul este cunoscut pur și simplu ca „sh”.
Primele astfel de shell-uri pentru sistemele Unix® au fost cunoscute ca shell-ul Thompson, creat de Ken Thompson, unul dintre creatorii originali ai sistemului de operare Unix®. Shell-ul Thompson a fost limitat la interpretarea comenzilor și o serie de funcții suplimentare trebuiau executate ca operații externe. Mai târziu, Stephen Bourne a creat shell-ul Bourne pentru a înlocui shell-ul Thompson, adăugând o serie de caracteristici noi în shell-ul în sine, precum și limbajul de script al shell-ului.
În realitate, shell-ul Bourne a fost planificat ca limbaj de scripting încă de la început. Deși era încă interfața de linie de comandă pentru Unix® versiunea șapte, a deschis, de asemenea, posibilitatea utilizatorilor de a dezvolta script-uri shell care să lege comenzi între ele pentru a procesa date. Prin utilizarea acestei programări, utilizatorul ar putea stabili variabile pentru captarea datelor cunoscute sau necunoscute de la intrare sau ieșire și să manipuleze procesarea acelor date prin utilizarea instrucțiunilor condiționate în script printr-o tehnică denumită flux de control.
Acesta a fost și primul shell care a implementat o caracteristică cunoscută sub numele de tratare a semnalului. Prin intermediul shell-ului Bourne, un utilizator poate trimite un anumit tip de semnal unui proces care rulează deja pe computer, indicând procesului să facă altceva. Multe dintre acestea sunt modalități de a opri un proces care se execută și de a produce un fel de ieșire care poate fi folosită pentru depanare, deși există altele pentru a opri temporar un proces, a relua și așa mai departe.
Capacitatea de a controla direct descriptorii de fișiere a fost o altă premieră pentru shell-ul Bourne. Pe un sistem asemănător Unix®, fiecare program care rulează are un tabel care listează descriptorii fișierelor pentru orice fișier deschis. Acesta poate include orice, de la un simplu fișier text până la un director sau chiar soclule de comunicare pe care procesele le folosesc pentru a partaja date între ele. Pentru ca un utilizator să aibă control asupra descriptorilor de fișiere dintr-un sistem, a permis un control fără precedent asupra intrării și ieșirii pentru aproape tot ce se află pe computer.
Desigur, chiar dacă shell-ul Bourne oferea utilizatorilor o astfel de funcționalitate suplimentară, îi lipseau caracteristici precum capacitatea de a controla procesele în mod interactiv, de a stabili aliasuri de comandă și de a păstra un istoric. Mai târziu, totuși, au început să apară un număr de descendenți care au luat cele mai utile caracteristici de cochilie care au fost concepute de-a lungul anilor și le-au rulat în noi cochilii. Un exemplu comun este shell-ul Bourne-again, sau Bash, care este comun pe multe sisteme LINUX®. Drept urmare, mulți dintre acești descendenți sunt pe deplin capabili să execute scripturi shell Bourne obișnuite, oferind fiecărui sistem asemănător Unix® o implementare a shell-ului Bourne original într-un fel sau altul. Pe multe sisteme LINUX®, aceasta este pur și simplu o legătură de la „sh” la „bash” sau un alt descendent capabil.