Bird
Raised Fist0
Bash Scriptingscripting~20 mins

Shebang line (#!/bin/bash) in Bash Scripting - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Shebang 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 script with a shebang?
Consider this bash script saved as test.sh and made executable:
#!/bin/bash
echo "Hello from script!"

What will be the output when you run ./test.sh in a terminal?
Bash Scripting
#!/bin/bash
echo "Hello from script!"
AHello from script!
Bbash: ./test.sh: command not found
CSyntax error near unexpected token `echo'
DNo output, script runs silently
Attempts:
2 left
💡 Hint
The shebang line tells the system which program to use to run the script.
💻 Command Output
intermediate
2:00remaining
What happens if the shebang line is missing?
Consider this script saved as myscript.sh and made executable with chmod +x myscript.sh:
echo "Running script"

What will be the output when you run ./myscript.sh in a terminal?
Bash Scripting
echo "Running script"
ANothing happens, script does not run
Bbash: ./myscript.sh: cannot execute binary file: Exec format error
CSyntax error: missing shebang
DRunning script
Attempts:
2 left
💡 Hint
Without a shebang, the system may not know how to run the script.
📝 Syntax
advanced
2:00remaining
Identify the correct shebang line for bash scripts
Which of the following lines is the correct shebang to start a bash script?
A#!/bin/bash -c
B#!/bin/bash
C#!/bin/sh -x
D#!/usr/bin/python
Attempts:
2 left
💡 Hint
The shebang must point to the bash executable without extra arguments.
🔧 Debug
advanced
2:00remaining
Why does this script fail to run with ./script.sh?
You have this script:
#!/bin/bash
echo "Start"
exit 0

But when you run ./script.sh, you get bash: ./script.sh: Permission denied. What is the cause?
Bash Scripting
#!/bin/bash
echo "Start"
exit 0
AThe echo command is misspelled
BThe shebang line is incorrect
CThe script file does not have execute permission
DThe script has a syntax error
Attempts:
2 left
💡 Hint
Check the file permissions with ls -l.
🚀 Application
expert
2:00remaining
How to write a portable shebang line for bash scripts?
You want your bash script to run on different systems where bash might be in different locations. Which shebang line is best to ensure portability?
A#!/usr/bin/env bash
B#!/bin/bash
C#!/bin/sh
D#!/usr/local/bin/bash
Attempts:
2 left
💡 Hint
Use env to find bash in the user's PATH.

Practice

(1/5)
1. What is the main purpose of the shebang line #!/bin/bash in a script?
easy
A. It sets the script's file permissions to executable.
B. It comments out the first line of the script.
C. It tells the system to use the Bash shell to run the script.
D. It defines a variable named shebang.

Solution

  1. Step 1: Understand the shebang line role

    The shebang line starts with #! and specifies the interpreter for the script.
  2. Step 2: Identify the interpreter in the line

    /bin/bash means the script will run using the Bash shell.
  3. Final Answer:

    It tells the system to use the Bash shell to run the script. -> Option C
  4. Quick Check:

    Shebang = interpreter path [OK]
Hint: Shebang line always shows which shell runs the script [OK]
Common Mistakes:
  • Thinking it is a comment line
  • Confusing it with file permissions
  • Assuming it defines variables
2. Which of the following is the correct way to write a shebang line for a Bash script?
easy
A. !#/bin/bash
B. #!/bin/sh
C. #!/bash/bin
D. #!/bin/bash

Solution

  1. Step 1: Check the correct shebang syntax

    The shebang line must start with #! followed by the full path to the interpreter.
  2. Step 2: Verify the path for Bash

    The correct path for Bash is /bin/bash, so the line is #!/bin/bash.
  3. Final Answer:

    #!/bin/bash -> Option D
  4. Quick Check:

    Shebang = #! + interpreter path [OK]
Hint: Shebang always starts with #! followed by interpreter path [OK]
Common Mistakes:
  • Swapping the order of # and !
  • Using wrong interpreter path
  • Confusing /bin/sh with /bin/bash (different shells)
3. Given this script saved as test.sh with executable permission:
#!/bin/bash
echo "Hello, $USER!"

What will be the output when you run ./test.sh?
medium
A. Hello, $USER!
B. Hello, your_username!
C. Hello, root!
D. Syntax error

Solution

  1. Step 1: Understand the shebang effect

    The shebang #!/bin/bash runs the script with Bash, which expands variables like $USER.
  2. Step 2: Predict variable expansion

    $USER is replaced by the current user's username, so output is Hello, your_username!.
  3. Final Answer:

    Hello, your_username! -> Option B
  4. Quick Check:

    Variable expansion in Bash = username [OK]
Hint: Bash expands $USER to your username when run with shebang [OK]
Common Mistakes:
  • Thinking $USER prints literally
  • Assuming root user always runs script
  • Expecting syntax error from shebang
4. You wrote a script starting with this line:
#! /bin/bash

But when you run it, you get: bad interpreter: No such file or directory. What is the likely problem?
medium
A. There is a space between #! and /bin/bash.
B. The script file is not executable.
C. The /bin/bash path does not exist on the system.
D. The script has Windows line endings.

Solution

  1. Step 1: Check the shebang syntax

    The shebang must start exactly with #! with no space after it.
  2. Step 2: Identify the error cause

    A space after #! causes the system to look for an invalid interpreter path, causing the error.
  3. Final Answer:

    There is a space between #! and /bin/bash. -> Option A
  4. Quick Check:

    No space after #! in shebang [OK]
Hint: No spaces allowed between #! and interpreter path [OK]
Common Mistakes:
  • Ignoring spaces in shebang line
  • Assuming file permission error
  • Not checking interpreter path correctness
5. You want to write a script that runs with Bash but also works if run with sh script.sh (without executable permission). Which shebang line should you use to ensure it always runs with Bash when executed directly?
hard
A. #!/usr/bin/env bash
B. #!/bin/bash
C. #!/bin/sh
D. #!/usr/local/bin/bash

Solution

  1. Step 1: Understand shebang with env

    #!/usr/bin/env bash uses the env command to find Bash in the user's PATH, making it portable.
  2. Step 2: Compare with fixed paths

    /bin/bash may not exist on all systems, and /bin/sh is often not Bash. /usr/local/bin/bash is less common.
  3. Step 3: Ensure script runs with Bash when executed directly

    Using #!/usr/bin/env bash ensures the script runs with Bash regardless of its location.
  4. Final Answer:

    #!/usr/bin/env bash -> Option A
  5. Quick Check:

    Use env to find Bash for portability [OK]
Hint: Use #!/usr/bin/env bash for portable Bash scripts [OK]
Common Mistakes:
  • Using /bin/sh which may not be Bash
  • Assuming /bin/bash exists everywhere
  • Ignoring PATH differences on systems
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