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