Wat is de Bash Shell en waarom is het zo belangrijk voor Linux?

Wat is de Bash Shell en waarom is het zo belangrijk voor Linux?
fatmawati achmad zaenuri/Shutterstock.com

De Bash-shell is meer dan 30 jaar oud en nog steeds sterk. Wat doet het, waar komt het vandaan en waarom is het nog steeds de meest voorkomende shell op Linux-systemen?

Wat is een schelp?

Wanneer u een terminalvenster opent en opdrachten typt, moet er iets worden overgenomen van wat u hebt getypt, uitzoeken wat u van plan was en de taken uitvoeren waar u om vroeg. De software die dit doet is de shell. Een shell is een commando-interpreter. Het scant wat je hebt getypt en selecteert de commando’s, directorynamen, bestandsnamen en programmanamen zodat het kan achterhalen wat je probeert te bereiken.

Wat is een TTY op Linux?  (en hoe het tty-commando te gebruiken)

VERWANTWat is een TTY op Linux? (en hoe het tty-commando te gebruiken)

Mensen gebruiken de uitdrukkingen “terminalvensters”, “opdrachtregel” en “shell” vaak door elkaar, maar het zijn drie verschillende dingen. Een terminalvenster is een softwarematige weergave van een fysieke telexterminal. Het geeft je een verbinding met de computer. Om iets nuttigs te doen, moet u instructies kunnen typen op een opdrachtregel. De opdrachtregel wordt geleverd door de shell en het terminalvenster geeft u toegang tot de shell.

Shells stellen je ook in staat om een ​​verzameling commando’s op te delen in een tekstbestand dat een script wordt genoemd. Elke keer dat u het script uitvoert, worden alle opdrachten in het script voor u uitgevoerd. Scripts leveren efficiëntie, herhaalbaarheid en gemak.

De eerste Unix-shell was de Thompson-shell, genaamd sh. Het is geschreven door Ken Thompson, mogelijk het belangrijkste lid van de oorspronkelijke Unix-oprichters bij Bell Labs. De Thompson-shell werd gebruikt als de standaard Unix-shell tot en met Unix versie 6. Deze werd in 1979 vervangen door de Bourne-shell in versie 7 van Unix.

De Bourne-schelp

De Bourne shell, geschreven door Stephen Bourne, was een verbeterde vervanging voor de Thompson shell. Het werd zelfs gestart met hetzelfde commando als de Thompson-shell, sh, om achterwaartse compatibiliteit met bestaande scripts te behouden. Achterwaartse compatibiliteit was belangrijk, maar er werden nieuwe functies toegevoegd die veel functionaliteit boden die we vandaag de dag nog steeds gebruiken.

De Bourne-shell was een interactieve shell en een scripttaal. Het ondersteunde de uitvoering van taken op de voorgrond en op de achtergrond en elementaire taakcontrole. Leidingen en omleiding werden toegevoegd, samen met verbeteringen in het verwerken van lussen.

De shell bevatte nu een aantal ingebouwde commando’s, wat betekent dat het niet alles hoefde door te geven aan externe hulpprogramma’s, waardoor het efficiënter werd. De Bourne-shell ondersteunde zelfs “here documenten”, een elegante manier om het verzenden van gegevens naar opdrachten te automatiseren.

De Bourne-schaal legde de lat hoger en werd de nieuwe standaard.

De geboorte van Bash

In 1984, toen het GNU-project zijn voornemen aankondigde om een ​​gratis Unix-kloon te maken – van de grond af geschreven en met een nieuwe, permissieve licentie – had het team een ​​shell nodig. Toen een vrijwilliger die aan een shell voor het GNU-project had gewerkt herhaaldelijk niets opleverde, kreeg Brian Fox de opdracht om een ​​kloon van de Bourne-shell te schrijven.

Het werd de Bourne Again Shell of Bash genoemd. Dit was deels een eerbetoon aan Stephen Bourne en deels woordspelingen omwille van het. Na de release in 1989 heeft Chet Ramey een aantal bugfixes aan Bash bijgedragen. Hij werd uiteindelijk een mede-onderhouder van de Bash-shell. Tegenwoordig is hij nog steeds de beheerder van het Bash-project.

Linus Torvalds, de maker van de Linux-kernel, heeft gezegd dat de eerste twee programma’s die hij in 1991 op zijn nieuwe kernel draaide Bash en gcc, de compiler van GNU. De koppeling van de GNU-hulpprogramma’s met de Linux-kernel was voor beide partijen voordelig. Het GNU-besturingssysteem had een kernel nodig en de Linux-kernel had al het andere nodig dat een Unix-kloon vormt.

Omdat Bash de standaard GNU-shell is, werd het de standaardshell op alle GNU/Linux-distributies. Linux floreerde tot het punt dat het nu een verbazingwekkende hoeveelheid van de moderne wereld ondersteunt. De Bash-shell surfte ook op die golf van succes.

Bash bevat en verbetert de functieset van de Bourne-shell, maar het is ook geïnspireerd op andere shells, zoals de C-shell (csh) en de KornShell (ksh). Bijvoorbeeld de uitbreiding van de tilde “~” naar de waarde die wordt aangehouden in de $HOME omgevingsvariabele komt van de C-shell, en de fc opdracht die de standaardeditor aanroept voor opdrachten in de opdrachtgeschiedenis komt van de KornShell.

