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

Съдържание:

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

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

Видео: Кога е по-добре да използвате #! / Bin / bash Вместо #! / Bin / sh в Shell Script?
Видео: НОВЫЙ КОД + Как получить ВСЕ БЕЙДЖИ в игре ДОРС роблокс | DOORS roblox | Играю на новом аккаунте. - YouTube 2024, Ноември
Anonim
Когато създавате нов скрипт на Shell, вие искате да сте сигурни, че е възможно най-безпроблемно, но понякога може да е малко объркващо да знаете коя е shebang е най-доброто, което можете да използвате. На тази бележка, днешната публикация "Суперусър Q &A" има отговор на объркан въпрос на читателя.
Когато създавате нов скрипт на Shell, вие искате да сте сигурни, че е възможно най-безпроблемно, но понякога може да е малко объркващо да знаете коя е shebang е най-доброто, което можете да използвате. На тази бележка, днешната публикация "Суперусър Q &A" има отговор на объркан въпрос на читателя.

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

Въпроса

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

When is it more appropriate to use #!/bin/bash rather than #!/bin/sh in a shell script?

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

Отговорът

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

In short:

  • There are several shells which implement a superset of the POSIX sh specification. On different systems, /bin/sh might be a link to ash, bash, dash, ksh, zsh, etc. It will always be sh-compatible though, never csh or fish.
  • As long as you stick to sh features only, you can (and probably even should) use #!/bin/sh and the script should work fine, no matter which shell it is.
  • If you start using bash-specific features (i.e. arrays), you should specifically request bash because, even if /bin/sh already invokes bash on your system, it might not on everyone else’s system, and your script will not run there. The same applies to zsh and ksh, of course.
  • Even if the script is for personal use only, you might notice that some operating systems change /bin/sh during upgrades. For example, on Debian it used to be bash, but was later replaced with the very minimal dash. Scripts which used bashisms but had #!/bin/sh suddenly broke.

However:

  • Even #!/bin/bash is not that correct. On different systems, bash might live in /usr/bin, /usr/pkg/bin, or /usr/local/bin.
  • A more reliable option is #!/usr/bin/env bash, which uses $PATH. Although the env tool itself is not strictly guaranteed either, /usr/bin/env still works on more systems than /bin/bash does.

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

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

Препоръчано: