Bourne Shell

Revision as of 18:24, 2 March 2012 by rosettacode>Kernigh (Show a bug with here documents.)
This page is a stub. It needs more information! You can help Rosetta Code by filling it in!

The Bourne Shell is a Unix shell upon which many shells are based; notably the Korn shell and Bourne Again SHell. (The other major tree of Unix shells descend from csh.)

Bourne Shell is an implementation of UNIX Shell. Other implementations of UNIX Shell.

Portable Shell Syntax is the scripting language syntax used by the System V Bourne shell. This syntax is compatible with the heirloom shell and is the syntax documented in most Unix books. Examples marked "Works with: Bourne Shell" should work in any of the Bourne-compatible shells.

A Bourne Shell script begins with a shebang (also known as a hashbang) like this, which tells the operating system to use the Bourne compatible shell interpreter:

#!/bin/sh

In 2009, Computerworld published an in-depth interview with Steve Bourne, The A-Z of Programming Languages: Bourne shell, or sh, which details the Bourne shell origins and design decisions.

Bugs

Bourne Shell and Heirloom Shell have problems with here documents. Here is one such problem. A substitution, inside a here document, inside backquotes, inside double quotes, does insert too many backslashes.

<lang bash>f() { cat <<! here $1 ! }

expr "`f string`"

  1. Output from Bourne Shell: here \s\t\r\i\n\g
  2. Correct output: here string</lang>

The workaround is to move the backquotes to an assignment.

<lang bash>f() { cat <<! here $1 ! }

var=`f string` expr "$var"

  1. Output: here string</lang>