Bash introduceerde configuratiebestanden zoals de bestanden “.bashrc” en “.bash_profile”. Opdrachtregelbewerking op Bash overtrof de mogelijkheden van eerdere shells ver. De manipulatie van eerder uitgevoerde commando’s in de commandogeschiedenis was een verbeterde versie van de C-shells “bang history”-functie. Brace-uitbreiding was een functie die ontbrak in de Bourne-shell die in Bash was geïmplementeerd als een superset van de functionaliteit in de C-shell. Arrays zijn verbeterd door hun groottelimieten te verwijderen. Met parameteruitbreiding in de opdrachtprompt kunnen gebruikers hun Bash-prompt aanpassen.

De Bash-shell is bedoeld om te voldoen aan de POSIX P1003.2/ISO 9945.2 Shell and Utilities-standaard.

Waarom bash nog steeds belangrijk is?

Een Apple MacBook Pro gedeeltelijk gesloten en gloeiend in het donker.
Omar Tursic/Shutterstock.com

Bash had niet zo lang kunnen duren – meer dan 30 jaar – als de standaard Linux-shell als het niet aan het werk was. Vanwege de lange levensduur en het enorme gebruikersbestand is Bash volwassen en zeer stabiel. Er zijn veel alternatieve shells beschikbaar, van veteranen zoals de C shell en de KornShell tot nieuwere shells zoals de Z shell (zsh) en de vriendelijke interactieve schaal (fish). Zowel de Z-schaal als de Fish-schaal hebben een aantal functies die Bash niet zo goed doet als aantoonbaar betere manieren om dezelfde dingen te bereiken die Bash doet. Dus waarom is Bash nog steeds de dominante shell?

Van alle Linux-machines die ik ooit heb moeten beheren, herinner ik me geen enkele die Bash niet als shell had. Unix-machines, ja, maar Linux-boxen, nee. Het is elke keer Bash. Door die bekendheid kun je snel aan de slag en direct effectief zijn. Je kent Bash al, dus er is geen leercurve. Je raakt niet verlamd door minuscule verschillen in syntaxis waardoor je in cirkels blijft ronddraaien om erachter te komen waarom iets niet werkt. Tijd besteed aan het uitzoeken waar de bezwering op zou moeten staan deze shell is dode tijd, dus het is in het belang van de klant om een ​​bekende en veelgebruikte shell te gebruiken.

Het gebruik van een shell die POSIX-compatibel is of probeert te zijn, is van belang voor veel Linux-distributies, maar wat belangrijker is, is compatibiliteit met eerdere releases. Het is natuurlijk onaantrekkelijk om wijzigingen aan te brengen die bestaande scripts zouden kunnen breken. Aantrekkelijk of niet, soms moet je gewoon doorbijten. Op 3 september 1967 schakelde Zweden over van links rijden naar rechts rijden. Om 04:50 uur moest al het verkeer stoppen, langzaam naar de andere kant van de weg gaan en weer stoppen. Om 5.00 uur kon het verkeer weer doorgaan, iedereen reed nu rechts.

Zal Bash ooit worden vervangen?

Wat nu ondenkbaar lijkt, kan later gebeuren. Tenzij we ons willen vastklampen aan de overtuiging dat we allemaal Bash zullen gebruiken tot de dag des oordeels, is de waarheid waarschijnlijk dat op een dag Bash zal worden vervangen als de standaard Linux-shell – of het nu nog steeds de GNU-standaardshell is of niet. Of misschien wordt het Bash, maar verbeterd tot ver buiten de shell die we vandaag gebruiken. Maar wat de plaats van de huidige Bash ook inneemt, het moet ofwel volledig (of bijna) achterwaarts compatibel zijn of de omwenteling waard zijn, wat de voordelen ook mogen zijn.

Dit is niet zonder precedent. Sinds versie 10.15 van macOS heeft Apple Bash laten vallen en de Z-shell als standaardshell aangenomen. Apple heeft problemen met de GNU General Public License (GPL) v.3. Helaas is dat de licentie die Bash gebruikt. De laatste versie van Bash die werd uitgebracht onder GPL v.2 was versie 3.2 van 2007. De huidige versie is 5.1. Apple liep bijna anderhalf decennium achter. De enige manier waarop Apple een up-to-date shell kon toevoegen zonder over te stappen naar GPL v.3, was door helemaal naar een andere shell te gaan. Voor Apple was dat de opschudding waard. (Je kunt echter nog steeds terugschakelen naar Bash op macOS als je dat liever hebt!)

Er is een wereld van verschil tussen het werkstation van een hoofdgebruiker en een line-of-business Linux-server die u op afstand moet beheren via een SSH-verbinding. Van de bijna 1,5 miljoen door Amazon EC2 gehoste servers draait meer dan 93% Linux. Bijna 75% van de webservers draait op Linux. Organisaties als Red Hat, Amazon en Google gebruiken Linux in-house.

Het is moeilijk voor te stellen welke voordelen een nieuwe schil zou kunnen bieden die dat soort wereldwijde omwenteling zou rechtvaardigen. Daarom is Bash op zijn plaats gecementeerd.

Zelfs Microsoft biedt nu een manier om een ​​op Linux gebaseerde Bash-shell op Windows 10 te draaien!

Nieuwste artikelen

Gerelateerde artikelen