*** bashref.texi 2003-06-11 17:27:38-04 1.1 --- bashref.texi 2003-06-12 15:17:09-04 *************** *** 17,34 **** @finalout @end iftex - @setchapternewpage odd @defcodeindex bt @defcodeindex rw @set BashFeatures ! @ifinfo ! @dircategory Utilities @direntry ! * Bash: (bash). The GNU Bourne-Again SHell. @end direntry ! @format This text is a brief description of the features that are present in the Bash shell. --- 17,32 ---- @finalout @end iftex @defcodeindex bt @defcodeindex rw @set BashFeatures ! @dircategory Basics @direntry ! * Bash: (bash). The GNU Bourne-Again SHell. @end direntry ! @copying This text is a brief description of the features that are present in the Bash shell. *************** *** 36,65 **** of @cite{The GNU Bash Reference Manual}, for @code{Bash}, Version @value{VERSION}. ! Copyright (C) 1991-2002 Free Software Foundation, Inc. ! Permission is granted to make and distribute verbatim copies of ! this manual provided the copyright notice and this permission notice ! are preserved on all copies. ! ! @ignore ! Permission is granted to process this file through TeX and print the ! results, provided the printed document carries copying permission ! notice identical to this one except for the removal of this paragraph ! (this paragraph not being relevant to the printed manual). ! ! @end ignore ! Permission is granted to copy and distribute modified versions of this ! manual under the conditions for verbatim copying, provided that the entire ! resulting derived work is distributed under the terms of a permission ! notice identical to this one. ! ! Permission is granted to copy and distribute translations of this manual ! into another language, under the above conditions for modified versions, ! except that this permission notice may be stated in a translation approved ! by the Free Software Foundation. ! @end format ! @end ifinfo @titlepage @title Bash Reference Manual --- 34,55 ---- of @cite{The GNU Bash Reference Manual}, for @code{Bash}, Version @value{VERSION}. ! Copyright (C) 1991-2003 Free Software Foundation, Inc. ! @quotation ! Permission is granted to copy, distribute and/or modify this document ! under the terms of the GNU Free Documentation License, Version 1.1 or ! any later version published by the Free Software Foundation; with no ! Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,'' ! and with the Back-Cover Texts as in (a) below. A copy of the ! license is included in the section entitled ``GNU Free Documentation ! License.'' ! ! (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify ! this GNU Manual, like GNU software. Copies published by the Free ! Software Foundation raise funds for GNU development.'' ! @end quotation ! @end copying @titlepage @title Bash Reference Manual *************** *** 70,98 **** @author Brian Fox, Free Software Foundation @page @vskip 0pt plus 1filll ! Copyright @copyright{} 1991-2002 Free Software Foundation, Inc. ! ! Permission is granted to make and distribute verbatim copies of ! this manual provided the copyright notice and this permission notice ! are preserved on all copies. ! ! Permission is granted to copy and distribute modified versions of this ! manual under the conditions for verbatim copying, provided that the entire ! resulting derived work is distributed under the terms of a permission ! notice identical to this one. ! ! Permission is granted to copy and distribute translations of this manual ! into another language, under the above conditions for modified versions, ! except that this permission notice may be stated in a translation approved ! by the Free Software Foundation. @end titlepage ! @ifinfo @node Top, Introduction, (dir), (dir) @top Bash Features ! @end ifinfo ! @ifinfo This text is a brief description of the features that are present in the Bash shell. --- 60,74 ---- @author Brian Fox, Free Software Foundation @page @vskip 0pt plus 1filll ! @insertcopying @end titlepage ! @ifnottex @node Top, Introduction, (dir), (dir) @top Bash Features ! @end ifnottex ! @ifnottex This text is a brief description of the features that are present in the Bash shell. *************** *** 145,150 **** --- 121,128 ---- between Bash and historical versions of /bin/sh. + * GNU Free Documentation License:: License for copying this manual. + * Builtin Index:: Index of Bash builtin commands. * Reserved Word Index:: Index of Bash reserved words. *************** *** 157,163 **** * Concept Index:: General index for concepts described in this manual. @end menu ! @end ifinfo @node Introduction @chapter Introduction --- 135,141 ---- * Concept Index:: General index for concepts described in this manual. @end menu ! @end ifnottex @node Introduction @chapter Introduction *************** *** 174,183 **** for the @sc{gnu} operating system. The name is an acronym for the @samp{Bourne-Again SHell}, a pun on Stephen Bourne, the author of the direct ancestor of ! the current Unix shell @code{/bin/sh}, which appeared in the Seventh Edition Bell Labs Research version of Unix. Bash is largely compatible with @code{sh} and incorporates useful features from the Korn shell @code{ksh} and the C shell @code{csh}. It is intended to be a conformant implementation of the @sc{ieee} --- 152,165 ---- for the @sc{gnu} operating system. The name is an acronym for the @samp{Bourne-Again SHell}, a pun on Stephen Bourne, the author of the direct ancestor of ! the current Unix shell @code{sh}, which appeared in the Seventh Edition Bell Labs Research version of Unix. + Bash was originally written by Brian Fox of the Free Software + Foundation. The current developer and maintainer is Chet Ramey + of Case Western Reserve University. + Bash is largely compatible with @code{sh} and incorporates useful features from the Korn shell @code{ksh} and the C shell @code{csh}. It is intended to be a conformant implementation of the @sc{ieee} *************** *** 185,243 **** It offers functional improvements over @code{sh} for both interactive and programming use. ! While the @sc{gnu} operating system provides other shells, including ! a version of @code{csh}, Bash is the default shell. ! Like other @sc{gnu} software, Bash is quite portable. It currently runs ! on nearly every version of Unix and a few other operating systems @minus{} ! independently-supported ports exist for @sc{ms-dos}, @sc{os/2}, ! Windows @sc{95/98}, and Windows @sc{nt}. @node What is a shell? @section What is a shell? ! At its base, a shell is simply a macro processor that executes ! commands. A Unix shell is both a command interpreter, which ! provides the user interface to the rich set of @sc{gnu} utilities, ! and a programming language, allowing these utilitites to be ! combined. Files containing commands can be created, and become ! commands themselves. These new commands have the same status as ! system commands in directories such as @file{/bin}, allowing users ! or groups to establish custom environments. ! ! A shell allows execution of @sc{gnu} commands, both synchronously and ! asynchronously. ! The shell waits for synchronous commands to complete before accepting ! more input; asynchronous commands continue to execute in parallel ! with the shell while it reads and executes additional commands. ! The @dfn{redirection} constructs permit ! fine-grained control of the input and output of those commands. ! Moreover, the shell allows control over the contents of commands' ! environments. ! Shells may be used interactively or non-interactively: they accept ! input typed from the keyboard or from a file. ! ! Shells also provide a small set of built-in ! commands (@dfn{builtins}) implementing functionality impossible ! or inconvenient to obtain via separate utilities. ! For example, @code{cd}, @code{break}, @code{continue}, and ! @code{exec}) cannot be implemented outside of the shell because ! they directly manipulate the shell itself. ! The @code{history}, @code{getopts}, @code{kill}, or @code{pwd} ! builtins, among others, could be implemented in separate utilities, ! but they are more convenient to use as builtin commands. ! All of the shell builtins are described in ! subsequent sections. While executing commands is essential, most of the power (and complexity) of shells is due to their embedded programming languages. Like any high-level language, the shell provides variables, flow control constructs, quoting, and functions. ! Shells offer features geared specifically for ! interactive use rather than to augment the programming language. ! These interactive features include job control, command line ! editing, history and aliases. Each of these features is ! described in this manual. @node Definitions @chapter Definitions --- 167,235 ---- It offers functional improvements over @code{sh} for both interactive and programming use. ! While the @sc{gnu} operating system provides other shells, including a ! version of @code{csh}, Bash is the default shell. Like other @sc{gnu} ! software, Bash is quite portable. It currently runs on nearly every ! version of Unix and a few other operating systems @minus{} ! independently-supported ports exist for @sc{ms-dos}, @sc{os/2}, Mac ! @sc{OS X} and Windows platforms. @node What is a shell? @section What is a shell? ! At its base, a shell is simply a macro processor that executes commands. ! A macro processor, an increasingly broad term, is generally recognized ! as a functionality where text and symbols are expanded to create larger ! expressions. This aspect of shells decreases the necessary typing by ! humans. ! ! A shell in Unix (and the @sc{gnu} system) is both a command interpreter ! and a programming language. As a command interpreter the shell provides ! the user interface to the rich set of @sc{gnu} utilities. As a ! programming language these utilitites can be combined in to single ! tasks. ! ! The shell programming language code and commands can be placed in files. ! The files containing shell commands can be created, and become commands ! themselves. These new commands have the same status as other system ! commands in directories such as @file{/bin}. Users or groups are ! consequently able to establish custom environments for their common ! tasks. ! ! Shells may be used interactively or non-interactively. They can wait ! patiently for input typed from the keyboard or quickly process commands ! from a file. Non-interactive use is also called ``batch'' processing, ! because batches of commands are executed. ! ! Beyond improving human interaction with computers, shells provide ! control over command execution. A shell allows execution of @sc{gnu} ! commands, both synchronously and asynchronously. The shell waits for ! synchronous commands to complete before accepting more input; ! asynchronous commands continue to execute in parallel with the shell ! while the shell reads and executes additional commands. ! ! Shells provide control over the input and outputs of commands. The ! @dfn{redirection} constructs permit fine-grained control of the input ! and output of those commands. Moreover, the shell allows control over ! the contents of a command's environment. ! ! Shells also provide a small set of built-in commands (@dfn{builtins}) ! implementing functionality impossible or inconvenient to obtain via ! separate utilities. For example, @code{cd}, @code{break}, ! @code{continue}, and @code{exec}) cannot be implemented outside of the ! shell because they directly manipulate the shell itself. The ! @code{history}, @code{getopts}, @code{kill}, or @code{pwd} builtins, ! among others, could be implemented in separate utilities, but they are ! more convenient to use as builtin commands. While executing commands is essential, most of the power (and complexity) of shells is due to their embedded programming languages. Like any high-level language, the shell provides variables, flow control constructs, quoting, and functions. ! Shells offer features geared specifically for interactive use rather ! than to augment the programming language. These interactive features ! include job control, command line editing, history and aliases. @node Definitions @chapter Definitions *************** *** 247,253 **** @item POSIX @cindex POSIX ! A family of open system standards based on Unix. Bash is concerned with @sc{posix} 1003.2, the Shell and Tools Standard. @item blank --- 239,245 ---- @item POSIX @cindex POSIX ! A family of open system standards based on UNIX. Bash is concerned with @sc{posix} 1003.2, the Shell and Tools Standard. @item blank *************** *** 310,315 **** --- 302,314 ---- A @code{control operator} or a @code{redirection operator}. @xref{Redirections}, for a list of redirection operators. + @item pipeline + @cindex pipeline + @cindex commands, pipelines + + A @code{pipeline} is a sequence of simple commands separated by + @samp{|}. + @item process group @cindex process group A collection of related processes each having the same process *************** *** 357,364 **** Bash is an acronym for @samp{Bourne-Again SHell}. The Bourne shell is the traditional Unix shell originally written by Stephen Bourne. ! All of the Bourne shell builtin commands are available in Bash, ! and the rules for evaluation and quoting are taken from the @sc{posix} 1003.2 specification for the `standard' Unix shell. This chapter briefly summarizes the shell's `building blocks': --- 356,363 ---- Bash is an acronym for @samp{Bourne-Again SHell}. The Bourne shell is the traditional Unix shell originally written by Stephen Bourne. ! All of the Bourne shell builtin commands are available in Bash. ! The rules for evaluation and quoting are taken from the @sc{posix} 1003.2 specification for the `standard' Unix shell. This chapter briefly summarizes the shell's `building blocks': *************** *** 623,633 **** @subsection Simple Commands @cindex commands, simple ! A simple command is the kind of command encountered most often. ! It's just a sequence of words separated by @code{blank}s, terminated by one of the shell's control operators (@pxref{Definitions}). The ! first word generally specifies a command to be executed, with the ! rest of the words being that command's arguments. The return status (@pxref{Exit Status}) of a simple command is its exit status as provided --- 622,632 ---- @subsection Simple Commands @cindex commands, simple ! A simple command is the kind of command encountered most often. It is ! recognized as a sequence of words separated by @code{blank}s, terminated by one of the shell's control operators (@pxref{Definitions}). The ! first word generally specifies a command to be executed, with the rest ! of the words being that command's arguments. The return status (@pxref{Exit Status}) of a simple command is its exit status as provided *************** *** 5942,5949 **** the various supported platforms. The distribution supports the @sc{gnu} operating systems, nearly every version of Unix, and several non-Unix systems such as BeOS and Interix. ! Other independent ports exist for ! @sc{ms-dos}, @sc{os/2}, Windows @sc{95/98}, and Windows @sc{nt}. @menu * Basic Installation:: Installation instructions. --- 5941,5948 ---- the various supported platforms. The distribution supports the @sc{gnu} operating systems, nearly every version of Unix, and several non-Unix systems such as BeOS and Interix. ! Other independent ports exist for @sc{ms-dos}, @sc{os/2}, Mac ! @sc{OS X} and Windows platforms. @menu * Basic Installation:: Installation instructions. *************** *** 6475,6481 **** Bash has one-dimensional array variables (@pxref{Arrays}), and the appropriate variable expansions and assignment syntax to use them. Several of the Bash builtins take options to act on arrays. ! Bash provides a number of built-in array variables. @item The @code{$'@dots{}'} quoting syntax, which expands ANSI-C --- 6474,6480 ---- Bash has one-dimensional array variables (@pxref{Arrays}), and the appropriate variable expansions and assignment syntax to use them. Several of the Bash builtins take options to act on arrays. ! Bash provides a number of builtin array variables. @item The @code{$'@dots{}'} quoting syntax, which expands ANSI-C *************** *** 6840,6845 **** --- 6839,6848 ---- The SVR4.2 shell behaves differently when invoked as @code{jsh} (it turns on job control). @end itemize + + @appendix Copying This Manual + + @include fdl.texi @node Builtin Index @unnumbered Index of Shell Builtin Commands