30Jul

Kada geriau naudoti #!/bin/ bash Vietoj #!/bin/ į "Shell" scenarijų?

Kai kuriate naują shell scenarijų, jūs norite įsitikinti, kad jis yra kaip be galo problema, bet kartais tai gali būti šiek tiek painu, nes žinoma, kas labiausiai jums tinka naudoti "shebang".Šiame rašte šiandien "SuperUser Q &" įrašas turi atsakymą į painiavą skaitytojo klausimą.

Šiandienos klausimas &Atsakymų sesija ateina pas mus iš "SuperUser" - "Stack Exchange", bendruomenės pagrįstos "Q & A" svetainių grupės pasidalijimo.

Klausimas

SuperUser skaitytuvas Hendre nori sužinoti, kada geriau naudoti #!/bin/ bash vietoj #!/bin/, įskaitant , shell scenarijus:

Kada tinkamesnis naudoti #!/bin/ bash , o ne #!/bin/ ar į shell scenarijų?

Kada geriau naudoti #!/bin/ bash vietoj #!/bin/ ar į shell scenarijų?

Atsakymas

SuperUser autorius gravitacija turi mums atsakymą:

Trumpai:

  • Yra keletas lukštų, kurie įgyvendina POSIX sh specifikacijos viršūnę.Skirtingose ​​sistemose /bin/ ar gali būti nuoroda į peleną, bash, brūkšnį, ksh, zsh ir tt Jis visada bus sh-suderinamas, nors niekada csh ar žuvies.
  • Tol, kol prilipote tik prie "sh" funkcijų, galite( ir galbūt netgi turėtų) naudoti #!/bin/, įskaitant , ir scenarijus turėtų veikti gerai, nesvarbu, kokia lukštais ji yra.
  • Jei pradėsite naudoti bash ypatybes( t. Y. Masyvus), turėtumėte specialiai prašyti bash, nes net jei /bin/ sh jau naudoja jūsų sistemoje, tai gali būti ne visose kitose sistemose, o jūsų scenarijus ten nebus paleistas. Tas pats pasakytina apie zsh ir ksh, žinoma.
  • Net jei scenarijus yra skirtas tik asmeniniam naudojimui, galite pastebėti, kad kai kuriose operacinėse sistemose atnaujinimo metu keičiama /bin/ sh .Pavyzdžiui, Debian'e jis buvo bosas, bet vėliau pakeistas labai minimaliu brūkšniu. Skriptai, kurie naudojo bashizmas, bet turėjo #!/bin/ ir staiga nutrūko.

Tačiau:

  • Net #!/bin/ bash nėra toks teisingas.Įvairiose sistemose bash gali gyventi /usr/ dėžutėje , /usr/pkg/ dėžutėje arba /usr/local/ dėžutėje .
  • Patikimesnė parinktis yra #!/usr/bin/ env bash , kuris naudoja $ PATH .Nors pats env įrankis nėra griežtai užtikrintas, /usr/bin/ env vis dar veikia daugiau sistemų nei /bin/ bash .

Ar ką nors įtraukti į paaiškinimą?Garsas išjungtas komentaruose. Norite skaityti daugiau atsakymų iš kitų "Tech-savvy Stack Exchange" vartotojų?Patikrinkite visą diskusijų temą čia.

Image Credit: Wikipedia