Bird
Raised Fist0
Linux CLIscripting~10 mins

Environment variables in Linux CLI - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Environment variables
Start shell session
↓
Set environment variable
↓
Use variable in commands
↓
Variable accessed by shell or programs
↓
End session or export variable for child processes
This flow shows how environment variables are set, used, and accessed in a shell session.
Execution Sample
Linux CLI
MY_VAR=hello
export MY_VAR
echo $MY_VAR
Sets an environment variable MY_VAR to 'hello', exports it, then prints its value.
Execution Table
StepCommandActionVariable StateOutput
1MY_VAR=helloAssign MY_VAR locallyMY_VAR=hello (local)
2export MY_VARMake MY_VAR available to child processesMY_VAR=hello (exported)
3echo $MY_VARPrint value of MY_VARMY_VAR=hello (exported)hello
4exitEnd shell sessionSession ends
💡 Shell session ends, environment variables cleared unless saved in config files
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
MY_VARundefinedhello (local)hello (exported)hello (exported)session ends
Key Moments - 2 Insights
Why does MY_VAR need to be exported to be available to child processes?
Because local variables are only visible in the current shell. Exporting MY_VAR (see step 2 in execution_table) makes it part of the environment passed to child processes.
What happens if you try to echo $MY_VAR before setting it?
The output will be empty because MY_VAR is undefined. This is shown by the variable state 'undefined' before step 1.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 3. What is the output of 'echo $MY_VAR'?
Ahello
B$MY_VAR
Cundefined
Derror
💡 Hint
Check the Output column at step 3 in the execution_table.
At which step does MY_VAR become available to child processes?
AStep 3
BStep 1
CStep 2
DStep 4
💡 Hint
Look at the Variable State column and the Action column in the execution_table.
If you remove the 'export' command, what will be the output of 'echo $MY_VAR' in a child process?
Ahello
Bempty string
Cerror message
D$MY_VAR
💡 Hint
Refer to the key_moments explanation about exporting variables.
Concept Snapshot
Environment variables store data for shell and programs.
Set with VAR=value, export with 'export VAR' to share with child processes.
Access with $VAR.
Local variables are not passed to child processes.
Exported variables are inherited by child processes.
Full Transcript
Environment variables are named values stored in the shell environment. You can set a variable by typing VAR=value. This variable is local to the current shell session. To make it available to programs or child shells, you must export it using 'export VAR'. Once exported, the variable is passed down to child processes. You can access the value by prefixing the variable name with a dollar sign, like $VAR. If you try to use a variable before setting it, it will be empty. When the shell session ends, the environment variables are cleared unless saved in configuration files.

Practice

(1/5)
1. What is the purpose of environment variables in a Linux shell?
easy
A. To speed up the internet connection
B. To store settings that programs can use during execution
C. To permanently delete files from the system
D. To create new user accounts automatically

Solution

  1. Step 1: Understand environment variables

    Environment variables hold information like settings or preferences that programs can read while running.
  2. Step 2: Identify the correct purpose

    Among the options, only storing settings matches the role of environment variables.
  3. Final Answer:

    To store settings that programs can use during execution -> Option B
  4. Quick Check:

    Environment variables = store settings [OK]
Hint: Remember: environment variables hold settings, not files or users [OK]
Common Mistakes:
  • Confusing environment variables with file operations
  • Thinking environment variables control hardware
  • Assuming environment variables create users
2. Which command correctly sets an environment variable named MY_VAR with value hello for the current shell and its child processes?
easy
A. declare MY_VAR hello
B. set MY_VAR=hello
C. env MY_VAR hello
D. export MY_VAR=hello

Solution

  1. Step 1: Recall how to set environment variables

    In Linux shells, export is used to set environment variables for the current shell and its children.
  2. Step 2: Check each command

    set MY_VAR=hello is incorrect syntax; env MY_VAR hello does not set variable persistently; declare MY_VAR hello is invalid for environment variables.
  3. Final Answer:

    export MY_VAR=hello -> Option D
  4. Quick Check:

    Use export to set environment variables [OK]
Hint: Use 'export' to set environment variables for shell and children [OK]
Common Mistakes:
  • Using 'set' instead of 'export' to set environment variables
  • Trying to set variables without export, so children don't see them
  • Confusing 'env' command usage
3. Given the commands below, what will be the output of echo $GREETING?
GREETING="Hello"
export GREETING
GREETING="Hi"
echo $GREETING
medium
A. Hello
B. $GREETING
C. Hi
D. Error: variable not found

Solution

  1. Step 1: Understand variable assignment and export

    First, GREETING is set to "Hello" and exported, making it available to child processes. Then GREETING is reassigned to "Hi" in the current shell.
  2. Step 2: Determine the value echoed

    The echo command prints the current value of GREETING, which is "Hi" after reassignment.
  3. Final Answer:

    Hi -> Option C
  4. Quick Check:

    Variable reassignment updates value = Hi [OK]
Hint: Last assignment before echo is the value printed [OK]
Common Mistakes:
  • Thinking export freezes the variable value
  • Expecting the first assigned value to print
  • Confusing export with immediate output
4. What is wrong with this script snippet if the goal is to set PATH to include /usr/local/bin?
PATH=$PATH:/usr/local/bin
export PATH
medium
A. Nothing is wrong; it correctly appends to PATH
B. It should use export PATH=$PATH:/usr/local/bin in one line
C. It overwrites PATH instead of appending
D. It should prepend /usr/local/bin before $PATH

Solution

  1. Step 1: Analyze the PATH modification

    The script appends :/usr/local/bin to the existing PATH variable, which is a common way to add directories.
  2. Step 2: Check export usage

    Exporting PATH after assignment makes the new value available to child processes. This is correct usage.
  3. Final Answer:

    Nothing is wrong; it correctly appends to PATH -> Option A
  4. Quick Check:

    Appending and exporting PATH is correct [OK]
Hint: Appending PATH then exporting is standard practice [OK]
Common Mistakes:
  • Thinking export must be on same line as assignment
  • Confusing append with overwrite
  • Assuming order of PATH parts always matters
5. You want to create a script that sets a temporary environment variable TEMP_VAR only for a single command execution, without affecting the shell's environment afterwards. Which command correctly does this?
hard
A. TEMP_VAR=value command
B. export TEMP_VAR=value; command
C. set TEMP_VAR=value command
D. command; export TEMP_VAR=value

Solution

  1. Step 1: Understand temporary environment variables for one command

    Setting a variable before a command like TEMP_VAR=value command runs the command with that variable set only for its execution.
  2. Step 2: Evaluate each option

    export TEMP_VAR=value; command exports variable globally; set TEMP_VAR=value command uses invalid syntax; command; export TEMP_VAR=value sets variable after command runs.
  3. Final Answer:

    TEMP_VAR=value command -> Option A
  4. Quick Check:

    Prefix variable before command for temporary env [OK]
Hint: Put variable before command to set it temporarily [OK]
Common Mistakes:
  • Using export which affects shell permanently
  • Trying to set variable after command runs
  • Using incorrect syntax like 'set' for env variables
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard