Гид по технологиям

Shebang в Linux: как использовать #!

4 min read Linux Обновлено 04 Dec 2025
Shebang в Linux: как использовать #!
Shebang в Linux: как использовать #!

TL;DR

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

Иллюстрация концепции shebang в Linux

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 (исходный текст)

Вывод выполнения простого скрипта с shebang в терминале

Почему shebang полезен

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

Пример файла скрипта с shebang и правами на исполнение

Результат запуска скрипта через ./SCRIPT_NAME в терминале

Как правильно использовать shebang — пошаговая методика

  1. Создайте текстовый файл и поместите shebang в первой строке (ни пробелов, ни пустых строк перед ней).
#!/usr/bin/env python3
# далее код на Python
  1. Напишите код ниже строки shebang.
  2. Сохраните файл и сделайте его исполняемым:
chmod 755 SCRIPT_NAME
# или
chmod a+x SCRIPT_NAME
  1. Запустите:
./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 для повышения переносимости.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Драйвер Samsung NVMe для Windows 11 — скачать и установить
Драйверы

Драйвер Samsung NVMe для Windows 11 — скачать и установить

Добавление игр в список желаемого PlayStation
Игры

Добавление игр в список желаемого PlayStation

Как отправить сообщение самому себе в мессенджерах
Руководство

Как отправить сообщение самому себе в мессенджерах

Найти и заменить номер Apple Card
Гайды

Найти и заменить номер Apple Card

Как создать папку на iPhone — быстро
iPhone

Как создать папку на iPhone — быстро

Скачать и установить LibreOffice на Windows 11
Офисное ПО

Скачать и установить LibreOffice на Windows 11