appع

michelangelus - Fotolia

Evaluate Weigh the pros and cons of technologies, products and projects you are considering.

A look at the main differences of Bourne shell vs. Bash

Shells help admins run commands from the keyboard to the OS. Though Bourne shell and Bash are similar, there are differences in layout and code compatibility.

Most Linux admins are hard-pressed to avoid the terminal window. It's almost as though it's in your blood to automatically use commands. And when you do, you usually work with Bourne Again Shell, also known as Bash.

But what is a shell? It is a program that accepts input from a keyboard and hands it off to the OS. As you type commands, the shell interprets them such that the OS can understand them.

Bash's syntax is a superset of Bourne. Since its original release on June 8, 1989, Bash has become the de facto shell for the Linux OS.

Of course, there are numerous shells available for Linux. In addition to Bash and Bourne shell, there are Korn, C, tcsh and Zsh. But the most widely used is Bash.

Overall, it's a rare instance to come across a true Bourne shell. If you use FreeBSD or Unix, you will most likely work with Bourne. Because most enterprise businesses employ Linux these days, it's a greater chance you work with Bash. You can find out which shells are available on your Linux distribution by issuing the command:

cat /etc/shells

You'll then likely see this list:

/bin/sh
/bin/bash
/bin/rbash
/bin/dash

Switch from Bash to Bourne shell

Although Bash is the default, Bourne (aka sh) is also available without having to install anything. To switch from Bash to Bourne, and follow these steps:

  1. Issue the command chsh
  2. Type your user password
  3. When prompted, type /bin/sh for the new shell
  4. Type su - USERNAME (replace USERNAME accordingly)
  5. Type your user password

If your switch to Bourne is successful, the new shell changes USER@HOSTNAME:~$ -- where USER is your username and HOSTNAME is the name of the computer -- to just $.

You should know that Bourne shell on most Linux distributions is an iteration; it's most likely a Portable Operating System Interface () shell. In order to get the true Bourne shell, you'd have to be using FreeBSD or Unix.

While Bash uses the same grammar, parameter and variable expansion, redirection, and quoting as the Bourne Shell, Bash uses the POSIX standard in order to apply these features.

POSIX is an IEEE standard for the facilitation of application portability. POSIX creates a single, unified standard for Unix. As long as developers release an OS that matches the POSIX description, they can label their platform POSIX-compliant.

How do Bourne shell and Bash differ?

Bash is basically Bourne with more features; though, most of the commands work similarly, there are differences. Namely, and script compatibility.

The first difference with Bourne is that it doesn't come with all of the conveniences of Bash. One of the most obvious is color. With modern Bash, you'll see that different types of files are different colors.

For example, directories are blue; binary files are a shade of burgundy; and nonbinary, flat files are either black or white, depending on the color of your terminal.

Directory setup in Bash
Bash lists all directories in blue on Elementary OS.

Switch over to Bourne -- or its Linux equivalent -- and you'll see those blue directories are now just white text on a shaded terminal background.

Bourne interface
Once you switch to Bourne, everything is monochromatic.

For the longest time, on most modern Linux systems, /bin/sh was a link to /bin/bash, so you'd never know the difference between the two. As time marched on, Bash developed additional extensions to become more powerful and flexible than Bourne.

Eventually, Bourne was no longer an option on Linux; it was replaced by Bourne-compliant shells (like sh and dash). Even when you switch to the sh shell on Linux -- if you assume it to be Bourne -- most likely, you are using a more modern iteration.

Aside from color, the most important difference between the two shells is script compatibility. If you write a Bourne shell script, chances are very good it will run, without modification, on a Bash shell.

If you write a , it likely requires modification to run on a Bourne shell. If you know you'll write a script that is used on different shells, your best bet is to go with the Bourne shell compliance specifications.

Let's take a look at the Hello World shell script. Written for a Bourne shell, that script looks something like:

#!/bin/sh
# Our Hello World script
echo Hello World

Written for Bash, that same script could look like:

#!/bin/bash
# declare STRING variable
STRING="Hello World"
#print variable on a screen
echo $STRING

Both of these scripts run on the Bash and Bourne shells. Sort of. If you change your shell to sh on a modern Linux it will run, simply because you're likely using a POSIX-compliant shell. And because Bash is fully backward compatible with sh, the shell scripts written for sh work with Bash.

Because Bourne is not forward compatible with Bash, not every Bash script will run via the Bourne shell. If you ran the second script on FreeBSD, you might run into problems.

Dig Deeper on Linux servers

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.

  • Learn how this free PowerShell-based utility digs into your Office 365 security setup and offers guidance for administrators ...

  • Administrators of Office 365 or Azure platforms can benefit from using newer Microsoft software technologies to handle many jobs,...

  • Microsoft's hosting service for DNS domains is an option for organizations with a heavy Azure investment that want the benefits ...

  • Mini PCs are a low-cost hardware alternative to servers that enable organizations to maintain maximum data center features and ...

  • VDI has specific hardware needs that servers hosting other virtualized workloads may not meet. Learn how to gauge VDI hardware ...

  • This year's VMworld conference runs virtually from Sep. 29 to Oct. 1. Read the latest news and announcements about and from the ...

  • The public cloud providers closed the 2010s as one of the dominant forces in IT, but they'll face competition in the 2020s from ...

  • Put your IT team in the best position to succeed with AI. Develop these machine learning skills and see how they translate to the...

  • Get to know AWS cloud networking services for load balancing, traffic routing, content delivery and more with this overview.

Close