Как запустить исполняемый файл или скрипт в Linux: от настройки прав до устранения ошибок
Чтобы понять, как запустить исполняемый файл или скрипт в Linux, необходимо проверить наличие бита исполнения, правильно указать путь к файлу или передать его нужному интерпретатору.
Оглавление
Проверка и назначение прав на выполнение
В Linux файл не запустится, даже если он является корректным скриптом или бинарным файлом, без установленного бита исполнения.
- Проверка прав:
ls -l filename(необходимо наличие символаxв правах доступа). - Назначение права на выполнение:
chmod +x filename # для текущего пользователя и группы
chmod u+x filename # только для владельца
sudo chmod +x filename # если требуются права root
Запуск по пути и через интерпретатор
Указание пути
Если файл находится в текущей директории, которая не входит в переменную $PATH, необходимо указывать путь явно:
./script.sh # запуск из текущей директории
/home/user/app.bin # запуск по абсолютному пути
../bin/tool # запуск по относительному пути
В отличие от Windows, Linux по соображениям безопасности не ищет исполняемые файлы в текущей директории автоматически. Команда script.sh без ./ выдаст ошибку «command not found», если скрипт не установлен системно.
Передача интерпретатору
Если у файла нет прав на выполнение или отсутствует shebang-строка (#!/bin/bash), его можно передать напрямую интерпретатору:
bash script.sh # для Bash-скриптов
python3 script.py # для Python
sh script.sh # для POSIX-совместимых скриптов
node app.js # для JavaScript/Node.js
Этот метод игнорирует бит исполнения, но требует наличия соответствующего интерпретатора в системе.
Добавление в системный PATH
Чтобы запускать файл из любой директории по имени, как стандартные команды, выполните одно из действий:
- Переместите файл или создайте символическую ссылку в
/usr/local/bin/или~/bin/. - Добавьте директорию с файлом в
$PATH:
export PATH="$PATH:/путь/к/директории"
Для постоянного эффекта добавьте команду экспорта переменной PATH в конфигурационные файлы ~/.bashrc или ~/.profile.
Особенности запуска бинарных файлов
- Зависимости: Если бинарник не запускается, проверьте наличие динамических библиотек командой
ldd ./binary. - Архитектура: Убедитесь, что бинарный файл соответствует архитектуре системы (проверить можно через
uname -m). Файлы архитектуры x86_64 не запустятся на ARM без эмуляции. - Специфичные форматы: Форматы пакетов имеют собственные механизмы запуска:
- AppImage:
chmod +x app.AppImage && ./app.AppImage - Flatpak:
flatpak run com.example.App - Snap:
snap run app-name
- AppImage:
Частые ошибки
Ниже приведены типичные проблемы при запуске и способы их диагностики.
| Проблема | Диагностика | Решение |
|---|---|---|
| Permission denied | ls -l file | chmod +x file |
| Command not found | echo $PATH | Добавить ./ или обновить PATH |
| Bad interpreter | head -1 script.sh | Исправить shebang или указать интерпретатор явно |
| Missing library | ldd ./binary | Установить недостающий пакет |
| Exec format error | file ./binary | Проверить архитектуру и целостность файла |
FAQ
Почему скрипт не запускается, хотя я нахожусь в его папке?
Linux по соображениям безопасности не ищет исполняемые файлы в текущей директории. Необходимо явно указать относительный путь, добавив ./ перед именем файла (например, ./script.sh), либо добавить папку в переменную окружения $PATH.
Что делать, если появляется ошибка Bad interpreter?
Эта ошибка возникает из-за проблем со строкой shebang в первой строке скрипта. Проверьте её командой head -1 script.sh. Если путь к интерпретатору указан неверно или интерпретатор отсутствует в системе, вы можете запустить скрипт, явно передав его нужной программе (например, bash script.sh).
Как проверить, почему не запускается бинарный файл?
Используйте утилиту ldd ./binary, чтобы проверить наличие всех необходимых динамических библиотек. Также убедитесь, что архитектура файла совпадает с архитектурой вашей системы, выполнив команду uname -m.