実行ファイル
読み:じっこうファイル
外語:executable file

 実行可能なプログラムとして扱われるファイルのこと。
 オペレーティングシステム(OS)上でこのファイルを指定すると、そのプログラムが実行されるようになっている。
目次

特徴

古典的なOS

DOS系
 CP/Mやその後継のOSでは、ファイルの拡張子により、そのファイルが実行形式であるかどうかを判断する。
 主な実行ファイルの拡張子は、次の通り。

COMとEXEの違い
 CP/M、MSX-DOS、古いMS-DOSにおけるCOM形式は、ファイルの先頭からいきなりプログラムのバイナリコードとなっている。
 これがそのまま、オフセット0100Hからメモリーにロードされ、その先頭より実行される。
 極めて単純だが、CP/Mの時代はこれでも困らなかった。しかし、COMには拡張性がないため、MS-DOSでは新たにEXEフォーマットが作られた。
 EXEフォーマットはファイルの先頭部分にヘッダーがあり、OSはヘッダーの部分を解釈して適切な処理を行なう。MS-DOSからWindowsになっても拡張子がEXEから変わらなかったのは、このヘッダー部分を利用してMS-DOS用の動作とWindows用の動作の二つの機能を一つのEXEファイルに持たせることができるためである。
 なお、MS-DOSやWindowsは常に実行ファイルのヘッダーを確認するため、拡張子のCOMとEXEは同義である。例えばMS-DOSの頃のシェルはCOMMAND.COMだが、Windows 95以降のそれはEXE形式でありながら名前だけ「COMMAND.COM」となっている。

UNIX

パーミッション
 UNIXにおいては、パーミッションに実行可能が付加されているファイルが実行ファイルとして扱われる。そのファイルの持ち主、グループ、他人のそれぞれで、個別に設定が可能。
 但し、そのファイルはOSがプログラムとして解釈できるような内容になっていないと、当然動作しない。
 つまり、ファイル名は無関係である。なお、UNIXにおいては「拡張子」というものは無い。

バイナリ

スクリプト形式
 UNIXでは、1行目に特殊な記述をすることでシェルスクリプトPerlなどのスクリプトを実行ファイルとして用いることができる。
 例えば、シェルスクリプトの実際の例は、次の通り。
#!/bin/sh
print "hello, world"
 これを「hello」というファイル名で保存し、パーミッションを実行可能とする。このファイルをOSから実行させると、OSは以下のような動作を行なう。
 シェルスクリプトやPerlにおいてコメントを表わす記号が#であるのは、このシェルスクリプトの動作機構と合わせるためである。

再検索