Spróbuję udzielić podstawowej odpowiedzi, w jaki sposób systemy uniksowe obsługują pliki. Jak zauważyli inni, sformułowanie pytania jest mylące, ponieważ same pliki nie informują o ich typie, a samo jądro nie decyduje, których aplikacji użyć.
W systemach operacyjnych Unix i Windows pliki mają prostą sekwencję bajtów. Z systemów operacyjnych Tanenbaum , trzecie wydanie:
W efekcie system operacyjny nie wie ani nie dba o zawartość pliku. Wszystko, co widzi, to bajty. Wszelkie znaczenia muszą narzucać programy na poziomie użytkownika.
Dlatego w środowisku pulpitu xdg-open
służy do określania domyślnych aplikacji do otwierania określonych typów plików.
W systemie Unix pliki są rozróżniane na zwykłe i specjalne . Zwykły plik to tylko dane użytkownika, które mogą być plikiem tekstowym (kodowanie ASCII lub Unicode) lub binarnym (kod wykonywalny). Pliki specjalne to pliki niezbędne do uruchomienia systemu operacyjnego. Należą do nich katalogi, łącza, potoki, gniazda i pliki urządzeń. ¹
Zgodnie z konwencją nazwy plików zawierają rozszerzenia wskazujące, jaki to może być typ pliku, np. * .C dla kodu źródłowego C, * .html dla stron internetowych itp. Z Tanenbaum:
W niektórych systemach (np. UNIX) rozszerzenia plików są tylko konwencjami i nie są wymuszane przez system operacyjny. Plik o nazwie file.txt może być jakimś plikiem tekstowym, ale ta nazwa ma raczej przypominać właścicielowi niż przekazywać rzeczywiste informacje do komputera. Z drugiej strony kompilator C może nalegać, aby pliki, które ma skompilować, kończyć się na .c, i może odmówić ich skompilowania, jeśli tego nie zrobią.
Jeśli plik zostanie zapisany lub zostanie zmieniona jego nazwa bez odpowiedniego rozszerzenia, nadal zachowuje ten sam format dla tego typu pliku. W ten sposób większość menedżerów plików decyduje, za pomocą których aplikacji otwierać pliki i dlaczego bez rozszerzenia większość wyświetli monit „Wybierz program, którego chcesz użyć do otwarcia tego pliku:”.
Wreszcie zmienne środowiskowe są używane do definiowania ustawień ogólnosystemowych i na poziomie użytkownika. Na przykład, zmienna EDITOR
jest używana do określenia, który tekst, aby otworzyć edytor tekstowy np podczas pracy vim
, nano
itp ten sposób procesy wiedzieć, którego edytora otwarte, podobnie jak podczas edycji git
popełnić wiadomość. W przeciwnym razie masz rację, że musisz określić, której aplikacji użyć. Należy zauważyć, że vim
wykrywa typy plików, sprawdzając rozszerzenia i sprawdzając zawartość pliku, jeśli to ustawienie filetype on
jest ustawione, a następnie stosuje prawidłowe podświetlanie składni, wcięcia itp. ²
TL; DR
Podsumowując, to aplikacje na poziomie użytkownika określają programy, w których należy otworzyć określony typ pliku, a nie sam system operacyjny.