실행 가능한 범용 파일(*.pdf 등)

실행 가능한 범용 파일(*.pdf 등)

실행해 보면 녹색으로 나타나는 파일이 많이 있습니다 ls. 나는 이것이 실행 파일이라는 것을 알고 있으며 작동한다는 것을 알고 있습니다 . 그러나 파일 chmod입니다 . 쉼표로 구분된 텍스트 파일이나 PDF를 "실행"하는 방법을 이해할 수 없습니다. 그래서:.csv.pdf

  • 어떻게 실제로 "실행 가능"합니까?
  • 어떻게 실행합니까?
  • 이 작업을 수행하면 어떻게 되나요?

답변1

그냥 질문이에요권한. 파일에 실행 권한이 있는 경우 이는 사용자를 의미합니다.허용하다그것을 실행하기 위해. 그들이 성공할지 여부는 또 다른 문제입니다. 파일을 실행하려면 파일을 실행하는 사용자에게 이 작업을 수행할 수 있는 권한이 있어야 합니다.그리고파일은 유효한 실행 파일이어야 합니다. 표시된 권한은 ls권한의 첫 번째 부분에만 영향을 미치고 나머지 부분에는 영향을 미치지 않습니다.

예를 들어:

$ cat file.csv
a,silly,file
$ chmod a+x file.csv
$ ls -l file.csv
-rwxr-xr-x 1 terdon terdon 13 May 29 15:22 file.csv

x이제 파일에는 실행 권한이 있습니다(권한 문자열의 3 참조 -rwxr-xr-x). 하지만 실행하려고 하면 다음과 같은 오류가 발생합니다.

$ ./file.csv 
./file.csv: line 1: a,silly,file: command not found

이는 쉘이 해당 파일을 쉘 스크립트로 실행하려고 하는데 유효한 쉘 명령이 포함되어 있지 않아 실패하기 때문입니다.

답변2

녹색은 ls파일이 실행되었음을 의미합니다.권한, 이는 반드시 그들이 할 수 있다는 것을 의미하지는 않습니다.처형된어떠한 방식으로.

실수로 실행 권한을 설정했거나 기본 Linux 권한 모델을 지원하지 않는 파일 시스템에서 가져와서 설정한 경우 다음 명령을 사용하여 실행 비트를 제거할 수 있습니다.

chmod a-x -- "$filename"

파일은 더 이상 "실행 가능"으로 표시되지 않습니다.


파일 목록의 다른 색상을 참고하세요.가능한파일 확장자에 따라 설정하지만 이 경우에는 권한 비트일 수 있습니다.

답변3

허용되는 대답은 신화를 영속시키고 Unix에서 파일이 "실행"되는 방식에 대한 이해가 부족합니다.

./cmd셸의 기능은 단순히 실행을 시도하는 것 이상의 작업을 수행합니다 ./cmd. 실행이 ./cmd실패 하는 경우 ENOEXEC(잘못된 실행 파일과 같은)바이너리또는셰르본, 유효한 쉘 스크립트 포함), 쉘은ㅏ.파일을 읽고 그 자체를 쉘 스크립트로 해석하거나비./bin/sh또는 다른 쉘을 실행 하고 ./cmd이를 첫 번째 인수로 전달하십시오.

Shebang 메커니즘( #! /path/to/interpreter)은 대부분의 Unix 시스템에서 구현되지만 표준은 아닙니다. 또한 많은 시스템(예: Linux)은 다른 "마법의" 시퀀스(MSDOS와 같은 파일 확장자 기반도 포함)로 파일 "실행"을 시작할 수 있습니다.

예를 들어 다음을 통해 Linux에서 "실행 가능한" pdf 파일을 가질 수 있습니다.binfmt_misc:

$ chmod +x 2503.pdf
$ ./2503.pdf
./2503.pdf: line 1: fg: no job control
./2503.pdf: line 1051: warning: here-document at line 2 delimited by end-of-file (wanted `/Linearized')
[... a lot of crazy errors in the same vein ...]

$ su -c 'echo :pdf-zathura:M::%PDF-1.::/usr/bin/zathura: > /proc/sys/fs/binfmt_misc/register'
$ ./2503.pdf
[start zathura and display the pdf file]

관련 정보