Bird
Raised Fist0
Bash Scriptingscripting~10 mins

Bash vs other shells (Zsh, Fish, sh) in Bash Scripting - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to print the current shell name using an environment variable.

Bash Scripting
echo $[1]
Drag options to blanks, or click blank then click option'
ASHELL
BPATH
CHOME
DUSER
Attempts:
3 left
💡 Hint
Common Mistakes
Using PATH or HOME instead of SHELL.
2fill in blank
medium

Complete the code to list all files in the current directory using a shell command.

Bash Scripting
[1] -l
Drag options to blanks, or click blank then click option'
Apwd
Bcd
Cecho
Dls
Attempts:
3 left
💡 Hint
Common Mistakes
Using cd or pwd which do not list files.
3fill in blank
hard

Fix the error in the script to correctly check if the shell is Zsh.

Bash Scripting
if [ "$SHELL" = [1] ]; then
echo "You are using Zsh"
fi
Drag options to blanks, or click blank then click option'
A"/bin/zsh"
B"/bin/sh"
C"/usr/bin/fish"
D"/bin/bash"
Attempts:
3 left
💡 Hint
Common Mistakes
Using bash or fish paths instead of zsh.
4fill in blank
hard

Fill both blanks to create a script that prints 'Fish shell detected' if the shell is Fish.

Bash Scripting
if [ $[1] = [2] ]; then
echo "Fish shell detected"
fi
Drag options to blanks, or click blank then click option'
A$SHELL
B"/usr/bin/fish"
C"/bin/fish"
D$USER
Attempts:
3 left
💡 Hint
Common Mistakes
Using $USER or wrong shell paths.
5fill in blank
hard

Fill all three blanks to create a script that prints the shell name without the path.

Bash Scripting
shell_name=$(basename [1])
echo "Current shell is [2]"
# Check if shell is [3]
Drag options to blanks, or click blank then click option'
A$SHELL
B$shell_name
Cbash
Dfish
Attempts:
3 left
💡 Hint
Common Mistakes
Using the full path instead of just the shell name.

Practice

(1/5)
1. Which shell is most commonly used as the default for scripting on many Linux systems?
easy
A. Zsh
B. Bash
C. Fish
D. sh

Solution

  1. Step 1: Understand default shell usage

    Bash is widely adopted as the default shell on many Linux distributions for scripting and interactive use.
  2. Step 2: Compare with other shells

    Fish and Zsh offer more user-friendly features but are not default. sh is simpler but less common as default.
  3. Final Answer:

    Bash -> Option B
  4. Quick Check:

    Default shell for scripting = Bash [OK]
Hint: Default Linux shell for scripts is usually Bash [OK]
Common Mistakes:
  • Confusing Fish or Zsh as default shells
  • Thinking sh is default on Linux
  • Assuming all shells are equally common
2. Which of the following is the correct way to start a script with the Fish shell?
easy
A. #!/bin/bash
B. #!/bin/sh
C. #!/bin/fish
D. #!/usr/bin/zsh

Solution

  1. Step 1: Identify the shebang for Fish shell

    The Fish shell uses the shebang line #!/bin/fish to specify the interpreter.
  2. Step 2: Compare with other shells

    #!/bin/bash is for Bash, #!/bin/sh for sh, and #!/usr/bin/zsh for Zsh.
  3. Final Answer:

    #!/bin/fish -> Option C
  4. Quick Check:

    Fish shell shebang = #!/bin/fish [OK]
Hint: Fish shell scripts start with #!/bin/fish [OK]
Common Mistakes:
  • Using #!/bin/bash for Fish scripts
  • Confusing Zsh and Fish shebangs
  • Omitting shebang line
3. What will be the output of this script run in Bash but not in Fish?
echo $(( 3 + 4 ))
medium
A. 7
B. 3 + 4
C. Syntax error
D. 7 with a newline and prompt

Solution

  1. Step 1: Understand arithmetic expansion in Bash

    Bash supports $(( expression )) syntax to calculate arithmetic expressions and outputs the result.
  2. Step 2: Behavior in Fish shell

    Fish does not support $(( )) syntax; it would cause an error or print the expression literally.
  3. Final Answer:

    7 -> Option A
  4. Quick Check:

    Bash arithmetic expansion = 7 [OK]
Hint: Bash uses $(( )) for math; Fish does not support it [OK]
Common Mistakes:
  • Expecting Fish to evaluate $(( ))
  • Confusing output with syntax error
  • Thinking output includes prompt
4. You run this script in sh and get an error:
for i in {1..3}; do echo $i; done

What is the main reason?
medium
A. for loop syntax is invalid in sh
B. Missing semicolon before do
C. Variable $i is not defined
D. sh does not support brace expansion {1..3}

Solution

  1. Step 1: Check brace expansion support in sh

    sh does not support brace expansion like {1..3}; this is a Bash feature.
  2. Step 2: Validate loop syntax

    The for loop syntax is valid, and semicolons are correctly placed; $i is defined by the loop.
  3. Final Answer:

    sh does not support brace expansion {1..3} -> Option D
  4. Quick Check:

    Brace expansion unsupported in sh = A [OK]
Hint: sh lacks brace expansion like {1..3} [OK]
Common Mistakes:
  • Thinking semicolon is missing
  • Assuming $i is undefined
  • Believing for loop syntax is wrong
5. You want to write a script that works in both Bash and Zsh but uses advanced features like arrays and arithmetic. Which is the best approach?
hard
A. Use #!/bin/bash and test in Zsh for compatibility
B. Write separate scripts for Bash and Zsh
C. Use #!/bin/sh and avoid arrays and arithmetic
D. Use Fish shell for better features

Solution

  1. Step 1: Consider shell compatibility

    Bash and Zsh share many features including arrays and arithmetic, so using Bash shebang is common.
  2. Step 2: Test script in Zsh

    Testing in Zsh ensures compatibility; #!/bin/sh is too limited, and Fish syntax differs greatly.
  3. Final Answer:

    Use #!/bin/bash and test in Zsh for compatibility -> Option A
  4. Quick Check:

    Bash script tested in Zsh = A [OK]
Hint: Write in Bash, test in Zsh for shared features [OK]
Common Mistakes:
  • Using #!/bin/sh and losing features
  • Assuming Fish is compatible
  • Writing separate scripts unnecessarily
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