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"

Reply via email to