Linuxのファイル拡張子とプログラムとの関連付け

Linuxのファイル拡張子とプログラムとの関連付け

Windowsでは、ファイル拡張子をプログラムに関連付けることができます。たとえば、拡張子のためにインストールされたインタプリタで
ファイルを実行できます。test.plLinuxでは、最初の行にする必要があります。 Linuxでは、ファイル拡張子とプログラムの間に相関関係がないからですか?Perlpl
#!/usr/bin/perl

ベストアンサー1

いいえ、そういう意味ではありません。実行権限が設定されたテキストファイル(例:)があり、chmod a+x somefileファイルの最初の行が次のような場合

"#!/path/to/executable"

スクリプトの実行に使用するプログラムをUnixに通知するだけです。テキストファイルが実行可能(スクリプトなど)としてマークされると、Unixはこの方法で指定されたすべてのプログラムを起動し、テキストファイル(スクリプト)の残りの部分をそのプログラムに送信します。通常、指定されたプログラムは、シェル(または/bin/sh)、一部のプログラミング言語(Perl、Python、またはRuby)に対してインタプリタ、またはスクリプトを実行する他のプログラム(テキストマニピュレータAwkまたはSedなど)です/bin/csh/bin/bash

通常、「#」は、次の場合にのみ複数の言語でコメントを指定します。最初この行は特別な「#!」で始まります。ファイルが実行可能ファイルとしてマークされているが「#!」で始まらない場合、Unixはそのファイルが一種のバイナリファイル(Cコンパイラやリンカによって生成されたELF実行可能ファイルなど)であると仮定します。

通常、Unixはファイルサフィックスに依存しません。多くのプログラムは、一般的なサフィックスを必要とせず、自動的に追加することもありません。 1つの例外は、プログラムの1つ(間違ったサフィックスについて文句を言うプログラムの1つ)gzipbzip2

代わりに、ファイルは「魔法の数」と他の識別子を見つける一連のテストによってその内容で識別されます(fileこれをテストするためにいくつかのファイルでコマンドを試すことができます)。また、GNOMEとKDEのファイルブラウザでファイルを開く/編集するためのアイコンとプログラムのリストを選択するためにも使用されます。ここでは、これらのテストでファイルのMIMEタイプを識別し、Windowsのサフィックスの代わりにMIMEタイプに関連するリストで表示および編集に適したプログラムを見つけます。

テストの1つは、テキストファイルの最初の行が「#!/ something」であることを確認してから、「something」が何であるかを確認することで、#!/usr/bin/perlファイルをPerlスクリプトとして識別すると言うことができます。副作用。テストでは、「#!」で始まらない場合でも、ファイルを正しく識別する必要があります。それにもかかわらず、ファイルを識別するために使用されるのは、任意のサフィックスではなくファイルの内容です。したがって、.pl(Perl)や.awk(Awk)などの末尾は、純粋にユーザーがファイルの種類を識別するのに役立ちます。

実際には「#!/ something」なしで「スクリプト」を作成できますが、Unixは自動的に実行可能ファイルとして実行できません(どのプログラムでスクリプトを実行するかわかりません)。代わりperl myscriptに、または同じものを使用して「手動で」始める必要がありますpython myscript。大規模なPythonおよびPerlアプリケーションの多くのスクリプトは「内部的に使用される」スクリプトであり、ユーザーが直接呼び出すことができないため、実際には「#!/ something」で始まりません。

代わりに、デフォルトスクリプト( "#!/ something"で始まる)を起動し、そのスクリプトが実行されている間にこれらの他のスクリプトをインタプリタに渡します。

おすすめ記事