以前の回答が言ったように、色付けはファイルが実行可能と見なされるかどうかを示すためのものです。
Linuxおよび他のほとんどのUnixでの「実行」権限(=ビット)には、ファイルに対する意味とディレクトリに対する意味があります。
ディレクトリの場合、実行権限があれば、その内容を確認できます。そうしないと、ディレクトリへのcdやディレクトリへの読み取りと書き込みの両方のアクセス権がある場合でも、そのディレクトリにファイルを一覧表示できません。
通常のファイル(デバイスファイルやその他の特別なUnixファイルタイプとは対照的)の場合、実行ビットは、コマンドラインでファイル名を使用すると、O / S(またはより正確にはシェル)が「実行」または実行しようとすることを意味しますコマンドとしてのファイル。逆に、ファイルに対する実行権限がない場合、コマンドラインから実行することはできません。
したがって、たとえば、/ bin / catファイル(UNIXコマンド)のすべてのユーザーからxパーミッションを削除すると、自分自身または他の誰かが「cat」コマンドを使用しようとすると、プログラムが失敗します。
これらは、 "cat"や "grep"などのOSコマンドであり、通常は/ * / bin /ディレクトリ(/ bin、/ usr / bin、/ sbin、/ usr / sbinなど)に実行可能ファイルがあります。
そして、Pythonやシェルスクリプト(基本的には、サーバーにsshするときにコマンドラインから作成するようなコマンド)などのプログラミング言語で書かれた、コンパイルされていない解釈済みスクリプトが存在する可能性があります。
ここで、スクリプトファイル(たとえば、ファイルfoobar)に実行ビットを設定し、それをシェルで実行しようとすると、 "./ foobar"、シェルはファイルを分析し、スクリプトを渡すための正しいプログラムを見つけようとしますに。
これは、シェルがファイルの最初の行を読み取って、これが実行されることになっているプログラムの「シバン」表記を見つけることによって行われます。
したがって、foobarが最初の行が次のようなテキストファイルである場合:
#!/usr/bin/python
次に、シェルはcommand:を実行しようとします/usr/bin/python foobar
。基本的には、Pythonインタープリターを起動し、foobarファイルの名前をPythonスクリプトとしてそれに渡します。
シェルがファイル内でそのような最初の行を見つけられない場合、シェルコマンドが含まれているかのようにfoobar自体を実行しようとします。
ただし、実行可能ビットを含むファイルに有効なシェルコマンドが含まれていない場合、シェルは単にメッセージを表示します。
したがって、execビットが設定されたTTFファイルがあり、コマンドラインから実行しようとすると、次のようになります。
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
したがって、フォントの場合、execビットが設定されていなくても、実際には何も変更しない場合は、きちんとしているでしょう。
PSほんの一部の無関係な情報。コマンドまたはスクリプトの実行ビットを削除した場合でも、引数として他のプログラムに渡される可能性があります。他のプログラムがコマンドを実行する方法を知っている場合、execビットの削除は重要ではありませんでした。たとえば、コマンドラインから単純に実行した場合、foobar Pythonスクリプトは引き続きPythonインタープリターによって実行されます。
$python foobar
の代わりに
$./foobar
「cat」などのシステムコマンドの例と同じです。「cat」からexecビットを削除しても、それを実行のためにシェルの新しいインスタンスに渡すことができます。
$sh -c 'cat myfile'
猫からexecビットを削除していても動作します
$cat myfile
しません。