Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re^12: shebang anomaly

by jeffenstein (Friar)
on Apr 25, 2018 at 13:40 UTC ( #1213530=note: print w/replies, xml ) Need Help??

in reply to Re^11: shebang anomaly
in thread shebang anomaly

If I understand this correctly:

If the execl() function fails due to an error equivalent to the ENOEXEC error, the shell shall execute a command equivalent to having a shell invoked with the command name as its first operand, with any remaining arguments passed to the new shell.

Then the shell is required to ignore the #! line if present, since the kernel already tried it and failed. However, this section of the other page you linked to hints that bash may do #! interpretation on systems that don't support #!, such as cygwin.

So, I was completely off the mark for saying it might be in libc, but correct in the original response that it isn't the shell doing #! interpretation, since it's natively supported by macOS and Linux.

FWIW, here is what I used to use as a template, when I was working in a shop with Solaris, HP-UX, and Linux, and I couldn't count on the system's version of perl.

#!/bin/sh PATH=$HOME/perl/bin:$HOME/bin:$PATH export PATH exec perl -S -w -x $0 ${1+"$@"} #!perl #line 10 use 5.008; use strict; use warnings;

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1213530]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (6)
As of 2020-11-27 10:52 GMT
Find Nodes?
    Voting Booth?

    No recent polls found