Messages in this thread | | | From | "Khimenko Victor" <> | Date | Tue, 29 Feb 2000 21:30:47 +0300 (MSK) | Subject | Re: [PATCH] #! and argv[0]: the path is removed ... |
| |
In <UTC200002172119.WAA10213.aeb@arend.cwi.nl> Andries.Brouwer@cwi.nl (Andries.Brouwer@cwi.nl) wrote: > This is an old discussion. Let me post my docs once more. > Every now and then I learn something new.
> --------------------------------------------------------- > 1. The Linux situation: > If you have a script called bar, that starts with
> #!/some/path/foo lots of arguments
> and the script is invoked using
> /some/other/path/bar x y z
> then the program /some/path/foo is called with six arguments:
> 0: "foo" > 1: "lots of arguments" > 2: "/some/other/path/bar" > 3: "x" > 4: "y" > 5: "z"
> 2. What do other systems do?
> As far as I know, Linux is the only system that uses "foo" > as first argument. The other systems I checked all have
> 0: "/some/path/foo"
> (The above patch would bring Linux in line with Solaris etc.)
> Concerning the #! line: > Linux truncates the #! line after 127 bytes. > SunOS 4.1.4 truncates the #! line after 32 bytes and has
> 1: "lots of argumen"
> SunOS 5.6 cuts at the space and has
> 1: "lots"
> Most systems agree with Linux. However, I just noticed that > BSDI 4.0 splits at spaces and creates separate arguments:
> 0: "/some/path/foo" > 1: "lots" > 2: "of" > 3: "arguments" > 4: "/some/other/path/bar" > 5: "x" > 6: "y" > 7: "z"
> The next argument (number 1 or 2 on most systems) > is the full pathname that was used to invoke the script. > However, on IRIX 5.3 and IRIX 6.2 I find
> 2: "bar"
> the stripped pathname only. > ---------------------------------------------------------
> In other words, the patch given above will "correct" > the only case where Linux differs from all systems > I tested, and will make Linux go with the majority > in all respects, but there remain differences.
Since there are no standards the only way is to use other systems and guide and think about whole problem. I know I wanted quite a few times to put FEW additional arguments for script. I NEVER needed one argument with spaces.
> PS1 > POSIX says nothing about this. > "Some systems can exec shell scripts. This functionality > is outside the scope of this document."
> PS2 > Linux does not allow the #! interpreter to be > a shell script itself.
> PS3 > Of course: corrections and additions are welcome - aeb@cwi.nl
- 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/
| |