Re: New GSoC microproject ideas
- From
David Kastrup <dak@gnu.org>
- Date
- Mar 12, 2014, 21:12 UTC
- Message-ID
- <87k3bzi0j4.fsf@fencepost.gnu.org>
- In-Reply-To
- <20140312204453.GA9702@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 19 quoted lines
> On Wed, Mar 12, 2014 at 09:37:41PM +0100, David Kastrup wrote:
>
>> > Try:
>> >
>> > zippo() {
>> > echo $XXX
>> > }
>> > XXX=8 zippo
>> > zippo
>> >
>> > XXX remains set after the first call under dash (but not bash). I
>> > believe "ash" has the same behavior.
>>
>> Yes. I would lean towards considering this a bug. But I agree that it
>> does not help.
>
> Dash's behavior is POSIX (and "bash --posix" behaves the same way).
>
> http://article.gmane.org/gmane.comp.version-control.git/137095In that case I consider it a standard-compliant bug (namely being a serious problem regarding the usefulness of shell functions). Which makes it unlikely to go away. It makes it easier to interpret, say
zippo() {
XXX=$XXX
}XXX=8 zippo echo $XXX
as shell functions presumably should be able to assign to shell variables like built-ins do. But that's not really much of an advantage.
The behavior does not make sense to me also with regard to special built-ins. Bash does
dak@lola:/usr/local/tmp/git$ XXX=8 : dak@lola:/usr/local/tmp/git$ echo $XXX
dak@lola:/usr/local/tmp/git$
And that makes sense to me. Whatever, does not help.
-- David Kastrup