.sh 파일은 sh를 명시적으로 호출하지 않으면 실행할 수 없습니다.

.sh 파일은 sh를 명시적으로 호출하지 않으면 실행할 수 없습니다.

다음을 포함하는 파일이 있다고 가정해 보겠습니다 run.sh.

#! /bin/sh -x

x-www-browser index.html

그리고 ls -l run.sh말했다:

-rwxr-xr-x 1 myusername myusername 39 Jan  9 19:32 run.sh

그리고 ./run.sh말했다:

bash: ./run.sh: Permission denied

왜 작동하지 않나요? 왜 sh -x run.sh완벽하게 작동합니까?


더 많은 정보, 왜냐하면 분명히 쉽지 않기 때문입니다

을 실행하면 sudo오류가 출력되지 않지만 아무 작업도 수행되지 않습니다.

myusername@crunchbang:/mnt/data$ sudo ./run.sh
[sudo] password for myusername: 
myusername@crunchbang:/mnt/data$ 

답변1

파일 시스템이 run.sh열려 있고 마운트되어 있습니다 noexec.

답변2

내 생각엔 #!해당 줄에 이상한 문자가 있는 것 같습니다. ASCII Nul또는 기타 인쇄할 수 없는 문자, 백스페이스 키 등이 있을 수 있습니다. 일부 쉘에는 MS-DOS/Windows 2바이트(캐리지 리턴 및 줄 바꿈) 줄 끝 표시에 문제가 있습니다. 최신 편집자는 파일을 검사하고 Unix 스타일(개행) 줄 끝이 있는지 또는 Windows 스타일(Mac 스타일일 수도 있음) 텍스트 파일이 있는지 확인할 수 있습니다. 어쩌면 편집자가 혼란스러워서 Windows 텍스트 파일을 작성했을 수도 있습니다.

이로 인해 커널은 지정된 "실행 파일"을 찾을 수 없으며 존재하지 않는 "실행 파일"을 실행할 수 없다고 주장합니다.

관련 정보