1 | BASH - The Bourne-Again Shell
|
---|
2 |
|
---|
3 | Bash is the shell, or command language interpreter, that will appear
|
---|
4 | in the GNU operating system. Bash 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 Bash without modification.
|
---|
10 |
|
---|
11 | Bash 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.
|
---|
16 |
|
---|
17 | Bash includes the following features:
|
---|
18 |
|
---|
19 | Editing and Completion
|
---|
20 |
|
---|
21 | Bash 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.
|
---|
27 |
|
---|
28 | The Bash 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.
|
---|
31 |
|
---|
32 | History and Command Re-entry
|
---|
33 |
|
---|
34 | The Bash 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. Bash 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.
|
---|
39 |
|
---|
40 | Bash allows users to control which commands are saved on the history
|
---|
41 | list.
|
---|
42 |
|
---|
43 | Job Control
|
---|
44 |
|
---|
45 | On systems that support it, Bash 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. Bash allows users to selectively `forget' about
|
---|
49 | background jobs.
|
---|
50 |
|
---|
51 | Shell Functions and Aliases
|
---|
52 |
|
---|
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.
|
---|
60 |
|
---|
61 | Arrays
|
---|
62 |
|
---|
63 | Bash-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. Bash includes a number of built-in array
|
---|
67 | variables.
|
---|
68 |
|
---|
69 | Arithmetic
|
---|
70 |
|
---|
71 | Bash 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.
|
---|
78 |
|
---|
79 | An arithmetic expression may be used as a command; the exit status of
|
---|
80 | the command is the value of the expression.
|
---|
81 |
|
---|
82 | ANSI-C Quoting
|
---|
83 |
|
---|
84 | There is a new quoting syntax that allows backslash-escaped characters
|
---|
85 | in strings to be expanded according to the ANSI C standard.
|
---|
86 |
|
---|
87 | Tilde Expansion
|
---|
88 |
|
---|
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.
|
---|
92 |
|
---|
93 | Brace Expansion
|
---|
94 |
|
---|
95 | Brace expansion is a convenient way to generate a list of strings that
|
---|
96 | share a common prefix or suffix.
|
---|
97 |
|
---|
98 | Substring Capabilities
|
---|
99 |
|
---|
100 | Bash 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.
|
---|
105 |
|
---|
106 | Indirect Variable Expansion
|
---|
107 |
|
---|
108 | Bash makes it easy to find the value of a shell variable whose name is
|
---|
109 | the value of another variable.
|
---|
110 |
|
---|
111 | Expanded I/O Capabilities
|
---|
112 |
|
---|
113 | Bash provides several input and output features not available in sh,
|
---|
114 | including the ability to:
|
---|
115 |
|
---|
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
|
---|
122 |
|
---|
123 | Control of Builtin Commands
|
---|
124 |
|
---|
125 | Bash 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.
|
---|
130 |
|
---|
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.
|
---|
134 |
|
---|
135 | Help
|
---|
136 |
|
---|
137 | Bash includes a built-in help facility.
|
---|
138 |
|
---|
139 | Shell Optional Behavior
|
---|
140 |
|
---|
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.
|
---|
144 |
|
---|
145 | Prompt Customization
|
---|
146 |
|
---|
147 | Bash 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.
|
---|
151 |
|
---|
152 | Security
|
---|
153 |
|
---|
154 | Bash provides a restricted shell environment. It is also possible to
|
---|
155 | control the execution of setuid/setgid scripts.
|
---|
156 |
|
---|
157 | Directory Stack
|
---|
158 |
|
---|
159 | Bash 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.
|
---|
164 |
|
---|
165 | POSIX Mode
|
---|
166 |
|
---|
167 | Bash is nearly completely conformant to POSIX.2. POSIX mode changes
|
---|
168 | those few areas where the Bash default behavior differs from the
|
---|
169 | standard to match the standard. In POSIX mode, Bash is POSIX.2
|
---|
170 | compliant.
|
---|
171 |
|
---|
172 | Internationalization
|
---|
173 |
|
---|
174 | Bash 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.
|
---|
178 |
|
---|
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.
|
---|
182 |
|
---|
183 | Command Timing
|
---|
184 |
|
---|
185 | Bash 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.
|
---|