Sammenlign sh shell vs. Bash

Sammenlign sh shell vs. Bash
Ethvert moderne UNIX/Linux -operativsystem kommer med sh og bashskallene som er installert som standard. Mens begge er veldig like, tilbyr den ene mer enn den andre.

Denne guiden vil dykke dypt inn i forskjellene og likhetene mellom sh og bashellene.

Linux Shell

I Linux er et skall et dedikert program for tolkning av kommandoen. Det tolker kommandospråket og ber systemet utføre oppgavene som er beskrevet. Det er ikke en del av kjernen, men kan utføre oppgaver, for eksempel å kjøre programmer og lage filer.

Funksjonaliteten til et skall forstås bedre med et eksempel. Åpne terminalen i systemet ditt og kjør følgende kommando:

$ Dato

Her bemerket vi følgende:

  • Standard skallet tok kommandoen "dato", tolket og kjørte Dato verktøy.
  • Den trykket også utdataene på konsollskjermen.

Skall kan også komme med sine egne språk. Bash -skripting, for eksempel, er potent i å automatisere veldig komplekse oppgaver og oppnå underverker.

Det er mange skjell tilgjengelig for Linux -plattformen. Det er klart, det mest populære er bashskallet. Her er noen alternative skjell som er verdt å sjekke ut:

  • Zsh med oh my zsh
  • Fiskeskall

Bourne Shell (sh)

Bourne -skallet er standardskallet for versjon 7 Unix. Opprinnelig utviklet av Stephen Bourne på Bell Labs, det var en erstatning for Thompson Shell. Bourne Shell startet sin reise i 1979. Lær mer om historien til Bourne Shell på Wikipedia.

Selv til i dag er Bourne Shell tilgjengelig på nesten alle Linux -systemer. Plasseringen av det binære er som følger:

$ som sh

Unix-lignende systemer fortsetter å ha Bourne Shell på /usr/bin/sh. Det er kanskje ikke Bourne -skallet, men en symbolsk/hard kobling til et mer kompatibelt skall. Du kan bekrefte det ved å kjøre følgende kommando:

$ fil -h /bin /sh

De sh Shell er også navnet på kommandoprogrammeringsspråket. Dette språket er beskrevet av POSIX Standard at alle UNIX og UNIX-lignende systemer må følge. Bourne -skallet vi har diskutert så langt er en implementering av sh.

Bourne Again Shell (bash)

Nå har vi kommet til det moderne skallet vi alle kjenner og elsker - The Bash Shell, også kjent som “Bourne Again Shell.”Navningen er en ordspill som indikerer at den erstatter Bourne Shell.

Bash er utviklet av Brian Fox for GNU -prosjektet, og er både et UNIX -skall og et kommandospråk. Den ble først utgitt i 1989. Siden den gang har det vært standard påloggingsskall for de fleste Linux -distros. Lær mer om historien til bashskallet på Wikipedia.

Bash er et supersett av sh, noe som betyr at det inneholder funksjoner i sh Og noen flere. Som språk gjør de fleste kommandoer det samme som som sh. derimot, Bash er ikke et posix-kompatibelt skall, men snarere en dialekt av Posix Shell-språket. Bash er ment å være den konformante implementeringen av IEEE Posix Shell og verktøydelen av IEEE Posix -spesifikasjonen (IEEE Standard 1003.1).

Sjekk plasseringen av Bash Shell Binary:

$ hvilken bash

Forskjeller mellom SH og Bash

Ga den historiske konteksten, sh og bash deler flere likheter enn forskjeller, da den ene er en bedre implementering av den andre. Uansett, her er noen merkbare funksjonsforskjeller som man bør vite.

Standard skall

I de fleste av dagens moderne systemer er bash standardskallet.

Binær beliggenhet

Sjekk den binære plasseringen av begge skjellene:

$ som sh
$ hvilken bash

Trekk

Sammenlignet med sh, Bash tilbyr langt mer fleksibilitet og syntaks som ser ut som et moderne programmeringsspråk. Her er noen tilleggsfunksjoner som Bash tilbyr over sh:

  • Bash støtter kommandolinje fullføring med Tab nøkkel
  • Bla gjennom kommandohistorien ved å bruke OPP Arrow -tasten eller “Ctrl + R”
  • Aritmetisk beregning uten tredjepartsverktøy
  • Assosiative matriser
  • Tastatursnarveier
  • Tilpasningsstøtte for standard bashpresentasjon
  • Epochseconds og EpochrealTime miljøvariabler
  • Stagutvidelser

POSIX Compliance

Som standard er Bash ikke Posix -kompatibel, mens sh er. Vi kan imidlertid kjøre Bash i POSIX -kompatibel modus med følgende kommando:

$ Bash -Posix

Hvis du skriver et bash -skript, men trenger POSIX -standarden, bruk følgende kode i begynnelsen:

#!/bin/bash
Sett -o Posix

Her, The sett Kommandoen forteller Bash å aktivere POSIX -modus.

Brukervennlighet

Bash tilbyr et mer moderne kommandolinjespråk sammenlignet med sh. I denne forbindelse har du en mer behagelig tid ved å bruke bash.

Bærbarhet

Sammenlignet med bash, sh tilbyr bedre portabilitet.

Fordi sh er POSIX -kompatibelt, ethvert skall som støtter POSIX vil kunne kjøre sh skript. For eksempel kan bash løpe sh Skript i POSIX -modus.

Skripting

Når du skriver et manus i bash, er koden bare garantert å være kompatibel med bash.

På den annen side, når du skriver inn sh, Koden kan kjøres på et hvilket som helst skall. Det er fordi sh Definerer det originale skallskriptspråket.

Konklusjon

I denne artikkelen undersøkte vi historien, likhetene og forskjeller mellom sh og bash. Sh er forgjengeren til bash. Begge er tilgjengelige på alle Modern Unix/Linux -systemene. Mens Bash tilbyr en mer behagelig og brukervennlig opplevelse, sh tilbyr kompatibilitet, portabilitet og standardisert syntaks/atferd.

Er du ny på bash -skripting? Denne Bash Scripting -opplæringen for nybegynnere dekker alt som er nødvendig for å skrive bashskriptene dine. Vi håper du fant denne artikkelen nyttig. Sjekk ut andre Linux -hint -artikler for flere tips og opplæringsprogrammer.