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