如先前的回答所述,着色是指示文件是否被视为可执行文件。
在Linux和大多数其他Unix中,“执行”权限(= bit)对文件具有一种含义,对目录具有另一种含义。
对于目录,如果您具有执行权限,则可以查看其内容。如果不这样做,就不能cd到该目录,也不能列出其中的文件,即使您同时具有对目录的读写访问权限。
对于常规文件(与设备文件和其他特殊的Unix文件类型相反),execute位意味着,如果在命令行上使用文件名,则O / S(或更准确地说是:shell)将尝试“执行”或运行该文件作为命令。相反,如果您没有该文件的执行权限,则无法从命令行运行它。
因此,例如,如果您自己或其他任何人从/ bin / cat文件(这是Unix命令)上的所有用户删除x权限,则任何尝试使用“ cat”命令的程序都会失败。
然后是那些OS命令,例如“ cat”和“ grep”,它们通常在/ * / bin /目录中具有可执行文件-/ bin,/ usr / bin,/ sbin,/ usr / sbin等。
然后可能会有未编译的解释性脚本,这些脚本是用某种编程语言编写的,例如Python或Shell脚本(基本上,您在切入服务器时就像从命令行编写的命令一样)。
现在,当您在脚本文件(例如,文件foobar)上设置了执行位,并尝试通过外壳程序“ ./foobar”执行它时,外壳程序将尝试分析文件并找到正确的程序来传递脚本至。
Shell通过尝试读取文件的第一行并找到应该运行哪个程序的“ shebang”符号来完成此操作。
因此,如果您的foobar是带有第一行的文本文件,如下所示:
#!/usr/bin/python
然后,shell会尝试执行command /usr/bin/python foobar
:,基本上是调用python解释器并将foobar文件的名称作为Python脚本传递给它。
如果shell在文件中找不到第一行,那么它将尝试执行foobar本身,就好像它包含shell命令一样。
但是,如果具有可执行位的文件不包含有效的Shell命令,则该Shell只会抱怨。
因此,如果您具有设置了exec位的TTF文件并尝试从命令行运行它,就会发生这种情况:
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
因此,对于字体,如果未设置exec位,但实际上并没有进行任何更改,则可能会更整洁。
PS只是一些无关的信息。如果确实删除某些命令或脚本上的执行位,则它可能仍会作为参数传递给任何其他程序。如果其他程序知道如何执行命令,则删除exec位并不重要。例如,如果仅从命令行执行操作,foobar Python脚本仍将由Python解释器运行:
$python foobar
代替
$./foobar
与系统命令示例相同,例如“ cat”。如果从“ cat”中删除exec位,您仍然可以将其传递给新的Shell实例以执行:
$sh -c 'cat myfile'
即使您已经从cat和
$cat myfile
没有。