Shebang в Bash — полный разбор

16 марта 2026
Автор

Олег Марков

Что такое shebang

Shebang — это первая строка скрипта вида:

#!/usr/bin/env bash

Она подсказывает ОС, каким интерпретатором запускать файл при вызове ./script.sh.

Зачем он нужен

Без shebang скрипт может выполниться не тем shell (например, sh вместо bash), и Bash-специфичные конструкции сломаются: массивы, [[ ]], source, mapfile.

Два основных варианта

1) Жёсткий путь

#!/bin/bash

Плюс: предсказуемо.
Минус: путь к bash может отличаться в разных окружениях.

2) Через env (рекомендуется)

#!/usr/bin/env bash

Плюс: ищет bash в PATH, лучше переносимость между Linux/macOS/CI.

Как shebang работает технически

Когда ты запускаешь файл как программу:

./deploy.sh

Ядро читает первые 2 байта #!, затем берёт путь интерпретатора из этой строки и запускает:

/usr/bin/env bash ./deploy.sh

Если интерпретатор не найден — получишь ошибку запуска.

Обязательные условия

  1. Shebang должен быть самой первой строкой файла.
  2. У файла должны быть права на исполнение:
chmod +x deploy.sh
  1. Не должно быть лишних символов перед #! (включая BOM).

Частые ошибки

Ошибка 1: запуск через sh script.sh

Так ты обходишь shebang и принудительно запускаешь скрипт в sh.

Ошибка 2: CRLF в файле

На Linux может появиться bad interpreter. Лечится переводом в LF (dos2unix).

Ошибка 3: shebang не в первой строке

Любая пустая строка до shebang делает его нерабочим.

Практический шаблон

#!/usr/bin/env bash
set -euo pipefail

main() {
  echo "Shebang настроен корректно"
}

main "$@"

Вывод

Shebang — базовый контракт запуска скрипта. Для большинства проектов безопасный дефолт:

#!/usr/bin/env bash

Так ты явно указываешь Bash и избегаешь проблем с совместимостью и «случайным» запуском в другом shell.

Запуск Bash-скрипта — полный практический разборСтрелочка вправо

Все гайды по Bash

Редиректы и пайпы в Bash — полный разбор
Открыть базу знаний

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