私は期待どおりに動作しないファイルの実行権限について混乱しています。おそらく私の期待が間違っているためです。とにかく:
スクリプトファイルがあります。簡単にするため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?