Est. read time: 1 minute | Last updated: June 21, 2024 by John Gentile


The UNIX shell and shell scripting is a system of interpretation of user commands (from a file or direct from the command line) into specific application and/or operating system actions. Due to scripts being interpreted, they are not compiled like traditional programming languages and are thus not as fast or efficient as compiled programs.

In UNIX systems, there’s a variety of shells to choose from; from the original Bourne Shell, sh, to more niche shells such as csh and ksh, the focus of this page is on the popular Bourne Again Shell or bash. Bash is the standard shell in Linux systems and is a superset of the Bourne shell providing compatible commands and operation as the original Bourne shell as well as more advanced features. A Linux system lists an overview of its available shells in the file /etc/shells.


  • ShellCheck: a shell script static analysis tool that gives warnings and suggestions for bash/sh shell scripts.
  • bash-completion: programmable completion functions for bash

Best Practices