187 lines
		
	
	
	
		
			6.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			187 lines
		
	
	
	
		
			6.9 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 		       BASH - The Bourne-Again Shell
 | |
| 
 | |
| Bash is the shell, or command language interpreter, that will appear
 | |
| in the GNU operating system.  Bash is an sh-compatible shell that
 | |
| incorporates useful features from the Korn shell (ksh) and C shell
 | |
| (csh).  It is intended to conform to the IEEE POSIX P1003.2/ISO 9945.2
 | |
| Shell and Tools standard.  It offers functional improvements over sh
 | |
| for both programming and interactive use.  In addition, most sh scripts
 | |
| can be run by Bash without modification. 
 | |
| 
 | |
| Bash is quite portable.  It uses a configuration system that discovers
 | |
| characteristics of the compilation platform at build time, and may
 | |
| therefore be built on nearly every version of UNIX.  Ports to
 | |
| UNIX-like systems such as QNX and Minix and to non-UNIX systems such
 | |
| as OS/2, Windows 95, and Windows NT are available. 
 | |
| 
 | |
| Bash includes the following features:
 | |
| 
 | |
| Editing and Completion
 | |
| 
 | |
| Bash offers a command-line editing facility which permits users to
 | |
| edit command lines using familiar emacs or vi-style editing commands.
 | |
| Editing allows corrections to be made without having to erase back
 | |
| to the point of error or start the command line anew.  The editing
 | |
| facilities include a feature that allows users to complete command and
 | |
| file names.
 | |
| 
 | |
| The Bash line editing library is fully customizable.  Users may define
 | |
| their own key bindings -- the action taken when a key is pressed.  A
 | |
| number of variables to fine-tune editing behavior are also available.
 | |
| 
 | |
| History and Command Re-entry
 | |
| 
 | |
| The Bash history feature remembers commands entered to the shell and
 | |
| allows them to be recalled and re-executed.  The history list may be
 | |
| of unlimited size.  Bash allows users to search for previous commands
 | |
| and reuse portions of those commands when composing new ones.  The
 | |
| history list may be saved across shell sessions. 
 | |
| 
 | |
| Bash allows users to control which commands are saved on the history
 | |
| list.
 | |
| 
 | |
| Job Control
 | |
| 
 | |
| On systems that support it, Bash provides an interface to the
 | |
| operating system's job control facilities, which allow processes
 | |
| to be suspended and restarted, and moved between the foreground
 | |
