- How to make a file (e.g. a .sh script) executable, so it can be run from a terminal
- 4 Answers 4
- Как сделать файл исполняемым в Ubuntu Linux
- Как определяется исполняемый файл linux
- Установка прав на запуск файла в консоли Linux
- Сделать файл исполняемым в Ubuntu
- Сделать файл исполняемым в KDE
- Заключение
- Делаем файл исполняемым в Linux
- Что означает исполняемость?
- Как сделать файл исполняемым
- Как установить флаг исполняемости в GUI
How to make a file (e.g. a .sh script) executable, so it can be run from a terminal
I have a script.sh file and type of this file is shellscript file. I want to make this file as application/x-executable file. How can I make it?
It is not a duplicate, because I have asked specifically about making it application/x-executable. The other question just asks for opening sh file in terminal.
4 Answers 4
You can mark the file as executable:
You can then execute it like this:
If you want to use a different command to start it, you can add an alias:
Add this at the end of the file:
Open a new terminal session or type source ~/.bashrc in your terminal to apply. Then simply use the new name to start the script.
Do you know how to use sudo command after entering the command as: «alias command1 = ‘/home/user_name/dir/script.sh’. In mine, it works without sudo, but not with it.
@user1993 Generally, using ./filename.sh specifies a file in the current directory and using filename.sh specifies a file in the current directory or any directory of PATH. The first usage removes any uncertainty as to which file is accessed. In this case, you are attempting to execute the script with bash or another interpreter (by virtue of assumed #!/bin/bash as first line in your script) just by entering the filename. This usage requires the directory is specified. Alternatively, you can try bash filename.sh which seems to work with unspecified directory.
There are two ways of making a file executable:
Right-click the file and select Properties. Go to the permissions tab, then tick the box Execute: [ ] Allow executing file as program or in Nautilus Program: [ ] Allow this file to run as a program in Thunar.
Terminal / Command method:
chmod +x filename.extension
chmod +x /path/to/your/filename.extension
chmod does also have some more advanced options:
The spaces are to show that it is split up: — rwx — —
The first set of — is User. The second is Group and the last is Other (anyone else)
r stands for Read, w for Write and x for eXecute.
So to allow everyone to read it, but only Group to execute and User to read and write it (but for some reason not execute) would be:
-rw- rx- r— But this would be added to the command as:
chmod +rw-rx-r— /path/to/file.extension
chmod also can do this in numbers. It is based on binary (I think, as it is 1,2 and 4)
So there are these numbers:
Execute by user is 100 . Execute by group is 010 . Execute by other is 001 .
Write by user is 200 . Write by group is 020 . Write by other is 002 .
Read by user is 400 . Read by group is 040 . Read by other is 004 .
Then you add these together to get the desired combination.
So to allow everyone to read it, but only Group to execute and User to write it (but for some reason not execute) would be:
400 + 040 + 004 and 010 and 200
That adds up to 600 + 050 + 004 = 654.
You could then run the command.
chmod +654 /path/to/file.extension to set it.
And to set all permissions you can type:
chmod +rwxrwxrwx /path/to/file.extension
Or (this is a bit easier to write, but harder to remember each one):
chmod +777 /path/to/file.extension
chmod -777 /path/to/file.extension
To take all permissions away from everyone.
chmod +300 /path/to/file.extension
To add read and write for user, without affecting any other permissions (e.g. Execute permissions).
This website has a very useful little grid checkbox thing, whereby you can tick the options you want and it gives you the command:
However, not all the possible combinations are sensible to use; the main ones that are used are the following:
755 — Owner has all, and Group and Other can read and execute
644 — Owner can read and write, and Group and Other can read
600 — Owner can read and write
And, if you’re using non-trivial user groups:
775 — Owner can read and write, and Group and Other can read
770 — Owner and Group have all, and Other can read and execute
750 — Owner has all, and Group can read and execute
664 — Owner and Group can read and write, and Other can just read
660 — Owner and Group can read and write
640 — Owner can read and write, and Group can read
777 and 666 are rarely used, except in /tmp.
Thanks Ilmari Karonen for pointing out the ones in common usage!
Как сделать файл исполняемым в Ubuntu Linux
Очень часто в инструкциях по установке игр в Linux или в других ситуациях необходимо сделать файл исполняемым. У новичков, особенно тех кто перешёл на Ubuntu с операционной системы Windows этот момент вызывает много вопросов. Давайте разберёмся в тонкостях и посмотрим как сделать всё правильно.
Как определяется исполняемый файл linux
Для начала немного теории. В Windows, исторически ещё со времён DOS, было реализовано определение исполняемых файлов по их расширению. Например расширения .exe, .com, .bat говорили операционной системе, что эти файлы являются исполняемыми. В Linux и прочих unix системах ситуация иная. Здесь расширение файлов как таковые отсутствуют, т.е. конечно вы можете в имени файла использовать точку и три буквы в качестве расширения, но только из своих эстетических соображений. Для операционной системы это не будет иметь никакого значения.
Ну и главный вопрос как же операционная система определяет какой файл исполняемый, является программой, а какой нет. Всё очень просто — это устанавливается одним из битов прав на файл. Как и права на чтение и запись права на запуск файла так же могут быть назначены трём группам пользователей:
Таким образом, чтобы сделать файл исполняемым в Linux нужно назначить ему права на запуск в качестве программы. Далее операционная система определяет тип файла по заголовку и в зависимости от того какого типа заголовок файла происходит запуск соответствующего процесса. Например если исполняемый файл является двоичным кодом программы то он выполняется операционной системой, а если это скрипт bash или python, то запускается соответствующий интерпретатор и ему передаётся содердержимое файла на выполнение.
Установка прав на запуск файла в консоли Linux
Для того чтобы сделать файл исполняемым в Ubuntu Linux необходимо выполнить в окне терминала простую команду:
Эта команда установит права на исполнение для всех пользователей.
$ls -la итого 8 drwxrwxr-x 2 dkplayer dkplayer 4096 окт. 30 21:57 . drwxr-xr-x 24 dkplayer dkplayer 4096 окт. 30 21:57 .. -rw-rw-r-- 1 dkplayer dkplayer 0 окт. 30 21:57 test1 $chmod +x test1 $ls -la итого 8 drwxrwxr-x 2 dkplayer dkplayer 4096 окт. 30 21:57 . drwxr-xr-x 24 dkplayer dkplayer 4096 окт. 30 21:57 .. -rwxrwxr-x 1 dkplayer dkplayer 0 окт. 30 21:57 test1
Сделать файл исполняемым в Ubuntu
Сделать аналогичное в графическом интерфейсе можно кликнув правой кнопкой по имени файла и выбрав пункт свойства:
Затем на вкладке права необходимо поставить галку «Разрешить выполнение файла как программы»
На этом процедура закончена и вы можете сразу запустить файл на исполнение дважды кликнув по нему левой клавишей мыши или выполнив в окне терминала команду (находясь в папке с исполняемым файлом):
Сделать файл исполняемым в KDE
В KDE сделать файл исполняемым так же просто как и в Gnome или XFCE, достаточно просто кликнуть правой кнопкой мыши по файлу и выбрать в контекстном меню пункт свойства.
Затем в свойствах на вкладке права необходимо установить галочку в поле «Является выполняемым». И нажав кнопку «ОК» применить права к файлу.
Заключение
Теперь вы знаете что такое в Linux исполняемый файл и как сделать файл исполняемым в Linux с помощью консольной команды или графического интерфейса. В инструкции мы рассмотрели установку бита на выполнение с использованием рабочего стола Ubuntu, однако в Linux бывают разные графические среды и в этих средах методы установки прав доступа и прав на выполнения могут немного отличаться. А вот способ как сделать файл исполняемым с помощью консольной команды универсален для всех дистрибутивов Linux и в большинстве других unix-подобных системах.
Один мальчик подписался на телеграм-канал Игры в Linux и получил бесплатную игру в Steam! Новости из мира игр в Linux, свежие обзоры игр и полезные инструкции всегда под рукой!
Делаем файл исполняемым в Linux
Чем отличается Linux от Windows в плане исполнений файлов, так это тем, что первая система определяет выполняемые файлы программными не по расширению, а по специальному флагу исполняемости. Так у каждого из них есть три режима исполняемости: чтение, исполнение и запись. Именно эти режимы определяют, что система может делать с конкретным файлом. Когда пользователь скачивает различные установщики из интернета или создает скрипт, то по умолчанию ему присваиваются следующие режимы – чтение и запись. Одним словом, пользователь не сможет сделать с такой программой ничего, так как с ним нужно сделать кое-что еще.
Что означает исполняемость?
Но для начала нужно разобраться с таким вопросом, как: что такое исполняемость и что это вообще означает? Начнем с программы, являющейся набором инструкций, выполняемых процессором над совокупностью данных с целью получения нужного результата. Для процессора не существует разницы между инструкциями и данными.
И первые, и вторые состоят из цифр – байт. То есть, определенное сочетание цифр будет означать для процессора необходимость выполнения конкретного действия. Для процессора нет принципиальной разницы, какой процесс выполнять – данные операционной системы или текстовый файл. И первый, и второй будут выполнены, вот только в случае с текстовым необходимость в инструкциях фактически отпадает.
Для понимания системой, какие должны быть выполнены по инструкции, а какие выполнять не нужно, и были придуманы флаги исполняемости. Фактически содержимое никак не изменяется в зависимости от установленного класса исполняемости – отличие сводится только к нескольким строчкам. Со скриптами все работает точно так же, только команды выполняет не процессор, а интерпретатор, например, в bash скриптах — сама оболочка bash. Да и в обычных программ тоже есть свой загрузчик — это ld-linux.so.2.
Как сделать файл исполняемым
В системе Linux предусмотрена специальная утилита, которая позволяет управлять флагами, которая получила название chmod. Для вызова этой утилиты необходимо задействовать синтаксис:
$ chmod категория действие флаг адрес_файла
И здесь необходимо учитывать следующее:
Флаг — один из доступных — r (чтение), w (запись), x (выполнение).
Категория — могут устанавливаться для трех категорий: владельца файла, группы данных и всех остальных пользователей. В команде они указываются символами u (user) g (group) o (other) соответственно.
Действие — может быть + (плюс), что будет значить установить флаг или — (минус) снять флаг.
Таким образом, чтобы сделать исполняемым скрипт в Linux, пользователю необходимо выполнить:
Зачастую уже этого достаточно, чтобы сделать его исполняемым, но если необходимо наделить других пользователей полномочиями исполнять эти файлы, еще необходимо добавить:
Чтобы посмотреть их в терминале достаточно воспользоваться утилитой ls:
Флаги включены для всех категорий. Первое rwx — флаги владельца, второе — группы, а третье — для всех остальных. Если он не установлен, на его месте будет прочерк.
Снять флаг исполняемого файла очень просто. Используется та же команда только со знаком минус:
Дальше рассмотрим вопрос установки управляемости в GUI.
Как установить флаг исполняемости в GUI
Для новичков эта инструкция окажется проще. Рассмотрим на примере менеджера GNOME, Nautilus. Кликните правой кнопкой по нашему объекту программы или скрипта, чтобы открыть контекстное меню, затем выберите свойства:
Переходим на вкладку права и устанавливаем галочку «Разрешить выполнение файла как программы»:
Теперь он будет запущен системой непосредственно из менеджера. Вот и вся инструкция. Теперь с запуском программы или скрипта из интернета у вас не возникнет трудностей.