Как сделать файл (например, скрипт.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
.