У меня есть script.sh файл и тип этого файла - файл shellscript. Я хочу сделать этот файл как application/x-исполняемый файл. Как я могу это сделать?
Вы можете пометить файл как исполняемый:
chmod +x filename.sh
Затем вы можете выполнить это следующим образом:
./filename.sh
Если вы хотите использовать другую команду для его запуска, вы можете добавить псевдоним:
gedit ~/.bashrc
Добавьте это в конец файла:
alias <new name>='/home/<full path to script>/filename.sh'
Откройте новый сеанс терминала или введите source ~/.bashrc
в вашем терминале, чтобы подать заявку.Затем просто используйте новое имя для запуска скрипта.
Существует два способа сделать файл исполняемым:
Метод графического интерфейса пользователя:
Щелкните правой кнопкой мыши файл и выберите пункт Свойства.Перейдите на вкладку разрешения, затем установите флажок Execute: [ ] Allow executing file as program
или в Наутилусе Program: [ ] Allow this file to run as a program
в Тунаре.
Терминал / Командный метод:
Вы можете либо использовать:
cd /to/my/required/directory
Тогда беги
chmod +x filename.extension
Или просто убежать:
chmod +x /path/to/your/filename.extension
chmod
также имеет некоторые более продвинутые опции:
Пробелы предназначены для того, чтобы показать, что он разделен: - rwx --- ---
Первый набор ---
является Пользователем. Второй - Группа, а последний - Другой (кто-либо еще)
r означает чтение, w - запись, а x - выполнение.
Таким образом, разрешить всем читать его, но только группе выполнять, а пользователю читать и записывать его (но по какой-то причине не выполнять) было бы:
-rw- rx- r--
Но это было бы добавлено в команду как:
chmod +rw-rx-r-- /path/to/file.extension
chmod
также можно сделать это в цифрах. Он основан на двоичном коде (я думаю, так как это 1,2 и 4)
Итак, вот эти цифры:
Выполняется пользователем является 100
.Выполнить по группе - это 010
.Выполнить другим является 001
.
Запись пользователем - это 200
.Запись по группам - это 020
.Написать другим - это 002
.
Прочитанный пользователем является 400
.Чтение группой - это 040
.Прочитанный другими - это 004
.
Затем вы складываете их вместе, чтобы получить желаемую комбинацию.
Таким образом, разрешить всем читать его, но только группе выполнять и пользователю записывать его (но по какой-то причине не выполнять) было бы:
400 + 040 + 004
и 010
и 200
Это в сумме дает 600 + 050 + 004 = 654.
Затем вы могли бы выполнить команду.
chmod +654 /path/to/file.extension
чтобы установить его.
И чтобы установить все разрешения, вы можете ввести:
chmod +rwxrwxrwx /path/to/file.extension
Или (это немного легче написать, но труднее запомнить каждое из них):
chmod +777 /path/to/file.extension
Наконец, вы можете сделать:
chmod -777 /path/to/file.extension
Чтобы отобрать у всех все разрешения.
И:
chmod +300 /path/to/file.extension
Чтобы добавить чтение и запись для пользователя, не затрагивая никаких других разрешений (например, разрешения на выполнение).
Этот веб-сайт имеет очень полезный маленький флажок в сетке, с помощью которого вы можете отметить нужные параметры, и он дает вам команду:
Однако не все возможные комбинации целесообразно использовать; основными из них являются следующие:
755 - Owner
имеет все, и Group
и Other
может читать и выполнять
700 - Owner
имеет все
644 - Owner
умеет читать и писать, и Group
и Other
могу читать
600 - Owner
умеет читать и писать
И, если вы используете нетривиальные группы пользователей:
775 - Owner
умеет читать и писать, и Group
и Other
могу читать
770 - Owner
и Group
есть все, и Other
может читать и выполнять
750 - Owner
имеет все, и Group
может читать и выполнять
664 - Owner
и Group
умеет читать и писать, и Other
могу просто прочитать
660 - Owner
и Group
умеет читать и писать
640 - Owner
умеет читать и писать, и Group
могу читать
777 и 666 используются редко, за исключением /tmp.
Спасибо Илмари Каронен для указывая на те, что в обычном употреблении!
Бежать:
chmod +x /path/to/file.sh
Чтобы сделать его неисполняемым, запустите:
chmod -x /path/to/file.sh
Например, я создал .sh
файл:
vi tester12.sh
После того, как я напишу некоторый код в vi editor, я выйду из vi editor:
:wq!chmod +x tester12.sh./tester12.sh
Позвольте всем пользователям запускать ваш скрипт
Как уже говорилось, вы можете установить бит выполнения файла, чтобы сделать его исполняемым с помощью chmod +x
. Но вы также можете использовать chmod a+x
:
$ ll file_command.txt-rw-rw-r-- 1 rick rick 17 Sep 19 08:55 file_command.txt$ chmod a+x file_command.txt$ ll file_command.txt-rwxrwxr-x 1 rick rick 17 Sep 19 08:55 file_command.txt*
записи:
- Сценарий не обязательно должен заканчиваться словами
.sh
это может закончиться.txt
как показано здесь, или вообще не имеют расширения. - Вместо того, чтобы просто
+x
(только вы можете выполнить скрипт), используйтеa+x
таким образом, все пользователи могут выполнить скрипт. - Имя файла имеет
*
добавляется к нему, чтобы указать, что он является исполняемым. Также имя файла меняет цвет на зеленый в большинстве систем.
Запустите скрипт, не делая его исполняемым
Вы все еще можете запустить скрипт bash, не делая его исполняемым. Например:
$ echo "echo Hello World" > file_command.txt$ cat file_command.txtecho Hello World$ bash file_command.txtHello World
записи:
- Сначала мы создаем скрипт, содержащий
echo Hello World
. - Затем мы подтверждаем вызов скрипта
file_command.txt
это правильно. - Наконец, мы запускаем скрипт, вызывая
bash
и передаем ему имя скрипта. Тоbash
команда на самом деле хранится как/bin/bash
и это исполняемый файл во всех системах Ubuntu. - Создание файла команд избавляет вас от необходимости добавлять дело
#!/bin/bash
как первая строка в скрипте. - Создание файла команд избавляет вас от необходимости делать его исполняемым с помощью
chmod +x
илиchmod a+x
.
связано с Как мне запустить файлы .sh в терминале?
Возможный дубликат Как мне запустить файлы .sh?
Это не дубликат, потому что я специально спросил о том, чтобы сделать его application/ x-executable. Другой вопрос просто требует открытия файла sh в терминале.