Kennisbank › Bash Shell › bash: Bash en de shell
bash shell starter 11 September 2026

bash: Bash en de shell

Bash is een Unix-shell die in 1988 werd ontwikkeld door Brian Fox als onderdeel van het GNU Project. De naam Bash staat voor “Bourne Again SHell”, een

Bash is een Unix-shell die in 1988 werd ontwikkeld door Brian Fox als onderdeel van het GNU Project. De naam Bash staat voor “Bourne Again SHell”, een woordspeling op de naam van de oorspronkelijke Bourne shell (sh), ontwikkeld door Stephen Bourne. De nieuwe shell was bedoeld als een vrije, open-source vervanging voor de Bourne shell, met uitgebreide functionaliteit en compatibiliteit. Het GNU Project, dat werd opgericht door Richard Stallman, had als doel het creëren van een compleet vrij besturingssysteem, en een krachtige shell was essentieel voor dat doel. Bash was een van de eerste onderdelen van dat ecosysteem die volledig open source en vrij beschikbaar waren.

De eerste beta-versie van Bash, versie 0.99, werd op 8 juni 1989 vrijgegeven. Deze lancering markeerde een belangrijke stap in de ontwikkeling van Linux en andere Unix-achtige systemen, omdat het gebruikers een krachtige en flexibele commandointerface bood zonder afhankelijk te zijn van propriëtaire software. De ontwikkeling van Bash vond plaats onder auspiciën van de Free Software Foundation (FSF), die het GNU Project ondersteunt. De FSF streefde ernaar om softwarevrijheid te bevorderen, en Bash paste perfect in dat visie: het was gratis te gebruiken, te bestuderen, te wijzigen en te verspreiden.

Vanaf het begin was Bash ontworpen om zowel interactief als scriptbaar te zijn. Dat betekent dat gebruikers er niet alleen commando’s in kunnen typen om direct uit te voeren, maar dat Bash ook geschikt is voor het schrijven van shellscripts — bestanden met een reeks commando’s die automatisch worden uitgevoerd. Deze dualiteit maakte Bash snel populair onder systeembeheerders, ontwikkelaars en geavanceerde gebruikers. De syntaxis van Bash is grotendeels compatibel met de Bourne shell, maar bevat tal van uitbreidingen zoals commando-opmaak, tab-compleet, geschiednisvervanging en geavanceerde variabele-expansie.

In de jaren negentig werd Bash verder ontwikkeld en verspreid. Uit de GNU-bestanden blijkt dat er al in 1994 actieve releases en patches waren; een bestand in de index van het project is gedateerd op 8 juli 1994. Deze voortdurende ontwikkeling zorgde ervoor dat Bash bleef evolueren met de behoeften van gebruikers en systemen. De software is sindsdien onderhouden door verschillende ontwikkelaars, nadat Brian Fox het project had overgedragen aan Chet Ramey, die tot op de dag van vandaag een belangrijke rol speelt in de verdere ontwikkeling van Bash.

Tegenwoordig is Bash de standaard shell op de meeste Linux-distributies en ook op macOS, zoals blijkt uit Nederlandstalige uitlegbronnen. Wanneer een gebruiker een terminal opent op een modern Linux-systeem, is de kans groot dat hij of zij automatisch in een Bash-sessie terechtkomt. Dit maakt Bash tot een van de meest gebruikte interfaces tussen mens en systeem in de wereld van open source en servers. Het is een fundamenteel hulpmiddel voor systeembeheer, automatisering, netwerkbeheer en het draaien van containers en databases.

Een van de krachtige functies van Bash is de geschiedenis van uitgevoerde commando’s. Bash bewaart deze geschiedenis standaard in een bestand genaamd `~/.bash_history`, dat per gebruiker wordt aangemaakt in de home-directory. Dit bestand bevat een lijst van eerder ingevoerde commando’s, waardoor gebruikers snel kunnen teruggrijpen naar vorige acties zonder ze opnieuw te hoeven typen. Dit is vooral handig bij herhaalde taken, foutopsporing of het opbouwen van complexe commando’s.

Hoewel de geschiedenis automatisch wordt bijgehouden, worden tijdstempels standaard niet opgeslagen of getoond. Dat betekent dat een gebruiker wel kan zien welke commando’s zijn uitgevoerd, maar niet wanneer. Om datum en tijd zichtbaar te maken, moet de omgevingsvariabele `HISTTIMEFORMAT` worden ingesteld. Wanneer deze variabele is gedefinieerd — bijvoorbeeld met een waarde als `"%d-%m-%Y %H:%M:%S "` — worden bij elk commando in de geschiedenis een tijdstempel toegevoegd. Dit is essentieel voor auditdoeleinden, troubleshooting of het analyseren van systeemactiviteit over langere periodes.

