Bird
Raised Fist0
Linux CLIscripting~20 mins

.bashrc and .bash_profile in Linux CLI - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Bash Startup Master
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 command sequence?
You have a .bash_profile that contains echo "Profile loaded" and a .bashrc that contains echo "RC loaded". You start a new login shell. What will be printed?
A
Profile loaded
RC loaded
B
RC loaded
Profile loaded
CProfile loaded
DRC loaded
Attempts:
2 left
💡 Hint
Remember that login shells read .bash_profile and interactive shells read .bashrc.
🧠 Conceptual
intermediate
1:30remaining
Which file is read by a non-login interactive shell?
When you open a new terminal window in a graphical environment (like GNOME Terminal), which file does bash read?
A~/.bash_logout
B~/.bash_profile
C~/.profile
D~/.bashrc
Attempts:
2 left
💡 Hint
Non-login interactive shells read a different file than login shells.
🔧 Debug
advanced
2:00remaining
Why does a command in .bashrc not run on login?
You added echo "Hello from .bashrc" to your ~/.bashrc but it does not print when you login via SSH. Why?
ABecause .bashrc has wrong permissions
BBecause echo commands are ignored in .bashrc
CBecause .bashrc is not read by login shells by default
DBecause SSH disables all shell startup files
Attempts:
2 left
💡 Hint
Think about which files login shells read.
🚀 Application
advanced
2:30remaining
How to ensure .bashrc runs on login shells?
You want your .bashrc commands to run every time you login (including SSH). Which snippet should you add to your ~/.bash_profile?
Aexec ~/.bashrc
B
if [ -f ~/.bashrc ]; then
  source ~/.bashrc
fi
Csource ~/.bash_profile
Dcat ~/.bashrc
Attempts:
2 left
💡 Hint
You want to run .bashrc only if it exists.
💻 Command Output
expert
2:00remaining
What is the output of this .bash_profile snippet?
Given this ~/.bash_profile content:
echo "Start"
if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi
echo "End"
And ~/.bashrc contains:
echo "Inside RC"
What is printed when you login?
A
Start
Inside RC
End
B
Inside RC
Start
End
C
End
Start
Inside RC
D
Start
End
Attempts:
2 left
💡 Hint
Commands run in order as the shell reads the files.

Practice

(1/5)
1. What is the primary purpose of the .bash_profile file in Linux?
easy
A. It stores command history for the shell.
B. It runs every time a new terminal window opens to set aliases.
C. It runs once at login to set environment variables.
D. It manages system-wide user permissions.

Solution

  1. Step 1: Understand the role of .bash_profile

    The .bash_profile file is executed once when a user logs in to the system. It is used to set environment variables and run commands that should only happen once per login session.
  2. Step 2: Differentiate from .bashrc

    The .bashrc file runs every time a new terminal is opened, mainly for setting aliases and shell options, not environment variables at login.
  3. Final Answer:

    It runs once at login to set environment variables. -> Option C
  4. Quick Check:

    .bash_profile = runs once at login [OK]
Hint: Remember: .bash_profile runs once at login [OK]
Common Mistakes:
  • Confusing .bash_profile with .bashrc
  • Thinking .bash_profile runs for every new terminal
  • Assuming .bash_profile manages command history
2. Which of the following is the correct way to load .bashrc from .bash_profile?
easy
A. execute ~/.bashrc
B. load ~/.bashrc
C. run ~/.bashrc
D. source ~/.bashrc

Solution

  1. Step 1: Identify the command to run another script

    In bash, the source command runs commands from a file in the current shell environment.
  2. Step 2: Confirm syntax for loading .bashrc

    Using source ~/.bashrc inside .bash_profile loads .bashrc settings for login shells.
  3. Final Answer:

    source ~/.bashrc -> Option D
  4. Quick Check:

    Use source to load scripts [OK]
