De oefeningen uit deze lessenreeks los je op met behulp van een Linux-shell. Start op je eigen computer een Linux-shell. Als dit gelukt is, dan mag je deze opdracht als gelezen markeren (onderaan deze pagina).

Een Linux-shell opstarten

De manier waarop je een Linux-shell opstart verschilt van besturingssysteem tot besturingssysteem. Hieronder lees je hoe je dit kunt doen onder Windows, macOS en Linux. Volg deze instructies voor het besturingssysteem op jouw computer.

Microsoft Windows

Microsoft Windows biedt sinds versie 10 ondersteuning voor Linux-shells onder de vorm van het Windows Subsystem for Linux1 (WSL). Met behulp van dit subsysteem kan je een Linux-distributie installeren en kan je de bijhorende Linux-shell gebruiken. Om van WSL gebruik te kunnen maken, moet je enkele stappen2 doorlopen:

Eens WSL geïnstalleerd is, kun je een Linux-shell openen door in het startmenu te zoeken naar de distributie van Linux die je hebt geselecteerd. Standaard is dit Ubuntu.

Bestanden uitwisselen tussen Windows en Linux

Als je vanuit Windows toegang wil tot bestanden op Linux (via WSL), open dan een WSL-shell en typ explorer.exe. Dit opent de Windows Verkenner in de huidige directory van het WSL. Het bestandssysteem van de WSL-shell kan je ook terugvinden in de Windows verkenner.

Bestandssysteem WSL-shell in Windows Verkenner

Omgekeerd, als je vanuit WSL toegang wil tot bestanden op Windows, open dan een WSL-shell en navigeer naar de directory /mnt/. Je zal hier alle Windows-schijven zien staan. De C: schijf zal je bijvoorbeeld terugvinden onder /mnt/c/.

Linux-shell opstarten vanuit de Microsoft Verkenner

Deze handleiding4 leert je hoe je een snelkoppeling voor het opstarten van een Linux-shell kunt toevoegen aan het contextmenu van de Windows Verkenner. Dit opent WSL in de huidige directory van de Windows Verkenner.

Error: 0x80370114

Windows vereist dat het onderdeel Windows Hypervisor Platform is ingeschakeld. Wanneer je deze error krijgt, is dat hoogstwaarschijnlijk niet het geval. Om dit onderdeel in te schakelen, klik je op start, typ Windows onderdelen en klik vervolgens op de link Windows onderdelen in- of uitschakelen. In het venster dat opent, kan je vervolgens zoeken naar Windows Hypervisor Platform en dit aanvinken. Hierna zal je computer herstarten en zou de error moeten verdwijnen.

macOS

macOS is zelf een op Unix gebaseerd besturingssysteem en biedt standaard al ondersteuning voor het uitvoeren van de meeste Linux-utilities via de commandolijn. Tot en met macOS versie 10.14 werd gebruikgemaakt van de Bash-shell, die we in deze lessenreeks zullen gebruiken. Vanaf versie 10.15 werd Bash standaard vervangen door Zsh, maar je kunt wel nog steeds scripts uitvoeren via Bash.

Dit vormt eigenlijk over het algemeen geen probleem voor de oefeningenlessen tot en met week 8. Op het moment dat we overschakelen naar het schrijven van shell scripts (vanaf week 9), is het belangrijk dat je steeds de juiste hashbang-regel gebruikt (#!/bin/bash). Geen paniek als dit je nu nog niets zegt. Het wordt vanzelf duidelijk in de loop van het semester.

Om een shell in macOS te openen, dien je eigenlijk alleen maar de applicatie Terminal op te starten:

  1. Druk op ⌘ + Spatie, typ terminal en druk op enter.

  2. Je zou nu een dergelijk venster moeten zien verschijnen:

macOS heeft een ingebouwde Linux-shell onder de naam "Terminal". Deze applicatie is standaard al geïnstalleerd op alle macOS-systemen.

Opmerking

Vanwege licentieproblemen zijn een heleboel van de utilities (grep, sed, vim, …) die standaard aangeboden worden door macOS (en absoluut noodzakelijk zijn voor dit vak) sterk verouderd. Voor de meeste oefeningen tijdens de werkcolleges is dit geen probleem. Het kan wel voorkomen dat een aantal opties onder een andere vlag aangeboden worden of dat een optie niet beschikbaar is. Heb je toch een recentere versie van één van de utilities nodig, dan kan je een nieuwe versie installeren via Homebrew5.

Als je de standaard utilities op macOS wil vervangen door de GNU utilities, dan kan je daarvoor de volgende stappen doorlopen:

  1. Installeer HomeBrew volgens de instructies op deze website6.

  2. Installeer de meest populaire GNU utilities via HomeBrew door dit commando uit te voeren in je terminal:

     brew install autoconf bash binutils coreutils diffutils ed findutils flex gawk \
         gnu-indent gnu-sed gnu-tar gnu-which gpatch grep gzip less m4 make nano \
         screen watch wdiff wget zip
    
  3. Voeg de nieuwe utilities toe aan de PATH-variabele van je systeem. Open daarvoor het bestand ~/.zshrc (je kan hiervoor nano gebruiken: nano ~/.zshrc en plak onderaan dit bestand de volgende regels:

     BREW_BIN="/usr/local/bin/brew"
     if [ -f "/opt/homebrew/bin/brew" ]; then
         BREW_BIN="/opt/homebrew/bin/brew"
     fi
    
     if type "${BREW_BIN}" &> /dev/null; then
         export BREW_PREFIX="$("${BREW_BIN}" --prefix)"
         for bindir in "${BREW_PREFIX}/opt/"*"/libexec/gnubin"; do export PATH=$bindir:$PATH; done
         for bindir in "${BREW_PREFIX}/opt/"*"/bin"; do export PATH=$bindir:$PATH; done
         for mandir in "${BREW_PREFIX}/opt/"*"/libexec/gnuman"; do export MANPATH=$mandir:$MANPATH; done
         for mandir in "${BREW_PREFIX}/opt/"*"/share/man/man1"; do export MANPATH=$mandir:$MANPATH; done
     fi
    
  4. Herstart je terminal. Als je nu grep --version uitvoert, dan zou je moeten kunnen zien dat dit de GNU versie is (die gecompileerd werd in 2023 of later).

  5. Als je ooit terug de originele macOS utilities wil gebruiken, dan is het voldoende om de regels die je tijdens stap 3 hebt toegevoegd weer uit het ~/.zshrc-bestand te verwijderen en je terminal te herstarten.

Linux

Als je al gebruikmaakt van Linux op jouw computer, dan hoef je enkel maar de applicatie Terminal te openen om in de Linux-shell terecht te komen.

  1. Open het applicatieoverzicht door op de knop rechtsonder in de desktop te klikken. Typ terminal en druk op enter.

  2. Je zou nu het volgende venster moeten zien verschijnen:

Ubuntu heeft een ingebouwde Linux-shell onder de naam "Terminal". Deze applicatie is standaard al geïnstalleerd op elk Ubuntu-systeem.