Bird
Raised Fist0
Linux CLIscripting~20 mins

PATH variable management in Linux CLI - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
PATH Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of this PATH modification?
Consider the following commands run in a Linux shell:

export PATH=/usr/local/bin:$PATH

What will be the first directory in the PATH variable after running this command if the original PATH was /usr/bin:/bin?
Linux CLI
export PATH=/usr/local/bin:$PATH
echo $PATH
A/usr/local/bin:/usr/bin:/bin
B/usr/bin:/bin:/usr/local/bin
C/bin:/usr/bin:/usr/local/bin
D/usr/bin:/usr/local/bin:/bin
Attempts:
2 left
💡 Hint
Remember that placing a directory before $PATH adds it to the front.
💻 Command Output
intermediate
2:00remaining
What happens if you append an empty directory to PATH?
Given the command:

export PATH=$PATH::/usr/bin

What is the effect of the double colon (::) in the PATH variable?
Linux CLI
export PATH=$PATH::/usr/bin
echo $PATH
AIt inserts the current directory (.) in the PATH at the position of the empty entry
BIt causes a syntax error and PATH is not updated
CIt removes the last directory from PATH
DIt adds an empty directory that is ignored by the shell
Attempts:
2 left
💡 Hint
Empty entries in PATH are interpreted as the current directory.
📝 Syntax
advanced
2:00remaining
Which command correctly removes /usr/local/bin from PATH?
You want to remove /usr/local/bin from the PATH variable in a bash shell. Which of the following commands will do this correctly?
Aexport PATH=$(echo $PATH | sed -e 's|:/usr/local/bin:||')
Bexport PATH=$(echo $PATH | sed -e 's|:/usr/local/bin||')
Cexport PATH=$(echo $PATH | sed -e 's|/usr/local/bin||')
Dexport PATH=$(echo $PATH | sed -e 's|/usr/local/bin:||')
Attempts:
2 left
💡 Hint
Consider the position of /usr/local/bin in PATH and the colon separators.
💻 Command Output
advanced
2:00remaining
What is the output of this PATH check script?
Given this bash script snippet:

if [[ ":$PATH:" == *":/opt/bin:"* ]]; then
echo "Found"
else
echo "Not Found"
fi

What will be printed if PATH is /usr/bin:/opt/bin:/bin?
Linux CLI
PATH=/usr/bin:/opt/bin:/bin
if [[ ":$PATH:" == *":/opt/bin:"* ]]; then
echo "Found"
else
echo "Not Found"
fi
ANo output
BSyntax error
CFound
DNot Found
Attempts:
2 left
💡 Hint
The script adds colons around PATH to avoid partial matches.
🚀 Application
expert
3:00remaining
How to permanently add a directory to PATH for all users?
You want to add /custom/tools to the PATH environment variable permanently for all users on a Linux system. Which file is the best place to add this export command to achieve this?
A/root/.bash_profile
B/etc/profile
C/etc/bash.bashrc
D~/.bashrc
Attempts:
2 left
💡 Hint
Think about system-wide environment variables for all users.

Practice

(1/5)
1. What does the PATH environment variable do in Linux?
easy
A. It lists folders where the system looks for commands to run.
B. It stores the current user's password.
C. It shows the current directory path.
D. It controls the screen brightness settings.

Solution

  1. Step 1: Understand the role of PATH

    The PATH variable contains directories where the system searches for executable commands.
  2. Step 2: Match the description to the options

    Only It lists folders where the system looks for commands to run. correctly describes PATH as a list of folders for commands.
  3. Final Answer:

    It lists folders where the system looks for commands to run. -> Option A
  4. Quick Check:

    PATH = command search folders [OK]
Hint: PATH is where your system finds commands to run [OK]
Common Mistakes:
  • Confusing PATH with current directory
  • Thinking PATH stores passwords
  • Assuming PATH controls hardware settings
2. Which of the following is the correct syntax to add /home/user/bin at the start of your PATH variable in a bash shell?
easy
A. set PATH=/home/user/bin:$PATH
B. export PATH=$PATH:/home/user/bin
C. export PATH=/home/user/bin:$PATH
D. PATH=/home/user/bin:$PATH export

