Wie bereits in früheren Antworten erwähnt, gibt die Farbgebung an, ob die Dateien als ausführbar angesehen werden oder nicht.
Die Berechtigung "Ausführen" (= Bit) unter Linux und den meisten anderen Unixen hat eine Bedeutung für Dateien und eine andere für Verzeichnisse.
Wenn Sie für Verzeichnisse über Ausführungsberechtigungen verfügen, können Sie deren Inhalt anzeigen. Wenn Sie dies nicht tun, können Sie weder eine CD in das Verzeichnis erstellen noch Dateien darin auflisten, selbst wenn Sie sowohl Lese- als auch Schreibzugriff auf das Verzeichnis haben.
Bei regulären Dateien (im Gegensatz zu Gerätedateien und anderen speziellen Unix-Dateitypen) bedeutet das Ausführungsbit, dass das Betriebssystem (oder genauer: die Shell) versucht, "auszuführen" oder auszuführen, wenn Sie den Dateinamen in der Befehlszeile verwenden die Datei als Befehl. Wenn Sie dagegen keine Ausführungsberechtigung für die Datei haben, können Sie sie nicht über die Befehlszeile ausführen.
Wenn Sie beispielsweise die x-Berechtigung von allen Benutzern in der Datei / bin / cat (bei der es sich um einen Unix-Befehl handelt) entfernen, schlagen Sie selbst oder andere Personen und jedes Programm, das versucht, den Befehl "cat" zu verwenden, fehl.
Dies sind dann die Betriebssystembefehle wie "cat" und "grep", die normalerweise ausführbare Dateien in / * / bin / Verzeichnissen - / bin, / usr / bin, / sbin, / usr / sbin usw. enthalten.
Und dann kann es nicht kompilierte, interpretierte Skripte geben, die entweder in einer Programmiersprache wie Python oder Shell-Skripten geschrieben sind (im Grunde Befehle, die Sie wie von der Kommandozeile aus schreiben, wenn Sie zum Server senden).
Wenn Sie nun das Ausführungsbit für die Skriptdatei (z. B. Datei foobar) setzen und versuchen, es von Ihrer Shell auszuführen: "./foobar", versucht die Shell, die Datei zu analysieren und das richtige Programm zum Übergeben des Skripts zu finden zu.
Dies tut die Shell, indem sie versucht, die erste Zeile der Datei zu lesen und die "shebang" -Notation des Programms zu finden, das ausgeführt werden soll.
Wenn Ihre Foobar also eine Textdatei mit der ersten Zeile wie folgt war:
#!/usr/bin/python
Dann würde die Shell versuchen, den Befehl: auszuführen /usr/bin/python foobar
, indem sie im Grunde den Python-Interpreter aufruft und den Namen Ihrer Foobar-Datei als Python-Skript an sie übergibt.
Wenn die Shell eine solche erste Zeile in Ihrer Datei nicht finden würde, würde sie versuchen, foobar selbst so auszuführen, als ob sie Shell-Befehle enthalten würde.
Wenn die Datei mit dem ausführbaren Bit jedoch keine gültigen Shell-Befehle enthält, würde sich die Shell einfach beschweren.
Dies würde also passieren, wenn Sie TTF-Dateien mit gesetztem Exec-Bit haben und versuchen, es über die Befehlszeile auszuführen:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
Für Schriftarten ist es wahrscheinlich ordentlicher, wenn das Exec-Bit nicht gesetzt ist, aber nichts wirklich ändert.
PS Nur ein paar irrelevante Informationen. Wenn Sie das Ausführungsbit eines Befehls oder Skripts entfernen, wird es möglicherweise weiterhin als Argument an ein anderes Programm übergeben. Wenn dieses andere Programm weiß, wie Sie Ihren Befehl ausführen, war das Entfernen des Exec-Bits nicht wirklich wichtig. Zum Beispiel würde das foobar Python-Skript immer noch vom Python-Interpreter ausgeführt, wenn Sie dies einfach über die Befehlszeile tun würden:
$python foobar
Anstatt von
$./foobar
Gleiches gilt für das Beispiel der Systembefehle wie "cat". Wenn Sie das Exec-Bit von "cat" entfernen, können Sie es dennoch zur Ausführung an eine neue Shell-Instanz übergeben:
$sh -c 'cat myfile'
wird funktionieren, auch wenn Sie exec bit von cat und entfernt haben
$cat myfile
nicht.