I\'d like to execute an gawk script with --re-interval
using a shebang. The \"naive\" approach of
#!/usr/bin/gawk --re-interval -f
... awk scri
The shebang line has never been specified as part of POSIX, SUS, LSB or any other specification. AFAIK, it hasn't even been properly documented.
There is a rough consensus about what it does: take everything between the !
and the \n
and exec
it. The assumption is that everything between the !
and the \n
is a full absolute path to the interpreter. There is no consensus about what happens if it contains whitespace.
Thankfully, 1. and 4. seem to have died out, but 3. is pretty widespread, so you simply cannot rely on being able to pass more than one argument.
And since the location of commands is also not specified in POSIX or SUS, you generally use up that single argument by passing the executable's name to env
so that it can determine the executable's location; e.g.:
#!/usr/bin/env gawk
[Obviously, this still assumes a particular path for env
, but there are only very few systems where it lives in /bin
, so this is generally safe. The location of env
is a lot more standardized than the location of gawk
or even worse something like python
or ruby
or spidermonkey
.]
Which means that you cannot actually use any arguments at all.