Er dash, aske og sh script 100% kompatibelt?

Jeg ville vide, om scripts skrevet til bindestreg, aske og sh er 100% kompatible?

Er der tilføjede funktioner til bindestreg eller aske, eller syntaksændring?

Fra hvad jeg hørte, er aske en direkte efterkommer af sh.

Kommentarer

  • aske er en stribet form af bash
  • Kilde? Jeg så intet, der sagde, at aske er relateret til bash
  • Hvorfor ville ' ikke folk bare indsende patches til bash i stedet for at skabe alle slags skaller, som buffrer mig hele tiden. Hvis du virkelig vil vide det, skal du læse manualen, fx man ash
  • Korrekt, det ' stammer ikke fra bash. Det ville være mere præcist at sige, at de ' stammer fra sh (den oprindelige Bourne-skal), men at ' heller ikke er helt korrekt .
  • Du kan bruge hjælpeprogrammet checkbashisms til at teste, om dit script er POSIX-kompatibelt.

Svar

Det korte svar er nej, de “er ikke 100% kompatibel.

Men de fleste skaller er ret tæt på det grundlæggende, så du ville kun sjældent støde på uoverensstemmelser. Faktisk de fleste skaller adskiller sig ikke meget ved tilføjet syntaks, men ved nogle ekstra funktioner som tab-komplettering og lignende.

Også dash er en slags efterkommer af ash — eller port fra BSD til Linux for at være præcis. Og alle skal være efterkommere eller forskellige implementeringer af sh. Faktisk sh er på de fleste systemer bare et symlink til bash, dash eller noget andet. Det der betyder noget er POSIX-overholdelse —, og når du skriver scripts i henhold til standarderne, vil du ikke løbe ind i problemer.

Forskellen mellem disse skaller er i optimeringer og ydeevne. De er mindre funktionsrige end bash, men de er fuldt legitime skaller. Bash er funktionsrige til interaktivt arbejde, men bruger f.eks. Mere hukommelse.

Kommentarer

  • Men til scriptbrug er de kompatible?
  • Og om POSIX-overholdelse, selvom jeg følger denne standard, hvis der er skrevet et script til Bash, tror jeg ikke, det kører på enhver sh eller dens efterkommer
  • De skal være kompatible med hinanden, hvis du ' ikke bruger nogle uklare funktioner. Men hvis du bruger bash-script, kan du løbe ind i flere problemer.
  • har aldrig tænkt sig at bruge bash med sh eller aske eller bindestreg. Hvad er disse obskure funktioner?
  • mange af bash ' s nyere funktioner er tilføjelser i forhold til POSIX, så det er mere og mere sandsynligt, at du vil skrive en ikke-bærbar kode, hvis du ' bruger dem igen. IIRC selv [[]] konstruktionen er ikke i sh. Pas også på, at hvis du ' ikke skriver et rent shell-script, kommer forskelle i værktøjer også i spil (forskellige versioner af sed, grep, awk …).

Svar

Det skal nævnes, at på nogle systemer, især Debian, / bin / ash er ikke tilgængelig:

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

Kommentarer

  • De har muligvis aske i optaget boks.
  • Når det er sagt, er der mange systemer, som ikke ' t har bash enten.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *