\chapentry{Introduction}{1}{1} \secentry{What is Bash?}{1}{1}{1} \secentry{What is a shell?}{1}{2}{1} \chapentry{Definitions}{2}{3} \chapentry{Basic Shell Features}{3}{5} \secentry{Shell Syntax}{3}{1}{5} \subsecentry{Shell Operation}{3}{1}{1}{5} \subsecentry{Quoting}{3}{1}{2}{5} \subsubsecentry{Escape Character}{3}{1}{2}{1}{6} \subsubsecentry{Single Quotes}{3}{1}{2}{2}{6} \subsubsecentry{Double Quotes}{3}{1}{2}{3}{6} \subsubsecentry{ANSI-C Quoting}{3}{1}{2}{4}{6} \subsubsecentry{Locale-Specific Translation}{3}{1}{2}{5}{7} \subsecentry{Comments}{3}{1}{3}{7} \secentry{Shell Commands}{3}{2}{7} \subsecentry{Simple Commands}{3}{2}{1}{8} \subsecentry{Pipelines}{3}{2}{2}{8} \subsecentry{Lists of Commands}{3}{2}{3}{8} \subsecentry{Compound Commands}{3}{2}{4}{9} \subsubsecentry{Looping Constructs}{3}{2}{4}{1}{9} \subsubsecentry{Conditional Constructs}{3}{2}{4}{2}{10} \subsubsecentry{Grouping Commands}{3}{2}{4}{3}{13} \secentry{Shell Functions}{3}{3}{13} \secentry{Shell Parameters}{3}{4}{14} \subsecentry{Positional Parameters}{3}{4}{1}{15} \subsecentry{Special Parameters}{3}{4}{2}{15} \secentry{Shell Expansions}{3}{5}{16} \subsecentry{Brace Expansion}{3}{5}{1}{17} \subsecentry{Tilde Expansion}{3}{5}{2}{17} \subsecentry{Shell Parameter Expansion}{3}{5}{3}{18} \subsecentry{Command Substitution}{3}{5}{4}{21} \subsecentry{Arithmetic Expansion}{3}{5}{5}{21} \subsecentry{Process Substitution}{3}{5}{6}{21} \subsecentry{Word Splitting}{3}{5}{7}{22} \subsecentry{Filename Expansion}{3}{5}{8}{22} \subsubsecentry{Pattern Matching}{3}{5}{8}{1}{23} \subsecentry{Quote Removal}{3}{5}{9}{24} \secentry{Redirections}{3}{6}{24} \subsecentry{Redirecting Input}{3}{6}{1}{25} \subsecentry{Redirecting Output}{3}{6}{2}{25} \subsecentry{Appending Redirected Output}{3}{6}{3}{26} \subsecentry{Redirecting Standard Output and Standard Error}{3}{6}{4}{26} \subsecentry{Here Documents}{3}{6}{5}{26} \subsecentry{Here Strings}{3}{6}{6}{26} \subsecentry{Duplicating File Descriptors}{3}{6}{7}{27} \subsecentry{Moving File Descriptors}{3}{6}{8}{27} \subsecentry{Opening File Descriptors for Reading and Writing}{3}{6}{9}{27} \secentry{Executing Commands}{3}{7}{27} \subsecentry{Simple Command Expansion}{3}{7}{1}{27} \subsecentry{Command Search and Execution}{3}{7}{2}{28} \subsecentry{Command Execution Environment}{3}{7}{3}{29} \subsecentry{Environment}{3}{7}{4}{30} \subsecentry{Exit Status}{3}{7}{5}{30} \subsecentry{Signals}{3}{7}{6}{31} \secentry{Shell Scripts}{3}{8}{31} \chapentry{Shell Builtin Commands}{4}{33} \secentry{Bourne Shell Builtins}{4}{1}{33} \secentry{Bash Builtin Commands}{4}{2}{39} \secentry{The Set Builtin}{4}{3}{50} \secentry{Special Builtins}{4}{4}{53} \chapentry{Shell Variables}{5}{55} \secentry{Bourne Shell Variables}{5}{1}{55} \secentry{Bash Variables}{5}{2}{55} \chapentry{Bash Features}{6}{63} \secentry{Invoking Bash}{6}{1}{63} \secentry{Bash Startup Files}{6}{2}{65} \secentry{Interactive Shells}{6}{3}{67} \subsecentry{What is an Interactive Shell?}{6}{3}{1}{67} \subsecentry{Is this Shell Interactive?}{6}{3}{2}{67} \subsecentry{Interactive Shell Behavior}{6}{3}{3}{67} \secentry{Bash Conditional Expressions}{6}{4}{68} \secentry{Shell Arithmetic}{6}{5}{70} \secentry{Aliases}{6}{6}{71} \secentry{Arrays}{6}{7}{72} \secentry{The Directory Stack}{6}{8}{73} \subsecentry{Directory Stack Builtins}{6}{8}{1}{73} \secentry{Controlling the Prompt}{6}{9}{74} \secentry{The Restricted Shell}{6}{10}{76} \secentry{Bash POSIX Mode}{6}{11}{76} \chapentry{Job Control}{7}{79} \secentry{Job Control Basics}{7}{1}{79} \secentry{Job Control Builtins}{7}{2}{80} \secentry{Job Control Variables}{7}{3}{81} \chapentry{Command Line Editing}{8}{83} \secentry{Introduction to Line Editing}{8}{1}{83} \secentry{Readline Interaction}{8}{2}{83} \subsecentry{Readline Bare Essentials}{8}{2}{1}{83} \subsecentry{Readline Movement Commands}{8}{2}{2}{84} \subsecentry{Readline Killing Commands}{8}{2}{3}{84} \subsecentry{Readline Arguments}{8}{2}{4}{85} \subsecentry{Searching for Commands in the History}{8}{2}{5}{85} \secentry{Readline Init File}{8}{3}{86} \subsecentry{Readline Init File Syntax}{8}{3}{1}{86} \subsecentry{Conditional Init Constructs}{8}{3}{2}{91} \subsecentry{Sample Init File}{8}{3}{3}{92} \secentry{Bindable Readline Commands}{8}{4}{95} \subsecentry{Commands For Moving}{8}{4}{1}{95} \subsecentry{Commands For Manipulating The History}{8}{4}{2}{95} \subsecentry{Commands For Changing Text}{8}{4}{3}{96} \subsecentry{Killing And Yanking}{8}{4}{4}{98} \subsecentry{Specifying Numeric Arguments}{8}{4}{5}{99} \subsecentry{Letting Readline Type For You}{8}{4}{6}{99} \subsecentry{Keyboard Macros}{8}{4}{7}{100} \subsecentry{Some Miscellaneous Commands}{8}{4}{8}{101} \secentry{Readline vi Mode}{8}{5}{103} \secentry{Programmable Completion}{8}{6}{103} \secentry{Programmable Completion Builtins}{8}{7}{105} \chapentry{Using History Interactively}{9}{109} \secentry{Bash History Facilities}{9}{1}{109} \secentry{Bash History Builtins}{9}{2}{109} \secentry{History Expansion}{9}{3}{111} \subsecentry{Event Designators}{9}{3}{1}{111} \subsecentry{Word Designators}{9}{3}{2}{112} \subsecentry{Modifiers}{9}{3}{3}{113} \chapentry{Installing Bash}{10}{115} \secentry{Basic Installation}{10}{1}{115} \secentry{Compilers and Options}{10}{2}{115} \secentry{Compiling For Multiple Architectures}{10}{3}{116} \secentry{Installation Names}{10}{4}{116} \secentry{Specifying the System Type}{10}{5}{116} \secentry{Sharing Defaults}{10}{6}{117} \secentry{Operation Controls}{10}{7}{117} \secentry{Optional Features}{10}{8}{117} \appendixentry{Reporting Bugs}{A}{123} \appendixentry{Major Differences From The Bourne Shell}{B}{125} \secentry{Implementation Differences From The SVR4.2 Shell}{B}{1}{129} \appendixentry{Copying This Manual}{C}{131} \secentry{GNU Free Documentation License}{C}{1}{131} \subsecentry{ADDENDUM: How to use this License for your documents}{C}{1}{1}{137} \unnumbchapentry{Index of Shell Builtin Commands}{10}{139} \unnumbchapentry{Index of Shell Reserved Words}{10}{141} \unnumbchapentry{Parameter and Variable Index}{10}{143} \unnumbchapentry{Function Index}{10}{145} \unnumbchapentry{Concept Index}{10}{147}