Solution

  1. Step 1: Recall how to prepend a folder to PATH

    To add a folder at the start, use export PATH=folder:$PATH.
  2. Step 2: Check each option's syntax

    export PATH=/home/user/bin:$PATH correctly uses export PATH=/home/user/bin:$PATH. export PATH=$PATH:/home/user/bin appends instead of prepends. set PATH=/home/user/bin:$PATH uses wrong command 'set'. PATH=/home/user/bin:$PATH export has wrong order.
  3. Final Answer:

    export PATH=/home/user/bin:$PATH -> Option C
  4. Quick Check:

    Prepend folder with export PATH=folder:$PATH [OK]
Hint: Use export PATH=folder:$PATH to add at start [OK]
Common Mistakes:
  • Appending instead of prepending
  • Using 'set' instead of 'export'
  • Incorrect command order
3. Given the commands run in order:
export PATH=/usr/local/bin:$PATH
export PATH=$PATH:/home/user/scripts
What is the resulting PATH if the original PATH was /usr/bin:/bin?
medium
A. /usr/local/bin:/home/user/scripts:/usr/bin:/bin
B. /home/user/scripts:/usr/local/bin:/usr/bin:/bin
C. /usr/bin:/bin:/usr/local/bin:/home/user/scripts
D. /usr/local/bin:/usr/bin:/bin:/home/user/scripts

Solution

  1. Step 1: Apply first export command

    Original PATH: /usr/bin:/bin
    After export PATH=/usr/local/bin:$PATH, PATH becomes /usr/local/bin:/usr/bin:/bin.
  2. Step 2: Apply second export command

    Now export PATH=$PATH:/home/user/scripts appends /home/user/scripts.
    Final PATH: /usr/local/bin:/usr/bin:/bin:/home/user/scripts.
  3. Final Answer:

    /usr/local/bin:/usr/bin:/bin:/home/user/scripts -> Option D
  4. Quick Check:

    Prepend then append folder to PATH [OK]
Hint: Apply exports in order, watch prepend vs append [OK]
Common Mistakes:
  • Mixing order of folders
  • Forgetting original PATH
  • Confusing prepend and append
4. You want to add /opt/tools to your PATH, but after running export PATH=$PATH:/opt/tools, your scripts in /opt/tools still don't run. What is the likely problem?
medium
A. You forgot to reload the shell or source the profile
B. /opt/tools is not executable
C. You should prepend, not append, the folder
D. PATH variable cannot be changed

Solution

  1. Step 1: Understand PATH changes need shell reload

    Changing PATH in a shell session affects only that session. To use changes in new sessions, reload or source profile.
  2. Step 2: Check other options

    /opt/tools being non-executable is unlikely for a folder. Prepend vs append doesn't prevent running scripts if PATH is correct. PATH can be changed.
  3. Final Answer:

    You forgot to reload the shell or source the profile -> Option A
  4. Quick Check:

    Reload shell to apply PATH changes [OK]
Hint: Reload shell or source profile after PATH change [OK]
Common Mistakes:
  • Not reloading shell after export
  • Confusing folder permissions with executables
  • Thinking PATH is immutable
5. You want to add /custom/bin to your PATH only for your current terminal session without affecting others. Which command should you use?
hard
A. set PATH=/custom/bin:$PATH
B. export PATH=/custom/bin:$PATH
C. sudo export PATH=/custom/bin:$PATH
D. echo '/custom/bin' >> ~/.bashrc

Solution

  1. Step 1: Identify session-only PATH change

    Using export PATH=/custom/bin:$PATH changes PATH only in current shell session.
  2. Step 2: Evaluate other options

    echo '/custom/bin' >> ~/.bashrc appends to .bashrc, affecting future sessions, not current only. sudo export PATH=/custom/bin:$PATH uses sudo unnecessarily and is invalid syntax. set PATH=/custom/bin:$PATH uses wrong command 'set'.
  3. Final Answer:

    export PATH=/custom/bin:$PATH -> Option B
  4. Quick Check:

    Use export for session-only PATH change [OK]
Hint: Use export to change PATH only in current session [OK]
Common Mistakes:
  • Editing .bashrc for immediate effect
  • Using sudo with export
  • Using wrong commands like set
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