hostprofi.ru
Подобрать хостинг
Термин·буква Б

Bash-скрипт

краткое определение

Bash-скрипт — исполняемый текстовый файл с командами оболочки Bash (Bourne Again Shell). Автоматизирует повторяющиеся задачи: резервное копирование, деплой, мониторинг, управление файлами и процессами на Linux/Unix-серверах.

Bash-скрипт — текстовый файл с последовательностью команд оболочки Bash (Bourne Again Shell). Bash — командный интерпретатор по умолчанию в большинстве Linux-дистрибутивов (GNU/Linux, Ubuntu, Debian, CentOS) и macOS до версии Catalina. Bash-скрипты позволяют автоматизировать любые задачи, выполнимые в терминале: от простого копирования файлов до сложных операций деплоя с проверками и уведомлениями.

Как работает

Скрипт начинается со shebang — строки #!/bin/bash, указывающей ядру ОС, каким интерпретатором выполнять файл. Без shebang файл выполняется оболочкой текущего пользователя, что может привести к непредсказуемому поведению. После shebang — тело скрипта: обычные команды Bash.

Базовые конструкции: переменные (NAME="value", вызов $NAME), условные операторы (if/then/else/fi), циклы (for/while/until), функции (function_name() { ... }), подстановка команд ($(command)). Коды возврата: 0 — успех, любое другое значение — ошибка. Конструкция command || exit 1 прерывает скрипт при ошибке команды.

Опции set -e (выход при ошибке), set -u (ошибка при обращении к необъявленной переменной), set -o pipefail (ошибка при сбое любой команды в pipe) — стандарт для production-скриптов. Без них скрипт может продолжать выполнение даже после критической ошибки.

Скрипту назначают права на выполнение командой chmod +x script.sh и запускают как ./script.sh или bash script.sh. Для запуска по расписанию используют cron — планировщик задач в Linux. Запись в crontab 0 3 * * * /opt/backup.sh запускает скрипт резервного копирования каждый день в 3:00.

История

Оболочка sh (Bourne Shell) создана Стивом Борном в Bell Labs в 1979 году для Unix Version 7. Bourne Shell стала стандартом для скриптинга в Unix. Bash (Bourne Again Shell) разработал Брайан Фокс по заказу GNU Project в 1989 году как свободную замену sh. Bash включён в GNU/Linux c самых ранних версий и до 2019 года был оболочкой по умолчанию в macOS. В 2019 году Apple переключила macOS Catalina на zsh, но Bash 3.2 остался предустановленным.

Типичные задачи в хостинге

  • Резервное копирование — скрипт создаёт архив директории, копирует на удалённый сервер через rsync или в S3, проверяет успешность и уведомляет в Telegram/email.
  • Деплой — git pull, установка зависимостей, миграции базы данных, перезапуск PHP-FPM/nginx, инвалидация кеша.
  • Мониторинг — проверка доступности сервиса, свободного дискового пространства, нагрузки CPU; отправка алертов при превышении порогов.
  • Управление логами — ротация логов, архивирование, удаление устаревших файлов.
  • Автоматизация установки ОС — bootstrap-скрипты для первоначальной настройки нового VPS: установка пакетов, создание пользователей, настройка файрвола.

На что обращать внимание

Bash-скрипты легко написать, но сложно поддерживать без дисциплины. Документируйте переменные и нестандартные конструкции. Тестируйте в безопасном окружении перед запуском на production. Инструмент ShellCheck (shellcheck.net) статически анализирует скрипты и находит типичные ошибки: неэкранированные переменные, неправильные кавычки, недостижимый код.

Для сложной оркестрации и управления конфигурацией Bash-скриптов недостаточно — используйте SaltStack, Ansible или Terraform. Bash оптимален для локальных задач конкретного сервера; для масштабирования на сотни серверов нужны специализированные инструменты.

Другие термины