NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: /usr/bin/env behaviour?



On 11/8/08, Malcolm Herbert <mjch%mjch.net@localhost> wrote:
>
>  On Sun, 9 Nov 2008 03:28:09 +0100, "Rhialto" <rhialto%falu.nl@localhost> 
> said:
>  > On Sun 09 Nov 2008 at 11:03:20 +1100, Malcolm Herbert wrote:
>  > > Thinking about it, it may not even be env's fault if /bin/sh (or
>  > > whatever is responsible for parsing the #! line) is giving env a badly
>  > > tokenised set of arguments ...
>  >
>  > Here you're closest. It is the execve() system call that parses the line
>  > and decides to invoke env. Unfortunately it allows only a single
>  > argument.
>

Other systems pass the rest of the line.  POSIX doesn't seem to
specify what should be done, but the #! /usr/bin/env foo method of
script execution is gaining in popularity.

The various man pages are all pretty unclear.  :)

Solaris:
"the remaining arguments to the interpreter are arg0 through argn of
the originally exec'd file."

os x:
If any optional args are specified, they become the first (second,
...) argument to the interpreter.

freebsd:
The original arguments are shifted over to become the subsequent arguments.

linux:
On Linux, the entire string following the interpreter name is passed
as a single argument to the interpreter, and this string can include
white space.


Home | Main Index | Thread Index | Old Index