Är bindestreck, ask och sh-skript 100% kompatibelt?

Jag ville veta om skript skrivna för bindestreck, aska och sh är 100% kompatibla?

Finns det några tillagda funktioner till streck eller aska, eller syntaxförändring?

Från vad jag hörde är aska en direkt ättling till sh.

Kommentarer

  • aska är en randig form av bash
  • Källa? Jag såg ingenting som sa att aska är relaterat till bash
  • Varför skulle inte ' t bara skicka lappar till bash istället för att skapa alla typer av skal, som bufflar mig hela tiden. Om du verkligen vill veta läser du manualen, t.ex. man ash
  • Rätt, den ' är inte härstammande från våldsamt slag. Det vore mer exakt att säga att de ' kommer från sh (det ursprungliga Bourne-skalet), men att ' inte heller är helt korrekt .
  • Du kan använda verktyget checkbashisms för att testa att ditt skript är POSIX-kompatibelt.

Svar

Det korta svaret är nej, de ”är inte 100% kompatibelt.

Men de flesta skalen är ganska nära det grundläggande, så du skulle bara sällan stöta på inkonsekvenser. Faktum är att de flesta skal skiljer sig inte mycket åt med tillagd syntax utan med några extra funktioner som tab-komplettering och liknande.

Dessutom är dash en efterkommande av ash — eller port från BSD till Linux, för att vara exakt. Och alla bör vara ättlingar eller olika implementeringar av sh. Faktum är att sh är i de flesta system bara en symlänk till bash, dash eller något annat. Det som är viktigt är POSIX-överensstämmelse — och när du skriver skript enligt standarderna kommer du inte att stöta på problem.

Skillnaden mellan dessa skal är i optimeringar och prestanda. De är mindre funktionsrika än bash, men de är helt legitima skal. Bash är funktionsrikt för interaktivt arbete, men använder till exempel mer minne.

Kommentarer

  • Men för skriptanvändning är de kompatibla?
  • Och om POSIX-efterlevnad, även om jag följer den standarden, om ett manus är skrivet för Bash, tror jag inte att det kommer att köras på någon sh eller dess ättling
  • De borde vara kompatibla med varandra om du ' inte använder några dunkla funktioner. Men om du använder bash-skript kan du stöta på fler problem.
  • har aldrig tänkt att använda bash med sh eller aska eller bindestreck. Vilka är dessa obskyra funktioner?
  • många av bash ' s nyare funktioner är tillägg över POSIX, så det är allt mer troligt att du kommer att skriva oportabel kod om du ' använder dem igen. IIRC även [[]] konstruktionen är inte i sh. Var också uppmärksam på att om du ' inte skriver ett rent skalskript, kommer skillnader i verktyg också att spela (olika versioner av sed, grep, awk …).

Svar

Det bör nämnas att på vissa system, särskilt Debian, / bin / ash är inte tillgängligt:

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

Kommentarer

  • De kan ha upptagen låda.
  • Som sagt, det finns många system som inte ' t har bash heller.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *