Önceki yanıtların söylediği gibi, renklendirme dosyaların yürütülebilir olarak kabul edilip edilmeyeceğini belirtmektir.
Linux ve diğer birçok Unix'teki "yürüt" izni (= bit), dosyalar için bir anlam ve dizinler için başka bir anlama sahiptir.
Dizinler için, yürütme izniniz varsa, içeriğini görebilirsiniz. Bunu yapmazsanız, dizine cd yazamazsınız ve dizine hem okuma hem de yazma erişiminiz olsa bile içindeki dosyaları listeleyemezsiniz.
Normal dosyalar için (aygıt dosyalarının ve diğer özel Unix dosya türlerinin aksine), yürütme biti, komut satırında dosya adını kullanırsanız, O / S'nin (veya daha doğrusu: kabuğun) "yürütmeye" veya çalıştırmaya çalışacağı anlamına gelir. dosyayı komut olarak. Tersine, dosya üzerinde yürütme izniniz yoksa, komut satırından çalıştıramazsınız.
Bu nedenle, örneğin, x bin / cat / cat dosyasındaki (bu bir Unix komutu) tüm kullanıcılardan x iznini kaldırırsanız, siz veya başka herhangi bir kişi ve "cat" komutunu kullanmaya çalışan herhangi bir program başarısız olur.
Bunlar daha sonra / * / bin / dizinler - / bin, / usr / bin, / sbin, / usr / sbin vb. Gibi yürütülebilir dosyaları bulunan "cat" ve "grep" gibi işletim sistemi komutlarıdır.
Ve sonra Python veya kabuk komut dosyaları gibi bazı programlama dillerinde yazılan derlenmemiş, yorumlanmış komut dosyaları olabilir (temel olarak, sshing sırasında sunucuya komut satırından yazmış olduğunuz komutlar).
Şimdi, komut dosyası üzerinde yürütme bitini ayarladığınızda (örneğin, dosya foobar) ve kabuğunuz tarafından yürütmeye çalıştığınızda: "./foobar", kabuk dosyayı analiz etmeye ve komut dosyasını iletmek için doğru programı bulmaya çalışır. için.
Bu kabuk, dosyanın ilk satırını okumaya ve bunun hangi programın çalıştırılması gerektiği "shebang" gösterimini bulmaya çalışarak yapar.
Foobar'ınız ilk satırı şu şekilde içeren bir metin dosyasıysa:
#!/usr/bin/python
Kabuk şu komutu çalıştırmayı dener: /usr/bin/python foobar
temelde python yorumlayıcısını çağırır ve foobar dosyanızın adını bir Python betiği olarak geçirir.
Kabuk dosyanızda böyle bir ilk satır bulamazsa, kabuk komutları içeriyormuş gibi foobar'ın kendisini çalıştırmayı dener.
Yürütülebilir bitli dosya geçerli kabuk komutları içermiyorsa, kabuk basitçe şikayet edecektir.
Exec bit ayarlı TTF dosyalarınız varsa ve komut satırından çalıştırmayı denerseniz, bu olurdu:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
Yani, fontlar için, exec biti ayarlanmamışsa, muhtemelen hiçbir şey daha değişmez.
PS: Sadece bazı yabancı bilgiler. Bir komut veya komut dosyasındaki yürütme bitini kaldırırsanız, yine de bağımsız değişken olarak başka bir programa geçirilebilir. Bu diğer program komutunuzu nasıl çalıştıracağını biliyorsa, exec bitini kaldırmanız gerçekten önemli değildi. Örneğin, basitçe komut satırından yaptıysanız foobar Python betiği Python yorumlayıcısı tarafından çalıştırılmaya devam eder:
$python foobar
onun yerine
$./foobar
"Cat" gibi sistem komutları örneğiyle aynı. Yürütme bitini "cat" öğesinden kaldırırsanız, yürütme işlemi için yeni bir kabuk örneğine geçirebilirsiniz:
$sh -c 'cat myfile'
exec bit kediden kaldırmış olsanız bile çalışacak ve
$cat myfile
yapmaz.