जैसा कि पिछले जवाब में कहा गया है, रंग यह इंगित करने के लिए है कि क्या फ़ाइलों को निष्पादन योग्य माना जाता है या नहीं।
लिनक्स में "निष्पादित" अनुमति (= बिट) और अधिकांश अन्य यूनिक्स में फ़ाइलों के लिए एक अर्थ है और निर्देशिकाओं के लिए दूसरा है।
निर्देशिकाओं के लिए, यदि आपने इसके लिए अनुमति दी है, तो आप इसकी सामग्री देख सकते हैं। यदि आप नहीं करते हैं, तो आप निर्देशिका में सीडी नहीं रख सकते हैं, और न ही आप इसमें फाइलों को सूचीबद्ध कर सकते हैं, भले ही आपके पास निर्देशिका तक पहुंच को पढ़ना और लिखना दोनों हो।
नियमित फ़ाइलों के लिए (डिवाइस फ़ाइलों और अन्य विशेष यूनिक्स फ़ाइल प्रकारों के विपरीत), निष्पादित बिट का मतलब है कि यदि आप कमांड लाइन पर फ़ाइल नाम का उपयोग करते हैं, तो ओ / एस (या अधिक सटीक: शेल) "निष्पादित" या चलाने की कोशिश करेंगे एक कमांड के रूप में फ़ाइल। इसके विपरीत, यदि आपके पास फ़ाइल पर अनुमति नहीं है, तो आप इसे कमांड लाइन से नहीं चला सकते हैं।
इसलिए, यदि आप, उदाहरण के लिए, सभी उपयोगकर्ताओं से / बिन / बिल्ली फ़ाइल (जो एक यूनिक्स कमांड है) पर एक्स अनुमति को हटा दें, तो आप स्वयं या किसी अन्य और कोई भी प्रोग्राम जो "कैट" कमांड का उपयोग करने की कोशिश करता है, वह विफल हो जाएगा।
इसके बाद OS कमांड्स होते हैं, जैसे "कैट" और "grep", जिनके पास / / बिन / डायरेक्टरी - / बिन, / usr / बिन, / sbin, / usr / sbin आदि में बेकार की फाइलें होती हैं।
और फिर अनकैप्ड, व्याख्या की गई स्क्रिप्ट्स हो सकती हैं, जो या तो कुछ प्रोग्रामिंग भाषा में लिखी जाती हैं, जैसे कि पायथन या शेल स्क्रिप्ट (मूल रूप से, आपको कमांड लिखते हैं जैसे कि कमांडलाइन से सर्वर पर sshing करते समय)।
अब, जब आप स्क्रिप्ट फ़ाइल पर बिट निष्पादित करते हैं (उदाहरण के लिए, फ़ाइल फ़ॉबर), और इसे अपने शेल द्वारा निष्पादित करने का प्रयास करें: "./foobar", शेल फ़ाइल का विश्लेषण करने और स्क्रिप्ट को पास करने के लिए सही प्रोग्राम खोजने की कोशिश करता है। सेवा।
यह शेल फ़ाइल की पहली पंक्ति को पढ़ने और "शेबंग" अंकन को खोजने की कोशिश करके करता है किस प्रोग्राम को चलाना है।
तो, अगर आपका फोब्बर इस तरह की पहली पंक्ति के साथ एक पाठ फ़ाइल थी:
#!/usr/bin/python
फिर शेल कमांड को निष्पादित करने की कोशिश करेगा: /usr/bin/python foobar
मूल रूप से अजगर इंटरप्रेटर को लागू करना और अपनी फोब्बर फाइल का नाम इसे पायथन स्क्रिप्ट के रूप में पारित करना।
यदि शेल को आपकी फ़ाइल में ऐसी पहली पंक्ति नहीं मिलेगी, तो यह फ़ॉबरों को स्वयं निष्पादित करने का प्रयास करेगा जैसे कि इसमें शेल कमांड सम्मिलित हैं।
यदि निष्पादन योग्य बिट वाली फ़ाइल में मान्य शेल कमांड नहीं हैं, तो शेल बस शिकायत करेगा।
तो यह वही होता है, यदि आपके पास TTF फाइलें होती हैं, जो निष्पादन बिट सेट के साथ होती हैं और इसे कमांड लाइन से चलाने की कोशिश की जाती है:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
इसलिए, फोंट के लिए, यह शायद नीटर है, यदि निष्पादन बिट सेट नहीं है, लेकिन वास्तव में कुछ भी नहीं बदलता है।
पुनश्च बस कुछ बाहरी जानकारी। यदि आप कुछ कमांड या स्क्रिप्ट पर निष्पादित बिट को हटाते हैं, तो यह अभी भी किसी अन्य प्रोग्राम को एक तर्क के रूप में पारित किया जा सकता है। यदि वह अन्य प्रोग्राम जानता है, तो आपकी कमांड को कैसे निष्पादित किया जाए, तो आपकी एक्ज़िट बिट को हटाना वास्तव में कोई मायने नहीं रखता। उदाहरण के लिए, फ़ोबो पायथन स्क्रिप्ट अभी भी पायथन दुभाषिया द्वारा चलाई जाएगी, यदि आपने बस कमांड लाइन से किया है:
$python foobar
के बजाय
$./foobar
सिस्टम कमांड के उदाहरण के साथ ही, जैसे कि "कैट"। यदि आप "बिल्ली" से निष्पादन को हटाते हैं, तो आप इसे निष्पादन के लिए शेल के एक नए उदाहरण के लिए पास कर सकते हैं:
$sh -c 'cat myfile'
काम करेंगे, भले ही आपने बिल्ली से थोड़ा हटा दिया हो और
$cat myfile
ऐसा नहीं करता।