Overzicht
`sh` is een van de standaard shells op Unix- en Linux-systemen en wordt gebruikt voor scriptuitvoering en interactieve commando-verwerking. Omdat het strikt voldoet aan de POSIX-standaard, is het gunstig om scripts geschreven in `sh` te gebruiken voor hoge compatibiliteit op verschillende systemen.
Belangrijkste kenmerken
- POSIX-compatibiliteit: Biedt een basis voor het schrijven van standaard shell-scripts
- Scriptuitvoering: Voert een reeks commando's uit die in een bestand zijn opgeslagen
- Interactieve commando-interpretatie: Ontvangt en verwerkt commando's rechtstreeks van de gebruiker
- Standaard systeemvoorziening: Standaard geïnstalleerd op de meeste Unix/Linux-systemen
Belangrijkste opties
`sh` biedt verschillende opties die de manier waarop scripts worden uitgevoerd of gedebugd, beïnvloeden.
Scriptuitvoering en debugging
Gegenereerde opdracht:
Probeer de opdrachtcombinaties.
Uitleg:
`sh` Voer het commando uit.
Combineer deze opties en voer de opdracht virtueel uit met de AI.
Gebruiksvoorbeelden
Scriptbestand uitvoeren
sh my_script.sh
Voert het opgegeven shell-scriptbestand uit met behulp van `sh`.
Commando-string direct uitvoeren
sh -c "echo 'Hello from sh!' && ls -l"
Voert een door aanhalingstekens omsloten commando-string uit met `sh` met behulp van de `-c` optie.
Script uitvoeren in debugmodus
sh -x debug_script.sh
Traceert het uitvoeringsproces van het script en debugt met behulp van de `-x` optie.
Commando's uitvoeren van standaardinvoer
echo "ls -a" | sh
Voert commando's uit die via een pipe worden doorgegeven met `sh`.
Onmiddellijk beëindigen bij een fout
sh -e error_prone_script.sh
Beëindigt onmiddellijk als er een fout optreedt in het script.
Tips & Aandachtspunten
`sh` is een krachtig hulpmiddel, maar het is belangrijk om de verschillen met andere shells te begrijpen.
Bij het schrijven van scripts
- Het is aan te raden om `#!/bin/sh` aan het begin van een script te plaatsen om aan te geven dat het script met `sh` moet worden uitgevoerd.
- Extensies van andere shells zoals `bash` of `zsh` (bijv. arrays, geavanceerde patroonherkenning, `[[ ... ]]` voorwaardelijke expressies) werken mogelijk niet in `sh`, dus gebruik alleen POSIX-compatibele syntaxis.
- De `-x` optie is erg nuttig bij het debuggen om de flow van het script te begrijpen en variabelen te controleren.
Compatibiliteit
Op de meeste Linux-distributies is `/bin/sh` een symbolische link naar `dash` (Debian/Ubuntu-gebaseerd) of `bash` (Red Hat/Fedora-gebaseerd). Daarom worden `sh`-scripts uitgevoerd in de POSIX-compatibele modus van de gelinkte shell. Dit betekent dat het gedrag kan verschillen van `bash`-scripts.