Немає необхідності, щоб розширення файлу відповідало чомусь конкретному, як ви правильно з'ясували.
У системах, схожих на Unix, типи файлів зазвичай походять із вмісту файлу (тобто "магічного числа" або інших характерних структур у перших кількох байтах), а не від їх імені. Ви також можете повністю опустити розширення, що часто робиться для виконуваних файлів.
Перевірте file
команду, вона показує вам інформацію, яку вона може дізнатися про тип файлу зі свого вмісту.
Що стосується виконуваного сценарію, система очікує так званий "шебанг" у першому рядку, який виглядає приблизно так
#!/usr/bin/env python3
і вказує, яку програму запустити як інтерпретатор із файлом сценарію як аргумент. Якщо ви виконаєте текстовий файл без такого шебангу, він буде використовувати вашу оболонку за замовчуванням, тобто Bash, щоб спробувати його інтерпретувати.
Тож у системах Unix / Linux розширення імен файлів - це головним чином натяк (але жодна гарантія) для людського користувача швидко розпізнати, що очікувати конкретного файлу. Це також умова, яка може допомогти, наприклад, швидше знаходити файли.
Зауважте, що є деякі винятки, де значення мають ім'я та розширення (наприклад, деякі файли системних конфігурацій, які повинні відповідати умові іменування, або багато переглядачів і редакторів зображень також вимагають розширення для вказування типу файлу).
Ви також можете ознайомитися з тим, чи мають розширення файлів будь-яку мету (для операційної системи)?