Bash Reference Manual - The GNU Operating System and Reference Manual Reference Documentation for Bash Edition 4.4, ... builtin A command that is implemented internally by the shell

  • View
    216

  • Download
    0

Embed Size (px)

Text of Bash Reference Manual - The GNU Operating System and Reference Manual Reference Documentation for...

  • Bash Reference ManualReference Documentation for BashEdition 4.4, for Bash Version 4.4.

    September 2016

    Chet Ramey, Case Western Reserve UniversityBrian Fox, Free Software Foundation

  • This text is a brief description of the features that are present in the Bash shell (version4.4, 7 September 2016).

    This is Edition 4.4, last updated 7 September 2016, of The GNU Bash Reference Manual,for Bash, Version 4.4.

    Copyright c 19882016 Free Software Foundation, Inc.Permission is granted to copy, distribute and/or modify this document under theterms of the GNU Free Documentation License, Version 1.3 or any later versionpublished by the Free Software Foundation; with no Invariant Sections, noFront-Cover Texts, and no Back-Cover Texts. A copy of the license is includedin the section entitled GNU Free Documentation License.

  • i

    Table of Contents

    1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.1 What is Bash? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 What is a shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    2 Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    3 Basic Shell Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.1 Shell Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    3.1.1 Shell Operation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.1.2 Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    3.1.2.1 Escape Character . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.1.2.2 Single Quotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.1.2.3 Double Quotes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.1.2.4 ANSI-C Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.1.2.5 Locale-Specific Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3.1.3 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Shell Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    3.2.1 Simple Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.2 Pipelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.2.3 Lists of Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2.4 Compound Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

    3.2.4.1 Looping Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.4.2 Conditional Constructs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2.4.3 Grouping Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    3.2.5 Coprocesses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.6 GNU Parallel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    3.3 Shell Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173.4 Shell Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

    3.4.1 Positional Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.4.2 Special Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    3.5 Shell Expansions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.5.1 Brace Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.5.2 Tilde Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223.5.3 Shell Parameter Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.5.4 Command Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.5.5 Arithmetic Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.5.6 Process Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.5.7 Word Splitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.5.8 Filename Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    3.5.8.1 Pattern Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.5.9 Quote Removal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    3.6 Redirections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

  • ii

    3.6.1 Redirecting Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.6.2 Redirecting Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.6.3 Appending Redirected Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.6.4 Redirecting Standard Output and Standard Error . . . . . . . . . 343.6.5 Appending Standard Output and Standard Error . . . . . . . . . 343.6.6 Here Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.6.7 Here Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.6.8 Duplicating File Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.6.9 Moving File Descriptors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.6.10 Opening File Descriptors for Reading and Writing . . . . . . . 36

    3.7 Executing Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.7.1 Simple Command Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.7.2 Command Search and Execution . . . . . . . . . . . . . . . . . . . . . . . . . . 373.7.3 Command Execution Environment . . . . . . . . . . . . . . . . . . . . . . . . 373.7.4 Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.7.5 Exit Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.7.6 Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

    3.8 Shell Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    4 Shell Builtin Commands . . . . . . . . . . . . . . . . . . . . . . . 424.1 Bourne Shell Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.2 Bash Builtin Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494.3 Modifying Shell Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    4.3.1 The Set Builtin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.3.2 The Shopt Builtin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    4.4 Special Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

    5 Shell Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.1 Bourne Shell Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715.2 Bash Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    6 Bash Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.1 Invoking Bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.2 Bash Startup Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846.3 Interactive Shells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

    6.3.1 What is an Interactive Shell? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866.3.2 Is this Shell Interactive? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866.3.3 Interactive Shell Behavior . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    6.4 Bash Conditional Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.5 Shell Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896.6 Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906.7 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 916.8 The Directory Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    6.8.1 Directory Stack Builtins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936.9 Controlling the Prompt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946.10 The Restricted Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956.11 Bash POSIX Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

  • iii

    7 Job Control . . . . . . . . . . . . . . . . . . . . . . . . . . . .