Здесь нет 100% черного или белого ответа.
Обычно Linux не полагается на имена файлов (и расширения файлов, то есть часть имени файла после обычно последнего периода) и вместо этого определяет тип файла, анализируя первые несколько байтов его содержимого и сравнивая это со списком известных магических чисел . Р>
Например, все файлы изображений Bitmap (обычно с расширением имени .bmp
) должны начинаться с букв BM
в первых двух байтах. Скрипты на большинстве языков сценариев, таких как Bash, Python, Perl, AWK и т. Д. (В основном все, что относится к строкам, начинающимся с #
как комментарий), может содержать в качестве первой строки shebang, например #!/bin/bash
. Этот специальный комментарий указывает системе, с помощью которой приложение открывает файл.
Таким образом, обычно операционная система полагается на содержимое файла, а не на его имя, чтобы определить тип файла, но заявив, что расширения файлов никогда не нужны в Linux, составляет лишь половину правды.
Приложения могут, конечно, выполнять свои проверки файлов, но они хотят, включая проверку имени файла и расширения. Примером может служить Eye of Gnome ( eog
, стандартный просмотрщик изображений), который определяет формат изображения с расширением файла и выдает ошибку, если он не соответствует содержимому. Будет ли это ошибка или функция может обсуждаться ...
Однако даже некоторые части операционной системы полагаются на расширения имен файлов, например. при анализе файлов вашего программного обеспечения в файлах /etc/apt/sources.list.d/
только с расширением *.list
get parsed все остальные игнорируются. Возможно, это не в основном используется для определения типа файла здесь, а для включения / отключения парсинга некоторых файлов, но это все еще расширение файла, которое влияет на то, как система обрабатывает файл.
И, конечно же, пользовательский пользователь больше всего выигрывает от расширений файлов, так как он делает вид файла очевидным, а также позволяет использовать несколько файлов с одинаковым базовым именем и разными расширениями, такими как site.html
, site.php
, site.js
, site.css
и т. д. Недостатком, конечно, является то, что расширение файла и фактический тип / содержимое файла необязательно должны совпадать.
Кроме того, он необходим для межплатформенной совместимости, например, Windows не будет знать, что делать с файлом readme
, но только readme.txt
.