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. |
---|