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

У меня есть файл script.sh, и тип этого файла - файл шеллскрипта. Я хочу сделать этот файл как application/x-исполняемый файл. Как я могу это сделать?

4 ответа

Решение

Вы можете пометить файл как исполняемый:

chmod +x filename.sh

Затем вы можете выполнить это так:

./filename.sh

Если вы хотите использовать другую команду для запуска, вы можете добавить псевдоним:

gedit ~/.bashrc

Добавьте это в конец файла:

alias <new name>='/home/<full path to script>/filename.sh'

Откройте новый сеанс терминала или введите source ~/.bashrc в вашем терминале подать заявку. Затем просто используйте новое имя, чтобы запустить скрипт.

Есть два способа сделать файл исполняемым:

GUI Метод:

Перейдите на вкладку "Права", затем установите флажок "Выполнить: [ ] Разрешить выполнение файла как программы".

введите описание изображения здесь

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

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

cd /to/my/required/directory

Тогда беги

chmod +x filename.extension

Или просто запустите:

chmod +x /path/to/your/filename.extension

chmod также есть более продвинутые опции:

Пробелы должны показать, что это разделено: - rwx --- ---

Первый набор --- Пользователь. Вторым является Группа, а последним является Другой (кто-либо еще)

r означает "Чтение", "w" - "Запись" и "x" - "eXecute".

Таким образом, чтобы позволить всем читать это, но только Группа для выполнения и Пользователь для чтения и записи (но по какой-то причине не выполнять) будут:

-rw- rx- r-- Но это будет добавлено к команде как:

chmod +rw-rx-r-- /path/to/file.extension

chmod Также можно сделать это в цифрах. Он основан на двоичном коде (я думаю, что это 1,2 и 4)

Итак, есть эти цифры:

Выполнить пользователем 100, Выполнить по группе 010, Выполнить другим - 001

Написать пользователем 200, Написать по группе 020, Написать другим есть 002,

Читать пользователем 400, Читать группой 040, Читать другим есть 004,

Затем вы складываете их вместе, чтобы получить желаемую комбинацию.

Таким образом, разрешить всем читать это, но только Group для выполнения и User для записи (но по какой-то причине не выполнить) будет:

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.

Спасибо Ilmari Karonen за то, что он указал на те, которые в общем использовании!

Бежать:

chmod +x /path/to/file.sh

Чтобы сделать его неисполнимым, запустите:

chmod -x /path/to/file.sh

Например я создал .sh файл:

vi tester12.sh

После того, как я напишу некоторый код в редакторе vi, я выйду из редактора vi:

:wq!
chmod +x tester12.sh
./tester12.sh

Разрешить всем пользователям запускать ваш скрипт

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

      $ 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.txt
echo Hello World

$ bash file_command.txt
Hello World

ЗАМЕТКИ:

  • Сначала мы создаем скрипт, содержащий echo Hello World.
  • Затем мы подтверждаем скрипт под названием file_command.txtправильно.
  • Наконец, мы запускаем скрипт, вызывая и передавая ему имя скрипта. bashкоманда фактически хранится как /bin/bashи это исполняемый файл на всех системах Ubuntu.
  • Создание файла команд избавляет вас от добавления shebang #!/bin/bashкак первая строка в скрипте.
  • Создание файла команд избавляет вас от необходимости делать его исполняемым с помощью chmod +xили же chmod a+x.
Другие вопросы по тегам