Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Environment variables vs local variables in Bash Scripting - Practice Questions

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Environment Variable Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Output of local vs environment variable in subshell
What is the output of this script?
MYVAR="hello"
(export MYVAR; (echo $MYVAR))
echo $MYVAR
Bash Scripting
MYVAR="hello"
(export MYVAR; (echo $MYVAR))
echo $MYVAR
Ahello\n
B\nhello
Chello\nhello
D\n
Attempts:
2 left
💡 Hint
Remember that exporting a variable makes it available to subshells.
💻 Command Output
intermediate
2:00remaining
Effect of local variable inside function on environment
What is the output of this script?
MYVAR="start"
myfunc() {
  local MYVAR="inside"
  echo $MYVAR
}
myfunc
echo $MYVAR
Bash Scripting
MYVAR="start"
myfunc() {
  local MYVAR="inside"
  echo $MYVAR
}
myfunc
echo $MYVAR
Astart\ninside
Binside\ninside
Cstart\nstart
Dinside\nstart
Attempts:
2 left
💡 Hint
Local variables inside functions do not affect variables outside.
🔧 Debug
advanced
2:30remaining
Why environment variable is not updated in parent shell?
Consider this script:
export MYVAR="old"
(change_var() {
  MYVAR="new"
  export MYVAR
})
(change_var)
echo $MYVAR

Why does the echo print 'old' instead of 'new'?
Bash Scripting
export MYVAR="old"
(change_var() {
  MYVAR="new"
  export MYVAR
})
(change_var)
echo $MYVAR
ABecause the function runs in a subshell, changes do not affect the parent shell
BBecause export does not update existing environment variables
CBecause MYVAR is local by default inside functions
DBecause the variable was not declared with local keyword
Attempts:
2 left
💡 Hint
Think about where the function runs and how environment variables propagate.
🧠 Conceptual
advanced
1:30remaining
Difference between local and environment variables
Which statement correctly describes the difference between local and environment variables in bash?
ALocal variables exist only within the current shell or function, environment variables are inherited by child processes
BEnvironment variables exist only within the current shell, local variables are inherited by child processes
CLocal variables are automatically exported to child processes, environment variables are not
DEnvironment variables are temporary, local variables are permanent
Attempts:
2 left
💡 Hint
Think about variable visibility and inheritance.
🚀 Application
expert
2:00remaining
Preserving environment variable changes after script execution
You have a script that sets and exports an environment variable MYVAR. After running the script normally, the variable is not set in your current shell. How can you modify your usage to have MYVAR set in your current shell after running the script?
ARun the script normally: ./script.sh
BRun the script with the source command: source ./script.sh
CRun the script in a new terminal window
DAdd local MYVAR in the script before exporting
Attempts:
2 left
💡 Hint
Think about how environment variables propagate between shells.

Practice

(1/5)
1. What is the main difference between an environment variable and a local variable in a Bash script?
easy
A. Local variables are available to child processes, environment variables are not.
B. Environment variables are available to child processes, local variables are not.
C. Environment variables can only be numbers, local variables can be strings.
D. Local variables are global, environment variables are only inside functions.

Solution

  1. Step 1: Understand environment variables

    Environment variables are set with export and are inherited by child processes.
  2. Step 2: Understand local variables

    Local variables exist only in the current shell or function and are not passed to child processes.
  3. Final Answer:

    Environment variables are available to child processes, local variables are not. -> Option B
  4. Quick Check:

    Environment = exported, local = not exported [OK]
Hint: Remember: export makes variables visible to child processes [OK]
Common Mistakes:
  • Thinking local variables are inherited by child processes
  • Confusing export with local keyword
  • Assuming environment variables are only inside functions
2. Which of the following is the correct way to create a local variable inside a Bash function?
easy
A. VAR=value
B. export VAR=value
C. local VAR=value
D. setlocal VAR=value

Solution

  1. Step 1: Identify local variable syntax in Bash functions

    Inside a function, the keyword local declares a variable limited to that function.
  2. Step 2: Compare options

    export makes variables environment variables, setlocal is not a Bash command, and VAR=value without local is global or inherited.
  3. Final Answer:

    local VAR=value -> Option C
  4. Quick Check:

    Use local inside functions for local variables [OK]
Hint: Use 'local' keyword inside functions for local variables [OK]
Common Mistakes:
  • Using export instead of local inside functions
  • Assuming VAR=value inside function is local
  • Using non-existent commands like setlocal
3. What will be the output of this script?
VAR=hello
function test_func() {
  local VAR=world
  echo $VAR
}
test_func
echo $VAR
medium
A. world hello
B. hello hello
C. world world
D. hello world

Solution

  1. Step 1: Analyze variable inside function

    The function declares a local variable VAR with value 'world', so echo $VAR inside prints 'world'.
  2. Step 2: Analyze variable outside function

    The global VAR remains 'hello', so echo $VAR after function call prints 'hello'.
  3. Final Answer:

    world hello -> Option A
  4. Quick Check:

    Local inside function, global outside [OK]
Hint: Local variables override global only inside functions [OK]
Common Mistakes:
  • Assuming local variable changes global variable
  • Confusing output order
  • Ignoring local keyword effect
4. Identify the error in this script snippet:
export VAR=hello
function test() {
  VAR=world
  local VAR
  echo $VAR
}
test
echo $VAR
medium
A. local must be declared before assigning VAR inside function
B. export cannot be used outside functions
C. echo $VAR inside function will print empty
D. Function syntax is incorrect

Solution

  1. Step 1: Understand local variable declaration order

    In Bash, local VAR must appear before assigning a value to VAR inside the function to make it local.
  2. Step 2: Analyze the script behavior

    Here, VAR=world assigns to global VAR before local VAR is declared, so local VAR is empty and echo $VAR prints empty.
  3. Final Answer:

    local must be declared before assigning VAR inside function -> Option A
  4. Quick Check:

    Declare local before assignment inside functions [OK]
Hint: Declare local variables before assigning values inside functions [OK]
Common Mistakes:
  • Assigning before declaring local causes unexpected behavior
  • Thinking export is invalid outside functions
  • Assuming function syntax is wrong
5. You want to write a Bash script that sets a variable PATH_VAR inside a function and have it available outside the function and in any child processes. Which is the correct approach?
hard
A. Inside the function, use export PATH_VAR=value after declaring local PATH_VAR.
B. Declare local PATH_VAR=value inside the function and then export PATH_VAR outside the function.
C. Use local PATH_VAR=value inside the function and do nothing else.
D. Assign PATH_VAR=value inside the function and then export PATH_VAR inside the function without local.

Solution

  1. Step 1: Understand local vs exported variables

    Declaring a variable as local limits it to the function scope, so it won't be available outside or to child processes.
  2. Step 2: Correct way to export variable from function

    Assign the variable without local inside the function, then use export PATH_VAR inside the function to make it environment variable accessible outside and to child processes.
  3. Final Answer:

    Assign PATH_VAR=value inside the function and then export PATH_VAR inside the function without local. -> Option D
  4. Quick Check:

    Export without local to share variable outside function [OK]
Hint: Don't use local if you want variable exported outside function [OK]
Common Mistakes:
  • Using local and export together inside function
  • Exporting variable only outside function after local declaration
  • Assuming local variables can be exported
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