Как сделать файл исполняемым в Ubuntu Linux
Очень часто в инструкциях по установке игр в Linux или в других ситуациях необходимо сделать файл исполняемым. У новичков, особенно тех кто перешёл на Ubuntu с операционной системы Windows этот момент вызывает много вопросов. Давайте разберёмся в тонкостях и посмотрим как сделать всё правильно.
Для начала немного теории. в Windows, исторически ещё со времён DOS, было реализовано определение исполняемых файлов по их расширению. Например расширения .exe, .com, .bat говорили операционной системе, что эти файлы являются исполняемыми. В Linux и прочих unix системах ситуация иная. Здесь расширение файлов как таковые отсутствуют, т.е. конечно вы можете в имени файла использовать точку и три буквы в качестве расширения, но только из своих эстетических соображений. Для операционной системы это не будет иметь никакого значения.
Ну и главный вопрос как же операционная система определяет какой файл исполняемый, является программой, а какой нет. Всё очень просто — это устанавливается одним из битов прав на файл. Как и права на чтение и запись права на запуск файла так же могут быть назначены трём группам пользователей: 1 владельцу, группе файла и всем.
Установка прав на запуск
Для того чтобы сделать файл исполняемым в Ubuntu Linux необходимо выполнить в окне терминала простую команду:
Эта команда установит права на исполнение для всех пользователей.
Сделать аналогичное в графическом интерфейсе можно кликнув правой кнопкой по имени файла и выбрав пункт свойства:
Затем на вкладке права необходимо поставить галку «Разрешить выполнение файла как программы»
На этом процедура закончена и вы можете сразу запустить файл на исполнение дважды кликнув по нему левой клавишей мыши или выполнив в окне терминала команду (находясь в папке с исполняемым файлом):
Один мальчик подписался на наш канал в телеграме и получил +100 hp
Источник
Что эквивалентно «exe-файлу»?
Я не знаю, каково точное расширение исполняемого файла. Это .deb или .tar.gz ?
В Windows нет стандартного File-Extention, подобного файлу «.exe».
В Linux практически любой файл может быть исполняемым. Окончание файла просто описывает (но не обязательно), что или как файл «исполняется».
Например, скрипт оболочки заканчивается на .sh и «выполняется» через оболочку bash.
В своем вопросе вы спрашиваете .deb и .tar.gz. Хорошо. Файл .deb устанавливает программное обеспечение в вашей системе (пожалуйста, будьте осторожны!), А файл .tar.gz представляет собой сжатый файл, такой как .zip, который вы могли бы узнать по Окна.
Я бы суммировал систему следующим образом:
Любой файл, начинающийся с #! (называемый shebang или hashbang) в первой строке, является просто сценарием. Путь после шебанга — это путь к программе (исполняемому файлу), которая должна проанализировать скрипт, при условии, что для файла было установлено разрешение на выполнение chmod a+x filename .
Поэтому, ответьте на свой оригинальный вопрос, расширения нет, или редко, это .elf или .bin .
Это сделано вики-сообществом, поэтому любой может добавить запись.
Концепция исполняемого файла отличается в Unix / Linux от Windows.
Windows
Все, что заканчивается .exe или .com становится исполняемым файлом.
Linux / Unix
Каждый файл имеет исполняемый бит, поэтому любой файл может быть выполнен, в отличие от Windows. Чтобы увидеть, является ли файл исполняемым, вы можете проверить его свойства (вкладка «Разрешения») или даже увидеть их помеченные в терминале (все они отмечены *).
Даже текстовые файлы (например, сценарии оболочки) могут иметь свои исполняемые биты и запускаться как единое целое.
Чтобы узнать, что операционная система UNIX думает о типе конкретного файла, вы используете команду file:
В приведенном выше примере я указываю путь к программе ‘ls’, вы должны заменить путь к вашему файлу.
Файл сценария будет выглядеть так:
Случайный текстовый файл:
Он даже достаточно умен, чтобы правильно идентифицировать программу Windows, если у вас есть одна, лежащая на вашем компьютере с UNIX:
И когда он не может понять, что это за файл (но может открыть его), он называет это данными:
Выполнение файла в Linux вообще не связано с именем файла или расширением. Любой файл может быть потенциально выполнен при условии, что он обрабатывается binfmt механизмом ядра (и что для него установлены разрешения на выполнение).
Наиболее распространенным форматом для исполняемого файла является ELF , хотя некоторые ядра могут быть скомпилированы для поддержки старого a.out формата. (Для получения полной технической информации, binfmt_elf.c это где искать.)
Другим распространенным механизмом является «притон» система, обрабатывается binfmt_script , который ищет #!/path/to/interpreter в начале файла.
binfmt_misc позволяет для регистрации других обработчиков, как описано здесь .
Если вам нравится заниматься программированием ядра, вы даже можете написать свой собственный .
Хотя это и не связано напрямую, file команда должна указать вам, является ли файл исполняемым файлом ELF или чем-то еще.
Соглашение об именах не имеет ничего общего с состоянием исполняемого файла (кроме случаев, когда он используется для binfmt_misc регистрации). Они просто соглашения. Как правило, .exe файл, найденный в Linux, может быть моно-приложением , получившим .exe расширение в соответствии с соглашением, исходящим из мира Windows / .Net.
Другой аспект, который может возникнуть, когда вы хотите «запустить» файл, — это иметь инструмент проводника, который использует расширения регистра, чтобы иметь возможность запустить программу, которая откроет эти файлы. Это то, что произойдет, если вы дважды щелкнете по a .txt , .tar.gz или .deb , например: файлы не являются ни исполняемыми, ни исполняемыми, но то, что вы используете для двойного щелчка, выбирает, какой исполняемый файл нужно открыть, чтобы открыть эти файлы.
В Windows .exe-файл — это компьютерный файл, который заканчивается расширением «.exe», которое обычно называют исполняемым файлом. Когда вы нажимаете exe-файл, встроенная подпрограмма автоматически выполняет код, который может привести в движение несколько функций. EXE-файлы обычно используются для установки файлов в операционной системе Windows.
Кроме того, у вас есть файлы .tar, обычно известные как сжатые файлы. В версиях Linux, таких как Ubuntu, функции используются в различных дистрибутивах программного обеспечения, причем большая часть исходного кода программного обеспечения доступна в формате tar.gz. Из этого можно предположить, что tar. gz — это форма хорошо известного формата .tar, который используется для архивирования.
В Ubuntu, с другой стороны, формат файла .deb больше похож на файл .exe в windows. Когда вы открываете его, центр программного обеспечения обрабатывает его код и устанавливает содержащуюся в нем программу, такую как исполняемый файл.
Даже если вы по-прежнему можете устанавливать программное обеспечение и пакеты из исходного формата (tar.gz), наиболее подходящим форматом для установки программного обеспечения является .deb. Возьмем, к примеру, Ubuntu Software Center; все приложения, которые он содержит, на самом деле являются файлами .deb. В целом, в linux почти каждый формат файла (включая .deb и tar.gz, а также хорошо известные файлы bash .sh) может вести себя как исполняемый файл, так что вы можете установить пакеты или программное обеспечение с этим.
В Windows нет эквивалента расширению exe, указывающему на то, что файл является исполняемым. Вместо этого исполняемые файлы могут иметь любое расширение и, как правило, вообще не иметь расширения .
Linux / Unix использует права доступа к файлам , чтобы указать , если файл может быть выполнен. В частности, есть разрешение на выполнение файла, которое сообщает системе, что этот файл разрешено выполнять. Однако отсутствие этого разрешения не означает, что файл не является исполняемым; просто, что соответствующий пользователь не имеет права пытаться выполнить его. Точно так же наличие этого разрешения не всегда указывает на то, что файл является допустимым исполняемым файлом.
Linux / Unix имеет двоичный формат исполняемых файлов, называемый ELF, который эквивалентен двоичным исполняемым форматам PE (Windows) или MZ / NE (DOS), которые обычно имеют расширение .exe.
Тем не менее, другие типы файлов могут быть исполняемыми, в зависимости от оболочки. Как правило, если вы пытаетесь выполнить файл, который система не распознает как двоичный исполняемый файл (например, формат ELF), то он интерпретируется текущим интерпретатором оболочки. Это выполняет тот же эффект, что и пакетные файлы в Windows или DOS, за исключением того, что опять-таки это не расширение, которое определяет его тип или способ его выполнения.
Файлы оболочки могут необязательно начинаться с хеш-бенга (первые два символа в файле #! сопровождаются путем к интерпретатору), и в этом случае вместо интерпретации остальной части файла с помощью текущего интерпретатора оболочки он может запустить альтернативную оболочку или интерпретатор для выполнить файл. Таким образом, вы можете иметь сценарий на любом интерпретируемом языке и при этом запускать его с правильным интерпретатором при попытке выполнения сценария.
Файлы EXE и DLL являются переносимыми исполняемыми файлами. Они основаны на Unix-файлах PE / COFF.
Прочитайте http://en.wikipedia.org/wiki/Portable_Executable для получения дополнительной информации.
В Ubuntu у вас нет определенного расширения для исполняемого файла. Обычно это файлы, которые названы в честь приложения, к которому они относятся.
Важным фактором является то, что в этих файлах установлен исполняемый бит. Если у вас есть цветной терминал, вы заметите, что это другой цвет при использовании ls .
В файловой системе Unix бинарные исполняемые файлы обычно хранятся в собственном месте.
- / bin (основные двоичные файлы)
- / sbin (системные двоичные файлы)
- / usr / bin (двоичные файлы приложения)
тогда как другие ресурсы приложения могут храниться в / usr / lib / или / usr / share /
Файл deb более корректно соответствует файлу msi в windows (то есть установщику пакета).
Источник
Как в Linux сделать файл исполняемым?
Весьма часто в инструкциях по установке игр в Linux или в других ситуациях необходимо сделать файл выполняемым. У новичков, особенно тех кто перешёл на Ubuntu с операционной системы Windows этот момент возбуждает много вопросов. Давайте разберёмся в тонкостях и посмотрим как сделать всё правильно. Для начала чуть-чуть теории. в Windows, исторически ещё со времён DOS, было реализовано определение исполняемых файлов по их продолжению.
В Linux и других unix системах ситуация иная. Здесь расширение файлов как таковые отсутствуют, т.е. безусловно вы можете в имени файла использовать точку и три буквы в качестве расширения, но только из собственных эстетических соображений. Для операционной системы это не будет иметь никакого значения. Ну и главный вопрос как же операторная система определяет какой файл исполняемый, является программой, а какой нет. Всё очень элементарно — это устанавливается одним из битов прав на файл.
Исполняемые файлы в Linux
В вопросах исполняемых файлов, то есть, когда по простому, обычных программ, Ubuntu кардинально отличается от Windows. В Windows исполняемые компданные имеют расширение exe (в основном), а внутри представляют из себя нечитаемый набор байтов. А в Ubuntu выполняемым может быть даже текстовый файл. Сразу скажу, что exe — это программы для Windows и в Ubuntu они не трудятся без Wine (приложения для запуска исполняемых файлов Windows в Linux), но вообще говоря и в Wine они трудятся далеко не всегда.
Итак, что же такое исполняемый файл с точки зрения Ubuntu? Практически это любой файл, который помечен, как исполняемый и который Ubuntu сможет запустить на исполнение. Означает это вот что: у каждого файла есть специальное свойство-переключатель, никак не зависящее ни от имени, ни от охватываемого, отвечающее за исполняемость. Если файл помечен, как исполняемый, то вообще говоря он таковым и представляется, а если не помечен — то это обычный файл с данными и напрямую запустить его на выполнение нельзя. Иное дело, что не любой файл, помеченный как исполняемый, Ubuntu сможет выполнить, хотя в запасе Ubuntu есть масса методов запуска файлов с совершенно различным содержимым.
Характерные черты исполняемых файлов в Linux
Пользователи, активно применяющие в повседневной работе операционную систему Windows, свыкнули к тому, что программы имеют расширение «.exe». Такие файлы содержат скомпилированный программный код, или иными словами – последовательность байтов, которая загружается в оперативную память и выполняется процессором. Linux реализует асбсолютно другой подход. Ранее, изучая написание скриптов командного интерпретатора Bash, мы уже поспели рассмотреть пример создания исполняемого файла. Он в отличие от Windows представляет собой обыкновенный текстовый документ с набором команд. Его особенностью является то, что перед основным содержимым дополняется специальный комментарий, говорящий операционной системе Linux, какую программу использовать для интерпретации. Кроме скрипта, исполняемым файлом является и скомпилированная программа. Таким образом, все файлы в Linux смогут быть, как обычными текстовыми документами, так и исполняемыми программами. Отличие лишь в специальных флагах и преимуществах доступа операционной системы (множество элементов, находящихся в отношениях и связях друг с другом, которое образует определённую целостность, единство).
Назначение прав для запуска файла в Linux
Сделать файл вразумительным для запуска можно с помощью графической оболочки. Нажмите по ярлыку правой кнопкой мыши. В контекстуальном меню выберите пункт «свойства». Открывшееся окно должно содержать вкладку «преимущества», в котором нужно активировать пункт «разрешить выполнение файла как программы». Данный метод будет отличаться в зависимости от дистрибутива Linux и графической оболочки. Также возможно приставить права запуска через консоль. Для этого используется команда chmod. Пример, презентованый ниже, устанавливает право выполнения для владельца файла и его группы. Вы можете скопировать Bash-скрипт из первоначального примера в файл и провести с ним данную операцию.
chmod ug+x games-dialog
Установка прав на пуск в Linux
Для того чтобы сделать файл исполняемым в Ubuntu Linux необходимо осуществить в окне терминала простую команду:
chmod +x имя_файла
sudo chmod +x имя_файла
Вот и все, сейчас вы знаете как сделать файл исполняемым в Linux. И если нужно будет запустить script или установщик из интернета, у вас не возникнет никаких проблем. Если остались вопросы, спрашивайте в комментах!
Источник