Re: [Patch] Using 'perl' in *.sh
- From
- Jan-Benedict Glaw <jbglaw@lug-owl.de>
- Date
- Jul 9, 2006, 21:20 UTC
- Message-ID
- <20060709212051.GW22573@lug-owl.de>
- In-Reply-To
- <7v4pxqfri7.fsf@assigned-by-dhcp.cox.net>
On Sun, 2006-07-09 13:33:04 -0700, Junio C Hamano <junkio@cox.net> wrote:
Show 14 quoted lines
> Michal Rokos <michal.rokos@nextsoft.cz> writes: > > On Sunday 09 July 2006 12:14, Junio C Hamano wrote: > >> Michal, is there a reason you do not want to have the version of > >> perl you teach git tools via #! lines with PERL_PATH on your $PATH? > > > > I have no problem with that. I can set $PATH. > > But then I'd suggest to change magic #! > > from #!/usr/bin/perl > > to #!/usr/bin/env perl > > for *.perl > > > > It that what you meant? > > No, that is not what I meant.
Though I think you actually should :-)
Show 6 quoted lines
> Invocation of perl _in_ scripts can be controlled by user's > PATH, but #! cannot be. As Merlyn says 'env' is a nice hack, > but we configure the scripts we install to have #! pointing at > the right interpreter as a more cleaner (than using 'env', that > is) workaround anyway, so #! pointing at PERL_PATH and scripts > relying on user's $PATH would be the right thing to do.
It's just a question of the target system, so: What is our target? If we target a fairly recent Unix box, we'd put whatever a user asked for into the shellbang, and hope that he properly sets $PATH.
If we try to aim at POSIX systems, then first of all, `env' isn't a hack. It's specified i the POSIX documents, even argument passing is given. (So if `#!/usr/bin/env perl -w' doesn't work on a HP-UX system, that's simply broken wrt. POSIX.)
At the maximum, we'd allow the user to supply the location of `env' if it's not /usr/bin/env, but I guess you'll find a hard time finding a system where there's no /usr/bin/env... The final killer would be to explicitely mention the interpreter and install all scripts a-x to force that :-)
MfG, JBG
-- Jan-Benedict Glaw jbglaw@lug-owl.de . +49-172-7608481 _ O _ "Eine Freie Meinung in einem Freien Kopf | Gegen Zensur | Gegen Krieg _ _ O für einen Freien Staat voll Freier Bürger" | im Internet! | im Irak! O O O ret = do_actions((curr | FREE_SPEECH) & ~(NEW_COPYRIGHT_LAW | DRM | TCPA));