This tutorial is written to help people understand some of the basics of shell script programming (aka shell scripting), and hopefully to introduce some of the possibilities of simple but powerful programming available under the Bourne shell. As such, it has been written as a basis for one-on-one or group tutorials and exercises, and as a reference for subsequent use.
You are reading Version 4.5a, last updated 6th June 2023.
The most recent version of this tutorial is always available at: https://www.shellscript.sh. Always check there for the latest copy. (If you are reading this at some different address, it is probably a copy of the real site, and therefore may be out of date).
Steve Bourne wrote the original Bourne shell which appeared in the Seventh Edition Bell Labs Research version of Unix. Many variants have come and gone over time (csh, ksh, and so on).
This tutorial restricts itself to being Bourne shell compatible, to provide a baseline. This tutorial covers all shell scripting basics. The Shell Scripting Examples section of the tutorial adds additional examples in particular of how the Bash shell provides additional useful functionality over the standard Bourne shell.
This tutorial assumes some prior experience; namely:
You may want to review some of the feedback that this tutorial has received to see how useful you might find it.
Code segments and script output will be displayed as monospaced text. Command-line entries will be preceded by the Dollar sign ($). If your prompt is different, enter the command:
PS1="$ " ; export PS1
Then your interactions should
match the examples given (such as
Script output (such as "Hello World" below) is displayed at the start of the line.
$ echo '#!/bin/sh' > my-script.sh $ echo 'echo Hello World' >> my-script.sh $ chmod 755 my-script.sh $ ./my-script.sh Hello World $Entire scripts will be shown with a like this, and include a reference to the plain text of the script, where availablem like this: my-script.sh
#!/bin/sh # This is a comment! echo Hello World # This is a comment, too!Note that to make a file executable, you must set the eXecutable bit, and for a shell script, the Readable bit must also be set. So it is likely that you will need to change the permissions on your script, to make it executable. If your script is named "myscript.sh" then you will need to change its permissions, like this:
$ chmod u+rx myscript.sh $ ./myscript.sh
My Shell Scripting books, available in Paperback and eBook formats. This tutorial is more of a general introduction to Shell Scripting, the longer Shell Scripting: Expert Recipes for Linux, Bash and more book covers every aspect of Bash in detail.
Shell Scripting Tutorial is this tutorial, in 88-page Paperback and eBook formats. Convenient to read on the go, and in paperback format good to keep by your desk as an ever-present companion.
Also available in PDF form from Gumroad:Get this tutorial as a PDF
Shell Scripting: Expert Recipes for Linux, Bash and more is my 564-page book on Shell Scripting. The first half covers all of the features of the shell in every detail; the second half has real-world shell scripts, organised by topic, along with detailed discussion of each script.