"Gabriel Genellina" <ga******@yahoo.com.arwrote:
En Sat, 03 Feb 2007 07:35:22 -0300, Peter Otten <__*******@web.de>
escribió:
>#!/usr/bin/env python2.5
python2.5 will be that single argument and no options are possible at
all.
What might be the reasons for such a seemingly arbitrary limitation?
The shell parses that line, not Python, so you should look into its
documentation.
Bzzt! In any modestly recent Unix version (meaning fifteen years
old or younger), it has been the kernel that parsed the #! line,
not the shell.
As for *how* the kernel parses that line, it varies between Unix
versions. Linux, at least versions 2.4 and 2.6, takes everything
after the interpreter and passes it as a single argument to the
interpreter, with leading and trailing whitespace stripped. Thus
#! /usr/bin/interpreter foo bar gazonk del
will give the parameter "foo bar gazonk del" to the interpreter.
SunOS 5.10 (aka Solaris 10) on the other hand, splits the line on
whitespace and passes only the first word as parameter, and would
thus give only "foo" to the interpreter for the same #! line.
I seem to remember having used some Unix flavor that allowed
multiple words as arguments, and thus passed the four words
"foo", "bar", "gazonk" and "del" as arguments for the above #!
line, but I don't remember what Unix that was.
--
Thomas Bellman, Lysator Computer Club, Linköping University, Sweden
"Adde parvum parvo magnus acervus erit" ! bellman @ lysator.liu.se
(From The Mythical Man-Month) ! Make Love -- Nicht Wahr!