Como dijeron las respuestas anteriores, el color es para indicar si los archivos se consideran ejecutables o no.
El permiso de "ejecución" (= bit) en Linux y la mayoría de los otros Unix tiene un significado para los archivos y otro para los directorios.
Para los directorios, si tiene permiso de ejecución, puede ver su contenido. Si no lo hace, no puede cd al directorio, ni puede enumerar archivos en él, incluso si tiene acceso de lectura y escritura al directorio.
Para los archivos normales (a diferencia de los archivos de dispositivo y otros tipos de archivos especiales de Unix), el bit de ejecución significa que si usa el nombre de archivo en la línea de comando, el O / S (o más precisamente: shell) intentará "ejecutar" o ejecutar el archivo como un comando Por el contrario, si no tiene permiso de ejecución en el archivo, no puede ejecutarlo desde la línea de comandos.
Entonces, si, por ejemplo, elimina el permiso x de todos los usuarios en el archivo / bin / cat (que es un comando de Unix), usted mismo o cualquier otra persona y cualquier programa que intente usar el comando "cat" fallará.
Esos son los comandos del sistema operativo, como "cat" y "grep", que normalmente tienen archivos ejecutables en los directorios / * / bin / - / bin, / usr / bin, / sbin, / usr / sbin, etc.
Y luego puede haber scripts interpretados sin compilar, que se escriben en algún lenguaje de programación, como Python o scripts de shell (básicamente, comandos que escribe como desde la línea de comandos cuando se envía al servidor).
Ahora, cuando configura bit de ejecución en el archivo de script (por ejemplo, el archivo foobar) e intenta ejecutarlo con su shell: "./foobar", el shell intenta analizar el archivo y encontrar el programa correcto para pasar el script a.
Esto lo hace el shell al intentar leer la primera línea del archivo y encontrar la notación "shebang" de qué programa se supone que debe ejecutarse.
Entonces, si su foobar era un archivo de texto con la primera línea como esta:
#!/usr/bin/python
Entonces shell intentaría ejecutar el comando: /usr/bin/python foobar
básicamente invocando al intérprete de Python y pasándole el nombre de su archivo foobar como un script de Python.
Si shell no encontrara esa primera línea en su archivo, entonces intentaría ejecutar foobar como si contuviera comandos de shell.
Si el archivo con bit ejecutable no contiene comandos de shell válidos, el shell simplemente se quejaría.
Entonces, esto es lo que sucedería si tuviera archivos TTF con bit de ejecución establecido e intentara ejecutarlo desde la línea de comandos:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
Entonces, para las fuentes, probablemente sea más ordenado, si el bit exec no está configurado, pero realmente no cambia nada.
PD: solo alguna información extraña. Si elimina el bit de ejecución en algún comando o script, aún podría pasarse a cualquier otro programa como argumento. Si ese otro programa sabe cómo ejecutar su comando, su eliminación de bit exec realmente no importó. Por ejemplo, el script de Python foobar aún sería ejecutado por el intérprete de Python, si simplemente lo hiciera desde la línea de comandos:
$python foobar
en lugar de
$./foobar
Lo mismo con el ejemplo de los comandos del sistema, como "cat". Si elimina el bit exec de "cat", aún puede pasarlo a una nueva instancia de shell para su ejecución:
$sh -c 'cat myfile'
funcionará, incluso si ha eliminado bit exec de cat y
$cat myfile
no lo hace