Pagrindinis » kaip » Kada geriau naudoti #! / Bin / bash Vietoj #! / Bin / sh Shell scenarijuje?

    Kada geriau naudoti #! / Bin / bash Vietoj #! / Bin / sh Shell scenarijuje?

    Kurdami naują apvalkalo scenarijų, norite įsitikinti, kad jis yra kaip įmanoma laisvesnis, bet kartais tai gali būti šiek tiek paini žinoti, kuri Shebang yra geriausia jums naudoti. Šiuo klausimu šiandienos „SuperUser“ atsakymų ir atsakymų atsakymas yra atsakas į painus skaitytojo klausimą.

    Šiandienos „Klausimų ir atsakymų“ sesija mums suteikiama pagal „SuperUser“ - „Stack Exchange“ padalinį, bendruomenės sukurtą „Q&A“ svetainių grupavimą.

    Klausimas

    „SuperUser“ skaitytuvas „Hendre“ nori sužinoti, kada geriau naudoti #! / bin / bash vietoj #! / bin / sh apvalkaluose:

    Kada tikslingiau naudoti #! / bin / bash geriau nei #! / bin / sh „Shell“ scenarijuje?

    Kada geriau naudoti #! / bin / bash vietoj #! / bin / sh „Shell“ scenarijuje?

    Atsakymas

    „SuperUser“ prisidedančiųjų grawity turi mums atsakymą:

    Trumpai tariant:

    • Yra keletas korpusų, kurie įdiegia POSIX sh specifikacijos viršutinę dalį. Įvairiose sistemose, / bin / sh gali būti nuoroda į pelenus, bash, brūkšnelius, ksh, zsh ir kt. Visada bus suderinama su shh, niekada „csh“ ar „fish“.
    • Tol, kol laikosi tik „Sh“ funkcijų, galite (ir tikriausiai netgi) naudoti #! / bin / sh ir scenarijus turėtų veikti gerai, nesvarbu, koks jis yra.
    • Jei pradėsite naudoti „bash“ ypatybes (t. Y. Matricas), turėtumėte konkrečiai paprašyti „bash“, nes, net jei / bin / sh jau kreipiasi į „bash“ jūsų sistemoje, tai gali būti ne visų kitų sistemoje, ir jūsų scenarijus nebus rodomas ten. Tas pats pasakytina ir apie zsh ir ksh.
    • Net jei scenarijus skirtas tik asmeniniam naudojimui, galite pastebėti, kad kai kurios operacinės sistemos pasikeičia / bin / sh atnaujinimų metu. Pavyzdžiui, „Debian“ ji anksčiau buvo „bash“, bet vėliau buvo pakeista labai minimalia brūkšniu. Skriptai, kuriuose buvo naudojami basizmai, tačiau turėjo #! / bin / sh staiga sumušė.

    Tačiau:

    • Net #! / bin / bash tai nėra teisinga. Skirtingose ​​sistemose „bash“ gali gyventi / usr / bin, / usr / pkg / bin, arba / usr / local / bin.
    • Patikimesnis pasirinkimas #! / usr / bin / env bash, kuri naudoja $ PATH. Nors pats „env“ įrankis nėra griežtai garantuotas, / usr / bin / env vis dar veikia daugiau sistemų nei / bin / bash tai daro.

    Ar ką nors papildyti paaiškinimu? Garsas išjungtas komentaruose. Norite perskaityti daugiau atsakymų iš kitų „tech-savvy Stack Exchange“ vartotojų? Čia rasite visą diskusijų temą.

    Vaizdo kreditas: Vikipedija