sh vs bash : En oversigt

apr 18, 2021
admin

Hvis du læser dette, er der en god chance for, at du tidligere har stødt på udtrykkene shell, sh, bash osv. Disse udtryk kan lyde forvirrende, og da de er nært beslægtede, gør det problemet endnu værre. Derfor besluttede jeg at skrive dette indlæg med det formål at forsøge at forklare forskellene mellem dem.

Shell vs Kernel

Hvor vi går videre, er det vigtigt, at vi forstår, hvad begreberne shell og kernel betyder.

Kernel

Kernel er knudepunktet i operativsystemet. Den er ansvarlig for at gøre ting som at interagere med hardware, lave fil I/O og starte processer.

Shell

Shell’en fungerer som en grænseflade mellem brugeren og kernen. Teknisk set er en shell en kommandolinjefortolker, dvs. det program, der enten fortolker den kommando, du indtaster i din terminalemulator (interaktiv tilstand), eller som behandler shell-scripts (tekstfiler, der indeholder kommandoer).

Nu da vi har en idé om, hvad shell og kerne er, kan vi forsøge at forstå sh og Bash.

sh

Strengt taget er sh (eller Shell Command Language) et programmeringssprog, der er beskrevet af POSIX-standarden. Det centrale her er, at sh ikke rigtig er et programmeringssprog i sig selv. Det er blot en specifikation. Specifikation er en detaljeret beskrivelse af syntaksen og semantikken for dette sprog. Specifikation omfatter ikke en implementering.

Bash

Der findes forskellige styresystemer med deres egne shells og kerner. Bash er skallen til GNU-operativsystemet. Men vi kan også sige, at bash er et programmeringssprog.

Wait, er det ikke forvirrende? Er bash både en shell og et programmeringssprog?

Tænk på python. Vi kan også starte Python i interaktiv tilstand, og det opfører sig som en shell. Eller JavaScript, eller Ruby eller et hvilket som helst scriptsprog.

Giver det mening?

Så bash er et programmeringssprog, der kan opfattes som en implementering af sh (selv om det har ændret sig med tiden).

For at opsummere, sh er en specifikation, bash er implementeringen.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.