\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}{24} \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{The Set Builtin}{4}{3}{52} \secentry{Special Builtins}{4}{4}{56} \chapentry{Shell Variables}{5}{57} \secentry{Bourne Shell Variables}{5}{1}{57} \secentry{Bash Variables}{5}{2}{57} \chapentry{Bash Features}{6}{67} \secentry{Invoking Bash}{6}{1}{67} \secentry{Bash Startup Files}{6}{2}{69} \secentry{Interactive Shells}{6}{3}{71} \subsecentry{What is an Interactive Shell?}{6}{3}{1}{71} \subsecentry{Is this Shell Interactive?}{6}{3}{2}{71} \subsecentry{Interactive Shell Behavior}{6}{3}{3}{71} \secentry{Bash Conditional Expressions}{6}{4}{72} \secentry{Shell Arithmetic}{6}{5}{74} \secentry{Aliases}{6}{6}{75} \secentry{Arrays}{6}{7}{76} \secentry{The Directory Stack}{6}{8}{77} \subsecentry{Directory Stack Builtins}{6}{8}{1}{77} \secentry{Controlling the Prompt}{6}{9}{78} \secentry{The Restricted Shell}{6}{10}{80} \secentry{Bash POSIX Mode}{6}{11}{80} \chapentry{Job Control}{7}{85} \secentry{Job Control Basics}{7}{1}{85} \secentry{Job Control Builtins}{7}{2}{86} \secentry{Job Control Variables}{7}{3}{87} \chapentry{Command Line Editing}{8}{89} \secentry{Introduction to Line Editing}{8}{1}{89} \secentry{Readline Interaction}{8}{2}{89} \subsecentry{Readline Bare Essentials}{8}{2}{1}{89} \subsecentry{Readline Movement Commands}{8}{2}{2}{90} \subsecentry{Readline Killing Commands}{8}{2}{3}{90} \subsecentry{Readline Arguments}{8}{2}{4}{91} \subsecentry{Searching for Commands in the History}{8}{2}{5}{91} \secentry{Readline Init File}{8}{3}{92} \subsecentry{Readline Init File Syntax}{8}{3}{1}{92} \subsecentry{Conditional Init Constructs}{8}{3}{2}{97} \subsecentry{Sample Init File}{8}{3}{3}{98} \secentry{Bindable Readline Commands}{8}{4}{101} \subsecentry{Commands For Moving}{8}{4}{1}{101} \subsecentry{Commands For Manipulating The History}{8}{4}{2}{101} \subsecentry{Commands For Changing Text}{8}{4}{3}{103} \subsecentry{Killing And Yanking}{8}{4}{4}{104} \subsecentry{Specifying Numeric Arguments}{8}{4}{5}{105} \subsecentry{Letting Readline Type For You}{8}{4}{6}{105} \subsecentry{Keyboard Macros}{8}{4}{7}{106} \subsecentry{Some Miscellaneous Commands}{8}{4}{8}{107} \secentry{Readline vi Mode}{8}{5}{109} \secentry{Programmable Completion}{8}{6}{109} \secentry{Programmable Completion Builtins}{8}{7}{111} \chapentry{Using History Interactively}{9}{115} \secentry{Bash History Facilities}{9}{1}{115} \secentry{Bash History Builtins}{9}{2}{115} \secentry{History Expansion}{9}{3}{117} \subsecentry{Event Designators}{9}{3}{1}{117} \subsecentry{Word Designators}{9}{3}{2}{118} \subsecentry{Modifiers}{9}{3}{3}{119} \chapentry{Installing Bash}{10}{121} \secentry{Basic Installation}{10}{1}{121} \secentry{Compilers and Options}{10}{2}{121} \secentry{Compiling For Multiple Architectures}{10}{3}{122} \secentry{Installation Names}{10}{4}{122} \secentry{Specifying the System Type}{10}{5}{122} \secentry{Sharing Defaults}{10}{6}{123} \secentry{Operation Controls}{10}{7}{123} \secentry{Optional Features}{10}{8}{123} \appendixentry{Reporting Bugs}{A}{129} \appendixentry{Major Differences From The Bourne Shell}{B}{131} \secentry{Implementation Differences From The SVR4.2 Shell}{B}{1}{135} \appendixentry{Copying This Manual}{C}{137} \secentry{GNU Free Documentation License}{C}{1}{137} \subsecentry{ADDENDUM: How to use this License for your documents}{C}{1}{1}{143} \unnumbchapentry{Index of Shell Builtin Commands}{10}{145} \unnumbchapentry{Index of Shell Reserved Words}{10}{147} \unnumbchapentry{Parameter and Variable Index}{10}{149} \unnumbchapentry{Function Index}{10}{151} \unnumbchapentry{Concept Index}{10}{153}