テキストファイルがあります。abc.text
内容は次のとおりです。Hi I'm a text file.
ファイルをダブルクリックして開くと、gedit
エディタで開きます。
ただし、ファイル名を次のように変更するとabc.html
(コンテンツを変更せずに)、デフォルトでChromeで開きます。
Windowsはファイル拡張子を使用してファイルの種類を識別するため、この動作はWindowsコンピュータで許可されています。しかし、私が知っている限り、Linuxにはファイル拡張子は必要ありません。
それでは、Linuxでファイル拡張子を変更すると、ファイルを開く基本プログラムが変更されるのはなぜですか?
ベストアンサー1
Linuxはファイル拡張子を使用してファイルを開く方法を決定しませんが、Linuxはファイル拡張子を使用してファイルを開く方法を決定します。
ここでの問題は、「Linux」がオペレーティングシステムの他の部分を指定でき、「ファイルを開く」も異なる意味を持つことができるということです。
LinuxとWindowsの違いは、アプリケーションファイルとデータファイルを処理する方法です。 Windowsでは、2つの間の境界がぼやけています。拡張子(.exe
など.bat
)によって決まるさまざまな種類の実行可能ファイルがありますが、ほとんどの場合、すべてのファイルを「実行」することができます(たとえば、エクスプローラでクリック)、このファイルタイプが使用されます。関連する実行可能ファイルによって、ファイルの種類は完全に拡張子によって決まります(したがって実行可能ファイルが起動され、実行可能ファイルが.doc
Pythonc:\Program Files\something or other\winword.exe
インタプリタ.py
を起動できるなど)。
Linuxには、ファイル名とは無関係の実行可能ファイルという概念があります。実行ファイルは通常ユーザーが入力するため、拡張子はありません。ファイル形式は重要ではありません。ユーザーはファイルを実行するだけです。カーネルは内容によってファイルの実行方法を決定します。いくつかのファイル形式を基本的に知っていますシェルボーンメカニズムにより、ファイルは別の実行可能ファイルをソルバーとして宣言できます。
一方、データファイルには通常、データ型を表す拡張子があります。ここで一般的なアイデアは、データ型がファイルを開くために使用されたアプリケーションと同義ではないということです。 Okular、Evince、Xpdf、Acroread、MupdfなどでPDFを表示できます。
ただし、使用するアプリケーションを明示的に指定しなくてもデータファイルを開くことができるツールがたくさんあります。これらのツールはほぼ完全にファイル拡張子に基づいて決定を下します。ファイル拡張子とファイルの内容は、これらのツールが使用できる唯一の情報です。 Linux はファイル形式に関するメタ情報を保存しません。したがって、.pdf
ファイルマネージャでファイルをクリックすると(または.pdf
適切に設定されたzshコマンドラインからファイルを実行している場合など)、ファイルマネージャはデータベースを参照してファイルのデフォルトアプリケーションを見つけます.pdf
。データベースは2つの部分に分けることができます。 1つは拡張子をMIMEタイプ(/etc/mime.types
、~/.local/share/mime
)に関連付ける部分、もう1つはMIMEタイプをアプリケーション(/etc/mailcap
、、~/.local/share/applications
)、しかしその場合でも、原点は拡張です。通常、ファイルの内容からアプリケーションを把握することは可能ですが、遅くて常に可能なわけではありません(多くの形式がテキストファイルのように見え、aはファイル.jar
タイプ.zip
などです)。
Linux いいえ必要ファイル拡張子は、実行可能ファイルの実行方法を決定するために使用されませんが、データファイルを開くために使用するプログラムを決定するために使用されます。
¹ファイルはデフォルトの実行可能ファイルでなければならず、shebang実行可能ファイルは潜在的な無限の再帰を防ぐために他のshebang実行可能ファイルを指すことはできません。