Как да направите даден файл (например .sh скрипт) изпълним, така че да може да се стартира от терминал
Имам файл script.sh и типът на този файл е shell script file. Искам да направя този файл като application/x-executable файл. Как мога да го направя?
252
3
Можете да маркирате файла като изпълним:
След това можете да го изпълните по следния начин:
Ако искате да използвате друга команда за стартирането му, можете да добавите псевдоним:
Добавете я в края на файла:
Отворете нова терминална сесия или въведете
source ~/.bashrc
в терминала, за да приложите. След това просто използвайте новото име, за да стартирате скрипта.Съществуват два начина за създаване на изпълним файл:
Метод на потребителския интерфейс:
Отидете в раздела с разрешенията, след което поставете отметка в квадратчето `Изпълни: [ ] Разрешете изпълнението на файла като програма.
Метод на терминала/командата:
Можете да използвате:
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 за посочването на тези, които се използват често!
Моите местоимения са Той / Него
Работете:
За да го направите неизпълним, изпълнете:
За пример създадох файл
.sh
:След като напиша някакъв код в редактора vi, ще изляза от редактора vi: