在Mac和Linux中,MIME插件文件的位置在哪里?

9
我只是好奇本地应用程序(包括浏览器)如何读取/解释MIME类型。阅读MIME类型的插件是否已内置于每个应用程序中,还是操作系统中有一个特殊的系统文件夹,应用程序在解释MIME类型时会引用该文件夹?
当定义MIME类型时,RFC使用字符表作为参考:RFC

(1) 与US-ASCII不同的字符集中的文本消息体

虽然MDN听起来像是使用像HTML中找到的content-type
例如content-type=image/jpegcontent-type=application/javascript是否使用UTF-8字符表来确定它们的字符集(glyph),而其他一些则执行逻辑以确定这些字符glyph应该被解释成什么?
这是否意味着每个内容类型都具有其自己的特殊字符表(例如utf-8 -> js-8????),既可以将字符转换为glyph又可以将字符glyph解释为二进制逻辑?
为什么charcharts和content-type听起来都意味着MIME?Mac和Linux系统中包含content-type图表/解释逻辑的文件夹路径在哪里?

据我所知,Linux或Max不依赖于文件扩展名,而是根据内容进行操作。 - Srini V
2个回答

5
在 macOS 上,您可以使用 file --mime "/path/to/filename" 命令来报告文件的 MIME 类型。 file 的 man 页面(请参见 此处)阐明了在进行 MIME 类型查找之前,在幕后发生了什么。
 file tests each argument in an attempt to classify it.  There are three
 sets of tests, performed in this order: filesystem tests, magic tests,
 and language tests.  The first test that succeeds causes the file type to
 be printed.

 The filesystem tests are based on examining the return from a stat(2)
 system call.  The program checks to see if the file is empty, or if it's
 some sort of special file.  Any known file types appropriate to the sys-
 tem you are running on (sockets, symbolic links, or named pipes (FIFOs)
 on those systems that implement them) are intuited if they are defined in
 the system header file <sys/stat.h>.

 The magic tests are used to check for files with data in particular fixed
 formats.  The canonical example of this is a binary executable (compiled
 program) a.out file, whose format is defined in <elf.h>, <a.out.h> and
 possibly <exec.h> in the standard include directory.  These files have a
 ``magic number'' stored in a particular place near the beginning of the
 file that tells the UNIX operating system that the file is a binary exe-
 cutable, and which of several types thereof.  The concept of a ``magic''
 has been applied by extension to data files.  Any file with some invari-
 ant identifier at a small fixed offset into the file can usually be
 described in this way.  The information identifying these files is read
 from the compiled magic file /usr/share/file/magic.mgc, or the files in
 the directory /usr/share/file/magic if the compiled file does not exist.

 If a file does not match any of the entries in the magic file, it is
 examined to see if it seems to be a text file.  ASCII, ISO-8859-x, non-
 ISO 8-bit extended-ASCII character sets (such as those used on Macintosh
 and IBM PC systems), UTF-8-encoded Unicode, UTF-16-encoded Unicode, and
 EBCDIC character sets can be distinguished by the different ranges and
 sequences of bytes that constitute printable text in each set.  If a file
 passes any of these tests, its character set is reported.  ASCII,
 ISO-8859-x, UTF-8, and extended-ASCII files are identified as ``text''
 because they will be mostly readable on nearly any terminal; UTF-16 and
 EBCDIC are only ``character data'' because, while they contain text, it
 is text that will require translation before it can be read.  In addi-
 tion, file will attempt to determine other characteristics of text-type
 files.  If the lines of a file are terminated by CR, CRLF, or NEL,
 instead of the Unix-standard LF, this will be reported.  Files that con-
 tain embedded escape sequences or overstriking will also be identified.

 Once file has determined the character set used in a text-type file, it
 will attempt to determine in what language the file is written.  The lan-
 guage tests look for particular strings (cf.  <names.h>) that can appear
 anywhere in the first few blocks of a file.  For example, the keyword .br
 indicates that the file is most likely a troff(1) input file, just as the
 keyword struct indicates a C program.  These tests are less reliable than
 the previous two groups, so they are performed last.  The language test
 routines also test for some miscellany (such as tar(1) archives).

 Any file that cannot be identified as having been written in any of the
 character sets listed above is simply said to be ``data''.

4
这些文件大多位于 /usr/share/mime 和 /usr/share/mime-info,另外Linux和Mac(几乎整个Unix树)不遵循扩展名,只关注内容,扩展名仅为了方便用户。
注意:特定应用程序存储在“/usr/share/mimelnk”中(感谢David C. Rankin)。
(您也可以尝试在终端中执行“locate mime”以获取更多信息)

2
具体应用程序链接在/usr/share/mimelnk中。 - David C. Rankin
谢谢您,抱歉回复晚了。我执行了您的命令,它生成了很多文件,我有点困惑于结尾的扩展名,不知道哪个文件负责什么工作。 .js文件是否负责解释JavaScript?您知道我可以阅读哪些来源来分解这个问题吗?哪些文件将用于评估JavaScript,哪些文件负责使utf-8发生? - Jonathan002
一个程序检查MIME信息并查看文件,认为:“这看起来像是JS文件,让我们检查如何打开它”,完全忽略文件名。但我不知道JS文件用于什么类型的文件,因为我自己不使用JS编程。 - Yoran Jansen
此文件路径在 Mac OS 11.2 Big Sur 上不存在。 - codejedi365

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接