Как да направите даден файл (например .sh скрипт) изпълним, така че да може да се стартира от терминал

Имам файл script.sh и типът на този файл е shell script file. Искам да направя този файл като application/x-executable файл. Как мога да го направя?

Решение

Можете да маркирате файла като изпълним:

chmod +x filename.sh

След това можете да го изпълните по следния начин:

./filename.sh

Ако искате да използвате друга команда за стартирането му, можете да добавите псевдоним:

gedit ~/.bashrc

Добавете я в края на файла:

alias ='/home//filename.sh'

Отворете нова терминална сесия или въведете source ~/.bashrc в терминала, за да приложите. След това просто използвайте новото име, за да стартирате скрипта.

Коментари (5)

Съществуват два начина за създаване на изпълним файл:

Метод на потребителския интерфейс:

Отидете в раздела с разрешенията, след което поставете отметка в квадратчето `Изпълни: [ ] Разрешете изпълнението на файла като програма.

Метод на терминала/командата:

Можете да използвате:

cd /to/my/required/directory

След това изпълнете

chmod +x filename.extension

Или просто стартирайте:

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

chmod има и някои по-разширени опции:

Интервалите показват, че тя е разделена: - rwx --- ---

Първият набор от --- е User. Вторият е Група, а последният е Друг (всеки друг).

r означава Read (четене), w - Write (запис) и 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.

След това ги събирате, за да получите желаната комбинация.

Така че, за да позволите на всички да го четат, но само на Групата да го изпълнява и на Потребителя да го пише (но по някаква причина да не го изпълнява), би било:

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 - Владелецът има всичко, а Групата и Другите могат да четат и изпълняват

700 - Владелец има всички

644 - Владелецът може да чете и пише, а Групата и Другите могат да четат

600 - Собственик може да чете и пише

И ако използвате нетривиални потребителски групи:

775 - Owner може да чете и пише, а Group и Other могат да четат

770 - Owner и Group имат всички, а Other може да чете и изпълнява

750 - Владелецът има всичко, а Групата може да чете и изпълнява

664 - Собственик и Група могат да четат и пишат, а Други могат само да четат

660 - Собственик и Група могат да четат и пишат

640 - Собственик може да чете и пише, а Група може да чете

777 и 666 се използват рядко, освен в /tmp.

Благодаря на Ilmari Karonen за посочването на тези, които се използват често!

Моите местоимения са Той / Него

Коментари (2)

Работете:

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
Коментари (0)