Олег Марков
Запуск Bash-скрипта — полный практический разбор
Введение
Скрипт можно написать быстро, но ошибки чаще всего начинаются именно на этапе запуска: нет прав, не тот интерпретатор, неверные аргументы, запуск из другой директории.
Ниже — короткий и практичный чеклист, как запускать Bash-скрипты без сюрпризов.
Базовые способы запуска
1) Через Bash (без +x)
bash script.sh
Подходит для тестов и разовых запусков. Shebang не обязателен.
2) Прямой запуск файла
./script.sh
Требует:
- shebang в первой строке,
- права на исполнение (
chmod +x script.sh).
Права на запуск
Проверка:
ls -l script.sh
Выдача прав:
chmod +x script.sh
Если прав нет, будет Permission denied.
Передача аргументов
Запуск с параметрами:
./script.sh prod eu-west-1
Внутри скрипта:
$1,$2— позиционные аргументы,$#— количество аргументов,"$@"— все аргументы как список.
Пример валидации:
[[ $# -ge 1 ]] || { echo "Usage: $0 <env>" >&2; exit 1; }
Запуск в фоне
./script.sh &
Полезно для долгих задач. PID последнего фонового процесса — $!.
Запуск с логами
./script.sh > out.log 2> err.log
Или объединённо:
./script.sh > run.log 2>&1
Частые ошибки при запуске
Permission denied
Нет execute-бита → chmod +x script.sh.
bad interpreter
Часто CRLF или неверный shebang-путь.
command not found
Обычно отсутствует зависимость в окружении (PATH) или опечатка в команде.
Диагностика
Проверка синтаксиса:
bash -n script.sh
Трассировка выполнения:
bash -x script.sh arg1
Линтинг:
shellcheck script.sh
Рекомендуемый запуск в проектах
Для CI и прод-скриптов:
- Shebang
#!/usr/bin/env bash set -euo pipefail- Явная проверка аргументов и зависимостей
- Логи в stdout/stderr
- Ненулевой
exitпри ошибке
Вывод
Надёжный запуск Bash-скрипта строится на трёх вещах: корректный shebang, правильные права и явная валидация входа. Если это соблюдено — скрипты ведут себя предсказуемо и в локальной машине, и в CI/CD.