이전 답변에서 말했듯이 색상은 파일이 실행 가능한 것으로 간주되는지 여부를 나타냅니다.
Linux 및 대부분의 다른 유닉스에서 "실행"권한 (= 비트)은 파일과 디렉토리에 대한 하나의 의미를 갖습니다.
디렉토리의 경우, 실행 권한이 있으면 해당 내용을 볼 수 있습니다. 그렇지 않으면 디렉토리에 대한 읽기 및 쓰기 액세스 권한이 있더라도 디렉토리로 CD를 넣거나 파일을 나열 할 수 없습니다.
장치 파일 및 기타 특수 Unix 파일 형식과 달리 일반 파일의 경우 실행 비트는 명령 줄에서 파일 이름을 사용하는 경우 O / S (또는보다 정확하게는 셸)가 "실행"또는 실행을 시도 함을 의미합니다. 파일을 명령으로 사용합니다. 반대로 파일에 대한 실행 권한이 없으면 명령 줄에서 실행할 수 없습니다.
예를 들어, / bin / cat 파일 (Unix 명령 인)의 모든 사용자로부터 x 권한을 제거하면 다른 사람이나 "cat"명령을 사용하려는 모든 프로그램이 실패합니다.
그런 다음 "cat"및 "grep"와 같은 OS 명령으로 / * / bin / 디렉토리 (/ bin, / usr / bin, / sbin, / usr / sbin 등)에서 일반적으로 실행할 수있는 파일이 있습니다.
그리고 컴파일되지 않은 해석 된 스크립트가있을 수 있습니다.이 스크립트는 Python 또는 셸 스크립트와 같은 일부 프로그래밍 언어로 작성됩니다 (기본적으로 서버에 sshing 할 때 명령 줄에서와 같이 작성하는 명령).
이제 스크립트 파일 (예 : 파일 foobar)에서 실행 비트를 설정하고 셸에서 "./foobar"로 실행하려고하면 셸에서 파일을 분석하고 스크립트를 전달할 올바른 프로그램을 찾습니다. 에.
이것은 쉘이 파일의 첫 번째 행을 읽고 이것이 실행되어야하는 프로그램 의 "shebang"표기법 을 찾아서 수행합니다.
따라서 foobar가 다음과 같이 첫 줄이있는 텍스트 파일 인 경우 :
#!/usr/bin/python
그런 다음 쉘은 /usr/bin/python foobar
기본적으로 파이썬 인터프리터를 호출하고 foobar 파일의 이름을 파이썬 스크립트로 전달하여 command :을 실행하려고 시도합니다 .
쉘이 파일에서 첫 줄을 찾지 못하면 쉘 명령을 포함하는 것처럼 foobar 자체를 실행하려고 시도합니다.
실행 비트가있는 파일에 유효한 쉘 명령이 포함되어 있지 않으면 쉘은 단순히 불평합니다.
따라서 exec 비트가 설정된 TTF 파일이 있고 명령 줄에서 실행하려고 시도한 경우 이런 일이 발생합니다.
$./FreeMonoOblique.ttf
-bash: ./FreeMonoOblique.ttf: cannot execute binary file: Exec format error
$
따라서 글꼴의 경우 exec 비트가 설정되지 않았지만 실제로 아무것도 변경하지 않으면 더 깔끔합니다.
추신. 단지 관련없는 정보. 일부 명령 또는 스크립트에서 실행 비트를 제거하면 여전히 다른 프로그램에 인수로 전달 될 수 있습니다. 다른 프로그램이 명령을 실행하는 방법을 알고 있다면 exec 비트 제거는 중요하지 않습니다. 예를 들어, foobar Python 스크립트는 단순히 명령 행에서 수행 한 경우 Python 인터프리터에서 계속 실행됩니다.
$python foobar
대신에
$./foobar
"cat"과 같은 시스템 명령의 예와 동일합니다. "cat"에서 exec 비트를 제거해도 여전히 실행을 위해 쉘의 새 인스턴스로 전달할 수 있습니다.
$sh -c 'cat myfile'
고양이에서 exec 비트를 제거한 경우에도 작동합니다.
$cat myfile
하지 않습니다.