Arfrever Frehtes Taifersar Arahesis wrote:
bash 4.2.47:
$ export VAR1=abc VAR2=abc
$ f() { local VAR1; local -x VAR2; bash -c 'declare -p VAR{1,2}'; }
$ f
bash: line 0: declare: VAR1: not found
bash: line 0: declare: VAR2: not found

bash 4.3.11:
$ export VAR1=abc VAR2=abc
$ f() { local VAR1; local -x VAR2; bash -c 'declare -p VAR{1,2}'; }
$ f
declare -x VAR1="abc"
declare -x VAR2="abc"
---
   What's especially peculiar is that if you change VAR1+VAR2
in 'f', then the called bash in 'f' should still see the original
value of VAR1 as it was not exported (but it sees both
values as assigned in 'f'.  I.e.

Changing 'f' above to read:
$ f() { local VAR1=1; local -x VAR2=2; bash -c 'declare -p VAR{1,2}'; }
$ f
declare -x VAR1="1"
declare -x VAR2="2"
----
Note, the exportation of the local value from 'f()'
of 'VAR1' to a child process was also in 4.2.


Reply via email to