Linux에서 "폴더 실행"이 가능합니까?

Linux에서 "폴더 실행"이 가능합니까?

Linux에서 폴더를 실행 파일로 실행하는 데에는 몇 가지 철학이 있습니까?

user@node main % ls -lash ./bin
total 0
0 drwxrwxrwx  2 user  staff    64B May 23 21:04 .
0 drwxr-xr-x  6 user  staff   192B May 23 21:04 ..
user@node main % ./bin         
zsh: permission denied: ./bin

허가를 거부한다는 것은 허용한다는 뜻입니다. 그렇지 않다면 왜 permission denied비슷한 것이 아닌가요 can't run a directory?

아니면 디렉토리가 이런 식으로 관련되어 있을 때 API의 이상한 인공물일까요?

PS 나는 x 플래그가사용cd를 허용/거부하고 디렉토리 컨텍스트에 긴 목록(ls -l)을 지정하는 것은 이 질문의 목적이 아닙니다.

PSS Python에서 디렉터리 내부에 특정 파일 구조가 있으면 Python "실행 파일"로 간주될 수 있습니다. (즉, Python 인터프리터가 실행할 Python 파일 대신 디렉토리를 전달할 수 있습니다).

답변1

폴더는 Linux API를 사용하여 실행할 수 없습니다. 특히,execve반품EACCES이를 시도할 때 Zsh는 "권한 거부"를 의미합니다. 아마도 실행 권한이 거부된 경우 해당 오류가 반환될 수도 있기 때문일 것입니다. 정식 오류 메시지는 다음과 같습니다.EACCES "권한이 거부되었습니다"; execve여기서 발생하는 비정규 파일을 실행하려는 시도를 포함하여 다양한 오류를 처리하려면 이를 사용하십시오.

대부분의 쉘은 Zsh처럼 동작하지만 일부는 다르게 처리합니다(예: Bash 출력).

bash: ./bin: Is a directory

autocd옵션( )을 사용하여 Zsh가 폴더를 변경하여 폴더를 "실행"하도록 지시할 수도 있습니다 setopt autocd. fish를 실행하려고 하면 항상 폴더로 변경됩니다.

관련 정보