Use Comments and Shebang (#!) Properly

Summary:
Learn the purpose of #!/bin/bash and commenting code.


When writing shell scripts, two simple techniques—using the shebang (#!) and comments (#)—can make your code more robust, understandable, and maintainable. Whether you're a beginner or an experienced developer, understanding these features is essential for producing professional and portable scripts. Let's dive into how and why you should use both shebangs and comments properly.


Understanding the Shebang (#!)

The shebang is a character sequence at the very top of a script file. It looks like this:

#!/bin/bash

What Does the Shebang Do?

  • The shebang tells the operating system which interpreter to use to run the script.
  • When you execute a script directly (e.g., ./myscript.sh), the OS reads the first line. If it begins with #!, it invokes the specified interpreter.

Common Examples

  • Bash script:
    #!/bin/bash
    
  • Python script:
    #!/usr/bin/env python3
    
  • Perl script:
    #!/usr/bin/perl
    

Why Is It Important?

  • Portability: Ensures your script runs as expected on different systems.
  • Consistency: All users get the same interpreter.
  • Ease of use: Lets you run scripts directly, without calling the interpreter manually.

Best Practices

  • Always put the shebang on the very first line.
  • Use absolute paths: Find the correct path to your interpreter with which bash or which python3.
  • Prefer /usr/bin/env for portability:
    #!/usr/bin/env bash finds bash in the user's environment, increasing portability across systems.

Commenting Code in Shell Scripts

The hash # character introduces a comment. All text after # on a line is ignored by the shell.

Why Comment Your Code?

  • Clarity: Helps others (and future you) understand what the script does.
  • Documentation: Explains complex or unexpected code logic.
  • Debugging: Temporarily disable lines of code without deleting them.

Comment Types

  • Single-Line Comments:
    # This is a simple backup script
    cp file.txt file.txt.bak   # Copy file to backup
    
  • Block Comments (by stacking single lines):
    # This block of code initializes variables
    # and checks for required arguments.
    

Where to Use Comments

  • At the top: Describe what the script is for, its parameters, and usage.
  • Before complex logic: Introduce tricky or non-obvious code sections.
  • Inline: Clarify unusual steps.

Example

#!/bin/bash
# simple_backup.sh
# Backs up a file to a .bak

if [ $# -ne 1 ]; then
    echo "Usage: $0 <file>"
    exit 1
fi

cp "$1" "$1.bak"   # Copy file to backup with .bak extension

Tips for Clean Comments

  • Be concise: Short, meaningful comments are best.
  • Avoid obvious comments:
    ls   # list files     # <-- Redundant!
    
  • Update comments: Outdated comments are worse than none!
  • Document parameters and outputs in the script header.

Conclusion

Properly using the shebang (#!) ensures your scripts run with the right interpreter, making them portable and user-friendly. Commenting your code, meanwhile, is a foundational step toward clarity, maintainability, and collaboration. By mastering these basics, you set yourself—and your scripts—up for success.


Further Reading: