30Jul

Mikor jobb használni #!/bin/ bash A # helyett! /bin/ sh egy Shell Scriptben?

Új parancsfájl létrehozásakor gondoskodni kell arról, hogy a probléma a lehető legteljesebb legyen, de néha kicsit zavaros tudni, hogy melyik a legjobb a használata. Ezen a feljegyzésen a mai SuperUser Q & A bejegyzés válaszol egy zavaros olvasó kérdésére.

A mai kérdés &A válaszüzenet a SuperUser - a Stack Exchange megosztottságának köszönhetően - a Q & A webhelyek közösségi szintű csoportosítása.

Kérdés

SuperUser olvasó Hendre tudni szeretné, ha jobb az # használata! /bin/ bash helyett #!/bin/ sh héj scriptekben:

Mikor célszerűbb az # használata? /bin/ bash helyett #!/bin/ sh egy shell parancsfájlban?

Mikor használatos az #!/bin/ bash helyett #!/bin/ sh egy shell parancsfájlban?

Az

válasz A SuperUser-hozzájáruló grawity a választ nekünk:

Röviden:

  • Több olyan héj létezik, amelyek végrehajtják a POSIX sh specifikáció supersetjét. A különböző rendszereken az /bin/ sh a hamu, a bash, a dash, a ksh, a zsh stb. Linkje lehet. Mindig sh-kompatibilis, soha nem csh vagy hal.
  • Mindaddig, amíg csak a sh funkciókra ragaszkodik, akkor( és valószínűleg még mindig) is használnia kell az # -ot! /bin/ sh és a szkriptnek jól kell működnie, függetlenül attól, hogy milyen héj van.
  • Ha bash-specifikus funkciókat( vagyis tömböket) használ, akkor külön kérnie kell a bash parancsot, mert még akkor is, ha az /bin/ sh már betölti a bash-et a rendszeren, előfordulhat, hogy nem mindenki más rendszerén fut, és a parancsfájl nem fut. Ugyanez vonatkozik a zsh-ra és a ksh-ra is.
  • Ha a szkriptet csak személyes használatra szánják, észreveheti, hogy néhány operációs rendszer /bin/ sh frissítést hajt végre a frissítések során. Például a Debianon bash volt, de később a minimális kötőjellel helyettesítették. A bashizmokat használó parancsfájlok, de az #!/bin/ sh hirtelen tört.

Mindazonáltal:

  • Még #!/bin/ bash nem olyan helyes. A különböző rendszereken a bash esetleg /usr/ bin , /usr/pkg/ bin vagy /usr/local/ bin .
  • Egy megbízhatóbb lehetőség az #!/usr/bin/ env bash , amely $ PATH -t használ. Bár maga az env eszköz sem szigorúan garantált, az /usr/bin/ env még több rendszeren működik, mint az /bin/ bash .

Van valami, amit hozzá lehet adni a magyarázathoz? Hangzik ki a megjegyzésekben. Szeretne többet válaszolni a többi technikus-tudós Stack Exchange felhasználóiról? Nézze meg a teljes vitafonalat itt.

képhitel: Wikipedia