Homepage » hogyan kell » Mikor van jobb a #! / Bin / bash használata a #! / Bin / sh helyett egy Shell Script-ben?

    Mikor van jobb a #! / Bin / bash használata a #! / Bin / sh helyett egy Shell Script-ben?

    Amikor létrehoz egy új shell script-et, győződjön meg róla, hogy a lehető leginkább problémamentes, de néha kissé zavaró lehet tudni, hogy melyik Shebang a legjobb az Ön számára. Ebben a megjegyzésben a mai SuperUser Q&A posta válaszol egy zavaros olvasó kérdésére.

    A mai Kérdések és válaszok munkamenet a Jóvagyon - a Stack Exchange alosztályának, a közösség által vezérelt Q&A webhelyek csoportjának köszönhetően..

    A kérdés

    A SuperUser olvasó Hendre tudni akarja, mikor érdemes használni #! / Bin / bash ahelyett #! / Bin / sh shell parancsfájlokban:

    Mikor célszerűbb használni #! / Bin / bash inkább mint #! / Bin / sh egy shell parancsfájlban?

    Mikor érdemes jobban használni #! / Bin / bash ahelyett #! / Bin / sh egy shell parancsfájlban?

    A válasz

    A SuperUser hozzájárulójainak nyereségessége a következő:

    Röviden:

    • Számos kagyló van, amely a POSIX sh specifikáció szupersettjét hajtja végre. Különböző rendszereken, / Bin / sh lehet a hamu, a bash, a kötőjel, a ksh, a zsh stb. linkje. Ez mindig sh-kompatibilis lesz, soha nem csh vagy hal.
    • Mindaddig, amíg csak a sh funkciókhoz ragaszkodik, akkor (és valószínűleg még) is használnia kell #! / Bin / sh és a parancsfájlnak jól kell működnie, függetlenül attól, hogy hol van.
    • Ha bash-specifikus funkciókat (azaz tömböket) használ, akkor a bash-t külön kérnie kell, mert még akkor is, ha / Bin / sh már a bash-ot hívja fel a rendszeren, talán nem mindenki más rendszerén, és a parancsfájlja nem fog ott futni. Ugyanez vonatkozik a zsh-re és a ksh-re is.
    • Még ha a szkript csak személyes használatra készült, előfordulhat, hogy néhány operációs rendszer megváltozik / Bin / sh frissítések során. Például a Debian-nál korábban bash volt, de később kicserélték a nagyon minimális kötőjelet. Sablonok, amelyek bashizmusokat alkalmaztak, de voltak #! / Bin / sh hirtelen eltörött.

    Azonban:

    • Még #! / Bin / bash nem így van. A különböző rendszereken a bash élhet / Usr / bin, / Usr / pkg / bin, vagy / Usr / local / bin.
    • Egy megbízhatóbb lehetőség #! / usr / bin / env bash, amely használja $ PATH. Bár maga az env eszköz sem szigorúan garantált, / Usr / bin / env még mindig több rendszeren dolgozik, mint / Bin / bash csinál.

    Van valami, amit hozzá kell adni a magyarázathoz? Kikapcsolja a megjegyzéseket. Szeretne további válaszokat olvasni más tech-savvy Stack Exchange felhasználóktól? Nézze meg a teljes beszélgetés szálát itt.

    Képhitel: Wikipedia