Wat is de Bourne Shell?
De Bourne-shell is een klein programma dat op Unix®- en LINUX®-besturingssystemen draait en een interface biedt om programma's op het systeem uit te voeren. Het wordt vaak een opdrachtregelinterface of opdrachtinterpreter genoemd, omdat het de gebruiker geen grafische gebruikersinterface (GUI) biedt. Commando's en eventueel uit te voeren parameters worden in de shell getypt. De Bourne-shell is ook een scripttaal, waarmee gebruikers scriptbestanden kunnen maken en uitvoeren die gegevens via meerdere programma's kunnen verwerken met één opdracht. Op Unix®-achtige systemen staat het programma gewoon bekend als "sh".
De eerste dergelijke shells voor Unix®-systemen stonden bekend als de Thompson-shell, gemaakt door Ken Thompson, een van de oorspronkelijke makers van het Unix®-besturingssysteem. De Thompson-shell was beperkt tot opdrachtinterpretatie en een aantal extra functies moest worden uitgevoerd als externe bewerkingen. Later maakte Stephen Bourne de Bourne-shell om de Thompson-shell te vervangen, door een aantal nieuwe functies aan de shell zelf toe te voegen, evenals de scripttaal van de shell.
In werkelijkheid was de Bourne-shell vanaf het begin gepland als scripttaal. Hoewel het nog steeds de opdrachtregelinterface voor Unix® versie zeven was, opende het ook de mogelijkheid voor gebruikers om shellscripts te ontwikkelen die commando's aan elkaar zouden koppelen om gegevens te verwerken. Door het gebruik van deze programmering, kan de gebruiker variabelen vaststellen voor het vastleggen van bekende of onbekende gegevens uit invoer of uitvoer en de verwerking van die gegevens manipuleren door het gebruik van voorwaardelijke instructies in het script via een techniek die wordt aangeduid als control flow.
Dit was ook de eerste shell die een functie implementeerde die bekend staat als signaalverwerking. Via de Bourne-shell kan een gebruiker een specifiek type signaal verzenden naar een proces dat al op de computer wordt uitgevoerd en dat proces opdragen iets anders te doen. Veel van deze zijn manieren om een proces dat wordt uitgevoerd te stoppen en een soort output te produceren die kan worden gebruikt voor foutopsporing, hoewel er andere bestaan om een proces tijdelijk te stoppen, te hervatten, enzovoort.
De mogelijkheid om bestandsdescriptors rechtstreeks te besturen was een andere primeur voor de Bourne-shell. Op een Unix®-achtig systeem heeft elk actief programma een tabel met de bestandsdescriptoren voor openstaande bestanden. Dit kan alles zijn, van een eenvoudig tekstbestand tot een map of zelfs de communicatie-sockets die processen gebruiken om gegevens met elkaar te delen. Voor een gebruiker om controle te hebben over de bestandsdescriptors op een systeem voor ongekende controle over invoer en uitvoer voor vrijwel alles op de computer.
Hoewel de Bourne-shell dergelijke extra functionaliteit aan gebruikers bood, ontbrak het natuurlijk aan functies zoals de mogelijkheid om processen interactief te besturen, opdrachtaliassen op te zetten en een geschiedenis te behouden. Later begon echter een aantal afstammelingen te ontstaan die de meest bruikbare shell-functies hadden die in de loop van de jaren waren bedacht en deze in nieuwe shells oprolden. Een veelgebruikt voorbeeld is de Bourne-again shell of Bash, die veel voorkomt op veel LINUX®-systemen. Als gevolg hiervan zijn veel van deze nakomelingen volledig in staat om reguliere Bourne shell-scripts uit te voeren, waardoor elk Unix®-achtig systeem op de een of andere manier enige implementatie van de originele Bourne-shell heeft. Op veel LINUX®-systemen is dit gewoon een link van "sh" naar "bash" of een andere geschikte nakomeling.