Как написать и выполнить скрипт в Linux: пошаговое руководство для новичков
Разобраться, как написать и выполнить скрипт в Linux, просто: создайте файл с расширением .sh, добавьте шебанг #!/bin/bash, запишите команды, назначьте права через chmod +x и запустите.
Оглавление
Создание файла скрипта
Создайте новый файл, используя любой удобный текстовый редактор: nano, vim, gedit или VS Code. Рекомендуется задать файлу расширение .sh (например, myscript.sh). Само по себе расширение не является строго обязательным для работы системы, но оно помогает быстро идентифицировать тип файла.
Указание интерпретатора
Первой строкой вашего кода должен быть так называемый шебанг (shebang). Он сообщает системе, какой именно интерпретатор нужно использовать для выполнения записанных команд. Стандартный вариант для Bash выглядит следующим образом:
#!/bin/bash
Эта запись дает команду запускать файл с помощью интерпретатора, расположенного по пути /bin/bash. Если вы планируете использовать другой шелл (например, Zsh или Sh), путь в этой строке нужно изменить соответственно.
Написание кода
После шебанга записывается последовательность команд для автоматизации. В скрипт можно перенести любые действия, которые вы обычно выполняете в терминале вручную. При написании кода соблюдайте базовые правила:
- Комментарии. Строки, начинающиеся с символа
#(за исключением первой строки с шебангом), игнорируются интерпретатором и служат для пояснений. - Переменные. Объявляются без пробелов вокруг знака равенства (например,
NAME="value"), а вызываются через знак доллара ($NAME). - Вывод текста. Для вывода сообщений в консоль применяется команда
echo "Текст".
Пример простого скрипта:
#!/bin/bash
# Это мой первый скрипт
echo "Привет, мир!"
CURRENT_DIR=$(pwd)
echo "Текущая директория: $CURRENT_DIR"
Назначение прав на выполнение
По умолчанию созданные текстовые файлы не являются исполняемыми. Чтобы система позволила запустить скрипт как программу, необходимо выдать соответствующие права доступа с помощью утилиты chmod:
chmod +x myscript.sh
Эта команда делает файл исполняемым для текущего пользователя. Если пропустить этот шаг, при попытке прямого запуска система выдаст ошибку «Permission denied».
Запуск скрипта
Существует несколько способов выполнения готового файла:
- Через прямой путь. Если права на выполнение уже добавлены, укажите относительный или абсолютный путь к файлу:
./myscript.sh
Префикс ./ обязателен при запуске из текущей директории, так как она обычно не входит в переменную окружения $PATH из соображений безопасности.
- Через явный вызов интерпретатора. В этом случае права на выполнение не требуются, поскольку вы передаете файл как аргумент программе:
bash myscript.sh
Такой метод удобен для проверки синтаксиса или принудительного запуска именно в Bash, даже если в шебанге прописан другой интерпретатор.
- Через source. Команда
source myscript.sh(или. myscript.sh) выполняет код в текущем сеансе терминала. Это позволяет экспортировать переменные непосредственно в ваше окружение, тогда как обычный запуск создает отдельный дочерний процесс.
Частые ошибки
- Отсутствие прав на выполнение. Пользователи часто забывают применить команду
chmod +x, из-за чего при попытке запуска через./myscript.shтерминал возвращает ошибку «Permission denied». - Пробелы при объявлении переменных. При написании кода нельзя ставить пробелы вокруг знака равенства (
NAME = "value"). Правильный синтаксис требует слитного написания:NAME="value". - Запуск без префикса пути. Если просто написать имя файла (
myscript.sh) без./и без вызова интерпретатораbash, система не найдет скрипт, так как текущая папка по умолчанию исключена из переменной$PATH.
FAQ
Нужно ли обязательно использовать расширение .sh для работы скрипта?
Нет, расширение .sh не является строго обязательным для работы системы. Оно используется исключительно для удобства, чтобы пользователь мог визуально идентифицировать тип файла.
Можно ли запустить скрипт, если у меня нет прав на его выполнение?
Да, для этого не обязательно менять права доступа через chmod. Достаточно явно вызвать интерпретатор и передать ему файл как аргумент, например: bash myscript.sh.
В чем разница между обычным запуском и командой source?
Обычный запуск создает отдельный дочерний процесс. Команда source (или точка . myscript.sh) выполняет скрипт в текущем сеансе терминала, что позволяет экспортировать переменные напрямую в ваше рабочее окружение.