30Jul

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

click fraud protection

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

Dnešná otázka &Odpoveď na zasadnutie nám príde s láskavým dovolením SuperUser - subdivíziu Stack Exchange, komunitne riadeného zoskupenia webových stránok Q & A.

Otázka

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

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

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

Response

SuperUser prispievatelia grawity majú odpoveď pre nás:

Stručne povedané:

  • Existuje niekoľko shellov, ktoré implementujú nadmnožinu špecifikácie POSIX sh. Na rôznych systémoch môže byť /bin/ sh odkazom na popol, bash, pomlčka, ksh, zsh atď.
  • instagram viewer
  • Pokiaľ budete držať iba funkcie sh, môžete( a pravdepodobne by ste aj) mali používať #!/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( napr. Array), mali by ste špeciálne požiadať o bash, pretože aj keď /bin/ sh už vyvolá bash vo vašom systéme, nemusí to fungovať v systéme všetkých ostatných a váš skript sa tam nebude spúšťať.To isté platí pre zsh a ksh, samozrejme.
  • Aj keď je skript určený len pre osobné použitie, možno si všimnete, že niektoré operačné systémy počas aktualizácie menia /bin/ sh .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 sa náhle zlomil.

Avšak:

  • Aj #!/bin/ bash nie je tak správny. Na rôznych systémoch môže bash žiť v /usr/ bin , /usr/pkg/ bin alebo /usr/local/ bin .
  • Spoľahlivejšia možnosť je #!/usr/bin/ env bash , ktorý používa $ PATH .Aj keď samotný env nástroj nie je prísne zaručený, /usr/bin/ env stále funguje na viacerých systémoch ako /bin/ bash .

Máte niečo doplniť vysvetlenie? Znížte komentáre. Chcete si prečítať viac odpovedí od iných používateľov technológie Stack Exchange? Pozrite sa na celý diskusný príspevok tu.

Image Credit: Wikipedia