Тут немає 100% чорно-білої відповіді.
Зазвичай Linux не покладається на імена файлів (і розширення файлів, тобто частину імені файлу після звичайного останнього періоду), а замість цього визначає тип файлу, вивчаючи перші кілька байтів його вмісту та порівнюючи його зі списком відомих магічних чисел .
Наприклад, усі файли зображень Bitmap (як правило, з розширенням імені .bmp
) повинні починатися з літер BM
у перших двох байтах. Сценарії на більшості мов сценарію, такі як Bash, Python, Perl, AWK тощо (в основному все, що стосується рядків, починаючи з #
коментаря), можуть містити шебанг, як #!/bin/bash
перший рядок. Цей спеціальний коментар повідомляє системі, з якою програмою відкрити файл.
Отже, як правило, операційна система покладається на вміст файлу, а не на його ім'я для визначення типу файлу, але твердження, що розширення файлів ніколи не потрібні для Linux, це лише половина правди.
Звичайно, програми можуть впроваджувати перевірку файлів, але вони хочуть, що включає перевірку імені та розширення файлу. Прикладом може служити Око Gnome ( eog
, стандарт для перегляду зображень) , який визначає формат зображення, розширення файлу і видає повідомлення про помилку , якщо він не відповідає змісту. Чи це помилка чи функція, можна обговорити ...
Однак навіть деякі частини операційної системи покладаються на розширення імен файлів, наприклад, при аналізі файлів джерел програмного забезпечення в /etc/apt/sources.list.d/
- лише файли з *.list
розширенням розбираються, всі інші ігноруються. Це, можливо, в основному не використовується для визначення типу файлу тут, а для вмикання / відключення розбору деяких файлів, але все ж розширення файлу впливає на те, як система обробляє файл.
І, звичайно, прибуток користувачів людини більшість з розширень файлів , як це робить тип файлу очевидного , а також дозволяє використовувати кілька файли з тією самою основою імені і різні розширення , такими як site.html
, site.php
, site.js
, site.css
розширення і т.д. Недоліком є те, звичайно , цим файлом і фактичним тип / вміст файлу не обов'язково повинні відповідати.
Крім того, це потрібно для міжплатформової сумісності, наприклад, Windows не знатиме, що робити з readme
файлом, а лише a readme.txt
.