まず、一行目が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