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:
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:
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:
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.