What is the export command supposed to do in Linux?

What is the export command supposed to do in Linux?


Here is an example to demonstrate the behavior.

$ # set testvar to be a value
$ testvar=asdf
$ # demonstrate that it is set in the current shell
$ echo $testvar
$ # create a bash subprocess and examine the environment.
$ bash -c "export | grep 'testvar'"

$ bash -c 'echo $testvar'

$ # export testvar and set it to the a value of foo
$ export testvar=foo
$ # create a bash subprocess and examine the environment.
$ bash -c "export | grep 'testvar'"
declare -x testvar="foo"
$ bash -c 'echo $testvar'
foo
$ # mark testvar to not be exported
$ export -n testvar
$ bash -c "export | grep 'testvar'"

$ bash -c 'echo $testvar'

You will notice that without export the new bash process you created was not able to see testvar. When testvar was exported, the new process was able to see testvar.


Export a shell variable as environment variable.


Please see this Bash by example tutorial from IBM. It even includes an example of using export.