On 4/1/20 6:20 PM, Chet Ramey wrote:

> Dynamic variables only have their value functions called when the variable
> is referenced. When the variables are simply fetched (declare -p, and
> similar) or enumerated (building an export array), you get the value
> stored in the variable, which is the result of the last time the value
> function was called.

OK, this isn't right. `declare -p' and setting attributes (export RANDOM)
both end up calling the value function. I was testing something else when
I thought I was testing this.

Bash builds the environment lazily: when it needs to. Building the
environment means walking the variable hash table and building an array
from it. That process just uses the values associated with each variable,
with one exception (LINENO), and doesn't call the value function. That's
why you see the value in the environment "sticking".

Chet
-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    c...@case.edu    http://tiswww.cwru.edu/~chet/
_______________________________________________
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to