\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}{15} \subsecentry{Positional Parameters}{3}{4}{1}{15} \subsecentry{Special Parameters}{3}{4}{2}{16} \secentry{Shell Expansions}{3}{5}{17} \subsecentry{Brace Expansion}{3}{5}{1}{17} \subsecentry{Tilde Expansion}{3}{5}{2}{18} \subsecentry{Shell Parameter Expansion}{3}{5}{3}{19} \subsecentry{Command Substitution}{3}{5}{4}{21} \subsecentry{Arithmetic Expansion}{3}{5}{5}{22} \subsecentry{Process Substitution}{3}{5}{6}{22} \subsecentry{Word Splitting}{3}{5}{7}{22} \subsecentry{Filename Expansion}{3}{5}{8}{23} \subsubsecentry{Pattern Matching}{3}{5}{8}{1}{23} \subsecentry{Quote Removal}{3}{5}{9}{25} \secentry{Redirections}{3}{6}{25} \subsecentry{Redirecting Input}{3}{6}{1}{26} \subsecentry{Redirecting Output}{3}{6}{2}{26} \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}{27} \subsecentry{Here Strings}{3}{6}{6}{27} \subsecentry{Duplicating File Descriptors}{3}{6}{7}{27} \subsecentry{Moving File Descriptors}{3}{6}{8}{28} \subsecentry{Opening File Descriptors for Reading and Writing}{3}{6}{9}{28} \secentry{Executing Commands}{3}{7}{28} \subsecentry{Simple Command Expansion}{3}{7}{1}{28} \subsecentry{Command Search and Execution}{3}{7}{2}{29} \subsecentry{Command Execution Environment}{3}{7}{3}{29} \subsecentry{Environment}{3}{7}{4}{30} \subsecentry{Exit Status}{3}{7}{5}{31} \subsecentry{Signals}{3}{7}{6}{31} \secentry{Shell Scripts}{3}{8}{32} \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}{49} \subsecentry{The Set Builtin}{4}{3}{1}{49} \subsecentry{The Shopt Builtin}{4}{3}{2}{52} \secentry{Special Builtins}{4}{4}{57} \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}{79} \secentry{Controlling the Prompt}{6}{9}{80} \secentry{The Restricted Shell}{6}{10}{82} \secentry{Bash POSIX Mode}{6}{11}{82} \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}{89} \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}{99} \subsecentry{Sample Init File}{8}{3}{3}{100} \secentry{Bindable Readline Commands}{8}{4}{103} \subsecentry{Commands For Moving}{8}{4}{1}{103} \subsecentry{Commands For Manipulating The History}{8}{4}{2}{103} \subsecentry{Commands For Changing Text}{8}{4}{3}{105} \subsecentry{Killing And Yanking}{8}{4}{4}{106} \subsecentry{Specifying Numeric Arguments}{8}{4}{5}{107} \subsecentry{Letting Readline Type For You}{8}{4}{6}{107} \subsecentry{Keyboard Macros}{8}{4}{7}{108} \subsecentry{Some Miscellaneous Commands}{8}{4}{8}{109} \secentry{Readline vi Mode}{8}{5}{111} \secentry{Programmable Completion}{8}{6}{111} \secentry{Programmable Completion Builtins}{8}{7}{113} \chapentry{Using History Interactively}{9}{117} \secentry{Bash History Facilities}{9}{1}{117} \secentry{Bash History Builtins}{9}{2}{117} \secentry{History Expansion}{9}{3}{119} \subsecentry{Event Designators}{9}{3}{1}{119} \subsecentry{Word Designators}{9}{3}{2}{120} \subsecentry{Modifiers}{9}{3}{3}{121} \chapentry{Installing Bash}{10}{123} \secentry{Basic Installation}{10}{1}{123} \secentry{Compilers and Options}{10}{2}{123} \secentry{Compiling For Multiple Architectures}{10}{3}{124} \secentry{Installation Names}{10}{4}{124} \secentry{Specifying the System Type}{10}{5}{124} \secentry{Sharing Defaults}{10}{6}{125} \secentry{Operation Controls}{10}{7}{125} \secentry{Optional Features}{10}{8}{125} \appendixentry{Reporting Bugs}{A}{131} \appendixentry{Major Differences From The Bourne Shell}{B}{133} \secentry{Implementation Differences From The SVR4.2 Shell}{B}{1}{137} \appendixentry{GNU Free Documentation License}{C}{139} \appendixentry{Indexes}{D}{147} \secentry{Index of Shell Builtin Commands}{D}{1}{147} \secentry{Index of Shell Reserved Words}{D}{2}{149} \secentry{Parameter and Variable Index}{D}{3}{149} \secentry{Function Index}{D}{4}{151} \secentry{Concept Index}{D}{5}{152}