ดังคำตอบก่อนหน้านี้ที่กล่าวว่าการระบายสีคือการระบุว่าไฟล์นั้นพิจารณาว่าสามารถเรียกใช้งานได้หรือไม่
สิทธิ์ "execute" (= bit) ใน Linux และ Unixes อื่น ๆ ส่วนใหญ่มีความหมายหนึ่งสำหรับไฟล์และอีกหนึ่งสำหรับไดเรกทอรี
สำหรับไดเรกทอรีหากคุณได้รับอนุญาตให้ดำเนินการคุณสามารถดูเนื้อหาได้ หากคุณไม่ทำเช่นนั้นคุณจะไม่สามารถซีดีไปยังไดเรกทอรีและคุณไม่สามารถแสดงรายการไฟล์ในนั้นแม้ว่าคุณจะมีทั้งการเข้าถึงแบบอ่านและเขียนในไดเรกทอรี
สำหรับไฟล์ปกติ (ตรงข้ามกับไฟล์อุปกรณ์และชนิดไฟล์ Unix พิเศษอื่น ๆ ) บิตเรียกใช้หมายความว่าถ้าคุณใช้ชื่อไฟล์ในบรรทัดคำสั่ง O / S (หรือมากกว่านั้น: shell) จะพยายาม "execute" หรือเรียกใช้ ไฟล์เป็นคำสั่ง ในทางกลับกันหากคุณไม่ได้รับอนุญาตให้ใช้งานไฟล์คุณจะไม่สามารถเรียกใช้จากบรรทัดคำสั่งได้
ตัวอย่างเช่นหากคุณลบสิทธิ์ x จากผู้ใช้ทั้งหมดในไฟล์ / bin / cat (ซึ่งเป็นคำสั่ง Unix) คุณเองหรือใครก็ตามและโปรแกรมใด ๆ ที่พยายามใช้คำสั่ง "cat" จะล้มเหลว
สิ่งเหล่านี้คือคำสั่ง OS เช่น "cat" และ "grep" ซึ่งมีไฟล์ executeble ที่ใช้งานได้จริงใน / * / bin / ไดเรกทอรี - / bin, / usr / bin, / sbin, / usr / sbin เป็นต้น
และจากนั้นอาจมีสคริปต์ที่ไม่ถูกแปลแปลซึ่งเขียนด้วยภาษาโปรแกรมบางอย่างเช่น Python หรือเชลล์สคริปต์ (โดยทั่วไปคือคำสั่งที่คุณเขียนเหมือนจาก commandline เมื่อ sshing ไปยังเซิร์ฟเวอร์)
ตอนนี้เมื่อคุณตั้งค่ารันบิตบนไฟล์สคริปต์ (ตัวอย่างเช่นไฟล์ foobar) และลองเรียกใช้งานโดยเชลล์ของคุณ: "./foobar" เชลล์จะพยายามวิเคราะห์ไฟล์และค้นหาโปรแกรมที่ถูกต้องเพื่อส่งสคริปต์ ถึง.
เชลล์นี้ทำโดยพยายามอ่านบรรทัดแรกของไฟล์และค้นหาเครื่องหมาย"shebang"ของโปรแกรมที่ควรรัน
ดังนั้นหาก foobar ของคุณเป็นไฟล์ข้อความที่มีบรรทัดแรกเช่นนี้:
#!/usr/bin/python
จากนั้นเชลล์จะพยายามดำเนินการคำสั่ง: /usr/bin/python foobar
โดยทั่วไปจะเรียกใช้ตัวแปลภาษาไพ ธ อนและส่งชื่อไฟล์ foobar ของคุณไปเป็นสคริปต์ Python
หากเชลล์ไม่พบบรรทัดแรกในไฟล์ของคุณมันก็จะพยายามรัน foobar เองราวกับว่ามันมีคำสั่งเชลล์
หากไฟล์ที่มีบิตเรียกทำงานไม่ได้มีคำสั่งเชลล์ที่ถูกต้อง แต่เชลล์ก็จะบ่น
ดังนั้นนี่คือสิ่งที่จะเกิดขึ้นหากคุณมีไฟล์ TTF ที่มีชุดบิต exec และพยายามเรียกใช้จากบรรทัดคำสั่ง:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
ดังนั้นสำหรับฟอนต์ก็น่าจะเป็น neater ถ้าไม่ได้ตั้งค่าบิตบิต แต่ไม่ได้เปลี่ยนแปลงอะไรเลย
ป.ล. เพียงแค่มีข้อมูลที่ไม่เกี่ยวข้อง หากคุณลบบิตเรียกใช้งานบนคำสั่งหรือสคริปต์บางรายการอาจยังคงถูกส่งผ่านไปยังโปรแกรมอื่น ๆ เพื่อเป็นอาร์กิวเมนต์ หากโปรแกรมอื่นรู้วิธีดำเนินการคำสั่งของคุณการลบ exec บิตของคุณไม่สำคัญ ตัวอย่างเช่นสคริปต์ foobar Python จะยังคงทำงานโดย Python interpreter ถ้าคุณทำจาก command line:
$python foobar
แทน
$./foobar
เช่นเดียวกับตัวอย่างของคำสั่งระบบเช่น "cat" หากคุณลบ exec บิตออกจาก "cat" คุณยังคงสามารถส่งผ่านไปยังอินสแตนซ์ใหม่ของเชลล์สำหรับการดำเนินการ:
$sh -c 'cat myfile'
จะทำงานแม้ว่าคุณจะลบ exec บิตจาก cat และ
$cat myfile
ไม่