Не запускается программа в Linux? Исправляем за 2 минуты!

Не запускается программа в Linux? Исправляем за 2 минуты!

Вы скачали установщик или написали свой первый скрипт, а система упрямо отказывается его запускать? Знакомая ситуация? В Linux всё устроено иначе, чем в привычной Windows. Здесь не существует волшебных расширений вроде .exe.

Файл становится программой благодаря специальному атрибуту — флагу исполняемости. По умолчанию у скачанных файлов этот флаг просто отсутствует. Система их «не видит» как команды для выполнения.

Но не спешите отчаиваться! Решение этой задачи — проще простого. Вам не нужны права суперпользователя или глубокие знания системного администрирования.

Мы покажем вам два быстрых и эффективных способа.

Первый — через терминал, одной короткой командой. Это классика, которую используют все опытные пользователи.

Второй — через графический интерфейс, просто кликая мышкой. Идеально для новичков!

Вы не только научитесь включать этот важный флаг, но и поймёте, как он работает на самом деле. Что происходит с файлом «под капотом»? Почему процессор может выполнить даже текстовый документ?

Этот навык откроет вам дорогу к установке сотен программ и автоматизации рутинных задач с помощью скриптов. Больше никаких ошибок «Permission denied»!

Готовы навсегда решить эту проблему и почувствовать себя увереннее в мире Linux? Тогда вперёд, к полной версии статьи — всего пара минут, и вы станете настоящим укротителем программ!


Операционная система Linux, в отличие от Windows, определяет какие файлы являются программами не по расширению, а по специальному флагу исполняемости. У каждого файла есть три основных флага, чтение, запись и исполнение. Они определяют что система может делать с этим файлом.

Когда вы загружаете различные установщики программ из интернета или создаете скрипт в текстовом редакторе, для них устанавливаются флаги по умолчанию - только чтение и запись. Вы не сможете запустить такой файл как программу, с ним нужно сделать еще кое-что. В этой статье мы рассмотрим как сделать файл исполняемым в Linux.


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

Что такое исполняемость?

Уже много написано о том, как установить флаг исполняемости. Но что происходит с файлом во время этого, что такое исполянемость и как это работает?

Программа - это набор инструкций, которые по очереди выполняет процессор над данными, чтобы получить определенный результат. Но это вы, наверное, уже знаете.

На самом деле для процессора нет разницы между данными и инструкциями. И те и другие состоят из байт, проще говоря цифр. Когда-то договорились, что определенные сочетания цифр будут означать то или иное действие процессора, а во всем остальном это те же данные. Поэтому для процессора нет никакой разницы что выполнять - исполняемый файл linux или обычный текстовый файл. Оба могут быть успешно выполнены, вот только во втором варианте инструкции не имеют никакого смысла.

Чтобы система могла определить какие файлы нужно выполнять, а какие лучше не надо и был придуман флаг исполняемости. По сути, флаг исполяемости - это несколько байт в файловой системе, которые говорят нужно выполнять файл или нет, само содержимое файла никак не изменяется. Со скриптами все работает точно так же, только команды из файла выполняет не процессор, а интерпретатор, например, в bash скриптах - сама оболочка bash. Да и в обычных программ тоже есть свой загрузчик - это ld-linux.so.2.

Как сделать файл исполняемым в Linux?

В операционной системе Linux, для управления флагами файлов используется утилита chmod. Синтаксис вызова утилиты:

$ chmod категория действие флаг адрес_файла

  • Категория - флаги могут устанавливаться для трех категорий: владельца файла, группы файла и всех остальных пользователей. В команде они указываются символами u (user) g (group) o (other) соответственно.
  • Действие - может быть + (плюс), что будет значить установить флаг или - (минус) снять флаг.
  • Флаг - один из доступных флагов - r (чтение), w (запись), x (выполнение).

Например, чтобы сделать исполняемый скрипт в linux для владельца файла, достаточно выполнить:

chmod u+x адрес_файла

Не запускается программа в Linux? Исправляем за 2 минуты!

Этого в большинстве случаев бывает достаточно, но если мы хотим чтобы файл могли выполнять и другие пользователи, нужно указать также другие категории: g и o:

chmod ugo+x адрес_файла

Посмотреть флаги в терминале можно с помощью утилиты ls:

ls -l каталог_с_файлами

Не запускается программа в Linux? Исправляем за 2 минуты!

Это значит, что все флаги включены для всех категорий. Первое rwx - флаги владельца, второе - группы, а третье - для всех остальных. Если флаг не установлен, на его месте будет прочерк.

Снять флаг исполняемого файла очень просто. Используется та же команда только со знаком минус:

chmod u-x адрес_файла

Как установить флаг исполняемости в GUI

Вы можете сделать файл исполняемым в linux не только через терминал. Такая функциональность есть во всех файловых менеджерах. Возможно, на первых порах это будет для вас проще. Рассмотрим на примере файлового менеджера GNOME, Nautilus. Кликните правой кнопкой по нашему файлу программы или скрипта, чтобы открыть контекстное меню, затем выберите свойства:

Не запускается программа в Linux? Исправляем за 2 минуты!Дальше перейдите на вкладку права и установите галочку Разрешить выполнение файла как программы:

Не запускается программа в Linux? Исправляем за 2 минуты!

Готово, исполняемый файл linux может быть запущен системой, прямо из файлового менеджера.

Выводы

Вот и все, теперь вы знаете как сделать файл исполняемым в linux. И если нужно будет запустить скрипт или установщик из интернета, у вас не возникнет никаких проблем. Если остались вопросы, спрашивайте в комментариях!

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив