Glen Barber <glen.j.bar...@gmail.com> writes: > Hi, Lowell > > On Mon, Jul 20, 2009 at 7:02 AM, Lowell > Gilbert<freebsd-stable-lo...@be-well.ilk.org> wrote: >> Glen Barber <glen.j.bar...@gmail.com> writes: >> >>> Possibly off-topic... >>> >>> >>> 2009/7/19 Glen Barber <glen.j.bar...@gmail.com>: >>>> 2009/7/19 Romain Tartière <rom...@blogreen.org>: >>>>> Hi Glen, >>>>> >>>>> On Sun, Jul 19, 2009 at 04:32:28PM -0400, Glen Barber wrote: >>>>>> > % sh foo.sh >>>>>> > % zsh foo.sh >>>>>> > % bash foo.sh >>>>>> What happens if you replace '#!/bin/sh' with '#!/usr/local/bin/zsh' ? >>>>> >>>>> This is not related to my problem since I am not running the script >>>>> using ./foo.sh but directly using the proper shell. sh just behaves >>>>> differently, that looks odd so I would like to know if it is a bug in sh >>>>> or if there is no specification for this and the behaviour depends of >>>>> the implementation of each shell, in which case I have to tweak the >>>>> script I am porting to avoid this construct (passing $? as an argument >>>>> for example). >>>>> >>>>> Romain >>>>> >>>> >>>> My understanding was this: >>>> >>>> If you specify 'sh foo.sh' at the shell, the script will be run in a >>>> /bin/sh shell, _unless_ you override the shell _in_ the script. >>>> >>>> Ie, 'sh foo.sh' containing '#!/bin/sh' being redundant, but 'zsh >>>> foo.sh' containing '#!/bin/sh' would execute using zsh. >>>> >>>> >>> >>> I meant to say in the last line: "'#!/bin/sh' would override the 'zsh' >>> shell." >>> >>> Can someone enlighten me if I am wrong about this? >> >> The person to whom you were responding had it closer. >> >> The shell specified in the "#!" first line is only consulted if you run >> it as "./foo.sh". Otherwise, it's input to the shell that you started, >> and the line is only a comment. >> > > I suppose that makes sense, but what if the script location is in the > user's $PATH?
That would be the same as "./foo.sh". The distinction is between whether the file is treated as an executable or as input to a script. You might find the manual page for execve(2) useful for more detail on how the former case is handled. _______________________________________________ freebsd-stable@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"