Как вы правильно выяснили, расширение файла не должно совпадать с чем-то конкретным.
В Unix-подобных системах типы файлов обычно определяются содержимым файла (т. Е. «Магическим числом» или другими характеристическими структурами в первых нескольких байтах), а не их именем. Вы также можете полностью опустить расширение, что часто делается для исполняемых файлов.
Проверьте file
команду, она показывает вам информацию, которую она может узнать о типе файла из ее содержимого.
Для исполняемого скрипта система ожидает так называемый «шебанг» в первой строке, который выглядит, например, как
#!/usr/bin/env python3
и указывает, какую программу запустить в качестве интерпретатора с файлом сценария в качестве аргумента. Если вы выполняете текстовый файл без такого шебанга, он будет использовать вашу оболочку по умолчанию, т.е. Bash, чтобы попытаться интерпретировать его.
Таким образом, в системах Unix / Linux расширения имен файлов в основном являются подсказкой (но не гарантией) для пользователя-пользователя, чтобы быстро распознать, что ожидать от конкретного файла. Это также соглашение, которое может помочь, например, найти файлы быстрее.
Обратите внимание, что есть некоторые исключения, когда имя и расширение имеют значение (например, некоторые системные конфигурационные файлы, которые должны следовать соглашению об именах, или многие программы просмотра и редактирования изображений также требуют, чтобы расширение указывало тип файла).
Вы также можете посмотреть, имеет ли расширение файлов какое-либо назначение (для операционной системы)?