Skip to content
Latchkey

What Is a Shebang Line? Choosing the Interpreter

A shebang line is the first line of a script, starting with #! , that tells the operating system which interpreter should run the file.

When you run a script directly, the operating system needs to know what program should interpret it: Bash, Python, Node, or something else. The shebang line answers that. It is a small but important detail that decides which shell or interpreter, and therefore which features, your CI script gets.

What a shebang looks like

It is the very first line and begins with the two characters #! followed by a path, for example #!/bin/bash or #!/usr/bin/env python3. The OS reads it when you execute the file directly.

How it is used

When you run ./script.sh, the kernel sees the shebang, launches the named interpreter, and hands it the file. Without a shebang, the OS may fall back to the default shell, which might not be what you intended.

env-based shebangs

  • #!/bin/bash points at a fixed path to Bash.
  • #!/usr/bin/env bash finds Bash via PATH, which is more portable.
  • #!/usr/bin/env python3 does the same for Python interpreters.

Why the shebang matters

The shebang decides whether your script runs under sh or bash, which changes which features are available. A script using Bash arrays will break if its shebang resolves to a plain POSIX shell.

Shebangs in CI

CI often invokes scripts explicitly (bash deploy.sh), which overrides the shebang. But when steps call a checked-in script directly, the shebang controls the interpreter, so getting it right keeps local and CI runs consistent.

Consistency on managed runners

Latchkey runners provide the interpreters at predictable locations, so a #!/usr/bin/env bash shebang resolves the same way every run. That keeps directly executed scripts behaving the same in CI as on a developer machine.

Key takeaways

  • A shebang is the first line of a script naming the interpreter to use.
  • Using #!/usr/bin/env bash finds the interpreter via PATH for portability.
  • The shebang decides which shell features a directly executed script gets.

Frequently asked questions

What is What is a shebang line??
When you run a script directly, the operating system needs to know what program should interpret it: Bash, Python, Node, or something else. The shebang line answers that. It is a small but important detail that decides which shell or interpreter, and therefore which features, your CI script gets.
What a shebang looks like?
It is the very first line and begins with the two characters #! followed by a path, for example #!/bin/bash or #!/usr/bin/env python3. The OS reads it when you execute the file directly.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card