| and background.  Bash allows users to selectively `forget' about
 | |
| background jobs. 
 | |
| 
 | |
| Shell Functions and Aliases
 | |
| 
 | |
| These mechanisms are available to bind a user-selected identifier to a
 | |
| list of commands that will be executed when the identifier is used as
 | |
| a command name.  Functions allow local variables and recursion, and
 | |
| have access to the environment of the calling shell.  Aliases may be
 | |
| used to create a mnemonic for a command name, expand a single word to
 | |
| a complex command, or ensure that a command is called with a basic set
 | |
| of options. 
 | |
| 
 | |
| Arrays
 | |
| 
 | |
| Bash-2.0 supports indexed arrays of unlimited size.  The subscript for
 | |
| an array is an arithmetic expression.  Arrays may be assigned to with
 | |
| a new compound assignment syntax, and several builtins have options to
 | |
| operate on array variables.  Bash includes a number of built-in array
 | |
| variables.
 | |
| 
 | |
| Arithmetic
 | |
| 
 | |
| Bash allows users to perform integer arithmetic in any base from two
 | |
| to sixty-four.  Nearly all of the C language arithmetic operators are
 | |
| available with the same syntax and precedence as in C.  Arithmetic
 | |
| expansion allows an arithmetic expression to be evaluated and the
 | |
| result substituted into the command line.  Shell variables can be used
 | |
| as operands, and the value of an expression may be assigned to a
 | |
| variable. 
 | |
| 
 | |
| An arithmetic expression may be used as a command; the exit status of
 | |
| the command is the value of the expression.
 | |
| 
 | |
| ANSI-C Quoting
 | |
| 
 | |
| There is a new quoting syntax that allows backslash-escaped characters
 | |
| in strings to be expanded according to the ANSI C standard.
 | |
| 
 | |
| Tilde Expansion
 | |
| 
 | |
| Users' home directories may be expanded using this feature.  Words
 | |
| beginning with a tilde may also be expanded to the current or previous
 | |
| working directory.
 | |
| 
 | |
| Brace Expansion
 | |
| 
 | |
| Brace expansion is a convenient way to generate a list of strings that
 | |
| share a common prefix or suffix.
 | |
| 
 | |
| Substring Capabilities
 | |
| 
 | |
| Bash allows new strings to be created by removing leading or trailing
 | |
| substrings from existing variable values, or by specifying a starting
 | |
| offset and length.  Portions of variable values may be matched against
 | |
| shell patterns and the matching portion removed or a new value
 | |
| substituted. 
 | |
| 
 | |
| Indirect Variable Expansion
 | |
| 
 | |
| Bash makes it easy to find the value of a shell variable whose name is
 | |
| the value of another variable.
 | |
| 
 | |
| Expanded I/O Capabilities
 | |
| 
 | |
| Bash provides several input and output features not available in sh,
 | |
| including the ability to:
 | |
| 
 | |
| 	o specify a file or file descriptor for both input and output
 | |
| 	o read from or write to asynchronous processes using named pipes
 | |
| 	o read lines ending in backslash
 | |
| 	o display a prompt on the terminal before a read
 | |
| 	o format menus and interpret responses to them
 | |
| 	o echo lines exactly as input without escape processing
 | |
| 
 | |
| Control of Builtin Commands
 | |
| 
 | |
| Bash implements several builtin commands to give users more control
 | |
| over which commands are executed.  The enable builtin allows other
 | |
| builtin commands to be selectively enabled or disabled.  The command
 | |
| and builtin builtins change the order in which the shell searches for
 | |
| commands. 
 | |
| 
 | |
| On systems that provide dynamic loading, new builtins may be loaded
 | |
| into a running shell from a shared object file.  These new builtins
 | |
| have access to all of the shell facilities.
 | |
| 
 | |
| Help
 | |
| 
 | |
| Bash includes a built-in help facility.
 | |
| 
 | |
| Shell Optional Behavior
 | |
| 
 | |
| There is a great deal of customizable shell behavior.  The shopt
 | |
| builtin command provides a unified interface that allows users to
 | |
| alter shell defaults. 
 | |
| 
 | |
| Prompt Customization
 | |
| 
 | |
| Bash allows the primary and secondary prompts to be customized by
 | |
| interpreting a number of backslash-escaped special characters. 
 | |
| Parameter and variable expansion is also performed on the values of
 | |
| the primary and secondary prompt strings before they are displayed. 
 | |
| 
 | |
| Security
 | |
| 
 | |
| Bash provides a restricted shell environment.  It is also possible to
 | |
| control the execution of setuid/setgid scripts. 
 | |
| 
 | |
| Directory Stack
 | |
| 
 | |
| Bash provides a `directory stack', to which directories may be added
 | |
| and removed.  The current directory may be changed to any directory in
 | |
| the stack.  It is easy to toggle between two directories in the stack. 
 | |
| The directory stack may be saved and restored across different shell
 | |
| invocations. 
 | |
| 
 | |
| POSIX Mode
 | |
| 
 | |
| Bash is nearly completely conformant to POSIX.2.  POSIX mode changes
 | |
| those few areas where the Bash default behavior differs from the
 | |
| standard to match the standard.  In POSIX mode, Bash is POSIX.2
 | |
| compliant. 
 | |
| 
 | |
| Internationalization
 | |
| 
 | |
| Bash provides a new quoting syntax that allows strings to be
 | |
| translated according to the current locale.  The locale in which the
 | |
| shell itself runs may also be changed, so that the shell messages
 | |
| themselves may be language-specific. 
 | |
| 
 | |
| The command-line editing facilities allow the input of eight-bit
 | |
| characters, so most of the ISO-8859 family of character sets are
 | |
| supported. 
 | |
| 
 | |
| Command Timing
 | |
| 
 | |
| Bash allows external commands, shell builtin commands and shell functions
 | |
| to be timed.  The format used to display the timing information may be
 | |
| changed by the user.
 | 
