ZaLinux.ru

Что такое башизм (bashisms)

Башизмы (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 является базовым пакетом для подавляющего числа дистрибутивов.

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *