Úvodná » ako » Kedy je lepšie používať #! / Bin / bash Namiesto #! / Bin / sh v Shell Script?

    Kedy je lepšie používať #! / Bin / bash Namiesto #! / Bin / sh v Shell Script?

    Pri vytváraní nového shell skriptu sa chcete ubezpečiť, že je to ako problém bez problémov, ale niekedy to môže byť trochu mätúce, aby ste vedeli, ktorý shebang je ten najlepší na používanie. Na túto poznámku, dnešný príspevok SuperUser Q & A má odpoveď na otázku zmeteného čitateľa.

    Dnešná relácia otázok a odpovedí sa k nám pridelí zdvorilosťou SuperUser - podskupiny Stack Exchange, zoskupenia webových stránok typu Q & A.

    Otázka

    Čítačka SuperUser Hendre chce vedieť, kedy je lepšie používať #! / Bin / bash namiesto #! / Bin / sh v shell skriptoch:

    Kedy je vhodnejšie použiť #! / Bin / bash radšej než #! / Bin / sh v shellovom skripte?

    Kedy je lepšie používať #! / Bin / bash namiesto #! / Bin / sh v shellovom skripte?

    Odpoveď

    Pripomienka SuperUser prispieva k nám:

    V skratke:

    • Existuje niekoľko škrupín, ktoré implementujú nadradenú špecifikáciu POSIX sh. Na rôznych systémoch, / Bin / sh môže byť odkazom na popol, bash, pomlčka, ksh, zsh atď. Je to vždy sh-kompatibilný však, nikdy csh alebo ryby.
    • Pokiaľ sa budete držať len funkcií sh, môžete (a pravdepodobne by ste dokonca mali) použiť #! / Bin / sh a skript by mal fungovať dobre bez ohľadu na to, aký je shell.
    • Ak začnete používať funkcie špecifické pre bash (tj pole), mali by ste špeciálne požiadať o bash, pretože aj keď / Bin / sh už vyvoláva bash na vašom systéme, nemusí byť v systéme všetkých ostatných a váš skript tam nebude fungovať. To isté platí pre zsh a ksh, samozrejme.
    • Aj keď je skript určený len na osobné účely, možno si všimnete, že niektoré operačné systémy sa menia / Bin / sh počas inovácií. Napríklad v Debiane to bývalo bash, ale neskôr bol nahradený veľmi malým pomlčkou. Skripty, ktoré používali bashizmy, ale mali #! / Bin / sh náhle sa zlomil.

    Možno však použiť:

    • i #! / Bin / bash nie je to správne. Na rôznych systémoch by mohol žiť bash / Usr / bin, / Usr / pkg / bin, alebo / Usr / local / bin.
    • Spoľahlivejšia možnosť je #! / usr / bin / env bash, ktorý používa $ PATH. Hoci samotný env nástroj nie je prísne garantovaný, / Usr / bin / env stále funguje na viacerých systémoch ako / Bin / bash robí.

    Máte niečo doplniť vysvetlenie? Znie to v komentároch. Chcete sa dozvedieť viac odpovedí od iných používateľov technickej úrovne Stack Exchange? Pozrite sa na celý diskusný príspevok tu.

    Image Credit: Wikipedia