Er dash, ask og sh-skript 100% kompatibelt?

Jeg ville vite om skript skrevet for dash, ash og sh er 100% kompatible?

Er det noen ekstra funksjoner til dash eller aske, eller syntaksendring?

Fra det jeg hørte, er ash en direkte etterkommer av sh.

Kommentarer

  • aske er en stripete form for bash
  • Kilde? Jeg så ingenting som sa at aske er relatert til bash
  • Hvorfor ville ikke ' t bare sende inn patcher til bash i stedet for å lage alle slags skjell, som støtter meg hele tiden. Hvis du virkelig vil vite det, kan du lese manualen, f.eks. man ash
  • Riktig, det ' kommer ikke fra bash. Det ville være mer presist å si at de ' kommer fra sh (det opprinnelige Bourne-skallet), men at ' heller ikke er helt korrekt .
  • Du kan bruke verktøyet checkbashisms for å teste at skriptet ditt er POSIX-kompatibelt.

Svar

Det korte svaret er nei, de «er ikke 100% kompatibel.

Men de fleste skjellene er ganske nær det grunnleggende, så du vil bare sjelden støte på inkonsekvenser. de fleste skjell skiller seg ikke mye ut ved tilsatt syntaks, men med noen ekstra funksjoner som fullføring av tabulatorer og lignende.

Dessuten er dash en slags etterkommer av ash — eller port fra BSD til Linux, for å være presis. Og alle av dem skal være etterkommere eller forskjellige implementeringer av sh. Faktisk sh er på de fleste systemer bare en symlink til bash, dash eller noe annet. Det som betyr noe er POSIX-samsvar —, og når du skriver skript i henhold til standardene, vil du ikke støte på problemer.

Forskjellen mellom disse skjellene er i optimaliseringer og ytelse. De er mindre funksjonsrike enn bash, men de er helt legitime skall. Bash er funksjonsrikt for interaktivt arbeid, men bruker for eksempel mer minne.

Kommentarer

  • Men for skriptbruk er de kompatible?
  • Og om POSIX-samsvar, selv om jeg følger den standarden, hvis et skript er skrevet for Bash, tror jeg ikke det vil kjøre på hvilken som helst sh eller dens etterkommer
  • De burde være kompatible med hverandre hvis du ' ikke bruker noen uklare funksjoner. Men hvis du bruker bash-skript, kan det hende du får flere problemer.
  • har aldri tenkt å bruke bash med sh eller aske eller dash. Hva er de uklare funksjonene?
  • mange av bash ' s nyere funksjoner er tillegg over POSIX, så det er stadig mer sannsynlig at du vil skrive unportabel kode hvis du ' bruker dem. IIRC selv [[]] – konstruksjonen er ikke i sh. Vær også oppmerksom på at hvis du ' ikke skriver et rent skallskript, kommer også forskjell i verktøy til spill (forskjellige versjoner av sed, grep, awk …).

Svar

Det bør nevnes at på noen systemer, spesielt Debian, / bin / ash er ikke tilgjengelig:

$ type ash dash bash: type: ash: not found dash is /bin/dash 

Kommentarer

  • De har muligens aske i opptaksboksen.
  • Når det er sagt, er det mange systemer som ikke ' t har bash heller.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *