An executable script contains only the line `export EDITOR=vim`. After running it as `./setenv.sh`, `echo $EDITOR` in the calling shell prints nothing. What explains this?

LPIC-1 Exam 102-500, objective 105. Shells and shell scripting medium

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 The script is missing execute permission, so the assignment never ran.

Wrong. Without execute permission the shell would refuse to run it and print a permission-denied error, not run it silently.

Not correct export only works for variables that already exist in the environment.

Wrong. `export NAME=value` creates the variable and marks it for export in one step. Existence beforehand is not required.

Not correct Environment variables must be assigned with set instead of export.

Wrong. `set` is a real builtin, but it toggles shell options and sets positional parameters. It does not create environment variables.

Correct Executing the script starts a child shell, and a child can never alter its parent's environment.

Correct. Exported variables propagate downward to children only. To change the current shell you must run the script with `source setenv.sh` or `. setenv.sh`, which executes its lines in the current shell.

Why

Executing a script forks a new process running a new shell. Anything that shell changes, including variables, the working directory and umask, dies with it. Sourcing (`.` or `source`) does not fork: the commands run in the current shell, so their side effects persist. This is exactly why ~/.bashrc is sourced rather than executed.

Where this comes from

Cited
LPI exam objective 105.1
What it says
Understand the difference between sourcing a file and executing it.

Practise this

Reading one question is not practice. The trainer will draw a set from objective 105 and space the ones you get wrong.

Practise LPIC-1 Exam 102-500