Wanneer is het beter om #! / Bin / bash te gebruiken in plaats van #! / Bin / sh in een Shell-script?

wanneer-is-het-beter-te-gebruiken-bin-bash-in plaats van-bin-sh-in-een-shell-script-00

Als je een nieuw shellscript aan het maken bent, wil je er zeker van zijn dat het zo probleemloos mogelijk verloopt, maar soms kan het een beetje verwarrend zijn om te weten welke shebang het beste is om te gebruiken. In dat opzicht bevat de SuperUser Q & A-post van vandaag het antwoord op de vraag van een verwarde lezer.

De vraag- en antwoordsessie van vandaag komt tot ons dankzij SuperUser – een onderdeel van Stack Exchange, een door de gemeenschap aangestuurde groep van Q & A-websites.

De vraag

SuperUser-lezer Hendre wil weten wanneer het beter is om te gebruiken #! / bin / bash in plaats van #! / bin / sh in shell-scripts:

Wanneer is het geschikter om te gebruiken #! / bin / bash liever dan #! / bin / sh in een shell-script?

Wanneer is het beter om te gebruiken #! / bin / bash in plaats van #! / bin / sh in een shellscript?

Het antwoord

SuperUser-bijdrager Grawity heeft het antwoord voor ons:

Kortom:

  • Er zijn verschillende shells die een superset van de POSIX sh-specificatie implementeren. Op verschillende systemen, / bin / sh kan een link zijn naar ash, bash, dash, ksh, zsh, etc. Het zal echter altijd sh-compatibel zijn, nooit csh of fish.
  • Zolang u zich alleen aan sh-functies houdt, kunt u (en waarschijnlijk zelfs zou moeten) gebruiken #! / bin / sh en het script zou goed moeten werken, ongeacht welke shell het is.
  • Als u bash-specifieke functies (dwz arrays) gaat gebruiken, moet u specifiek bash aanvragen omdat, zelfs als / bin / sh roept al bash aan op uw systeem, het is misschien niet op het systeem van iedereen, en uw script zal daar niet worden uitgevoerd. Hetzelfde geldt natuurlijk voor zsh en ksh.
  • Zelfs als het script alleen voor persoonlijk gebruik is, merkt u misschien dat sommige besturingssystemen veranderen / bin / sh tijdens upgrades. Op Debian was het bijvoorbeeld bash, maar werd later vervangen door het zeer minimale streepje. Scripts die bashisms gebruikten maar hadden #! / bin / sh plotseling brak.

Echter:

  • Zelfs #! / bin / bash is dat niet juist. Op verschillende systemen kan bash in leven / usr / bin, / usr / pkg / bin, of / usr / local / bin.
  • Een betrouwbaardere optie is #! / usr / bin / env bash, die gebruikt $ PATH. Hoewel de env-tool zelf ook niet strikt gegarandeerd is, / usr / bin / env werkt nog steeds op meer systemen dan / bin / bash doet.

Iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden lezen van andere technisch onderlegde Stack Exchange-gebruikers? Bekijk hier de volledige discussiethread.

Afbeelding tegoed: Wikipedia

Nieuwste artikelen

spot_img

Related Stories

Leave A Reply

Vul alstublieft uw commentaar in!
Vul hier uw naam in