When we export a local variable declared within a current shell does it get passed to future sub shells,processes , child processes or future child processes? I was told it get passed to future sub shells. Is it correct?
Asked
Active
Viewed 139 times
2 Answers
2
Just try?
$ export foo=bar
$ bash
$ echo $foo
bar
$ bash
$ echo $foo
bar
$ exit
$ exit
$
tl;dr: Yes.

Amadan
- 191,408
- 23
- 240
- 301
1
This simple test will answer you by itself:
$ VAR1="Hello, World!"
$ echo "${VAR1}"
Hello, World!
$ bash
$ echo "${VAR1}"
$ export VAR1="Hello, World!"
$ echo "${VAR1}"
Hello, World!
$ bash
$ echo "${VAR1}"
Hello, World!
$
Breaking it down:
No export ...
$ VAR1="Hello, World!"
$ echo "${VAR1}"
Hello, World!
$ bash
$ echo "${VAR1}"
$
... leads to VAR1
not being defined in the child.
While with export
...
$ export VAR1="Hello, World!"
$ echo "${VAR1}"
Hello, World!
$ bash
$ echo "${VAR1}"
Hello, World!
$
... leads to VAR1
being defined in the child.

pah
- 4,700
- 6
- 28
- 37
-
so VAR1 can get passed into child ? – Char Aug 10 '16 at 03:02
-
1It **is** *passed* to the child environment, yes. – pah Aug 10 '16 at 03:02
-
but it will not be passed to child processes right? – Char Aug 10 '16 at 03:03
-
1When `bash` is called after the export, it is a child process of the parent shell. – pah Aug 10 '16 at 03:04