\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}{9} \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} \subsecentry{Coprocesses}{3}{2}{5}{14} \secentry{Shell Functions}{3}{3}{14} \secentry{Shell Parameters}{3}{4}{16} \subsecentry{Positional Parameters}{3}{4}{1}{16} \subsecentry{Special Parameters}{3}{4}{2}{16} \secentry{Shell Expansions}{3}{5}{17} \subsecentry{Brace Expansion}{3}{5}{1}{18} \subsecentry{Tilde Expansion}{3}{5}{2}{19} \subsecentry{Shell Parameter Expansion}{3}{5}{3}{20} \subsecentry{Command Substitution}{3}{5}{4}{22} \subsecentry{Arithmetic Expansion}{3}{5}{5}{23} \subsecentry{Process Substitution}{3}{5}{6}{23} \subsecentry{Word Splitting}{3}{5}{7}{24} \subsecentry{Filename Expansion}{3}{5}{8}{24} \subsubsecentry{Pattern Matching}{3}{5}{8}{1}{25} \subsecentry{Quote Removal}{3}{5}{9}{26} \secentry{Redirections}{3}{6}{26} \subsecentry{Redirecting Input}{3}{6}{1}{27} \subsecentry{Redirecting Output}{3}{6}{2}{27} \subsecentry{Appending Redirected Output}{3}{6}{3}{27} \subsecentry{Redirecting Standard Output and Standard Error}{3}{6}{4}{28} \subsecentry{Appending Standard Output and Standard Error}{3}{6}{5}{28} \subsecentry{Here Documents}{3}{6}{6}{28} \subsecentry{Here Strings}{3}{6}{7}{29} \subsecentry{Duplicating File Descriptors}{3}{6}{8}{29} \subsecentry{Moving File Descriptors}{3}{6}{9}{29} \subsecentry{Opening File Descriptors for Reading and Writing}{3}{6}{10}{29} \secentry{Executing Commands}{3}{7}{30} \subsecentry{Simple Command Expansion}{3}{7}{1}{30} \subsecentry{Command Search and Execution}{3}{7}{2}{30} \subsecentry{Command Execution Environment}{3}{7}{3}{31} \subsecentry{Environment}{3}{7}{4}{32} \subsecentry{Exit Status}{3}{7}{5}{32} \subsecentry{Signals}{3}{7}{6}{33} \secentry{Shell Scripts}{3}{8}{34} \chapentry{Shell Builtin Commands}{4}{35} \secentry{Bourne Shell Builtins}{4}{1}{35} \secentry{Bash Builtin Commands}{4}{2}{41} \secentry{Modifying Shell Behavior}{4}{3}{50} \subsecentry{The Set Builtin}{4}{3}{1}{50} \subsecentry{The Shopt Builtin}{4}{3}{2}{54} \secentry{Special Builtins}{4}{4}{58} \chapentry{Shell Variables}{5}{59} \secentry{Bourne Shell Variables}{5}{1}{59} \secentry{Bash Variables}{5}{2}{59} \chapentry{Bash Features}{6}{69} \secentry{Invoking Bash}{6}{1}{69} \secentry{Bash Startup Files}{6}{2}{71} \secentry{Interactive Shells}{6}{3}{73} \subsecentry{What is an Interactive Shell?}{6}{3}{1}{73} \subsecentry{Is this Shell Interactive?}{6}{3}{2}{73} \subsecentry{Interactive Shell Behavior}{6}{3}{3}{73} \secentry{Bash Conditional Expressions}{6}{4}{74} \secentry{Shell Arithmetic}{6}{5}{76} \secentry{Aliases}{6}{6}{77} \secentry{Arrays}{6}{7}{78} \secentry{The Directory Stack}{6}{8}{79} \subsecentry{Directory Stack Builtins}{6}{8}{1}{80} \secentry{Controlling the Prompt}{6}{9}{81} \secentry{The Restricted Shell}{6}{10}{82} \secentry{Bash POSIX Mode}{6}{11}{83} \chapentry{Job Control}{7}{87} \secentry{Job Control Basics}{7}{1}{87} \secentry{Job Control Builtins}{7}{2}{88} \secentry{Job Control Variables}{7}{3}{90} \chapentry{Command Line Editing}{8}{91} \secentry{Introduction to Line Editing}{8}{1}{91} \secentry{Readline Interaction}{8}{2}{91} \subsecentry{Readline Bare Essentials}{8}{2}{1}{91} \subsecentry{Readline Movement Commands}{8}{2}{2}{92} \subsecentry{Readline Killing Commands}{8}{2}{3}{92} \subsecentry{Readline Arguments}{8}{2}{4}{93} \subsecentry{Searching for Commands in the History}{8}{2}{5}{93} \secentry{Readline Init File}{8}{3}{94} \subsecentry{Readline Init File Syntax}{8}{3}{1}{94} \subsecentry{Conditional Init Constructs}{8}{3}{2}{100} \subsecentry{Sample Init File}{8}{3}{3}{101} \secentry{Bindable Readline Commands}{8}{4}{104} \subsecentry{Commands For Moving}{8}{4}{1}{104} \subsecentry{Commands For Manipulating The History}{8}{4}{2}{104} \subsecentry{Commands For Changing Text}{8}{4}{3}{106} \subsecentry{Killing And Yanking}{8}{4}{4}{107} \subsecentry{Specifying Numeric Arguments}{8}{4}{5}{108} \subsecentry{Letting Readline Type For You}{8}{4}{6}{108} \subsecentry{Keyboard Macros}{8}{4}{7}{109} \subsecentry{Some Miscellaneous Commands}{8}{4}{8}{110} \secentry{Readline vi Mode}{8}{5}{112} \secentry{Programmable Completion}{8}{6}{112} \secentry{Programmable Completion Builtins}{8}{7}{114} \chapentry{Using History Interactively}{9}{119} \secentry{Bash History Facilities}{9}{1}{119} \secentry{Bash History Builtins}{9}{2}{119} \secentry{History Expansion}{9}{3}{121} \subsecentry{Event Designators}{9}{3}{1}{121} \subsecentry{Word Designators}{9}{3}{2}{122} \subsecentry{Modifiers}{9}{3}{3}{123} \chapentry{Installing Bash}{10}{125} \secentry{Basic Installation}{10}{1}{125} \secentry{Compilers and Options}{10}{2}{125} \secentry{Compiling For Multiple Architectures}{10}{3}{126} \secentry{Installation Names}{10}{4}{126} \secentry{Specifying the System Type}{10}{5}{126} \secentry{Sharing Defaults}{10}{6}{127} \secentry{Operation Controls}{10}{7}{127} \secentry{Optional Features}{10}{8}{127} \appendixentry{Reporting Bugs}{A}{133} \appendixentry{Major Differences From The Bourne Shell}{B}{135} \secentry{Implementation Differences From The SVR4.2 Shell}{B}{1}{139} \appendixentry{GNU Free Documentation License}{C}{141} \appendixentry{Indexes}{D}{149} \secentry{Index of Shell Builtin Commands}{D}{1}{149} \secentry{Index of Shell Reserved Words}{D}{2}{150} \secentry{Parameter and Variable Index}{D}{3}{150} \secentry{Function Index}{D}{4}{152} \secentry{Concept Index}{D}{5}{154}