]>
Commit | Line | Data |
---|---|---|
ccc6cda3 JA |
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 | ||
b72432fd | 137 | Bash includes a built-in help facility. |
ccc6cda3 JA |
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. |