Для чего нужен шебанг в Bash и Python
Рассмотрим, для чего нужен шебанг и научим использовать этот инструмент для написания собственных скриптов и программ.
Введение
Шебанг (shebang) — строка комментария, начинающаяся с символов #!, которая играет важную роль в запуске скриптов на языках программирования Bash и Python. Шебанг указывает операционной системе, какой интерпретатор нужно использовать для выполнения скрипта. В данной статье мы рассмотрим, для чего нужен шебанг и научим вас использовать данный инструмент для написания собственных скриптов и программ.
Про синтаксис
Шебанг выступает в роли директивы интерпретатора и указывает на программу, которую нужно использовать для исполнения файла. Общий синтаксис шебанга выглядит следующим образом:
#!<interpreter> [arguments]
В данной конструкции:
- #! — сам шебанг, с которого начинается директива.
- <interpreter> — путь к интерпретатору, который должен быть использован для выполнения скрипта. Данный путь всегда должен вести к бинарному файлу, например /bin/bash.
- [arguments] — аргументы к исполняемому файлу. Данная опция не является обязательной.
Например, для скриптов на языке Bash, шебанг может выглядеть так:
#!/bin/bash
Для скрипта, написанного на языке Python, шебанг будет иметь следующий вид:
#! /bin/python
Сценарии использования shebang
Использование shebang имеет несколько преимуществ. Во-первых, ‘она эта строка позволяет явно указать, какой интерпретатор должен использоваться при запуске скрипта. Это особенно полезно, когда на компьютере установлено несколько версий интерпретатора Bash или когда требуется использовать альтернативный интерпретатор Zsh, Dash или Fish.
Кроме того, использование shebang обеспечивает безошибочный выбор интерпретатора при переносе файлов с одной системы на другую. Например, если вы будете передавать свой скрипт другим пользователям или перемещать его между разными системами, то благодаря shebang он будет автоматически выполняться с помощью правильного интерпретатора, без необходимости указывать его каждый раз вручную.
Использование шебанг в Bash- и Python-скриптах
Для унификации поиска интерпретатора в окружении, в котором выполняется программа, часто используют поиск интерпретатора через env. Это выглядит так:
#!/usr/bin/env python
или:
#!/usr/bin/env bash
Используя данный метод, необязательно указывать точный путь к интерпретатору. В примере выше для определения интерпретатора мы используем программу env.
При использовании режима отладки Bash после строки с шебангом рекомендуется ставить set -x. Выглядеть это будет следующим образом:
#!/usr/bin/env bash
set -x
Пример скрипта с использованием шебанга
Для более наглядного использования директивы шебанг, создадим файл с названием “t-rex” и заполним его следующим текстом:
#!/bin/bash
cat << "EOF"
,d
88
MM88MMM 8b,dPPYba, ,adPPYba, 8b, ,d8
88 88P' "Y8 a8P_____88 `Y8, ,8P'
88 88 8PP""""""" )888(
88, 88 "8b, ,aa ,d8" "8b,
"Y888 88 `"Ybbd8"' 8P' `Y8
EOF
После сохраняем файл и делаем файл исполнимым:
chmod +x t-rex
Теперь данный файл можно исполнить как полноценную программу:
Результат должен выглядеть следующим образом.
Переопределение shebang для выполнения скрипта
Иногда получается так, что необходимо использовать интерпретатор, отличный от того, который указан в директиве. В таком случае, вам необходимо явно указать интерпретатор, который вы хотите использовать. Например, для скрипта из предыдущего раздела можно указать интерпретатор sh:
sh ./t-rex
Заключение
В данной статье мы рассмотрели шебанг и научились правильно его использовать при написании скриптов.