Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Jul 2009 21:08:00 -0400
From:      Glen Barber <glen.j.barber@gmail.com>
To:        Mark Andrews <marka@isc.org>
Cc:        stable@freebsd.org
Subject:   Re: Shell execution ( [was] Re: Value of $? lost in the beginning of a function.)
Message-ID:  <4ad871310907191808g8a81107wa17799284be176a@mail.gmail.com>
In-Reply-To: <200907200102.n6K12h1Y048534@drugs.dv.isc.org>
References:  <4ad871310907191717g1ed90be7y92250f2addc38d43@mail.gmail.com> <200907200102.n6K12h1Y048534@drugs.dv.isc.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jul 19, 2009 at 9:02 PM, Mark Andrews<marka@isc.org> wrote:
>
> In message <4ad871310907191717g1ed90be7y92250f2addc38d43@mail.gmail.com>,=
 Glen
> Barber writes:
>> Possibly off-topic...
>>
>>
>> 2009/7/19 Glen Barber <glen.j.barber@gmail.com>:
>> > 2009/7/19 Romain Tarti=3DE8re <romain@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. =3DA0sh just beha=
ves
>> >> 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 argumen=
t
>> >> 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' s=
hel=3D
>> l."
>>
>> Can someone enlighten me if I am wrong about this?
>>
>
> "#!" is used to define the interpretor when the file is exec'd.
>
> perl, AFAIK, is the only interpretor that will look at what is after
> the "#!" and modify it's behaviour. =A0All other a interpretors (shells)
> treat "#!" as a comment.
>
> Some shells used to examine the executable about to be called and
> looked for "#!" and invoke the correct interpretor. =A0This was how
> "#!" was supported before kernels has support for "#!". =A0It was all
> done in userland.
>

Hi, Mark.

You've given me enough information to point me in the right direction
on digging further into this.  Thanks, and I appreciate the response!


--=20
Glen Barber



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4ad871310907191808g8a81107wa17799284be176a>