Как сделать файл (например, скрипт .sh) исполняемым, чтобы его можно было запускать с терминала

У меня есть 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 в Тунаре.

enter image description here

Терминал / Командный метод:

Вы можете либо использовать:

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

Чтобы добавить чтение и запись для пользователя, не затрагивая никаких других разрешений (например, разрешения на выполнение).

Этот веб-сайт имеет очень полезный маленький флажок в сетке, с помощью которого вы можете отметить нужные параметры, и он дает вам команду:

enter image description here

Однако не все возможные комбинации целесообразно использовать; основными из них являются следующие:

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 таким образом, все пользователи могут выполнить скрипт.
  • Имя файла имеет * добавляется к нему, чтобы указать, что он является исполняемым. Также имя файла меняет цвет на зеленый в большинстве систем.

make script executable


Запустите скрипт, не делая его исполняемым

Вы все еще можете запустить скрипт 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 в терминале.