bad interpreter: Permission denied

まず、一行目がshell bang

#!/usr/bin/perl

であるファイルfooを作る。chmod 644 fooでexecutable bitは落しておく。

比較のため、shebangのない、ただのテキストファイルbarも作っておく。ファイルモードは同じく0644で。

bash で、

$ ./bar
bash: ./bar: Permission denied
$ ./foo
bash: ./foo: /usr/bin/perl: bad interpreter: Permission denied

後者はshebangというかmagicまで見て判断してエラーメッセージを出しているわけだが、./foo: Permission deniedでいいじゃん、余計な診断まですんなと思うのはおれだけだろうか。

MacOSで開発している人からきたファイルだったので、ははぁ、例のCRとかLFとか改行コードがアレなせいで、正しいインタプリタを指してるのにどうも実行できないという奇妙に見える現象のアレか、と早合点して、無駄な時間をすごしてしまった。

ii  bash           2.05a-11       The GNU Bourne Again SHell