Як було сказано в попередніх відповідях, забарвлення полягає у тому, щоб вказати, чи вважаються файли виконаними чи ні.
Дозвіл "Execute" (= біт) в Linux та більшості інших Unixes має одне значення для файлів та інше для каталогів.
Для каталогів, якщо ви виконали дозвіл на нього, ви можете побачити його вміст. Якщо ви цього не зробите, ви не можете записати компакт-диски до каталогу, а також не можете перераховувати файли в ньому, навіть якщо у вас є доступ і для читання, і для запису.
Для звичайних файлів (на відміну від файлів пристрою та інших спеціальних типів файлів Unix) біт виконання означає, що якщо ви використовуєте ім'я файлу в командному рядку, O / S (а точніше: оболонка) спробує "виконати" або запустити файл як команда. І навпаки, якщо у вас немає дозволу на виконання файлу, ви не можете запустити його з командного рядка.
Отже, якщо ви, наприклад, видалите дозвіл x у всіх користувачів файлу / bin / cat (що є командою Unix), ви самі або будь-хто інший і будь-яка програма, яка намагається використовувати команду "cat", не вдасться.
Це команди OS, такі як "cat" та "grep", які виконують файли, що виконуються, зазвичай в / * / bin / каталоги - / bin, / usr / bin, / sbin, / usr / sbin тощо.
І тоді можуть бути некомпільовані, інтерпретовані сценарії, написані або якоюсь мовою програмування, наприклад, Python або скриптами оболонки (в основному, команди, які ви записуєте так, ніби з командного рядка під час передачі на сервер).
Тепер, коли ви встановлюєте біт виконання файлу сценарію (наприклад, файл foobar), і намагаєтеся виконати його вашою оболонкою: "./foobar", оболонка намагається проаналізувати файл і знайти правильну програму для передачі скрипту до.
Ця оболонка робить, намагаючись прочитати перший рядок файлу і знайшовши позначення "shebang", яка програма повинна запускатися.
Отже, якщо ваш foobar був текстовим файлом із таким же першим рядком:
#!/usr/bin/python
Тоді оболонка намагатиметься виконати команду:, в /usr/bin/python foobar
основному викликаючи інтерпретатора python і передаючи ім'я вашого файлу foobar як сценарій Python.
Якщо shell не знайде такого першого рядка у вашому файлі, то він спробує сам виконати foobar, як якщо б він містив команди оболонки.
Якщо файл з виконуваним бітом не містить дійсних команд оболонки, оболонка просто скаржиться.
Так ось що трапилося б, якщо у вас є файли TTF з бітом exec і намагаєтеся запустити його з командного рядка:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
Отже, для шрифтів це, мабуть, акуратніше, якщо біт exec не встановлений, але насправді нічого не змінює.
PS Просто деякі сторонні відомості. Якщо ви видалите біт виконання з якоїсь команди чи скрипту, він все одно може бути переданий будь-якій іншій програмі як аргумент. Якщо інша програма знає, як виконати свою команду, ваше видалення біта exec насправді не мало значення. Наприклад, сценарій foobar Python все ще буде виконуватися інтерпретатором Python, якби ви просто зробили це з командного рядка:
$python foobar
замість
$./foobar
Те саме з прикладом системних команд, таких як "кішка". Якщо ви видалите біт exec з "cat", ви все одно можете передати його в новий екземпляр оболонки для виконання:
$sh -c 'cat myfile'
буде працювати, навіть якщо ви видалили exec біт з кота та
$cat myfile
не робить.