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