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

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

    Когато създавате нов скрипт на обвивката, искате да сте сигурни, че е толкова безплатен, колкото е възможно, но понякога може да е малко объркващо да знаете кой shebang е най-добрият за вас. По този повод днешната публикация за въпроси и отговори на SuperUser има отговор на объркан въпрос на читателя.

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

    Въпроса

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

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

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

    Отговорът

    Граубитът на сътрудника на SuperUser има отговор за нас:

    Накратко:

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

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

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

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

    Кредит за снимка: Уикипедия