Shebang в Linux: как использовать #!
TL;DR
Shebang (#!) — это строка в начале текстового файла, которая указывает, какой интерпретатор должен выполнить скрипт. Добавьте корректный shebang, сделайте файл исполняемым (chmod) и запускайте его как ./SCRIPT_NAME для удобства, переносимости и автоматизации.

Shebang (символы #!) — простой, но важный приём в создании скриптов для Linux и других Unix-подобных систем. Он сообщает системе, какой интерпретатор нужно запустить, чтобы выполнить команды, записанные в файле. Это особенно полезно при автоматизации задач, обработке больших наборов файлов, запуске cron‑заданий и при интеграции скриптов в конвейеры.
Что такое shebang
Shebang — это две первые символа файла: #! и затем абсолютный путь к интерпретатору. Интерпретатор — это программа, которая читает и выполняет команды скрипта; примеры: /bin/bash, /bin/zsh, /usr/bin/python3.
Пример строк shebang:
#!/bin/bash
#!/bin/zsh
#!/usr/bin/env python3Первая строка файла должна быть именно shebang: если она отсутствует, то при запуске ./SCRIPT_NAME ядро попытается выполнить файл как двоичный исполняемый, и произойдёт ошибка, или систему вызовут интерпретатор по умолчанию, что приведёт к неожиданному поведению.


Почему shebang полезен
- Упрощает запуск: достаточно ./имяскрипта вместо bash имяскрипта.
- Обеспечивает переносимость: явный выбор интерпретатора делает поведение предсказуемым.
- Упрощает автоматизацию: cron и другие планировщики запускают файл с тем интерпретатором, который указан.


Как правильно использовать shebang — пошаговая методика
- Создайте текстовый файл и поместите shebang в первой строке (ни пробелов, ни пустых строк перед ней).
#!/usr/bin/env python3
# далее код на Python- Напишите код ниже строки shebang.
- Сохраните файл и сделайте его исполняемым:
chmod 755 SCRIPT_NAME
# или
chmod a+x SCRIPT_NAME- Запустите:
./SCRIPT_NAMEКороткий чек-лист перед запуском:
- Нет лишних невидимых символов (особенно CRLF после редактирования в Windows).
- Shebang указывает на существующий интерпретатор.
- Установлены права на исполнение.
Частые варианты shebang и когда их использовать
- #!/bin/bash — явный запуск Bash (подходит для систем с предсказуемой структурой /bin).
- #!/bin/sh — POSIX-совместимый shell (для совместимости между системами).
- #!/usr/bin/env python3 — рекомендовано для переносимости Python‑скриптов: env найдёт python3 в PATH пользователя.
- #!/usr/bin/perl, #!/usr/bin/env node — аналогично для других языков.
Использование /usr/bin/env помогает, когда интерпретатор может находиться в разных местах на разных системах.
Когда shebang не сработает (примеры и обходные пути)
- Вы выполняете скрипт явно через другой интерпретатор:
bash script.py— shebang будет проигнорирован, потому что вы уже указали интерпретатор вручную. - Вы
sourceили.скрипт: команды выполняются в текущем процессе оболочки, shebang игнорируется. - Неправильный путь в shebang (например, /bin/pythn) — система не найдёт интерпретатор.
- Файл в формате DOS (CRLF) — первый байт может нарушить распознавание shebang.
В таких случаях используйте корректный вызов интерпретатора или исправьте shebang/формат файла.
Альтернативные подходы
- Вызывать интерпретатор явно:
python3 script.py— полезно в окружениях с менеджерами версий. - Файловые ассоциации и .desktop-файлы в GUI — для запуска скриптов кликом.
- Контейнеризация (Docker) — фиксирует окружение и интерпретатор, делая shebang менее критичным для конечного результата.
Примеры и шпаргалка (cheat sheet)
Примеры shebang:
#!/bin/bash # Bash
#!/bin/sh # POSIX shell
#!/usr/bin/env bash # Bash через env (переносимость)
#!/usr/bin/env python3 # Python 3 через envПрава и запуск:
chmod 755 script.sh
./script.shОтладка:
- Проверить путь:
which python3илиcommand -v bash. - Убедиться в Unix-символах конца строки:
dos2unix script.sh.
Ролевые чек-листы
Для системного администратора:
- Проверить shebang во всех запускаемых скриптах cron.
- Использовать /usr/bin/env для переносимости между дистрибутивами.
- Обеспечить единообразный стандарт (например, /bin/bash или /bin/sh) в репозитории.
Для разработчика:
- Включить shebang в проектные скрипты для локального тестирования.
- Добавить тесты, которые запускают скрипт через ./ и через интерпретатор.
Для исследователя/аналитика:
- Указывать явный интерпретатор (python3), чтобы избежать версии Python 2.
- Документировать требуемые библиотеки и окружение (requirements.txt, virtualenv).
Критерии приёмки
- Скрипт запускается командой ./SCRIPT_NAME без ошибок.
- Shebang указывает на существующий интерпретатор или использует /usr/bin/env.
- Нет ошибок, связанных с форматом конца строк или правами доступа.
Краткие термины (глоссарий)
- Shebang: первые символы файла “#!” и путь к интерпретатору.
- Интерпретатор: программа, выполняющая код (bash, python и т.д.).
- Исполняемый бит: файловый атрибут, позволяющий запускать файл как программу.
- /usr/bin/env: утилита, ищет программу в PATH для переносимости.
Советы по безопасности и надёжности
- Не доверяйте и не выполняйте скрипты из ненадёжных источников с правами исполнения.
- По возможности указывайте минимально необходимые привилегии и проверяйте содержимое перед запуском.
- Для автоматизации в production используйте средства оркестрации или контейнеры для единообразия окружения.
Краткое резюме
Shebang — простой и мощный инструмент для управления тем, какой интерпретатор выполнит ваш скрипт. Правильно указанный shebang повышает переносимость и делает запуск скриптов удобным и предсказуемым. Проверяйте путь интерпретатора, права на исполнение и формат конца строк, чтобы избежать распространённых ошибок.
Важно: если вы планируете запускать скрипты на разных серверах и дистрибутивах, предпочтительнее использовать конструкцию через /usr/bin/env для повышения переносимости.
Похожие материалы
Драйвер Samsung NVMe для Windows 11 — скачать и установить
Добавление игр в список желаемого PlayStation
Как отправить сообщение самому себе в мессенджерах
Найти и заменить номер Apple Card
Как создать папку на iPhone — быстро