Башизмы (bashisms) — это команды оболочки и синтаксис специфичные для Bash. То есть это конструкции, который будут поняты только в Bash, но не будут поняты в других оболочках, таких как Dash.
Башизмы делают скрипты Bash более мощными и гибкими, но мерее портативными. Поэтому скрипты Bash должны начинаться с шебанга
#!/bin/bash
а не со стандартного
#!/bin/sh
Тем не менее во многих примерах используется стандартный шебанг #!/bin/sh, означает ли это, что нужно беспокоиться?
Во-первых, далеко не все скрипты Bash используют башизмы. Во-вторых, во многих современных дистрибутивах sh по умолчанию является bash
file /bin/sh
Это означает, что скрипт с башизмами у которого в качестве шебанга указан #!/bin/sh всё равно будут выполнены нормально.
Что не так с башизмами
На самом деле, ситуация зависит от контекста — если вы пишите скрипт для одного из популярных дистрибутивов Linux, то вам можно не беспокоиться о башизмах — просто достигайте цели программы любыми средствами, которые поддерживает Bash.
Фокусироваться на башизмах, стараться их избегать в тех случаях, когда избегать их не нужно — это неправильно, поскольку это делает простые вещи более сложными.
Почему некоторые стараются избегать башизмы
В некоторых случаях нужна совместимость с POSIX или возможность запустить на встраиваемом оборудовании, у которого нет полноценного Bash, а есть только Busybox. В этом случае нужно избегать башизмы.
Программисты, которые пишут скрипты для таких систем, принимают во внимание, является ли та или иная конструкция и синтаксис башизмом или нет. Они переносят это и на другие скрипты, которые пишутся для обычных дистрибутивов Linux.
Итак
Если вы не пишите скрипты для встраиваемых систем, под Busybox и вас не волную совместимость с другими оболочками, то вам не нужно беспокоиться о башизмах.
Если вы хотите чётко указать, что скрипт должен быть запущен в Bash, то используйте шебанг
#!/bin/bash
В подавляющем большинстве случаев нам не нужно беспокоиться о башизмах. А если вы пишите скрипты для современных дистрибутивов Linux, то не нужно беспокоиться о башизмах практически всегда, поскольку Bash является базовым пакетом для подавляющего числа дистрибутивов.
Связанные статьи:
- Как создавать диалоговые блоки в интерактивных shell скриптах (52.2%)
- Как в Bash реализовать «Нажмите любую кнопку для продолжения» (52.2%)
- Как в Bash проверить, содержит ли строка подстроку (52.2%)
- Функции в Bash: объявление, вызов и передача аргументов в функцию (52.2%)
- Как объединить вывод двух и более команд (52.2%)
- Как сделать и отправить изменения исходного кода на GitHub (RANDOM - 50%)
Полез смотреть точное значение Башизма и наткнулся на этот блог. Почитал еще статьи, было приятно!