Кога е по-добре да се използва #! / 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? Вижте пълната тема за дискусия тук.
Кредит за снимка: Уикипедия