Koduleht » kuidas » Millal on parem kasutada #! / Bin / bash'i #! / Bin / sh asemel Shelli skriptis?

    Millal on parem kasutada #! / Bin / bash'i #! / Bin / sh asemel Shelli skriptis?

    Kui loote uue shelliskripti, siis soovite veenduda, et see on võimalikult tasuta, kuid mõnikord võib olla natuke segane teada, milline Shebang on parim, mida kasutada. Sellel märkusel on tänasel SuperUser Q&A postil vastus segadusse lugeja küsimusele.

    Tänane küsimuste ja vastuste seanss saabub meiega kohtades, kus on SuperUser-Stack Exchange'i alajaotis, kogukondlikult juhitav Q&A veebisaitide rühmitus.

    Küsimus

    SuperUser lugeja Hendre tahab teada, millal on parem kasutada #! / bin / bash selle asemel #! / bin / sh shelliskriptides:

    Millal on sobivam kasutada #! / bin / bash pigem kui #! / bin / sh shelliskriptis?

    Millal on parem kasutada #! / bin / bash selle asemel #! / bin / sh shelliskriptis?

    Vastus

    SuperUser-i panuse andja vastus on meile vastus:

    Lühidalt:

    • On mitmeid kestasid, mis rakendavad POSIX sh spetsifikatsiooni supersetit. Erinevates süsteemides, / bin / sh võib olla link tuhk, bash, kriips, ksh, zsh jne. See on alati sh-ühilduv, mitte kunagi csh või kala.
    • Niikaua kui sa ainult hoiad sh funktsioone, saate (ja ilmselt isegi) kasutada #! / bin / sh ja skript peaks toimima hästi, olenemata sellest, milline kest on.
    • Kui hakkate kasutama bash-spetsiifilisi funktsioone (s.o massiive), peate konkreetselt nõudma bash-i, sest isegi kui / bin / sh juba küsib bash-i teie süsteemis, see ei pruugi olla kõigi teiste süsteemil ja teie skript ei käi seal. Sama kehtib loomulikult ka zsh ja ksh kohta.
    • Isegi kui skript on mõeldud ainult isiklikuks kasutamiseks, võite täheldada, et mõned operatsioonisüsteemid muutuvad / bin / sh uuenduste ajal. Näiteks Debianis oli see bash, kuid hiljem asendati see väga minimaalse kriipsuga. Skriptid, mis kasutasid bashismi, kuid olid #! / bin / sh äkki murdis.

    Kuid:

    • Isegi #! / bin / bash ei ole nii õige. Erinevates süsteemides võib bash elada / usr / bin, / usr / pkg / bin, või / usr / local / bin.
    • Usaldusväärsem valik on #! / usr / bin / env bash, mis kasutab $ PATH. Kuigi ka env-tööriist ise ei ole rangelt tagatud, / usr / bin / env töötab veel rohkem süsteeme kui / bin / bash ei.

    Kas teil on midagi lisada selgitusele? Heli on kommentaarides välja lülitatud. Kas soovite lugeda rohkem vastuseid teistelt tech-savvy Stack Exchange'i kasutajatelt? Vaadake siin täielikku arutelu lõiku.

    Pildi krediit: Wikipedia