Windowsの環境変数「PATHEXT」について、調べたことをここに備忘として残しておきます。
環境変数「PATHEXT」とは?
Windowsには、環境変数として「PATHEXT」というものが定義されています。中身を参照してみましょう。以下のようにセミコロン区切りで、複数の拡張子が定義されています。
これは、コマンドプロンプトでコマンドを実行する際に補完される拡張子の優先順位を定義しているようです。
たとえば、同じフォルダに拡張子の異なる2つのファイルが格納されている場合に、拡張子を指定しないでファイル名のみでコマンドを実行した場合には、環境変数「PATHEXT」を参照して優先順位がより高い拡張子が優先されて、実行される仕組みに使われるようです。
以下は、JavaのビルドツールであるApache Antのbinディレクトリですが、拡張子を除くファイル名が同じ「ant.bat」と「ant.cmd」の2つのバッチファイルがあります。これは、先ほどの環境変数「PATHEXT」の定義を見ると「.BAT」の方が先に定義されているので、この場合は「ant.bat」が優先されます。
※上記には、「ant」という拡張子がないファイルもありますが、これはWindowsでは対象にならないようです。ファイルの中身は、Unix系OS等で使用するシェル(sh)で記載されていました。
このように1つのフォルダにファイル名は同じだが拡張子が異なるファイルを格納する場合は、この挙動を認識しておく必要がありそうです(あまり遭遇することはないかもしれませんが)。
今回はこの辺で失礼いたします。最後までお読みいただきありがとうございました。