Linuxにはどのような実行ファイルがありますか?

Linuxにはどのような実行ファイルがありますか?

たとえば、私がそうした場合

[OP@localhost executable]$ cat garbage 
lalala
trololol
[OP@localhost executable]$ chmod +x garbage
[OP@localhost executable]$ ./garbage 
./garbage: line 1: lalala: command not found
./garbage: line 2: trololol: command not found

Bashはこの「実行ファイル」をスクリプトとして解釈しようとしているようです。しかし、これが明らかに起こらない2つの状況があります。ファイルがで始まる場合#!とELFファイルの場合。もうありませんか?これに関する包括的な文書はどこにありますか?

ベストアンサー1

拡張他の回答に対する私の以前のコメント、カーネル7つのバイナリローダーが含まれています。(Thereで始まるファイルを検索またはbinfmt_読みます。binfmt具体的なKconfig):

これは、カーネルが実行できる実行可能ファイルの種類を決定します。binfmt_misc特に、カーネルが他の多くのバイナリを処理できるようにします(少なくとも呼び出しプロセスの観点から見て)。exec機能の一つ)。

しかし、Cライブラリとシェル自体も含まれているので、これはすべてをカバーするわけではありません。 POSIXでは、カーネルが実行できない実行可能ファイルを見つけるときにシェルを使用して実行しようとする機能がexeclp必要になりました。execvp理由はここにあるもっと学ぶ。

これらはすべて、次のような動作を提供する方法で対話します。シェルからファイルを実行すると、正確に何が起こりますか?そしてShebangなしでスクリプトを実行するシェルインタプリタとは何ですか?

おすすめ記事