Bash, the Bourne Again SHell, is a Unix shell and command language written as a free software replacement for the original Bourne shell. It serves as the default login shell on most Linux distributions and, before macOS Catalina, on Apple's desktop operating systems as well. Because Bash is installed almost everywhere a Unix-like system runs, it is the natural choice for writing portable automation scripts that glue other tools together.
A Bash script is simply a text file containing commands the shell can interpret. By convention such files carry the .sh extension to signal intent and let editors and tooling recognize them as shell scripts, although the extension is not strictly required for execution. The first line of an executable Bash script must be a shebang — a line such as #!/usr/bin/env bash or #!/bin/bash — which tells the kernel which interpreter to invoke when the file is run directly. #!/usr/bin/env bash is often preferred because it locates Bash through the user's PATH, which keeps the script working even when Bash lives in a non-standard location.
Once the file has the right shebang, it must be made executable before it can be launched as a program. The command chmod +x script.sh (or the equivalent chmod 755 script.sh) sets the execute bit. To run a script in the current directory you invoke it with ./script.sh; the leading ./ is required because the current directory is not normally included in PATH. There is an important distinction between sh script.sh and ./script.sh: the former explicitly invokes the sh interpreter and ignores the shebang, so Bash-only features may break, while the latter honors the shebang and uses the interpreter declared on the first line. To guarantee Bash regardless of how a script is invoked, you can guard at runtime with [[ -n "${BASH_VERSION:-}" ]] || { echo "Need bash"; exit 1; }.