Hint: Use 'source' to run .bashrc inside .bash_profile [OK]
Common Mistakes:
  • Using non-existent commands like load or run
  • Trying to execute .bashrc as a separate process
  • Forgetting to use the tilde (~) for home directory
3. Given the following .bash_profile content:
export PATH="$PATH:/custom/bin"
source ~/.bashrc

And .bashrc contains:
alias ll='ls -l'

What happens when you open a new terminal after login?
medium
A. The alias ll is set but PATH does not include /custom/bin.
B. The PATH includes /custom/bin and alias ll is available.
C. The PATH is unchanged and alias ll is not available.
D. Only the PATH is updated; alias ll is not set.

Solution

  1. Step 1: Understand .bash_profile execution at login

    The .bash_profile runs once at login, setting PATH to include /custom/bin and then sourcing .bashrc.
  2. Step 2: Understand .bashrc execution on new terminals

    Since .bashrc is sourced by .bash_profile, the alias ll='ls -l' is set for the shell session.
  3. Final Answer:

    The PATH includes /custom/bin and alias ll is available. -> Option B
  4. Quick Check:

    .bash_profile sets PATH + sources .bashrc = alias set [OK]
Hint: Sourcing .bashrc in .bash_profile applies aliases at login [OK]
Common Mistakes:
  • Assuming alias is not set without opening a new terminal
  • Thinking PATH changes only after logout/login
  • Ignoring that .bashrc is sourced inside .bash_profile
4. You added source ~/.bashrc to your .bash_profile, but aliases from .bashrc are still not available after login. What is the most likely problem?
medium
A. You forgot to log out and log back in after editing .bash_profile.
B. The .bashrc file has incorrect permissions and cannot be read.
C. The source command is misspelled in .bash_profile.
D. Aliases must be defined in .bash_profile, not .bashrc.

Solution

  1. Step 1: Check if changes require re-login

    Changes to .bash_profile only take effect after a new login session, so you must log out and back in.
  2. Step 2: Verify other options

    Incorrect permissions would cause errors, misspelling source would cause errors, and aliases are correctly placed in .bashrc.
  3. Final Answer:

    You forgot to log out and log back in after editing .bash_profile. -> Option A
  4. Quick Check:

    Changes in .bash_profile need re-login [OK]
Hint: Log out and back in to apply .bash_profile changes [OK]
Common Mistakes:
  • Not logging out after editing .bash_profile
  • Assuming aliases must be in .bash_profile
  • Ignoring file permission issues
5. You want to ensure that environment variables set in .bash_profile and aliases in .bashrc are available in all interactive shells, including login and non-login shells. Which is the best approach?
hard
A. Add environment variables to .bash_profile and add source ~/.bashrc inside .bash_profile only.
B. Add source ~/.bashrc inside .bash_profile and add source ~/.bash_profile inside .bashrc.
C. Add source ~/.bashrc inside .bash_profile and add environment variables to .bashrc.
D. Add all environment variables and aliases only in .bashrc.

Solution

  1. Step 1: Understand login vs non-login shells

    .bash_profile runs for login shells; .bashrc runs for interactive non-login shells.
  2. Step 2: Best practice to share settings

    Put environment variables in .bash_profile and source .bashrc from .bash_profile to load aliases for login shells. Non-login shells read .bashrc directly.
  3. Step 3: Avoid circular sourcing

    Do not source .bash_profile from .bashrc to prevent loops.
  4. Final Answer:

    Add environment variables to .bash_profile and add source ~/.bashrc inside .bash_profile only. -> Option A
  5. Quick Check:

    Env vars in .bash_profile + source .bashrc there = all shells get settings [OK]
Hint: Source .bashrc from .bash_profile; keep env vars in .bash_profile [OK]
Common Mistakes:
  • Sourcing .bash_profile inside .bashrc causing loops
  • Putting environment variables only in .bashrc
  • Not sourcing .bashrc in .bash_profile
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