What is a shell script and how does it work?
A shell script is a text file that contains a sequence of commands for a Unix-based operating system (OS). It's called a shell script because it combines a sequence of commands in a file that would otherwise have to be typed in one at a time into a single script. The shell is the OS's command-line interface (CLI) and interpreter for the set of commands that are used to communicate with the system.
A shell script is usually created to save time for command sequences that a user needs to use repeatedly. Like other programs, the shell script can contain parameters, comments and subcommands that the shell must follow. Users simply enter the file name on a command line to initiate the sequence of commands in the shell script.
In the DOS OS, a shell script is called a batch file. In IBM's mainframe VM OSes it's called an EXEC.
How shell scripting works
The basic steps involved with shell scripting are writing a shell script, making the script accessible to the shell and giving the shell execute permission.
Shell scripts contain American Standard Code for Information Interchange, or ASCII, text and are written using a text editor, word processor or graphical user interface. The content of the script is a series of commands in a language that can be interpreted by the shell. Functions that shell scripts support include loops, variables, if-then-else statements, arrays and shortcuts. Once complete, the file is saved typically with a .txt or .sh file extension and in a location that the shell can access.
Command line shell vs. graphical shell
The two main categories of shells are command line shell and graphical shell. A command line shell is a text-based shell that allows users to program directly into an OS by typing commands. It processes the commands the user enters and executes them, providing output directly in the terminal. Common tasks performed via a command line shell include file manipulation, program execution and system monitoring. The bash shell, C shell and Korn shell are all command line shells.
Graphical shell programming provides a visual interface to interact with an OS. Graphical shells are what most users interact with Windows, macOS and graphical Linux operating systems. While graphical shells offer ease of use, they can lack the precision and flexibility that command line shells provide, especially for advanced scripting and automation.
Types of shells
In Unix and Linux, there are five main types of shell scripts:
- Bourne shell. The Bourne shell, also known as sh, is the original Unix shell named after developer Stephen Bourne. It's known for its simplicity and is still used today in many scripting tasks and scripting tutorials. The character for prompting a Bourne shell is $.
- Bourne again shells. A Bourne again shell, or bash shell, is one of the most popular shell types. It extends the Bourne shell's capabilities and is the default shell for Unix version 7. The character for prompting a Bourne again shell is also $.
- C shells. A C shell, also known as csh, is run in a text terminal window and is able to easily read file commands. It incorporates C-like syntax for control structures and is favored by programmers for its history and job-control features. The character for prompting a C shell is %.
- Korn shell. The Korn shell, or ksh, blends features of the Bourne and C shells, along with additional functionalities. It's considered more powerful for scripting while maintaining compatibility with sh. The Korn shell is prompted by the same character as both Bourne shells, the $.
- Z shell. Z shells, or zsh, are known for improved tab completion and spell correction. They offer a customizable environment that appeals to many users seeking enhanced functionality over the standard bash script. The character that prompts Z shells is the same as the C shell.
What is a terminal?
A terminal is an application that lets users interact with a shell through a CLI. In early computing, terminals were physical devices connected to a mainframe computer. Today, terminals are typically software programs that emulate this behavior on modern OSes.
Users can use terminals to input commands that run programs, manage files or write and execute shell scripts. Terminals are particularly useful for users who prefer or require text-based control over their system, offering a direct line to the underlying shell.
Examples of shell script applications
Shell scripts are most useful for repetitive tasks that are time consuming to execute when the user must type one line at a time. A few examples of applications in which shell scripts are used include the following:
- Automating the code compiling process.
- Running a program or creating a program environment.
- Completing batch processes.
- Manipulating files.
- Linking existing programs together.
- Executing routine backups.
- Monitoring a system.
Advantages and disadvantages of shell scripting
Shell scripting is meant to be simple and efficient. It uses the same syntax in the script as it would on the shell command line, removing any interpretation issues. Writing code shell scripts is also faster and requires less of a learning curve than other programming languages.
However, errors in a shell script can be extremely costly if not corrected. In addition, differing platforms associated with shell scripting aren't always compatible. Shell scripts can also be slower to execute than individual commands. Linux commands in the enterprise are also open to the risk of fragmentation.
Coding is an important element of programming. Learn about collaborative coding basics and best practices.