У мене є файл script.sh і тип цього файлу - це файл оболонки. Я хочу зробити цей файл як файл application / x-виконуваний файл. Як я можу це зробити?
У мене є файл script.sh і тип цього файлу - це файл оболонки. Я хочу зробити цей файл як файл application / x-виконуваний файл. Як я можу це зробити?
Відповіді:
Ви можете позначити файл як виконуваний:
chmod +x filename.sh
Потім ви можете виконати його так:
./filename.sh
Якщо ви хочете використовувати іншу команду для запуску, ви можете додати псевдонім:
gedit ~/.bashrc
Додайте це в кінці файлу:
alias <new name>='/home/<full path to script>/filename.sh'
Відкрийте новий термінальний сеанс або введіть source ~/.bashrc
свій термінал для подання заявки. Потім просто використовуйте нове ім'я для запуску сценарію.
./filename.sh
а не просто filename.sh
?
filename
а не./filename
./filename.sh
вказує файл у поточному каталозі, а за допомогою filename.sh
вказує файл у поточному каталозі чи будь-якому каталозі PATH. Перше використання усуває будь-яку непевність щодо того, до якого файлу можна отримати доступ. У цьому випадку ви намагаєтеся виконати скрипт за допомогою bash або іншого інтерпретатора (в силу прийнятого #!/bin/bash
як перший рядок у вашому сценарії) лише ввівши ім'я файлу. Це використання вимагає, щоб вказано каталог. Крім того, ви можете спробувати, bash filename.sh
який, здається, працює з не вказаним каталогом.
Існує два способи зробити файл виконуваним:
Метод GUI:
Перейдіть на вкладку дозволів і поставте прапорець `Виконати: [] Дозволити виконання файлу як програми.
Термінальний / командний метод:
Ви можете використовувати:
cd /to/my/required/directory
Потім бігайте
chmod +x filename.extension
Або просто запустіть:
chmod +x /path/to/your/filename.extension
chmod
також є деякі більш вдосконалені варіанти:
Пробіли повинні показувати, що він розділений: - rwx --- ---
Перший набір ---
- Користувач. Друга - Група, а остання - Інша (хто-небудь інший)
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 - 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 використовуються рідко, крім in / tmp.
Дякуємо Ілмарі Каронен за вказівку на спільне використання!