If-Koubou

Кога е по-добре да използвате #! / Bin / bash Вместо #! / Bin / sh в Shell Script?

Кога е по-добре да използвате #! / Bin / bash Вместо #! / Bin / sh в Shell Script? (Как да)

Когато създавате нов скрипт на Shell, вие искате да сте сигурни, че е възможно най-безпроблемно, но понякога може да е малко объркващо да знаете коя е shebang е най-доброто, което можете да използвате. На тази бележка, днешната публикация "Суперусър Q & A" има отговор на объркан въпрос на читателя.

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Въпроса

Четецът на SuperUser Hendre иска да знае кога е по-добре да го използвате #! / Хамбар / Баш вместо #! / Хамбар / од в скриптове на черупки:

Кога е по-подходящо да се използва #! / Хамбар / Баш отколкото #! / Хамбар / од в скрипт?

Кога е по-добре да се използва #! / Хамбар / Баш вместо #! / Хамбар / од в скрипт?

Отговорът

Слуховият сътрудник на SuperUser има отговор за нас:

Накратко:

  • Има няколко черупки, които изпълняват надмножество от спецификацията POSIX sh. На различни системи, / Хамбар / од може да е връзка към пепел, баш, тире, ksh, zsh и т.н. Тя винаги ще бъде sh-съвместима обаче, никога csh или риба.
  • Докато се придържате само към функциите на sh, можете да (и вероятно дори да използвате) #! / Хамбар / од и сценария трябва да работи добре, без значение коя обвивка е.
  • Ако започнете да използвате функции, специфични за bash (т.е. масиви), трябва да поискате конкретно bash, защото, дори ако / Хамбар / од вече се позовава на баш на вашата система, тя може да не на системата на всички останали, и вашия скрипт няма да тичам там. Същото важи и за zsh и ksh, разбира се.
  • Дори ако скриптът е само за лична употреба, може да забележите, че някои операционни системи се променят / Хамбар / од по време на ъпгрейди. Например, на Debian е било баш, но по-късно е заменен с много минимално тире. Скриптове, които използват башимства, но са имали #! / Хамбар / од изведнъж се счупи.

Въпреки това:

  • Дори #! / Хамбар / Баш не е така. На различни системи, баш може да живее / ЮЕсАр / хамбар, / ЮЕсАр / PKG / бин, или / ЮЕсАр / местни / хамбар.
  • По-надежден вариант е #! / usr / bin / env bash, който използва $ PATH, Въпреки че самият инструмент за опазване на околната среда не е строго гарантиран, / ЮЕсАр / хамбар / Околна среда все още работи на повече системи от / Хамбар / Баш прави.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.

Image Credit: Уикипедия