On Sat, 8 Feb 2003 [EMAIL PROTECTED] wrote:

> say i have 2 scripts, scriptA and scriptB.
>
> scriptA
> -------
> #!/bin/sh ./scriptB 1 2 3
>
> scriptB
> -------
> #!/bin/sh
>
> echo 0:$0
> echo 1:$1
> echo 2:$2
> echo 3:$3
>
> --
>
> $ ./scriptA
>
> $0:./scriptB
> $1:1
> $2:2
> $3:3
>
> --
>
> according to execve(2), only a single [arg] should be recognized:
>
>     #! interpreter [arg]
>
>      When an interpreter file is execve'd, the system actually execve's the
>      specified interpreter.  If the optional arg is specified, it becomes the
>      first argument to the interpreter, and the name of the originally
>      execve'd file becomes the second argument; otherwise, the name of the
>      originally execve'd file becomes the first argument.  The original argu-
>      ments are shifted over to become the subsequent arguments.  The zeroth
>      argument is set to the specified interpreter.
>
> so the argv[] array in execve() should be loaded as:
>
>     argv[0]=sh, argv[1]=scriptB, argv[2]=scriptA, and
>     argv[3...]=command line args passed to scriptA.
>
> i read many many execve() man pages, and it seems like this
> is the way things should be.  but in practice, it appears on
> many unix's, argv[] gets loaded additionally with any options
> given to a script (which is given as the "[arg]" to the interpreter)
> on the 1st line of a script.
>
> can anyone tell me if this is "proper", and why or why not?
> there doesn't seem to be consistency across unix's.
> some ignore, or give an error if more than one
> "[arg]" exists on the 1st line of a script.

The only thing I can find in IEEE Std 1003.1-2001 (aka SUSv3) is

 "If the first line of a file of shell commands starts with the
  characters "#!", the results are unspecified."

which would indicate that there is no "proper" way of doing this.  You
may also want to have a look at bin/16393; at the bottom is a list of
how some unices handle the situation.  Your best bet at trying to be
portable is to use at most one argument, no whitespace and no "#".

The PR: <http://www.freebsd.org/cgi/query-pr.cgi?pr=16393>

  $.02,
  /Mikko


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-questions" in the body of the message

Reply via email to