De variabele `HISTTIMEFORMAT` wordt vaak geconfigureerd in shell-profielbestanden zoals `~/.bashrc` of `~/.bash_profile`, zodat de instelling bij elke login automatisch wordt toegepast. Zonder deze instelling blijft de geschiedenis nuttig, maar beperkt tot de commando’s zelf. Met de tijdstempel wordt de geschiedenis een krachtig hulpmiddel voor monitoring en beveiliging. Bijvoorbeeld: als een systeembeheerder verdachte activiteit vermoedt, kan hij of zij de geschiedenis raadplegen om te zien welke commando’s op welk moment zijn uitgevoerd, en eventueel correlatie leggen met andere logbestanden.

Bash is niet alleen een interactieve shell, maar ook een volwaardige programmeeromgeving. Shellscripts geschreven in Bash worden wereldwijd gebruikt voor automatisering van taken, zoals het backuppen van bestanden, het beheren van gebruikersaccounts, het monitoren van netwerkverbindingen of het starten van databases. Veel van de tools die worden genoemd in het bronmateriaal — zoals `scsi_ready`, `scsi_readcap`, of `script` — zijn zelf geschreven als bash shell scripts. Dit betekent dat ze Bash gebruiken als uitvoeringsomgeving en profiteren van de ingebouwde functionaliteit zoals variabelen, lussen, voorwaardelijke opdrachten en commandosubstitutie.

Bijvoorbeeld: het `scsi_ready` script roept de `sg_turs` utility aan om een SCSI TEST UNIT READY commando naar een apparaat te sturen. Het script is geschreven in Bash en gebruikt Bash-functies om argumenten te verwerken, fouten af te vangen en uitvoer te genereren. Op dezelfde manier doet `scsi_readcap` een SCSI READ CAPACITY-opdracht via `sg_readcap`, ook weer in een Bash-script. Dit toont aan hoe breed Bash wordt ingezet: niet alleen als een interface voor de gebruiker, maar ook als een taal voor het bouwen van system-level tools.

Ook andere tools zoals `rsync`, `screen`, `time` en `sudo` worden vaak aangeroepen vanuit Bash-scripts of interactief gebruikt binnen een Bash-sessie. `Rsync` wordt gebruikt voor efficiënt kopiëren van bestanden, lokaal of over netwerken. `Screen` maakt het mogelijk om meerdere terminalsessies te multiplexen in één venster, handig bij lange draaiende processen of wanneer een verbinding wordt verbroken. `Time` meet de systeembronnen die een commando gebruikt, zoals CPU-tijd en geheugengebruik. En `sudo` stelt gebruikers in staat om commando’s uit te voeren met verhoogde rechten — vaak in combinatie met Bash om beheertaken te automatiseren.

De kracht van Bash ligt in zijn eenvoud en integratie met het Unix-ecosysteem. Het is ontworpen volgens het Unix-philosophy: kleine tools die één ding goed doen, gekoppeld via de shell. Bash fungeert als de lijm tussen deze tools. Door commando’s te koppelen met pipes (`|`), redirects (`>`, `>>`) en logische operatoren (`&&`, `||`), kunnen gebruikers complexe workflows bouwen zonder nieuwe software te hoeven schrijven.

Ondanks zijn leeftijd blijft Bash relevant. Het is aanwezig op servers, in cloudomgevingen, in containers (zoals Docker en Kubernetes), en op embedded systemen. Veel CI/CD-pipelines gebruiken Bash-scripts om builds uit te voeren, tests te draaien en applicaties te deployen. Het is een taal die, hoewel soms gecritiseerd om beveiligingsrisico’s of beperkingen in syntaxis, onmisbaar is geworden in de moderne IT-infrastructuur.

Samenvattend: Bash is meer dan een shell — het is een fundament van de open source wereld. Ontwikkeld in 1988 door Brian Fox voor het GNU Project, ondersteund door de Free Software Foundation, en sinds 1989 in actief gebruik. Het is de standaard shell op Linux en macOS, biedt krachtige geschiednisfuncties (met `HISTTIMEFORMAT` voor tijdstempels), en vormt de basis voor talloze scripts en systemen. Van het beheren van SCSI-apparaten tot het automatiseren van netwerktaken: Bash is overal waar Linux is.

← Terug naar kennisbank
← Terug naar kennisbank