Não há necessidade de a extensão do arquivo corresponder a algo específico, como você descobriu corretamente.
Em sistemas do tipo Unix, os tipos de arquivos são geralmente derivados do conteúdo do arquivo (ou seja, o "número mágico" ou outras estruturas características nos primeiros bytes) e não do nome. Você também pode omitir completamente a extensão, que geralmente é feita para executáveis.
Verifique o comando file
, ele mostra as informações que ele pode descobrir sobre um tipo de arquivo de seu conteúdo.
Para um script executável, o sistema espera um chamado "shebang" na primeira linha, que parece, e. como
#!/usr/bin/env python3
e indica qual programa deve ser executado como intérprete com o arquivo de script como argumento. Se você executar um arquivo de texto sem tal shebang, ele usará seu shell padrão, ou seja, Bash para tentar interpretá-lo.
Assim, nos sistemas Unix / Linux, as extensões de nome de arquivo são principalmente uma dica (mas não garantia) para o usuário humano reconhecer rapidamente o que esperar de um arquivo específico para conter. É também uma convenção que pode ajudar, por exemplo encontrar arquivos mais rapidamente.
Note que existem algumas exceções, onde o nome e a extensão são importantes (por exemplo, alguns arquivos de configuração do sistema que devem seguir uma convenção de nomenclatura ou muitos visualizadores e editores de imagens também exigem que a extensão indique o tipo de arquivo).
Você também pode dar uma olhada em As extensões de arquivos têm algum propósito (para o sistema operacional)?