Содержание статьи

В Ubuntu многие программы поставляются не только в виде пакетов, но и как отдельные исполняемые файлы: скрипты, бинарники, установщики, утилиты из архивов. Попытка запустить такой файл двойным кликом часто заканчивается ошибкой или отсутствием реакции, тогда как терминал дает полный контроль над процессом.
Через командную строку можно точно указать путь к файлу, проверить его права, понять, почему запуск блокируется системой, и сразу увидеть сообщения об ошибках. Это особенно важно при работе с файлами, скачанными из интернета, собранными из исходников или перенесенными с другой машины.
На практике запуск упирается в несколько конкретных моментов: установлен ли бит исполнения, в каком каталоге находится файл, каким интерпретатором он должен выполняться и не мешают ли ограничения безопасности. Разобрав эти шаги по порядку, можно без лишних действий запускать любые исполняемые файлы напрямую из терминала.
Ниже рассматриваются прикладные приемы, которые позволяют быстро определить тип файла, выдать нужные права, корректно обратиться к нему из командной строки и избежать типичных ошибок, с которыми сталкиваются пользователи Ubuntu.
Проверка типа файла и его архитектуры перед запуском

Дополнительно стоит проверить, не является ли файл скриптом с некорректным shebang. Команда head -n 1 ./script покажет первую строку. Путь к интерпретатору должен существовать в системе, например /bin/bash или /usr/bin/python3. Если путь неверный, файл не запустится, даже при наличии прав на выполнение.
Для загруженных из интернета файлов полезно проверить, не повреждён ли бинарник. Команда ldd позволяет увидеть, какие библиотеки требуются: ldd ./program. Сообщения вида «not found» указывают на отсутствие зависимостей, из-за чего запуск завершится сразу после старта или не начнётся вовсе.
Переход в каталог с файлом через команду cd

Если файл находится, например, в каталоге /home/user/scripts, переход выполняется так: cd /home/user/scripts. При работе внутри домашнего каталога допускается сокращённая запись через ~: cd ~/scripts. Это снижает риск ошибок при наборе длинных путей.
Для перехода на уровень выше используется cd .., а возврат в домашний каталог выполняется командой cd без аргументов. Эти варианты полезны при навигации по вложенным каталогам, особенно при отладке или тестировании файлов в разных директориях.
Если путь содержит пробелы, его необходимо заключать в кавычки: cd «My Files/Programs». Альтернатива – экранирование пробелов обратным слешем. После перехода рекомендуется выполнить ls, чтобы убедиться, что нужный файл доступен в текущем каталоге.
Назначение прав на выполнение с помощью chmod

Для запуска файла из терминала в Ubuntu у него должен быть установлен флаг выполнения. Проверка текущих прав выполняется командой ls -l, где наличие символа x в правах указывает на разрешение запуска. Если файл отображается как -rw-r—r—, система воспримет его как обычный документ и запуск будет заблокирован.
Самый прямой способ добавить право выполнения – команда chmod +x имя_файла. Она устанавливает флаг запуска для владельца, группы и остальных пользователей. После этого файл можно запускать через ./имя_файла, находясь в его каталоге. Путь с ./ обязателен, так как текущая директория по умолчанию не входит в переменную PATH.
При необходимости можно задать права более точно. Например, chmod u+x имя_файла разрешает запуск только владельцу, а chmod 755 имя_файла задаёт права в числовом виде: владелец – чтение, запись и запуск, остальные – чтение и запуск. Числовая форма удобна при настройке скриптов и бинарных файлов, которые будут использоваться разными пользователями.
Если файл расположен на разделе с опцией noexec, команда chmod отработает без ошибок, но запуск всё равно завершится отказом. В таких случаях требуется проверить параметры монтирования через mount или перенести файл в каталог, где разрешён запуск программ.
Запуск исполняемого файла через./имя_файла

В Ubuntu текущий каталог не входит в список путей PATH, поэтому для запуска локального исполняемого файла требуется явное указание пути. Конструкция ./имя_файла сообщает оболочке, что файл находится в текущей директории. Без префикса ./ система попытается найти программу только среди стандартных команд.
Перед запуском убедитесь, что вы находитесь в нужном каталоге и файл имеет право на выполнение. Команда выполняется так: ./script.sh или ./program. Если имя содержит пробелы, его заключают в кавычки или экранируют: ./»my app» или ./my\ app.
При ошибке Permission denied файл существует, но не имеет флага выполнения. Сообщение No such file or directory часто указывает не только на отсутствие файла, но и на несовпадение архитектуры или неверный интерпретатор в shebang-строке.
| Ситуация | Пример команды | Комментарий |
|---|---|---|
| Запуск бинарного файла | ./app | Файл собран под архитектуру системы |
| Запуск bash-скрипта | ./run.sh | В начале файла указан #!/bin/bash |
| Имя с пробелами | ./»test file» | Используются кавычки |
| Запуск из другого каталога | /home/user/bin/app | Указан полный путь, ./ не требуется |
Если файл должен запускаться без ./, его копируют в каталог из PATH, например /usr/local/bin, или добавляют собственный путь в переменную окружения.
Запуск файла с указанием интерпретатора или среды выполнения

