-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 5/3/14, 7:22 PM, Arfrever Frehtes Taifersar Arahesis wrote: > 'local -x VARIABLE' (without assignment of value) does not clear variable for > subprocesses. > It is regression in bash 4.3.
It's not actually a regression; it's a bug fix. It's worth having the discussion again, though. A variable isn't set until it's assigned a value. A statement like `local x' or `export x' doesn't actually create a variable. It creates a `placeholder' so that a subsequent assignment will instantiate a variable with the right attributes, or change the behavior when a value is assigned, but does not assign a value itself. This means that something like export x echo ${x-unset} printenv x will display `unset'. The idea behind the bash-4.3 behavior is that the placeholder local variable isn't set, and doesn't really exist. It doesn't shadow a global variable with the same name until it gets a value. The bash-4.2 behavior was inconsistent: variables with attributes but without values weren't quite set (value == 0x0, but still visible) and weren't quite unset. I tightened up the some of the consistency starting with bash-4.3 beta. I'm sure there are still inconsistencies there (and, in fact, I found one while looking at this). If you want something that works in bash-4.2 and bash-4.3, assigning the empty string to the local variables should get you most of the way where you want to go. Chet - -- ``The lyf so short, the craft so long to lerne.'' - Chaucer ``Ars longa, vita brevis'' - Hippocrates Chet Ramey, ITS, CWRU c...@case.edu http://cnswww.cns.cwru.edu/~chet/ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (Darwin) Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iEYEARECAAYFAlNnq9oACgkQu1hp8GTqdKuE7ACgjHK7Pp3vdpKiD/KG3FS1/qtW yiQAnRrpR4LB5X4ZQ7uALD4HvekSegvr =5tgI -----END PGP SIGNATURE-----