bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Passing variables by reference conflicts with local


From: Greg Wooledge
Subject: Re: Passing variables by reference conflicts with local
Date: Thu, 26 Apr 2012 08:11:00 -0400
User-agent: Mutt/1.4.2.3i

On Wed, Apr 25, 2012 at 04:46:02PM -0700, Linda Walsh wrote:
> I would guess (without looking at the codE), that
> when you do a local, it creates another copy of 'var' at the end of an 
> array.
> like var[0][1]
> so global is at 0, and local is at 1.

I'm pretty sure bash doesn't use a multidimensional array to do variable
scoping.  I'd expect some sort of a stack.

> As to whether or not it is "correct" by some arbitrarily set standard or 
> definition of "correct" -- that's a matter for nit-pickers and POSIXies.  
> :-)

Bash uses "dynamic scoping", which is a somewhat controversial choice, and
has led to a whole lot of confusion in the past.  Most other shells use
static scoping.  POSIX has nothing to say on the matter; "local" is not
defined in POSIX, and POSIX does not even require functions to implement
local variables at all (let alone dictate what kind of scoping to use).

POSIX on functions:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_09_05

Wikipedia on dynamic scoping:
http://en.wikipedia.org/wiki/Scope_%28computer_science%29#Dynamic_scoping



reply via email to

[Prev in Thread] Current Thread [Next in Thread]