Như các câu trả lời trước đã nói, tô màu là để cho biết các tập tin được coi là thực thi hay không.
Quyền "thực thi" (= bit) trong Linux và hầu hết các Unix khác có một nghĩa cho các tệp và một nghĩa khác cho các thư mục.
Đối với các thư mục, nếu bạn đã thực thi quyền đối với nó, bạn có thể xem nội dung của nó. Nếu bạn không, bạn không thể cd vào thư mục, bạn cũng không thể liệt kê các tệp trong đó, ngay cả khi bạn có cả quyền truy cập đọc và ghi vào thư mục.
Đối với các tệp thông thường (trái ngược với các tệp thiết bị và các loại tệp Unix đặc biệt khác), bit thực thi có nghĩa là nếu bạn sử dụng tên tệp trên dòng lệnh, O / S (hay chính xác hơn là: shell) sẽ cố gắng "thực thi" hoặc chạy các tập tin như là một lệnh. Ngược lại, nếu bạn không có quyền thực thi trên tệp, bạn không thể chạy nó từ dòng lệnh.
Vì vậy, nếu bạn, ví dụ, xóa quyền x khỏi tất cả người dùng trên tệp / bin / cat (là lệnh Unix), chính bạn hoặc bất kỳ ai khác và bất kỳ chương trình nào cố gắng sử dụng lệnh "cat" sẽ thất bại.
Đó là các lệnh OS, chẳng hạn như "cat" và "grep", có các tệp thực thi sử dụng trong / * / bin / thư mục - / bin, / usr / bin, / sbin, / usr / sbin, v.v.
Và sau đó có thể được biên dịch, giải thích các tập lệnh, được viết bằng một số ngôn ngữ lập trình, chẳng hạn như Python hoặc shell script (về cơ bản, các lệnh bạn viết như thể từ dòng lệnh khi sshing đến máy chủ).
Bây giờ, khi bạn đặt bit thực thi trên tệp tập lệnh (ví dụ: tệp foobar) và cố gắng thực thi nó bằng trình bao của bạn: "./foobar", trình bao cố gắng phân tích tệp và tìm chương trình chính xác để truyền tập lệnh đến.
Shell này thực hiện bằng cách đọc dòng đầu tiên của tệp và tìm ký hiệu "shebang" của chương trình này được cho là chạy.
Vì vậy, nếu foobar của bạn là một tệp văn bản với dòng đầu tiên như thế này:
#!/usr/bin/python
Sau đó, shell sẽ cố gắng thực thi lệnh : /usr/bin/python foobar
, về cơ bản gọi trình thông dịch python và chuyển tên tệp foobar của bạn cho nó dưới dạng tập lệnh Python.
Nếu shell không tìm thấy dòng đầu tiên như vậy trong tệp của bạn, thì nó sẽ cố gắng thực thi chính foobar như thể nó chứa các lệnh shell.
Nếu tệp có bit thực thi không chứa các lệnh shell hợp lệ, shell sẽ đơn giản phàn nàn.
Vì vậy, đây là những gì sẽ xảy ra, nếu bạn có tệp TTF với tập bit exec và cố chạy nó từ dòng lệnh:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
Vì vậy, đối với phông chữ, nó có thể gọn gàng hơn, nếu bit exec không được đặt, nhưng không thực sự thay đổi bất cứ điều gì.
PS Chỉ là một số thông tin không liên quan. Nếu bạn loại bỏ bit thực thi trên một số lệnh hoặc tập lệnh, nó vẫn có thể được truyền cho bất kỳ chương trình nào khác làm đối số. Nếu chương trình khác đó biết, làm thế nào để thực thi lệnh của bạn, việc loại bỏ bit exec của bạn không thực sự quan trọng. Ví dụ: tập lệnh Python foobar vẫn sẽ được chạy bởi trình thông dịch Python, nếu bạn chỉ cần thực hiện từ dòng lệnh:
$python foobar
thay vì
$./foobar
Tương tự với ví dụ về các lệnh hệ thống, chẳng hạn như "cat". Nếu bạn loại bỏ bit exec từ "cat", bạn vẫn có thể chuyển nó sang một thể hiện mới của shell để thực thi:
$sh -c 'cat myfile'
sẽ hoạt động, ngay cả khi bạn đã loại bỏ bit exec từ cat và
$cat myfile
không.