Yorumlayıcıyla Çalışan Dosyalar
Belirli bir dilde yazılmış olan kaynak programı hiç çalışabilir kod üretmeden satır satır
çalıştıran programlara yorumlayıcı denir. Yorumlayıcılar çalışabilen programlardır. Genellikle
komut satırı argümanı olarak kaynak dilde yazılmış olan programı alırlar. Onları ifadelere
ayırarak yorumlayıp çalıştırırlar. Unix sistemlerinde exec fonksiyonları yalnızca makine
diline dönüştürülmüş ELF ya da a.out dosyalarını değil, belli bir formatta düzenlenmiş text
dosyalarını da çalıştırabilirler. exec fonksiyonlarının bir text dosyayı çalıştırabilmeleri için
dosyanın ilk satırının şu biçimde olması gerekir:
#! <çalışabilen dosyanın full path bilgisi>
exec fonksiyonları ilk satırı yukarıdaki gibi başlatılmış olan bir text dosyayı nasıl çalıştırır.
Aslında bu text dosyayı değil, ilk satırında belirtilmiş olan gerçek çalıştırılabilir dosyayı
çalıştırır. Bu dosyayı o programa komut satırı argümanı yapar. Peki bunun tam tersi olması
daha doğal değil midir? Yani çalışabilen programı çalıştırıp kaynak kodun bulunduğu dosyayı
komut satırı argümanı yapmak. Sistemin diğer biçimde tasarlanmasının iki nedeni vardır:
1) Eğer diğer yöntem benimsenseydi, önce gerçek exec işlemi yapılacaktı. Fakat komut satırı
argümanı ile belirtilen kaynak dosyada problem olduğunda yorumlama işlemi yapılmayacaktı
ve bu durum vakit kaybına yol açacaktı. Halbuki bu biçimde text dosyanın ilk satırından daha
gerçek exec işlemi yapılmadan error durumu anlaşılabilir.
2) Bu biçimde kaynak kodun birinci satırını yeniden düzenleyerek yorumlayıcı dosyanın
başka bir yorumlayıcı program tarafından yorumlanması sağlanabilir. Awk gibi klasik shell
script yorumlayıcıları bu teknikle çalışırlar.
Tabii bu biçimdeki kaynak dosyaların exec ile çalıştırılabilmesi için text dosyanın x özelliğine
sahip olması gerekir.