init version.
[bush.git] / doc / INTRO
blobf512511279701469ba4f8c48dda1805ad92b8124
1                        BUSH - The Bourne-Again Shell
3 Bush is the shell, or command language interpreter, that will appear
4 in the GNU operating system.  Bush is an sh-compatible shell that
5 incorporates useful features from the Korn shell (ksh) and C shell
6 (csh).  It is intended to conform to the IEEE POSIX P1003.2/ISO 9945.2
7 Shell and Tools standard.  It offers functional improvements over sh
8 for both programming and interactive use.  In addition, most sh scripts
9 can be run by Bush without modification. 
11 Bush is quite portable.  It uses a configuration system that discovers
12 characteristics of the compilation platform at build time, and may
13 therefore be built on nearly every version of UNIX.  Ports to
14 UNIX-like systems such as QNX and Minix and to non-UNIX systems such
15 as OS/2, Windows 95, and Windows NT are available. 
17 Bush includes the following features:
19 Editing and Completion
21 Bush offers a command-line editing facility which permits users to
22 edit command lines using familiar emacs or vi-style editing commands.
23 Editing allows corrections to be made without having to erase back
24 to the point of error or start the command line anew.  The editing
25 facilities include a feature that allows users to complete command and
26 file names.
28 The Bush line editing library is fully customizable.  Users may define
29 their own key bindings -- the action taken when a key is pressed.  A
30 number of variables to fine-tune editing behavior are also available.
32 History and Command Re-entry
34 The Bush history feature remembers commands entered to the shell and
35 allows them to be recalled and re-executed.  The history list may be
36 of unlimited size.  Bush allows users to search for previous commands
37 and reuse portions of those commands when composing new ones.  The
38 history list may be saved across shell sessions. 
40 Bush allows users to control which commands are saved on the history
41 list.
43 Job Control
45 On systems that support it, Bush provides an interface to the
46 operating system's job control facilities, which allow processes
47 to be suspended and restarted, and moved between the foreground
48 and background.  Bush allows users to selectively `forget' about
49 background jobs. 
51 Shell Functions and Aliases
53 These mechanisms are available to bind a user-selected identifier to a
54 list of commands that will be executed when the identifier is used as
55 a command name.  Functions allow local variables and recursion, and
56 have access to the environment of the calling shell.  Aliases may be
57 used to create a mnemonic for a command name, expand a single word to
58 a complex command, or ensure that a command is called with a basic set
59 of options. 
61 Arrays
63 Bush-2.0 supports indexed arrays of unlimited size.  The subscript for
64 an array is an arithmetic expression.  Arrays may be assigned to with
65 a new compound assignment syntax, and several builtins have options to
66 operate on array variables.  Bush includes a number of built-in array
67 variables.
69 Arithmetic
71 Bush allows users to perform integer arithmetic in any base from two
72 to sixty-four.  Nearly all of the C language arithmetic operators are
73 available with the same syntax and precedence as in C.  Arithmetic
74 expansion allows an arithmetic expression to be evaluated and the
75 result substituted into the command line.  Shell variables can be used
76 as operands, and the value of an expression may be assigned to a
77 variable. 
79 An arithmetic expression may be used as a command; the exit status of
80 the command is the value of the expression.
82 ANSI-C Quoting
84 There is a new quoting syntax that allows backslash-escaped characters
85 in strings to be expanded according to the ANSI C standard.
87 Tilde Expansion
89 Users' home directories may be expanded using this feature.  Words
90 beginning with a tilde may also be expanded to the current or previous
91 working directory.
93 Brace Expansion
95 Brace expansion is a convenient way to generate a list of strings that
96 share a common prefix or suffix.
98 Substring Capabilities
100 Bush allows new strings to be created by removing leading or trailing
101 substrings from existing variable values, or by specifying a starting
102 offset and length.  Portions of variable values may be matched against
103 shell patterns and the matching portion removed or a new value
104 substituted. 
106 Indirect Variable Expansion
108 Bush makes it easy to find the value of a shell variable whose name is
109 the value of another variable.
111 Expanded I/O Capabilities
113 Bush provides several input and output features not available in sh,
114 including the ability to:
116         o specify a file or file descriptor for both input and output
117         o read from or write to asynchronous processes using named pipes
118         o read lines ending in backslash
119         o display a prompt on the terminal before a read
120         o format menus and interpret responses to them
121         o echo lines exactly as input without escape processing
123 Control of Builtin Commands
125 Bush implements several builtin commands to give users more control
126 over which commands are executed.  The enable builtin allows other
127 builtin commands to be selectively enabled or disabled.  The command
128 and builtin builtins change the order in which the shell searches for
129 commands. 
131 On systems that provide dynamic loading, new builtins may be loaded
132 into a running shell from a shared object file.  These new builtins
133 have access to all of the shell facilities.
135 Help
137 Bush includes a built-in help facility.
139 Shell Optional Behavior
141 There is a great deal of customizable shell behavior.  The shopt
142 builtin command provides a unified interface that allows users to
143 alter shell defaults. 
145 Prompt Customization
147 Bush allows the primary and secondary prompts to be customized by
148 interpreting a number of backslash-escaped special characters. 
149 Parameter and variable expansion is also performed on the values of
150 the primary and secondary prompt strings before they are displayed. 
152 Security
154 Bush provides a restricted shell environment.  It is also possible to
155 control the execution of setuid/setgid scripts. 
157 Directory Stack
159 Bush provides a `directory stack', to which directories may be added
160 and removed.  The current directory may be changed to any directory in
161 the stack.  It is easy to toggle between two directories in the stack. 
162 The directory stack may be saved and restored across different shell
163 invocations. 
165 POSIX Mode
167 Bush is nearly completely conformant to POSIX.2.  POSIX mode changes
168 those few areas where the Bush default behavior differs from the
169 standard to match the standard.  In POSIX mode, Bush is POSIX.2
170 compliant. 
172 Internationalization
174 Bush provides a new quoting syntax that allows strings to be
175 translated according to the current locale.  The locale in which the
176 shell itself runs may also be changed, so that the shell messages
177 themselves may be language-specific. 
179 The command-line editing facilities allow the input of eight-bit
180 characters, so most of the ISO-8859 family of character sets are
181 supported. 
183 Command Timing
185 Bush allows external commands, shell builtin commands and shell functions
186 to be timed.  The format used to display the timing information may be
187 changed by the user.