Possible Duplicate:
Difference between “a=b” and “export a=b” in bash

It is hard to admit, but I have never really understood what exactly export does to an environment variable. I know that if I don't export a variable I sometimes can't see it in child processes, but sometimes it seems like I can. What is really going on when I say

export foo=5

and when should I not export a variable?

link|improve this question

38% accept rate
Here's a link to at least one other helpful question on this topic: superuser.com/questions/143413/linux-environment-variables ... since ironically this question was the first one that popped up on Google for my query on export in bash. – Ogre Psalm33 Apr 13 '11 at 18:07
Also: superuser.com/questions/18988/… – Ogre Psalm33 Apr 13 '11 at 18:31
feedback

closed as exact duplicate by Dennis Williamson, Ivo Flipse Jun 17 '10 at 7:13

This question covers exactly the same ground as earlier questions on this topic; its answers may be merged with another identical question. See the FAQ for guidance on how to improve it.

3 Answers

From man bash:

ENVIRONMENT

When a program is invoked it is given an array of strings called the environment. This is a list of name-value pairs, of the form name=value.

The shell provides several ways to manipulate the environment. On invocation, the shell scans its own environment and creates a parameter for each name found, automatically marking it for export to child processes. Executed commands inherit the environment. The export and declare -x commands allow parameters and functions to be added to and deleted from the environment. If the value of a parameter in the environment is modified, the new value becomes part of the environment, replacing the old. The environment inherited by any executed command consists of the shell's initial environment, whose values may be modified in the shell, less any pairs removed by the unset command, plus any additions via the export and declare -x commands.

link|improve this answer
feedback

Exported variables get passed on to child processes, not-exported variables do not.

link|improve this answer
Can you point to any documentation to that affect. I am looking for more information than that. For instance, does a variable only need to be exported once, or do you need to export it after every change, etc. – Chas. Owens Jun 16 '10 at 20:09
You could check this out: superuser.com/questions/143413/linux-environment-variables/… – BloodPhilia Jun 16 '10 at 20:17
feedback

When you use export, you are adding the variable to the environment variables list of the shell in which the export command was called and all the environment variables of a shell are passed to the child processes, thats why you can use it.

When you finish the shell its environment is destroyed, thats why the environment variables are declared and exported at login, in the .bashrc file for example

link|improve this answer
feedback

Not the answer you're looking for? Browse other questions tagged or ask your own question.