Unix sistemlerinin dosyaları nasıl işlediği konusunda temel bir cevap vermeye çalışacağım. Diğerlerinin de belirttiği gibi, sizin sorularınızla ilgili terimleriniz yanıltıcıdır, çünkü dosyalar kendilerinin ne tür olduklarını rapor etmedikleri ve çekirdeğin hangi uygulamaları kullanacağına karar vermediği için.
Unix ve Windows işletim sistemlerinde, dosyalar basit bir bayt dizisi olarak yapılandırılmıştır. Tanenbaum'un İşletim Sistemlerinden üçüncü baskı:
Aslında, işletim sistemi dosyada ne olduğunu bilmiyor veya umursamıyor. Tek gördüğü bayt. Herhangi bir anlam, kullanıcı seviyesindeki programlar tarafından empoze edilmelidir.
Bu nedenle, bir masaüstü ortamında, xdg-open
belirli dosya türlerini açmak için varsayılan uygulamaları belirlemek için kullanılır.
Bir Unix sisteminde, dosyalar normal dosyalar ve özel dosyalar arasında farklılık gösterir . Normal bir dosya yalnızca bir metin dosyası (ASCII veya Unicode kodlama) veya ikili (çalıştırılabilir kod) olabilen kullanıcı verileridir. Özel dosyalar, işletim sistemini çalıştırmak için gerekli olan dosyalardır. Bunlar; dizinleri, bağlantıları, boruları, soketleri ve cihaz dosyalarını içerir. ¹
Dosya adlarının, C kaynak kodu için * .c, web sayfaları için * .html, vb. Gibi olabilecek dosya türlerini belirten uzantılar içerdiği kabul edilir . Tanenbaum'dan:
Bazı sistemlerde (örneğin, UNIX) dosya uzantıları yalnızca kurallardır ve işletim sistemi tarafından zorlanmaz. File.txt adlı bir dosya bir tür metin dosyası olabilir, ancak bu ad, sahibine herhangi bir gerçek bilgiyi bilgisayara iletmekten çok hatırlatmak içindir. Öte yandan, bir C derleyicisi aslında dosyaların derlemek için ısrar edebileceği konusunda ısrar edebilir ve eğer yapmazsa onları derlemeyi reddedebilir.
Bir dosya uygun uzantı olmadan kaydedilir veya yeniden adlandırılırsa, o dosya türü için aynı formatta kalır. Bu, çoğu dosya yöneticisinin hangi uygulamalarla dosyaları açacağına nasıl karar verdiğini ve niçin birçoğunun uzantısı olmasın neden kullanıcıyı "Bu dosyayı açmak için kullanmak istediğiniz programı seçin:" diye soracaktır.
Son olarak, ortam değişkenleri sistem genelinde ve kullanıcı seviyesindeki ayarları tanımlamak için kullanılır. Örneğin, değişken EDITOR
metin örneğin işlerken açılacak bir metin editörü belirtmek için kullanılır vim
, nano
vb işlemler düzenlerken gibi açık hangi düzenleyicisi olduğunuzu gösterir git
mesajı işlemek. Aksi takdirde, hangi uygulamayı kullanacağınızı belirtmeniz doğru olur. Not o vim
ayar eğer, uzantıları kontrol ve dosya içeriğini inceleyerek algılar dosya türleri filetype on
ardından doğru dizim, girinti, vb uygulandığı, ayarlanmış ²
TL; DR
Özetle, OS'nin kendisiyle değil, belirli bir dosya türünü hangi programların açacağını belirleyen kullanıcı düzeyinde uygulamalardır.