В Ubuntu некоторые исполняемые файлы требуют явного указания интерпретатора или среды выполнения. Это характерно для скриптов на Python, Perl, Bash и других языках, где первый строковый хедер (shebang) может отсутствовать или быть некорректным.
Для запуска таких файлов используйте команду с указанием интерпретатора:
- Python: python3 имя_файла.py
- Bash: bash имя_файла.sh
- Perl: perl имя_файла.pl
Если скрипт требует особую среду, например Node.js, команда будет следующей:
- node имя_файла.js
Проверка версии интерпретатора перед запуском помогает избежать ошибок совместимости. Используйте:
- python3 —version для Python
- node —version для Node.js
- perl -v для Perl
Если скрипт предназначен для использования в виртуальной среде, активируйте её перед запуском:
- Python venv: source путь_к_venv/bin/activate
Такой подход гарантирует, что все зависимости будут доступны и файл выполнится корректно. При необходимости указывайте полный путь к интерпретатору для предотвращения конфликтов с системными версиями.
Типовые ошибки при запуске и способы их исправления

При запуске исполняемых файлов в Ubuntu часто встречаются ошибки, которые можно исправить с минимальными действиями в терминале.
Наиболее распространённые ошибки:
- Permission denied: возникает при отсутствии прав на выполнение. Исправляется командой chmod +x имя_файла.
- Command not found: файл не находится в текущем каталоге или пути PATH. Используйте ./имя_файла или укажите полный путь к файлу.
- Bad interpreter (No such file or directory): некорректный shebang. Проверьте первую строку скрипта и убедитесь, что интерпретатор установлен и доступен по указанному пути.
- Segmentation fault: ошибка при запуске бинарного файла. Проверьте архитектуру файла командой file имя_файла и убедитесь, что она совпадает с архитектурой системы.
Для устранения проблем с зависимостями:
- Для Python: активируйте виртуальное окружение и установите недостающие пакеты через pip install -r requirements.txt.
- Для Node.js: выполните npm install в каталоге проекта.
- Для системных библиотек: используйте sudo apt install имя_пакета.
Регулярная проверка прав, корректности интерпретатора и наличия зависимостей позволяет снизить количество ошибок при запуске исполняемых файлов.
Вопрос-ответ:
Как проверить, является ли файл исполняемым в Ubuntu?
Чтобы узнать, можно использовать команду ls -l имя_файла. В выводе обратите внимание на наличие буквы x в правах доступа. Если её нет, добавьте права на выполнение командой chmod +x имя_файла. Также полезно проверить тип файла через file имя_файла, чтобы убедиться, что это бинарный файл или скрипт.
Почему при запуске файла через ./имя_файла появляется ошибка «Permission denied»?
Ошибка возникает, если у файла нет права на выполнение. Решается присвоением нужного права: chmod +x имя_файла. После этого команда ./имя_файла должна сработать. Проверьте также, что вы находитесь в правильном каталоге.
Можно ли запускать скрипты Python без явного указания интерпретатора?
Да, если в первой строке скрипта указан корректный shebang, например #!/usr/bin/python3, и у файла есть права на выполнение. В этом случае достаточно использовать ./имя_скрипта.py. Если shebang отсутствует или неверный, нужно запускать через python3 имя_скрипта.py.
Как определить, для какой архитектуры предназначен исполняемый файл?
Используйте команду file имя_файла. Она покажет, является ли файл 32-битным или 64-битным, а также тип бинарника. Это помогает убедиться, что файл совместим с вашей системой и избежать ошибок вроде Segmentation fault.
Что делать, если при запуске скрипта выводится «No such file or directory»?
Это может означать, что путь к файлу указан неверно или интерпретатор в shebang отсутствует. Проверьте, что вы находитесь в правильном каталоге и используете ./имя_файла или полный путь. Для скриптов проверьте первую строку на наличие корректного пути к интерпретатору и убедитесь, что он установлен.
