In bash, what is the effect of `export MYVAR`?
LPIC-1 Exam 102-500, objective 105. Shells and shell scripting easy
Draft — not checked yet. This question was written from the published exam objectives and cites the clause it comes from, but nobody has yet read it against that clause and signed for it.
It is kept out of search results and out of mock exams until they have. Read the source below before you take the answer as settled.
The options
Not correct It writes MYVAR's current value into ~/.bashrc so it survives the next login.
Wrong. export changes only the state of the running shell. Nothing is written to any file; persistence requires editing a startup file yourself.
Correct It marks MYVAR so that it is passed in the environment of commands the shell runs afterwards.
Correct. Exported variables are copied into the environment of child processes. Without export the variable remains a shell variable, visible to the current shell but not to programs it starts.
Not correct It makes MYVAR read-only so it can no longer be changed.
Wrong. That is `readonly MYVAR` (equivalently `declare -r MYVAR`), a different builtin. An exported variable can still be reassigned freely.
Not correct It removes MYVAR from the shell entirely.
Wrong. That is `unset MYVAR`. The related `export -n MYVAR` removes only the export attribute, keeping the variable as a plain shell variable.
Why
A shell variable becomes an environment variable when it is exported. `export MYVAR=value` combines assignment and export. `env` and `printenv` list exported variables only, while `set` with no arguments lists all shell variables and functions, which is why a variable can appear in `set` output and still be invisible to a child program.
Where this comes from
- Cited
- LPI exam objective 105.1
- What it says
- Set and export environment variables in the shell.
Practise this
Reading one question is not practice. The trainer will draw a set from objective 105 and space the ones you get wrong.