Re: #! and argv[0]: the path is removed before invoking the interpreter

From: Kevin Layer (layer@franz.com)
Date: Wed Feb 16 2000 - 19:53:06 EST


>> In <E12LBjK-0000Xp-00@the-village.bc.nu> Alan Cox (alan@lxorguk.ukuu.org.uk) wrote:
>> >> I believe the behavior of #! on Solaris goes all the way back to BSD
>> >> in of the early 80's. FreeBSD 3.0 behaves as Solaris does.
>> >>
>> >> I hope this considered a bug. If there willingness to take a patch for
>> >> it, I might work on making the fix.
>>
>> > Im not sure about bug, but its certainly worth behaving the same way as
>> > everyone else in this case if its appropriate to do so. Take a look at
>> > the fs/binfmt* code and sure - send a patch
>>
>> IMO it's better be CONSISTENT. Either
>> 1) argv[0] is always the same thing that was passed to execv
>> or
>> 2) argv[0] is always "realpath" to executable.

The patch that I sent out does (1). That is, whatever interpreter is
given on the #! is given to execve(), and that is stuck into argv[0].
If it is a relative pathname, then that's what it is. I have
personally never seen #! scripts that use a relative pathname.

>> Since in case of "real binary" we doing 1) IMNSHO we should do this in case
>> of script as well...

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Feb 23 2000 - 21:00:17 EST