예상대로 작동하지 않는 파일 실행 권한에 대해 혼란 스럽습니다. 아마 내 기대가 잘못 되었기 때문일 것입니다. 어쨌든:
스크립트 파일이 s있습니다 ~/bin. 단순성은 에 있습니다 . 이 예제를 위해 파일에는 다음 행만 포함됩니다.
#!/bin/zsh
echo "Test";
매우 간단합니다.
~/bin디렉토리로 이동 chmod하여 파일 권한을s 에400 - 즉, 읽기 전용 단지 나를 위해. 실행 권한이 없습니다. 그런 다음 경로를 입력하여 스크립트를 실행하여 다음을 제공하십시오.
% ./s
zsh: permission denied: ./s
여태까지는 그런대로 잘됐다. 권한이 잘못되어 파일을 실행할 수 없습니다. 최대 범핑 권한500 (실행 권한 부여) 작동합니다. 이러한 권한으로 파일이 정상적으로 실행됩니다.
% ./s
Test
이것은 모두 예상대로입니다. 하지만 chmod다시 권한을400 (실행 권한을 다시 해제) 시도하십시오.source 하고 파일을 하면 다음과 같은 일이 발생합니다.
% source s
Test
권한이 있지만 400스크립트가 실행됩니다.
여기 내 질문이 있습니다 : 왜 ./s 실패해야합니까?source s 합니까 합니까 정상적으로 실행됩니까? 이것이 실행 권한의 전체 목적을 무효화하지 않습니까?
에서 400권한,sh s 및zsh s 도 작동합니다.
나는 어딘가에서 끔찍한 무언가를하고 있거나 이해하고 있다고 확신합니다. 누군가 지점 밖으로 어디 나에게 수, 사이의 차이를 설명 ./s, source s, sh s와 zsh s?