<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
+<!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This text is a brief description of the features that are present in
-the Bash shell (version 5.1, 29 October 2020).
+the Bash shell (version 5.2, 19 September 2022).
-This is Edition 5.1, last updated 29 October 2020,
+This is Edition 5.2, last updated 19 September 2022,
of The GNU Bash Reference Manual,
-for Bash, Version 5.1.
+for Bash, Version 5.2.
-Copyright (C) 1988-2020 Free Software Foundation, Inc.
+Copyright (C) 1988-2022 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
A copy of the license is included in the section entitled
"GNU Free Documentation License". -->
-<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Bash Reference Manual</title>
<meta name="description" content="Bash Reference Manual">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+
<link href="#Top" rel="start" title="Top">
<link href="#Indexes" rel="index" title="Indexes">
<link href="#SEC_Contents" rel="contents" title="Table of Contents">
<link href="dir.html#Top" rel="up" title="(dir)">
+<link href="#Introduction" rel="next" title="Introduction">
+<link href="dir.html#Top" rel="prev" title="(dir)">
<style type="text/css">
<!--
+a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
-div.lisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
+span:hover a.copiable-anchor {visibility: visible}
ul.no-bullet {list-style: none}
-->
</style>
-<span id="SEC_Contents"></span>
+
+<div class="top" id="Top">
+<div class="header">
+<p>
+Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previous: <a href="dir.html#Top" accesskey="p" rel="prev">(dir)</a>, Up: <a href="dir.html#Top" accesskey="u" rel="up">(dir)</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+</div>
+<span id="Bash-Features-1"></span><h1 class="top">Bash Features</h1>
+
+<p>This text is a brief description of the features that are present in
+the Bash shell (version 5.2, 19 September 2022).
+The Bash home page is <a href="http://www.gnu.org/software/bash/">http://www.gnu.org/software/bash/</a>.
+</p>
+<p>This is Edition 5.2, last updated 19 September 2022,
+of <cite>The GNU Bash Reference Manual</cite>,
+for <code>Bash</code>, Version 5.2.
+</p>
+<p>Bash contains features that appear in other popular shells, and some
+features that only appear in Bash. Some of the shells that Bash has
+borrowed concepts from are the Bourne Shell (<samp>sh</samp>), the Korn Shell
+(<samp>ksh</samp>), and the C-shell (<samp>csh</samp> and its successor,
+<samp>tcsh</samp>). The following menu breaks the features up into
+categories, noting which features were inspired by other shells and
+which are specific to Bash.
+</p>
+<p>This manual is meant as a brief introduction to features found in
+Bash. The Bash manual page should be used as the definitive
+reference on shell behavior.
+</p>
+
+<div class="Contents_element" id="SEC_Contents">
<h2 class="contents-heading">Table of Contents</h2>
<div class="contents">
</ul></li>
</ul>
</div>
-
-
-<span id="Top"></span><div class="header">
-<p>
-Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previous: <a href="dir.html#Top" accesskey="p" rel="prev">(dir)</a>, Up: <a href="dir.html#Top" accesskey="u" rel="up">(dir)</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<span id="Bash-Features-1"></span><h1 class="top">Bash Features</h1>
-
-<p>This text is a brief description of the features that are present in
-the Bash shell (version 5.1, 29 October 2020).
-The Bash home page is <a href="http://www.gnu.org/software/bash/">http://www.gnu.org/software/bash/</a>.
-</p>
-<p>This is Edition 5.1, last updated 29 October 2020,
-of <cite>The GNU Bash Reference Manual</cite>,
-for <code>Bash</code>, Version 5.1.
-</p>
-<p>Bash contains features that appear in other popular shells, and some
-features that only appear in Bash. Some of the shells that Bash has
-borrowed concepts from are the Bourne Shell (<samp>sh</samp>), the Korn Shell
-(<samp>ksh</samp>), and the C-shell (<samp>csh</samp> and its successor,
-<samp>tcsh</samp>). The following menu breaks the features up into
-categories, noting which features were inspired by other shells and
-which are specific to Bash.
-</p>
-<p>This manual is meant as a brief introduction to features found in
-Bash. The Bash manual page should be used as the definitive
-reference on shell behavior.
-</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Introduction" accesskey="1">Introduction</a></td><td> </td><td align="left" valign="top">An introduction to the shell.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Definitions" accesskey="2">Definitions</a></td><td> </td><td align="left" valign="top">Some definitions used in the rest of this
- manual.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Basic-Shell-Features" accesskey="3">Basic Shell Features</a></td><td> </td><td align="left" valign="top">The shell "building blocks".
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Shell-Builtin-Commands" accesskey="4">Shell Builtin Commands</a></td><td> </td><td align="left" valign="top">Commands that are a part of the shell.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Shell-Variables" accesskey="5">Shell Variables</a></td><td> </td><td align="left" valign="top">Variables used or set by Bash.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Bash-Features" accesskey="6">Bash Features</a></td><td> </td><td align="left" valign="top">Features found only in Bash.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Job-Control" accesskey="7">Job Control</a></td><td> </td><td align="left" valign="top">What job control is and how Bash allows you
- to use it.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Command-Line-Editing" accesskey="8">Command Line Editing</a></td><td> </td><td align="left" valign="top">Chapter describing the command line
- editing features.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Using-History-Interactively" accesskey="9">Using History Interactively</a></td><td> </td><td align="left" valign="top">Command History Expansion
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Installing-Bash">Installing Bash</a></td><td> </td><td align="left" valign="top">How to build and install Bash on your system.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Reporting-Bugs">Reporting Bugs</a></td><td> </td><td align="left" valign="top">How to report bugs in Bash.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Major-Differences-From-The-Bourne-Shell">Major Differences From The Bourne Shell</a></td><td> </td><td align="left" valign="top">A terse list of the differences
- between Bash and historical
- versions of /bin/sh.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a></td><td> </td><td align="left" valign="top">Copying and sharing this documentation.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Indexes">Indexes</a></td><td> </td><td align="left" valign="top">Various indexes for this manual.
-</td></tr>
-</table>
-
<hr>
-<span id="Introduction"></span><div class="header">
+<div class="chapter" id="Introduction">
+<div class="header">
<p>
-Next: <a href="#Definitions" accesskey="n" rel="next">Definitions</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Definitions" accesskey="n" rel="next">Definitions</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Introduction-1"></span><h2 class="chapter">1 Introduction</h2>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#What-is-Bash_003f" accesskey="1">What is Bash?</a></td><td> </td><td align="left" valign="top">A short description of Bash.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#What-is-a-shell_003f" accesskey="2">What is a shell?</a></td><td> </td><td align="left" valign="top">A brief introduction to shells.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#What-is-Bash_003f" accesskey="1">What is Bash?</a></li>
+<li><a href="#What-is-a-shell_003f" accesskey="2">What is a shell?</a></li>
+</ul>
<hr>
-<span id="What-is-Bash_003f"></span><div class="header">
+<div class="section" id="What-is-Bash_003f">
+<div class="header">
<p>
Next: <a href="#What-is-a-shell_003f" accesskey="n" rel="next">What is a shell?</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
and Windows platforms.
</p>
<hr>
-<span id="What-is-a-shell_003f"></span><div class="header">
+</div>
+<div class="section" id="What-is-a-shell_003f">
+<div class="header">
<p>
Previous: <a href="#What-is-Bash_003f" accesskey="p" rel="prev">What is Bash?</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
described in this manual.
</p>
<hr>
-<span id="Definitions"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Definitions">
+<div class="header">
<p>
-Next: <a href="#Basic-Shell-Features" accesskey="n" rel="next">Basic Shell Features</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Basic-Shell-Features" accesskey="n" rel="next">Basic Shell Features</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Definitions-1"></span><h2 class="chapter">2 Definitions</h2>
<p>These definitions are used throughout the remainder of this manual.
</p>
<dl compact="compact">
-<dt><code>POSIX</code></dt>
-<dd><span id="index-POSIX"></span>
-<p>A family of open system standards based on Unix. Bash
+<dt id='index-POSIX'><span><code>POSIX</code><a href='#index-POSIX' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A family of open system standards based on Unix. Bash
is primarily concerned with the Shell and Utilities portion of the
<small>POSIX</small> 1003.1 standard.
</p>
</dd>
-<dt><code>blank</code></dt>
+<dt><span><code>blank</code></span></dt>
<dd><p>A space or tab character.
</p>
</dd>
-<dt><code>builtin</code></dt>
-<dd><span id="index-builtin-1"></span>
-<p>A command that is implemented internally by the shell itself, rather
+<dt id='index-builtin-1'><span><code>builtin</code><a href='#index-builtin-1' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A command that is implemented internally by the shell itself, rather
than by an executable program somewhere in the file system.
</p>
</dd>
-<dt><code>control operator</code></dt>
-<dd><span id="index-control-operator"></span>
-<p>A <code>token</code> that performs a control function. It is a <code>newline</code>
+<dt id='index-control-operator'><span><code>control operator</code><a href='#index-control-operator' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A <code>token</code> that performs a control function. It is a <code>newline</code>
or one of the following:
‘<samp>||</samp>’, ‘<samp>&&</samp>’, ‘<samp>&</samp>’, ‘<samp>;</samp>’, ‘<samp>;;</samp>’, ‘<samp>;&</samp>’, ‘<samp>;;&</samp>’,
‘<samp>|</samp>’, ‘<samp>|&</samp>’, ‘<samp>(</samp>’, or ‘<samp>)</samp>’.
</p>
</dd>
-<dt><code>exit status</code></dt>
-<dd><span id="index-exit-status"></span>
-<p>The value returned by a command to its caller. The value is restricted
+<dt id='index-exit-status'><span><code>exit status</code><a href='#index-exit-status' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The value returned by a command to its caller. The value is restricted
to eight bits, so the maximum value is 255.
</p>
</dd>
-<dt><code>field</code></dt>
-<dd><span id="index-field"></span>
-<p>A unit of text that is the result of one of the shell expansions. After
+<dt id='index-field'><span><code>field</code><a href='#index-field' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A unit of text that is the result of one of the shell expansions. After
expansion, when executing a command, the resulting fields are used as
the command name and arguments.
</p>
</dd>
-<dt><code>filename</code></dt>
-<dd><span id="index-filename"></span>
-<p>A string of characters used to identify a file.
+<dt id='index-filename'><span><code>filename</code><a href='#index-filename' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A string of characters used to identify a file.
</p>
</dd>
-<dt><code>job</code></dt>
-<dd><span id="index-job"></span>
-<p>A set of processes comprising a pipeline, and any processes descended
+<dt id='index-job'><span><code>job</code><a href='#index-job' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A set of processes comprising a pipeline, and any processes descended
from it, that are all in the same process group.
</p>
</dd>
-<dt><code>job control</code></dt>
-<dd><span id="index-job-control"></span>
-<p>A mechanism by which users can selectively stop (suspend) and restart
+<dt id='index-job-control'><span><code>job control</code><a href='#index-job-control' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A mechanism by which users can selectively stop (suspend) and restart
(resume) execution of processes.
</p>
</dd>
-<dt><code>metacharacter</code></dt>
-<dd><span id="index-metacharacter"></span>
-<p>A character that, when unquoted, separates words. A metacharacter is
+<dt id='index-metacharacter'><span><code>metacharacter</code><a href='#index-metacharacter' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A character that, when unquoted, separates words. A metacharacter is
a <code>space</code>, <code>tab</code>, <code>newline</code>, or one of the following characters:
‘<samp>|</samp>’, ‘<samp>&</samp>’, ‘<samp>;</samp>’, ‘<samp>(</samp>’, ‘<samp>)</samp>’, ‘<samp><</samp>’, or
‘<samp>></samp>’.
</p>
</dd>
-<dt><code>name</code></dt>
-<dd><span id="index-name"></span>
-<span id="index-identifier"></span>
+<dt id='index-name'><span><code>name</code><a href='#index-name' class='copiable-anchor'> ¶</a></span></dt>
+<dd><span id="index-identifier"></span>
<p>A <code>word</code> consisting solely of letters, numbers, and underscores,
and beginning with a letter or underscore. <code>Name</code>s are used as
shell variable and function names.
Also referred to as an <code>identifier</code>.
</p>
</dd>
-<dt><code>operator</code></dt>
-<dd><span id="index-operator_002c-shell"></span>
-<p>A <code>control operator</code> or a <code>redirection operator</code>.
+<dt id='index-operator_002c-shell'><span><code>operator</code><a href='#index-operator_002c-shell' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A <code>control operator</code> or a <code>redirection operator</code>.
See <a href="#Redirections">Redirections</a>, for a list of redirection operators.
Operators contain at least one unquoted <code>metacharacter</code>.
</p>
</dd>
-<dt><code>process group</code></dt>
-<dd><span id="index-process-group"></span>
-<p>A collection of related processes each having the same process
+<dt id='index-process-group'><span><code>process group</code><a href='#index-process-group' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A collection of related processes each having the same process
group <small>ID</small>.
</p>
</dd>
-<dt><code>process group ID</code></dt>
-<dd><span id="index-process-group-ID"></span>
-<p>A unique identifier that represents a <code>process group</code>
+<dt id='index-process-group-ID'><span><code>process group ID</code><a href='#index-process-group-ID' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A unique identifier that represents a <code>process group</code>
during its lifetime.
</p>
</dd>
-<dt><code>reserved word</code></dt>
-<dd><span id="index-reserved-word"></span>
-<p>A <code>word</code> that has a special meaning to the shell. Most reserved
+<dt id='index-reserved-word'><span><code>reserved word</code><a href='#index-reserved-word' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A <code>word</code> that has a special meaning to the shell. Most reserved
words introduce shell flow control constructs, such as <code>for</code> and
<code>while</code>.
</p>
</dd>
-<dt><code>return status</code></dt>
-<dd><span id="index-return-status"></span>
-<p>A synonym for <code>exit status</code>.
+<dt id='index-return-status'><span><code>return status</code><a href='#index-return-status' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A synonym for <code>exit status</code>.
</p>
</dd>
-<dt><code>signal</code></dt>
-<dd><span id="index-signal"></span>
-<p>A mechanism by which a process may be notified by the kernel
+<dt id='index-signal'><span><code>signal</code><a href='#index-signal' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A mechanism by which a process may be notified by the kernel
of an event occurring in the system.
</p>
</dd>
-<dt><code>special builtin</code></dt>
-<dd><span id="index-special-builtin"></span>
-<p>A shell builtin command that has been classified as special by the
+<dt id='index-special-builtin'><span><code>special builtin</code><a href='#index-special-builtin' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A shell builtin command that has been classified as special by the
<small>POSIX</small> standard.
</p>
</dd>
-<dt><code>token</code></dt>
-<dd><span id="index-token"></span>
-<p>A sequence of characters considered a single unit by the shell.
+<dt id='index-token'><span><code>token</code><a href='#index-token' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A sequence of characters considered a single unit by the shell.
It is either a <code>word</code> or an <code>operator</code>.
</p>
</dd>
-<dt><code>word</code></dt>
-<dd><span id="index-word"></span>
-<p>A sequence of characters treated as a unit by the shell.
+<dt id='index-word'><span><code>word</code><a href='#index-word' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A sequence of characters treated as a unit by the shell.
Words may not include unquoted <code>metacharacters</code>.
</p></dd>
</dl>
<hr>
-<span id="Basic-Shell-Features"></span><div class="header">
+</div>
+<div class="chapter" id="Basic-Shell-Features">
+<div class="header">
<p>
-Next: <a href="#Shell-Builtin-Commands" accesskey="n" rel="next">Shell Builtin Commands</a>, Previous: <a href="#Definitions" accesskey="p" rel="prev">Definitions</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Shell-Builtin-Commands" accesskey="n" rel="next">Shell Builtin Commands</a>, Previous: <a href="#Definitions" accesskey="p" rel="prev">Definitions</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Basic-Shell-Features-1"></span><h2 class="chapter">3 Basic Shell Features</h2>
<span id="index-Bourne-shell"></span>
<i>redirections</i>, which are a way to direct input and output from
and to named files, and how the shell executes commands.
</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Shell-Syntax" accesskey="1">Shell Syntax</a></td><td> </td><td align="left" valign="top">What your input means to the shell.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Shell-Commands" accesskey="2">Shell Commands</a></td><td> </td><td align="left" valign="top">The types of commands you can use.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Shell-Functions" accesskey="3">Shell Functions</a></td><td> </td><td align="left" valign="top">Grouping commands by name.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Shell-Parameters" accesskey="4">Shell Parameters</a></td><td> </td><td align="left" valign="top">How the shell stores values.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Shell-Expansions" accesskey="5">Shell Expansions</a></td><td> </td><td align="left" valign="top">How Bash expands parameters and the various
- expansions available.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Redirections" accesskey="6">Redirections</a></td><td> </td><td align="left" valign="top">A way to control where input and output go.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Executing-Commands" accesskey="7">Executing Commands</a></td><td> </td><td align="left" valign="top">What happens when you run a command.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Shell-Scripts" accesskey="8">Shell Scripts</a></td><td> </td><td align="left" valign="top">Executing files of shell commands.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Shell-Syntax" accesskey="1">Shell Syntax</a></li>
+<li><a href="#Shell-Commands" accesskey="2">Shell Commands</a></li>
+<li><a href="#Shell-Functions" accesskey="3">Shell Functions</a></li>
+<li><a href="#Shell-Parameters" accesskey="4">Shell Parameters</a></li>
+<li><a href="#Shell-Expansions" accesskey="5">Shell Expansions</a></li>
+<li><a href="#Redirections" accesskey="6">Redirections</a></li>
+<li><a href="#Executing-Commands" accesskey="7">Executing Commands</a></li>
+<li><a href="#Shell-Scripts" accesskey="8">Shell Scripts</a></li>
+</ul>
<hr>
-<span id="Shell-Syntax"></span><div class="header">
+<div class="section" id="Shell-Syntax">
+<div class="header">
<p>
Next: <a href="#Shell-Commands" accesskey="n" rel="next">Shell Commands</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Shell-Syntax-1"></span><h3 class="section">3.1 Shell Syntax</h3>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Shell-Operation" accesskey="1">Shell Operation</a></td><td> </td><td align="left" valign="top">The basic operation of the shell.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Quoting" accesskey="2">Quoting</a></td><td> </td><td align="left" valign="top">How to remove the special meaning from characters.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Comments" accesskey="3">Comments</a></td><td> </td><td align="left" valign="top">How to specify comments.
-</td></tr>
-</table>
<p>When the shell reads input, it proceeds through a
sequence of operations. If the input indicates the beginning of a
command, waits for the command’s exit status, and makes that exit status
available for further inspection or processing.
</p>
+<ul class="section-toc">
+<li><a href="#Shell-Operation" accesskey="1">Shell Operation</a></li>
+<li><a href="#Quoting" accesskey="2">Quoting</a></li>
+<li><a href="#Comments" accesskey="3">Comments</a></li>
+</ul>
<hr>
-<span id="Shell-Operation"></span><div class="header">
+<div class="subsection" id="Shell-Operation">
+<div class="header">
<p>
Next: <a href="#Quoting" accesskey="n" rel="next">Quoting</a>, Up: <a href="#Shell-Syntax" accesskey="u" rel="up">Shell Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</li></ol>
<hr>
-<span id="Quoting"></span><div class="header">
+</div>
+<div class="subsection" id="Quoting">
+<div class="header">
<p>
Next: <a href="#Comments" accesskey="n" rel="next">Comments</a>, Previous: <a href="#Shell-Operation" accesskey="p" rel="prev">Shell Operation</a>, Up: <a href="#Shell-Syntax" accesskey="u" rel="up">Shell Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Quoting-1"></span><h4 class="subsection">3.1.2 Quoting</h4>
<span id="index-quoting"></span>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Escape-Character" accesskey="1">Escape Character</a></td><td> </td><td align="left" valign="top">How to remove the special meaning from a single
- character.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Single-Quotes" accesskey="2">Single Quotes</a></td><td> </td><td align="left" valign="top">How to inhibit all interpretation of a sequence
- of characters.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Double-Quotes" accesskey="3">Double Quotes</a></td><td> </td><td align="left" valign="top">How to suppress most of the interpretation of a
- sequence of characters.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#ANSI_002dC-Quoting" accesskey="4">ANSI-C Quoting</a></td><td> </td><td align="left" valign="top">How to expand ANSI-C sequences in quoted strings.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Locale-Translation" accesskey="5">Locale Translation</a></td><td> </td><td align="left" valign="top">How to translate strings into different languages.
-</td></tr>
-</table>
<p>Quoting is used to remove the special meaning of certain
characters or words to the shell. Quoting can be used to
has special meaning to the shell and must be quoted if it is to
represent itself.
When the command history expansion facilities are being used
-(see <a href="#History-Interaction">History Interaction</a>), the
-<var>history expansion</var> character, usually ‘<samp>!</samp>’, must be quoted
+(see <a href="#History-Interaction">History Expansion</a>), the
+<em>history expansion</em> character, usually ‘<samp>!</samp>’, must be quoted
to prevent history expansion. See <a href="#Bash-History-Facilities">Bash History Facilities</a>, for
more details concerning history expansion.
</p>
<p>There are three quoting mechanisms: the
-<var>escape character</var>, single quotes, and double quotes.
-</p>
+<em>escape character</em>, single quotes, and double quotes.
+</p>
+<ul class="section-toc">
+<li><a href="#Escape-Character" accesskey="1">Escape Character</a></li>
+<li><a href="#Single-Quotes" accesskey="2">Single Quotes</a></li>
+<li><a href="#Double-Quotes" accesskey="3">Double Quotes</a></li>
+<li><a href="#ANSI_002dC-Quoting" accesskey="4">ANSI-C Quoting</a></li>
+<li><a href="#Locale-Translation" accesskey="5">Locale-Specific Translation</a></li>
+</ul>
<hr>
-<span id="Escape-Character"></span><div class="header">
+<div class="subsubsection" id="Escape-Character">
+<div class="header">
<p>
Next: <a href="#Single-Quotes" accesskey="n" rel="next">Single Quotes</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
the input stream and effectively ignored).
</p>
<hr>
-<span id="Single-Quotes"></span><div class="header">
+</div>
+<div class="subsubsection" id="Single-Quotes">
+<div class="header">
<p>
Next: <a href="#Double-Quotes" accesskey="n" rel="next">Double Quotes</a>, Previous: <a href="#Escape-Character" accesskey="p" rel="prev">Escape Character</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
between single quotes, even when preceded by a backslash.
</p>
<hr>
-<span id="Double-Quotes"></span><div class="header">
+</div>
+<div class="subsubsection" id="Double-Quotes">
+<div class="header">
<p>
Next: <a href="#ANSI_002dC-Quoting" accesskey="n" rel="next">ANSI-C Quoting</a>, Previous: <a href="#Single-Quotes" accesskey="p" rel="prev">Single Quotes</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
when in double quotes (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
</p>
<hr>
-<span id="ANSI_002dC-Quoting"></span><div class="header">
+</div>
+<div class="subsubsection" id="ANSI_002dC-Quoting">
+<div class="header">
<p>
-Next: <a href="#Locale-Translation" accesskey="n" rel="next">Locale Translation</a>, Previous: <a href="#Double-Quotes" accesskey="p" rel="prev">Double Quotes</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Locale-Translation" accesskey="n" rel="next">Locale-Specific Translation</a>, Previous: <a href="#Double-Quotes" accesskey="p" rel="prev">Double Quotes</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="ANSI_002dC-Quoting-1"></span><h4 class="subsubsection">3.1.2.4 ANSI-C Quoting</h4>
<span id="index-quoting_002c-ANSI"></span>
-<p>Words of the form <code>$'<var>string</var>'</code> are treated specially. The
-word expands to <var>string</var>, with backslash-escaped characters replaced
-as specified by the ANSI C standard. Backslash escape sequences, if
-present, are decoded as follows:
+<p>Character sequences of the form $’<var>string</var>’ are treated as a special
+kind of single quotes.
+The sequence expands to <var>string</var>, with backslash-escaped characters
+in <var>string</var> replaced as specified by the ANSI C standard.
+Backslash escape sequences, if present, are decoded as follows:
</p>
<dl compact="compact">
-<dt><code>\a</code></dt>
+<dt><span><code>\a</code></span></dt>
<dd><p>alert (bell)
</p></dd>
-<dt><code>\b</code></dt>
+<dt><span><code>\b</code></span></dt>
<dd><p>backspace
</p></dd>
-<dt><code>\e</code></dt>
-<dt><code>\E</code></dt>
+<dt><span><code>\e</code></span></dt>
+<dt><span><code>\E</code></span></dt>
<dd><p>an escape character (not ANSI C)
</p></dd>
-<dt><code>\f</code></dt>
+<dt><span><code>\f</code></span></dt>
<dd><p>form feed
</p></dd>
-<dt><code>\n</code></dt>
+<dt><span><code>\n</code></span></dt>
<dd><p>newline
</p></dd>
-<dt><code>\r</code></dt>
+<dt><span><code>\r</code></span></dt>
<dd><p>carriage return
</p></dd>
-<dt><code>\t</code></dt>
+<dt><span><code>\t</code></span></dt>
<dd><p>horizontal tab
</p></dd>
-<dt><code>\v</code></dt>
+<dt><span><code>\v</code></span></dt>
<dd><p>vertical tab
</p></dd>
-<dt><code>\\</code></dt>
+<dt><span><code>\\</code></span></dt>
<dd><p>backslash
</p></dd>
-<dt><code>\'</code></dt>
+<dt><span><code>\'</code></span></dt>
<dd><p>single quote
</p></dd>
-<dt><code>\"</code></dt>
+<dt><span><code>\"</code></span></dt>
<dd><p>double quote
</p></dd>
-<dt><code>\?</code></dt>
+<dt><span><code>\?</code></span></dt>
<dd><p>question mark
</p></dd>
-<dt><code>\<var>nnn</var></code></dt>
+<dt><span><code>\<var>nnn</var></code></span></dt>
<dd><p>the eight-bit character whose value is the octal value <var>nnn</var>
(one to three octal digits)
</p></dd>
-<dt><code>\x<var>HH</var></code></dt>
+<dt><span><code>\x<var>HH</var></code></span></dt>
<dd><p>the eight-bit character whose value is the hexadecimal value <var>HH</var>
(one or two hex digits)
</p></dd>
-<dt><code>\u<var>HHHH</var></code></dt>
+<dt><span><code>\u<var>HHHH</var></code></span></dt>
<dd><p>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
<var>HHHH</var> (one to four hex digits)
</p></dd>
-<dt><code>\U<var>HHHHHHHH</var></code></dt>
+<dt><span><code>\U<var>HHHHHHHH</var></code></span></dt>
<dd><p>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
<var>HHHHHHHH</var> (one to eight hex digits)
</p></dd>
-<dt><code>\c<var>x</var></code></dt>
+<dt><span><code>\c<var>x</var></code></span></dt>
<dd><p>a control-<var>x</var> character
</p></dd>
</dl>
been present.
</p>
<hr>
-<span id="Locale-Translation"></span><div class="header">
+</div>
+<div class="subsubsection" id="Locale-Translation">
+<div class="header">
<p>
Previous: <a href="#ANSI_002dC-Quoting" accesskey="p" rel="prev">ANSI-C Quoting</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="index-native-languages"></span>
<span id="index-translation_002c-native-languages"></span>
-<p>A double-quoted string preceded by a dollar sign (‘<samp>$</samp>’)
+<p>Prefixing a double-quoted string with a dollar sign (‘<samp>$</samp>’), such
+as <tt>$"hello, world"</tt>,
will cause the string to be translated according to the current locale.
-The <var>gettext</var> infrastructure performs the message catalog lookup and
-translation, using the <code>LC_MESSAGES</code> and <code>TEXTDOMAIN</code> shell
-variables, as explained below. See the gettext documentation for additional
-details.
+The <code>gettext</code> infrastructure performs the lookup and
+translation, using the <code>LC_MESSAGES</code>, <code>TEXTDOMAINDIR</code>,
+and <code>TEXTDOMAIN</code> shell variables, as explained below.
+See the gettext documentation for additional details not covered here.
If the current locale is <code>C</code> or <code>POSIX</code>,
-or if there are no translations available,
+if there are no translations available,
+of if the string is not translated,
the dollar sign is ignored.
-If the string is translated and replaced, the replacement is
-double-quoted.
+Since this is a form of double quoting, the string remains double-quoted
+by default, whether or not it is translated and replaced.
+If the <code>noexpand_translation</code> option is enabled
+using the <code>shopt</code> builtin (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>),
+translated strings are single-quoted instead of double-quoted.
+</p>
+<p>The rest of this section is a brief overview of how you use gettext to
+create translations for strings in a shell script named <var>scriptname</var>.
+There are more details in the gettext documentation.
+</p>
+<hr>
+<span id="Creating-Internationalized-Scripts"></span><div class="header">
+<p>
+ [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+</div>
+<h4 class="node-heading">Creating Internationalized Scripts</h4>
+<span id="index-internationalized-scripts"></span>
+<span id="index-string-translations"></span>
+<p>Once you’ve marked the strings in your script
+that you want to translate using $"...",
+you create a gettext "template" file using the command
+</p>
+<div class="example">
+<pre class="example">bash --dump-po-strings <var>scriptname</var> > <var>domain</var>.pot
+</pre></div>
+
+<p>The <var>domain</var> is your <em>message domain</em>.
+It’s just an arbitrary string that’s used to identify the files gettext
+needs, like a package or script name.
+It needs to be unique among all
+the message domains on systems where you install the translations, so
+gettext knows which translations correspond to your script.
+You’ll use the template file to create translations for each target language.
+The template file conventionally has the suffix ‘<samp>.pot</samp>’.
+</p>
+<p>You copy this template file to a separate file for each target language
+you want to support (called "PO" files, which use the suffix ‘<samp>.po</samp>’).
+PO files use various naming conventions, but
+when you are working to translate a template file into a particular
+language, you first copy the template file to a file whose name is the
+language you want to target, with the ‘<samp>.po</samp>’ suffix.
+For instance, the Spanish translations of your strings would be
+in a file named ‘<samp>es.po</samp>’, and to get started using a message
+domain named "example," you would run
</p>
+<div class="example">
+<pre class="example">cp example.pot es.po
+</pre></div>
+
+<p>Ultimately, PO files are often named <var>domain</var>.po and installed in
+directories that contain multiple translation files for a particular language.
+</p>
+<p>Whichever naming convention you choose, you will need to translate the
+strings in the PO files into the appropriate languages.
+This has to be done manually.
+</p>
+<p>When you have the translations and PO files complete, you’ll use the
+gettext tools to produce what are called "MO" files, which are compiled
+versions of the PO files the gettext tools use to look up translations
+efficiently.
+MO files are also called "message catalog" files.
+You use the <code>msgfmt</code> program to do this.
+For instance, if you had a file with Spanish translations, you could run
+</p>
+<div class="example">
+<pre class="example">msgfmt -o es.mo es.po
+</pre></div>
+
+<p>to produce the corresponding MO file.
+</p>
+<p>Once you have the MO files, you decide where to install them and use the
+<code>TEXTDOMAINDIR</code> shell variable to tell the gettext tools where they are.
+Make sure to use the same message domain to name the MO files
+as you did for the PO files when you install them.
+</p>
+<span id="index-LANG"></span>
<span id="index-LC_005fMESSAGES"></span>
<span id="index-TEXTDOMAIN"></span>
<span id="index-TEXTDOMAINDIR"></span>
-<p>Some systems use the message catalog selected by the <code>LC_MESSAGES</code>
-shell variable. Others create the name of the message catalog from the
-value of the <code>TEXTDOMAIN</code> shell variable, possibly adding a
-suffix of ‘<samp>.mo</samp>’. If you use the <code>TEXTDOMAIN</code> variable, you
-may need to set the <code>TEXTDOMAINDIR</code> variable to the location of
-the message catalog files. Still others use both variables in this
-fashion:
-<code>TEXTDOMAINDIR</code>/<code>LC_MESSAGES</code>/LC_MESSAGES/<code>TEXTDOMAIN</code>.mo.
+<p>Your users will use the <code>LANG</code> or <code>LC_MESSAGES</code> shell variables to
+select the desired language.
+</p>
+<p>You set the <code>TEXTDOMAIN</code> variable to the script’s message domain.
+As above, you use the message domain to name your translation files.
+</p>
+<p>You, or possibly your users, set the <code>TEXTDOMAINDIR</code> variable to the
+name of a directory where the message catalog files are stored.
+If you install the message files into the system’s standard message catalog
+directory, you don’t need to worry about this variable.
+</p>
+<p>The directory where the message catalog files are stored varies between
+systems.
+Some use the message catalog selected by the <code>LC_MESSAGES</code>
+shell variable.
+Others create the name of the message catalog from the value of the
+<code>TEXTDOMAIN</code> shell variable, possibly adding the ‘<samp>.mo</samp>’ suffix.
+If you use the <code>TEXTDOMAIN</code> variable, you may need to set the
+<code>TEXTDOMAINDIR</code> variable to the location of the message catalog files,
+as above.
+It’s common to use both variables in this fashion:
+<code>$TEXTDOMAINDIR</code>/<code>$LC_MESSAGES</code>/LC_MESSAGES/<code>$TEXTDOMAIN</code>.mo.
+</p>
+<p>If you used that last convention, and you wanted to store the message
+catalog files with Spanish (es) and Esperanto (eo) translations into a
+local directory you use for custom translation files, you could run
+</p>
+<div class="example">
+<pre class="example">TEXTDOMAIN=example
+TEXTDOMAINDIR=/usr/local/share/locale
+
+cp es.mo ${TEXTDOMAINDIR}/es/LC_MESSAGES/${TEXTDOMAIN}.mo
+cp eo.mo ${TEXTDOMAINDIR}/eo/LC_MESSAGES/${TEXTDOMAIN}.mo
+</pre></div>
+
+<p>When all of this is done, and the message catalog files containing the
+compiled translations are installed in the correct location,
+your users will be able to see translated strings
+in any of the supported languages by setting the <code>LANG</code> or
+<code>LC_MESSAGES</code> environment variables before running your script.
</p>
<hr>
-<span id="Comments"></span><div class="header">
+</div>
+</div>
+<div class="subsection" id="Comments">
+<div class="header">
<p>
Previous: <a href="#Quoting" accesskey="p" rel="prev">Quoting</a>, Up: <a href="#Shell-Syntax" accesskey="u" rel="up">Shell Syntax</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
a shell interactive.
</p>
<hr>
-<span id="Shell-Commands"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Shell-Commands">
+<div class="header">
<p>
Next: <a href="#Shell-Functions" accesskey="n" rel="next">Shell Functions</a>, Previous: <a href="#Shell-Syntax" accesskey="p" rel="prev">Shell Syntax</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
becomes the input of a second, in a loop or conditional construct, or in
some other grouping.
</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Reserved-Words" accesskey="1">Reserved Words</a></td><td> </td><td align="left" valign="top">Words that have special meaning to the shell.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Simple-Commands" accesskey="2">Simple Commands</a></td><td> </td><td align="left" valign="top">The most common type of command.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Pipelines" accesskey="3">Pipelines</a></td><td> </td><td align="left" valign="top">Connecting the input and output of several
- commands.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Lists" accesskey="4">Lists</a></td><td> </td><td align="left" valign="top">How to execute commands sequentially.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Compound-Commands" accesskey="5">Compound Commands</a></td><td> </td><td align="left" valign="top">Shell commands for control flow.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Coprocesses" accesskey="6">Coprocesses</a></td><td> </td><td align="left" valign="top">Two-way communication between commands.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#GNU-Parallel" accesskey="7">GNU Parallel</a></td><td> </td><td align="left" valign="top">Running commands in parallel.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Reserved-Words" accesskey="1">Reserved Words</a></li>
+<li><a href="#Simple-Commands" accesskey="2">Simple Commands</a></li>
+<li><a href="#Pipelines" accesskey="3">Pipelines</a></li>
+<li><a href="#Lists" accesskey="4">Lists of Commands</a></li>
+<li><a href="#Compound-Commands" accesskey="5">Compound Commands</a></li>
+<li><a href="#Coprocesses" accesskey="6">Coprocesses</a></li>
+<li><a href="#GNU-Parallel" accesskey="7">GNU Parallel</a></li>
+</ul>
<hr>
-<span id="Reserved-Words"></span><div class="header">
+<div class="subsection" id="Reserved-Words">
+<div class="header">
<p>
Next: <a href="#Simple-Commands" accesskey="n" rel="next">Simple Commands</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
words if they are the third word in a <code>for</code> command.
</p>
<hr>
-<span id="Simple-Commands"></span><div class="header">
+</div>
+<div class="subsection" id="Simple-Commands">
+<div class="header">
<p>
Next: <a href="#Pipelines" accesskey="n" rel="next">Pipelines</a>, Previous: <a href="#Reserved-Words" accesskey="p" rel="prev">Reserved Words</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
the command was terminated by signal <var>n</var>.
</p>
<hr>
-<span id="Pipelines"></span><div class="header">
+</div>
+<div class="subsection" id="Pipelines">
+<div class="header">
<p>
-Next: <a href="#Lists" accesskey="n" rel="next">Lists</a>, Previous: <a href="#Simple-Commands" accesskey="p" rel="prev">Simple Commands</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Lists" accesskey="n" rel="next">Lists of Commands</a>, Previous: <a href="#Simple-Commands" accesskey="p" rel="prev">Simple Commands</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Pipelines-1"></span><h4 class="subsection">3.2.3 Pipelines</h4>
<span id="index-pipeline"></span>
<p>The output of each command in the pipeline is connected via a pipe
to the input of the next command.
That is, each command reads the previous command’s output. This
-connection is performed before any redirections specified by the
-command.
+connection is performed before any redirections specified by
+<var>command1</var>.
</p>
<p>If ‘<samp>|&</samp>’ is used, <var>command1</var>’s standard error, in addition to
its standard output, is connected to
<var>command2</var>’s standard input through the pipe;
it is shorthand for <code>2>&1 |</code>.
This implicit redirection of the standard error to the standard output is
-performed after any redirections specified by the command.
+performed after any redirections specified by <var>command1</var>.
</p>
<p>The reserved word <code>time</code> causes timing statistics
to be printed for the pipeline once it finishes.
The <code>TIMEFORMAT</code> variable may be used to specify the format of
the time information.
</p>
-<p>If the pipeline is not executed asynchronously (see <a href="#Lists">Lists</a>), the
+<p>If the pipeline is not executed asynchronously (see <a href="#Lists">Lists of Commands</a>), the
shell waits for all commands in the pipeline to complete.
</p>
-<p>Each command in a pipeline is executed in its own subshell, which is a
+<p>Each command in a multi-command pipeline,
+where pipes are created,
+is executed in its own <em>subshell</em>, which is a
separate process (see <a href="#Command-Execution-Environment">Command Execution Environment</a>).
If the <code>lastpipe</code> option is enabled using the <code>shopt</code> builtin
(see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>),
-the last element of a pipeline may be run by the shell process.
+the last element of a pipeline may be run by the shell process
+when job control is not active.
</p>
<p>The exit
status of a pipeline is the exit status of the last command in the
returning a value.
</p>
<hr>
-<span id="Lists"></span><div class="header">
+</div>
+<div class="subsection" id="Lists">
+<div class="header">
<p>
Next: <a href="#Compound-Commands" accesskey="n" rel="next">Compound Commands</a>, Previous: <a href="#Pipelines" accesskey="p" rel="prev">Pipelines</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</p>
<p>If a command is terminated by the control operator ‘<samp>&</samp>’,
the shell executes the command asynchronously in a subshell.
-This is known as executing the command in the <var>background</var>,
-and these are referred to as <var>asynchronous</var> commands.
+This is known as executing the command in the <em>background</em>,
+and these are referred to as <em>asynchronous</em> commands.
The shell does not wait for the command to finish, and the return
status is 0 (true).
When job control is not active (see <a href="#Job-Control">Job Control</a>),
executed in the list.
</p>
<hr>
-<span id="Compound-Commands"></span><div class="header">
+</div>
+<div class="subsection" id="Compound-Commands">
+<div class="header">
<p>
-Next: <a href="#Coprocesses" accesskey="n" rel="next">Coprocesses</a>, Previous: <a href="#Lists" accesskey="p" rel="prev">Lists</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Coprocesses" accesskey="n" rel="next">Coprocesses</a>, Previous: <a href="#Lists" accesskey="p" rel="prev">Lists of Commands</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Compound-Commands-1"></span><h4 class="subsection">3.2.5 Compound Commands</h4>
<span id="index-commands_002c-compound"></span>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Looping-Constructs" accesskey="1">Looping Constructs</a></td><td> </td><td align="left" valign="top">Shell commands for iterative action.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Conditional-Constructs" accesskey="2">Conditional Constructs</a></td><td> </td><td align="left" valign="top">Shell commands for conditional execution.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Command-Grouping" accesskey="3">Command Grouping</a></td><td> </td><td align="left" valign="top">Ways to group commands.
-</td></tr>
-</table>
<p>Compound commands are the shell programming language constructs.
Each construct begins with a reserved word or control operator and is
<p>Bash provides looping constructs, conditional commands, and mechanisms
to group commands and execute them as a unit.
</p>
+<ul class="section-toc">
+<li><a href="#Looping-Constructs" accesskey="1">Looping Constructs</a></li>
+<li><a href="#Conditional-Constructs" accesskey="2">Conditional Constructs</a></li>
+<li><a href="#Command-Grouping" accesskey="3">Grouping Commands</a></li>
+</ul>
<hr>
-<span id="Looping-Constructs"></span><div class="header">
+<div class="subsubsection" id="Looping-Constructs">
+<div class="header">
<p>
Next: <a href="#Conditional-Constructs" accesskey="n" rel="next">Conditional Constructs</a>, Up: <a href="#Compound-Commands" accesskey="u" rel="up">Compound Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
command’s syntax, it may be replaced with one or more newlines.
</p>
<dl compact="compact">
-<dt><code>until</code></dt>
-<dd><span id="index-until"></span>
-<span id="index-do"></span>
+<dt id='index-until'><span><code>until</code><a href='#index-until' class='copiable-anchor'> ¶</a></span></dt>
+<dd><span id="index-do"></span>
<span id="index-done"></span>
<p>The syntax of the <code>until</code> command is:
</p>
in <var>consequent-commands</var>, or zero if none was executed.
</p>
</dd>
-<dt><code>while</code></dt>
-<dd><span id="index-while"></span>
-<p>The syntax of the <code>while</code> command is:
+<dt id='index-while'><span><code>while</code><a href='#index-while' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The syntax of the <code>while</code> command is:
</p>
<div class="example">
<pre class="example">while <var>test-commands</var>; do <var>consequent-commands</var>; done
in <var>consequent-commands</var>, or zero if none was executed.
</p>
</dd>
-<dt><code>for</code></dt>
-<dd><span id="index-for"></span>
-<p>The syntax of the <code>for</code> command is:
+<dt id='index-for'><span><code>for</code><a href='#index-for' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The syntax of the <code>for</code> command is:
</p>
<div class="example">
<pre class="example">for <var>name</var> [ [in [<var>words</var> …] ] ; ] do <var>commands</var>; done
may be used to control loop execution.
</p>
<hr>
-<span id="Conditional-Constructs"></span><div class="header">
+</div>
+<div class="subsubsection" id="Conditional-Constructs">
+<div class="header">
<p>
-Next: <a href="#Command-Grouping" accesskey="n" rel="next">Command Grouping</a>, Previous: <a href="#Looping-Constructs" accesskey="p" rel="prev">Looping Constructs</a>, Up: <a href="#Compound-Commands" accesskey="u" rel="up">Compound Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Command-Grouping" accesskey="n" rel="next">Grouping Commands</a>, Previous: <a href="#Looping-Constructs" accesskey="p" rel="prev">Looping Constructs</a>, Up: <a href="#Compound-Commands" accesskey="u" rel="up">Compound Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Conditional-Constructs-1"></span><h4 class="subsubsection">3.2.5.2 Conditional Constructs</h4>
<span id="index-commands_002c-conditional"></span>
<dl compact="compact">
-<dt><code>if</code></dt>
-<dd><span id="index-if"></span>
-<span id="index-then"></span>
+<dt id='index-if'><span><code>if</code><a href='#index-if' class='copiable-anchor'> ¶</a></span></dt>
+<dd><span id="index-then"></span>
<span id="index-else"></span>
<span id="index-elif"></span>
<span id="index-fi"></span>
zero if no condition tested true.
</p>
</dd>
-<dt><code>case</code></dt>
-<dd><span id="index-case"></span>
-<span id="index-in"></span>
+<dt id='index-case'><span><code>case</code><a href='#index-case' class='copiable-anchor'> ¶</a></span></dt>
+<dd><span id="index-in"></span>
<span id="index-esac"></span>
<p>The syntax of the <code>case</code> command is:
</p>
The <var>word</var> undergoes tilde expansion, parameter expansion, command
substitution, arithmetic expansion, and quote removal
(see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>)
-before matching is
-attempted. Each <var>pattern</var> undergoes tilde expansion, parameter
-expansion, command substitution, and arithmetic expansion.
+before matching is attempted.
+Each <var>pattern</var> undergoes tilde expansion, parameter expansion,
+command substitution, arithmetic expansion, process substitution, and
+quote removal.
</p>
<p>There may be an arbitrary number of <code>case</code> clauses, each terminated
by a ‘<samp>;;</samp>’, ‘<samp>;&</samp>’, or ‘<samp>;;&</samp>’.
return status is the exit status of the <var>command-list</var> executed.
</p>
</dd>
-<dt><code>select</code></dt>
-<dd><span id="index-select"></span>
-
+<dt id='index-select'><span><code>select</code><a href='#index-select' class='copiable-anchor'> ¶</a></span></dt>
+<dd>
<p>The <code>select</code> construct allows the easy generation of menus.
It has almost the same syntax as the <code>for</code> command:
</p>
</pre></div>
<p>The list of words following <code>in</code> is expanded, generating a list
-of items. The set of expanded words is printed on the standard
+of items, and the set of expanded words is printed on the standard
error output stream, each preceded by a number. If the
‘<samp>in <var>words</var></samp>’ is omitted, the positional parameters are printed,
as if ‘<samp>in "$@"</samp>’ had been specified.
-The <code>PS3</code> prompt is then displayed and a line is read from the
-standard input.
+<code>select</code> then displays the <code>PS3</code>
+prompt and reads a line from the standard input.
If the line consists of a number corresponding to one of the displayed
words, then the value of <var>name</var> is set to that word.
If the line is empty, the words and prompt are displayed again.
-If <code>EOF</code> is read, the <code>select</code> command completes.
+If <code>EOF</code> is read, the <code>select</code> command completes and returns 1.
Any other value read causes <var>name</var> to be set to null.
The line read is saved in the variable <code>REPLY</code>.
</p>
</pre></div>
</dd>
-<dt><code>((…))</code></dt>
+<dt><span><code>((…))</code></span></dt>
<dd><div class="example">
<pre class="example">(( <var>expression</var> ))
</pre></div>
<p>The arithmetic <var>expression</var> is evaluated according to the rules
described below (see <a href="#Shell-Arithmetic">Shell Arithmetic</a>).
+The <var>expression</var> undergoes the same expansions
+as if it were within double quotes,
+but double quote characters in <var>expression</var> are not treated specially
+are removed.
If the value of the expression is non-zero, the return status is 0;
-otherwise the return status is 1. This is exactly equivalent to
-</p><div class="example">
-<pre class="example">let "<var>expression</var>"
-</pre></div>
-<p>See <a href="#Bash-Builtins">Bash Builtins</a>, for a full description of the <code>let</code> builtin.
+otherwise the return status is 1.
</p>
+
</dd>
-<dt><code>[[…]]</code></dt>
-<dd><span id="index-_005b_005b"></span>
-<span id="index-_005d_005d"></span>
+<dt id='index-_005b_005b'><span><code>[[…]]</code><a href='#index-_005b_005b' class='copiable-anchor'> ¶</a></span></dt>
+<dd><span id="index-_005d_005d"></span>
<div class="example">
<pre class="example">[[ <var>expression</var> ]]
</pre></div>
the conditional expression <var>expression</var>.
Expressions are composed of the primaries described below in
<a href="#Bash-Conditional-Expressions">Bash Conditional Expressions</a>.
-Word splitting and filename expansion are not performed on the words
-between the <code>[[</code> and <code>]]</code>; tilde expansion, parameter and
+The words between the <code>[[</code> and <code>]]</code> do not undergo word splitting
+and filename expansion.
+The shell performs tilde expansion, parameter and
variable expansion, arithmetic expansion, command substitution, process
-substitution, and quote removal are performed.
+substitution, and quote removal on those words
+(the expansions that would occur if the words were enclosed in double quotes).
Conditional operators such as ‘<samp>-f</samp>’ must be unquoted to be recognized
as primaries.
</p>
of alphabetic characters.
The return value is 0 if the string matches (‘<samp>==</samp>’) or does not
match (‘<samp>!=</samp>’) the pattern, and 1 otherwise.
-Any part of the pattern may be quoted to force the quoted portion
-to be matched as a string.
+</p>
+<p>If you quote any part of the pattern,
+using any of the shell’s quoting mechanisms,
+the quoted portion is matched literally.
+This means every character in the quoted portion matches itself,
+instead of having any special pattern matching meaning.
</p>
<p>An additional binary operator, ‘<samp>=~</samp>’, is available, with the same
precedence as ‘<samp>==</samp>’ and ‘<samp>!=</samp>’.
-When it is used, the string to the right of the operator is considered
-a <small>POSIX</small> extended regular expression and matched accordingly
+When you use ‘<samp>=~</samp>’, the string to the right of the operator is considered
+a <small>POSIX</small> extended regular expression pattern and matched accordingly
(using the <small>POSIX</small> <code>regcomp</code> and <code>regexec</code> interfaces
usually described in <i>regex</i>(3)).
-The return value is 0 if the string matches
-the pattern, and 1 otherwise.
+The return value is 0 if the string matches the pattern, and 1 if it does not.
If the regular expression is syntactically incorrect, the conditional
-expression’s return value is 2.
+expression returns 2.
If the <code>nocasematch</code> shell option
(see the description of <code>shopt</code> in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
is enabled, the match is performed without regard to the case
of alphabetic characters.
-Any part of the pattern may be quoted to force the quoted portion
-to be matched as a string.
-Bracket expressions in regular expressions must be treated carefully,
-since normal quoting characters lose their meanings between brackets.
+</p>
+<p>You can quote any part of the pattern
+to force the quoted portion to be matched literally
+instead of as a regular expression (see above).
If the pattern is stored in a shell variable, quoting the variable
-expansion forces the entire pattern to be matched as a string.
+expansion forces the entire pattern to be matched literally.
</p>
<p>The pattern will match if it matches any part of the string.
-Anchor the pattern using the ‘<samp>^</samp>’ and ‘<samp>$</samp>’ regular expression
-operators to force it to match the entire string.
-The array variable <code>BASH_REMATCH</code> records which parts of the string
-matched the pattern.
-The element of <code>BASH_REMATCH</code> with index 0 contains the portion of
-the string matching the entire regular expression.
-Substrings matched by parenthesized subexpressions within the regular
-expression are saved in the remaining <code>BASH_REMATCH</code> indices.
-The element of <code>BASH_REMATCH</code> with index <var>n</var> is the portion of the
-string matching the <var>n</var>th parenthesized subexpression.
+If you want to force the pattern to match the entire string,
+anchor the pattern using the ‘<samp>^</samp>’ and ‘<samp>$</samp>’ regular expression
+operators.
</p>
<p>For example, the following will match a line
-(stored in the shell variable <var>line</var>)
+(stored in the shell variable <code>line</code>)
if there is a sequence of characters anywhere in the value consisting of
any number, including zero, of
characters in the <code>space</code> character class,
-zero or one instances of ‘<samp>a</samp>’, then a ‘<samp>b</samp>’:
-</p><div class="example">
+immediately followed by zero or one instances of ‘<samp>a</samp>’,
+then a ‘<samp>b</samp>’:
+</p>
+<div class="example">
<pre class="example">[[ $line =~ [[:space:]]*(a)?b ]]
</pre></div>
-<p>That means values like ‘<samp>aab</samp>’ and ‘<samp> aaaaaab</samp>’ will match, as
-will a line containing a ‘<samp>b</samp>’ anywhere in its value.
+<p>That means values for <code>line</code> like
+‘<samp>aab</samp>’, ‘<samp> aaaaaab</samp>’, ‘<samp>xaby</samp>’, and ‘<samp> ab</samp>’
+will all match,
+as will a line containing a ‘<samp>b</samp>’ anywhere in its value.
</p>
-<p>Storing the regular expression in a shell variable is often a useful
+<p>If you want to match a character that’s special to the regular expression
+grammar (‘<samp>^$|[]()\.*+?</samp>’), it has to be quoted to remove its special
+meaning.
+This means that in the pattern ‘<samp>xxx.txt</samp>’, the ‘<samp>.</samp>’ matches any
+character in the string (its usual regular expression meaning), but in the
+pattern ‘<samp>"xxx.txt"</samp>’, it can only match a literal ‘<samp>.</samp>’.
+</p>
+<p>Likewise, if you want to include a character in your pattern that has a
+special meaning to the regular expression grammar, you must make sure it’s
+not quoted.
+If you want to anchor a pattern at the beginning or end of the string,
+for instance, you cannot quote the ‘<samp>^</samp>’ or ‘<samp>$</samp>’
+characters using any form of shell quoting.
+</p>
+<p>If you want to match ‘<samp>initial string</samp>’ at the start of a line,
+the following will work:
+</p><div class="example">
+<pre class="example">[[ $line =~ ^"initial string" ]]
+</pre></div>
+<p>but this will not:
+</p><div class="example">
+<pre class="example">[[ $line =~ "^initial string" ]]
+</pre></div>
+<p>because in the second example the ‘<samp>^</samp>’ is quoted and doesn’t have its
+usual special meaning.
+</p>
+<p>It is sometimes difficult to specify a regular expression properly
+without using quotes, or to keep track of the quoting used by regular
+expressions while paying attention to
+shell quoting and the shell’s quote removal.
+Storing the regular expression in a shell variable is often a useful
way to avoid problems with quoting characters that are special to the
shell.
-It is sometimes difficult to specify a regular expression literally
-without using quotes, or to keep track of the quoting used by regular
-expressions while paying attention to the shell’s quote removal.
-Using a shell variable to store the pattern decreases these problems.
-For example, the following is equivalent to the above:
-</p><div class="example">
+For example, the following is equivalent to the pattern used above:
+</p>
+<div class="example">
<pre class="example">pattern='[[:space:]]*(a)?b'
[[ $line =~ $pattern ]]
</pre></div>
-<p>If you want to match a character that’s special to the regular expression
-grammar, it has to be quoted to remove its special meaning.
-This means that in the pattern ‘<samp>xxx.txt</samp>’, the ‘<samp>.</samp>’ matches any
-character in the string (its usual regular expression meaning), but in the
-pattern ‘<samp>"xxx.txt"</samp>’ it can only match a literal ‘<samp>.</samp>’.
-Shell programmers should take special care with backslashes, since backslashes
-are used both by the shell and regular expressions to remove the special
-meaning from the following character.
-The following two sets of commands are <em>not</em> equivalent:
-</p><div class="example">
+<p>Shell programmers should take special care with backslashes, since
+backslashes are used by both the shell and regular expressions to remove
+the special meaning from the following character.
+This means that after the shell’s word expansions complete
+(see <a href="#Shell-Expansions">Shell Expansions</a>),
+any backslashes remaining in parts of the pattern
+that were originally not quoted can remove the
+special meaning of pattern characters.
+If any part of the pattern is quoted, the shell does its best to ensure that
+the regular expression treats those remaining backslashes as literal,
+if they appeared in a quoted portion.
+</p>
+<p>The following two sets of commands are <em>not</em> equivalent:
+</p>
+<div class="example">
<pre class="example">pattern='\.'
[[ . =~ $pattern ]]
<p>The first two matches will succeed, but the second two will not, because
in the second two the backslash will be part of the pattern to be matched.
-In the first two examples, the backslash removes the special meaning from
+In the first two examples, the pattern passed to the regular expression
+parser is ‘<samp>\.</samp>’. The backslash removes the special meaning from
‘<samp>.</samp>’, so the literal ‘<samp>.</samp>’ matches.
+In the second two examples, the pattern passed to the regular expression
+parser has the backslash quoted (e.g., ‘<samp>\\\.</samp>’), which will not match
+the string, since it does not contain a backslash.
If the string in the first examples were anything other than ‘<samp>.</samp>’, say
‘<samp>a</samp>’, the pattern would not match, because the quoted ‘<samp>.</samp>’ in the
pattern loses its special meaning of matching any single character.
</p>
+<p>Bracket expressions in regular expressions can be sources of errors as well,
+since characters that are normally special in regular expressions
+lose their special meanings between brackets.
+However, you can use bracket expressions to match special pattern characters
+without quoting them, so they are sometimes useful for this purpose.
+</p>
+<p>Though it might seem like a strange way to write it, the following pattern
+will match a ‘<samp>.</samp>’ in the string:
+</p>
+<div class="example">
+<pre class="example">[[ . =~ [.] ]]
+</pre></div>
+
+<p>The shell performs any word expansions before passing the pattern
+to the regular expression functions,
+so you can assume that the shell’s quoting takes precedence.
+As noted above, the regular expression parser will interpret any
+unquoted backslashes remaining in the pattern after shell expansion
+according to its own rules.
+The intention is to avoid making shell programmers quote things twice
+as much as possible, so shell quoting should be sufficient to quote
+special pattern characters where that’s necessary.
+</p>
+<p>The array variable <code>BASH_REMATCH</code> records which parts of the string
+matched the pattern.
+The element of <code>BASH_REMATCH</code> with index 0 contains the portion of
+the string matching the entire regular expression.
+Substrings matched by parenthesized subexpressions within the regular
+expression are saved in the remaining <code>BASH_REMATCH</code> indices.
+The element of <code>BASH_REMATCH</code> with index <var>n</var> is the portion of the
+string matching the <var>n</var>th parenthesized subexpression.
+</p>
+<p>Bash sets
+<code>BASH_REMATCH</code>
+in the global scope; declaring it as a local variable will lead to
+unexpected results.
+</p>
<p>Expressions may be combined using the following operators, listed
in decreasing order of precedence:
</p>
<dl compact="compact">
-<dt><code>( <var>expression</var> )</code></dt>
+<dt><span><code>( <var>expression</var> )</code></span></dt>
<dd><p>Returns the value of <var>expression</var>.
This may be used to override the normal precedence of operators.
</p>
</dd>
-<dt><code>! <var>expression</var></code></dt>
+<dt><span><code>! <var>expression</var></code></span></dt>
<dd><p>True if <var>expression</var> is false.
</p>
</dd>
-<dt><code><var>expression1</var> && <var>expression2</var></code></dt>
+<dt><span><code><var>expression1</var> && <var>expression2</var></code></span></dt>
<dd><p>True if both <var>expression1</var> and <var>expression2</var> are true.
</p>
</dd>
-<dt><code><var>expression1</var> || <var>expression2</var></code></dt>
+<dt><span><code><var>expression1</var> || <var>expression2</var></code></span></dt>
<dd><p>True if either <var>expression1</var> or <var>expression2</var> is true.
</p></dd>
</dl>
</dl>
<hr>
-<span id="Command-Grouping"></span><div class="header">
+</div>
+<div class="subsubsection" id="Command-Grouping">
+<div class="header">
<p>
Previous: <a href="#Conditional-Constructs" accesskey="p" rel="prev">Conditional Constructs</a>, Up: <a href="#Compound-Commands" accesskey="u" rel="up">Compound Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
commands in the list may be redirected to a single stream.
</p>
<dl compact="compact">
-<dt><code>()</code></dt>
+<dt><span><code>()</code></span></dt>
<dd><div class="example">
<pre class="example">( <var>list</var> )
</pre></div>
-<p>Placing a list of commands between parentheses causes a subshell
-environment to be created (see <a href="#Command-Execution-Environment">Command Execution Environment</a>), and each
-of the commands in <var>list</var> to be executed in that subshell. Since the
-<var>list</var> is executed in a subshell, variable assignments do not remain in
-effect after the subshell completes.
+<p>Placing a list of commands between parentheses forces the shell to create
+a subshell (see <a href="#Command-Execution-Environment">Command Execution Environment</a>), and each
+of the commands in <var>list</var> is executed in that subshell environment.
+Since the <var>list</var> is executed in a subshell, variable assignments do not
+remain in effect after the subshell completes.
</p>
</dd>
-<dt><code>{}</code></dt>
-<dd><span id="index-_007b"></span>
-<span id="index-_007d"></span>
+<dt id='index-_007b'><span><code>{}</code><a href='#index-_007b' class='copiable-anchor'> ¶</a></span></dt>
+<dd><span id="index-_007d"></span>
<div class="example">
<pre class="example">{ <var>list</var>; }
</pre></div>
<p>In addition to the creation of a subshell, there is a subtle difference
between these two constructs due to historical reasons. The braces
-are <code>reserved words</code>, so they must be separated from the <var>list</var>
+are reserved words, so they must be separated from the <var>list</var>
by <code>blank</code>s or other shell metacharacters.
-The parentheses are <code>operators</code>, and are
+The parentheses are operators, and are
recognized as separate tokens by the shell even if they are not separated
from the <var>list</var> by whitespace.
</p>
<var>list</var>.
</p>
<hr>
-<span id="Coprocesses"></span><div class="header">
+</div>
+</div>
+<div class="subsection" id="Coprocesses">
+<div class="header">
<p>
Next: <a href="#GNU-Parallel" accesskey="n" rel="next">GNU Parallel</a>, Previous: <a href="#Compound-Commands" accesskey="p" rel="prev">Compound Commands</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
had been terminated with the ‘<samp>&</samp>’ control operator, with a two-way pipe
established between the executing shell and the coprocess.
</p>
-<p>The format for a coprocess is:
-</p><div class="example">
+<p>The syntax for a coprocess is:
+</p>
+<div class="example">
<pre class="example">coproc [<var>NAME</var>] <var>command</var> [<var>redirections</var>]
</pre></div>
<p>This creates a coprocess named <var>NAME</var>.
-If <var>NAME</var> is not supplied, the default name is <var>COPROC</var>.
-<var>NAME</var> must not be supplied if <var>command</var> is a simple
-command (see <a href="#Simple-Commands">Simple Commands</a>); otherwise, it is interpreted as
-the first word of the simple command.
+<var>command</var> may be either a simple command (see <a href="#Simple-Commands">Simple Commands</a>)
+or a compound command (see <a href="#Compound-Commands">Compound Commands</a>).
+<var>NAME</var> is a shell variable name.
+If <var>NAME</var> is not supplied, the default name is <code>COPROC</code>.
+</p>
+<p>The recommended form to use for a coprocess is
+</p>
+<div class="example">
+<pre class="example">coproc <var>NAME</var> { <var>command</var>; }
+</pre></div>
+
+<p>This form is recommended because simple commands result in the coprocess
+always being named <code>COPROC</code>, and it is simpler to use and more complete
+than the other compound commands.
+</p>
+<p>There are other forms of coprocesses:
+</p>
+<div class="example">
+<pre class="example">coproc <var>NAME</var> <var>compound-command</var>
+coproc <var>compound-command</var>
+coproc <var>simple-command</var>
+</pre></div>
+
+<p>If <var>command</var> is a compound command, <var>NAME</var> is optional. The
+word following <code>coproc</code> determines whether that word is interpreted
+as a variable name: it is interpreted as <var>NAME</var> if it is not a
+reserved word that introduces a compound command.
+If <var>command</var> is a simple command, <var>NAME</var> is not allowed; this
+is to avoid confusion between <var>NAME</var> and the first word of the simple
+command.
</p>
<p>When the coprocess is executed, the shell creates an array variable
(see <a href="#Arrays">Arrays</a>)
-named <code>NAME</code> in the context of the executing shell.
+named <var>NAME</var> in the context of the executing shell.
The standard output of <var>command</var>
is connected via a pipe to a file descriptor in the executing shell,
-and that file descriptor is assigned to <code>NAME</code>[0].
+and that file descriptor is assigned to <var>NAME</var>[0].
The standard input of <var>command</var>
is connected via a pipe to a file descriptor in the executing shell,
-and that file descriptor is assigned to <code>NAME</code>[1].
+and that file descriptor is assigned to <var>NAME</var>[1].
This pipe is established before any redirections specified by the
command (see <a href="#Redirections">Redirections</a>).
The file descriptors can be utilized as arguments to shell commands
the file descriptors are not available in subshells.
</p>
<p>The process ID of the shell spawned to execute the coprocess is
-available as the value of the variable <code>NAME</code>_PID.
+available as the value of the variable <code><var>NAME</var>_PID</code>.
The <code>wait</code>
builtin command may be used to wait for the coprocess to terminate.
</p>
The return status of a coprocess is the exit status of <var>command</var>.
</p>
<hr>
-<span id="GNU-Parallel"></span><div class="header">
+</div>
+<div class="subsection" id="GNU-Parallel">
+<div class="header">
<p>
Previous: <a href="#Coprocesses" accesskey="p" rel="prev">Coprocesses</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
the input source, and so on). Parallel can replace <code>xargs</code> or feed
commands from its input sources to several different instances of Bash.
</p>
-<p>For a complete description, refer to the GNU Parallel documentation. A few
-examples should provide a brief introduction to its use.
-</p>
-<p>For example, it is easy to replace <code>xargs</code> to gzip all html files in the
-current directory and its subdirectories:
-</p><div class="example">
-<pre class="example">find . -type f -name '*.html' -print | parallel gzip
-</pre></div>
-<p>If you need to protect special characters such as newlines in file names,
-use find’s <samp>-print0</samp> option and parallel’s <samp>-0</samp> option.
-</p>
-<p>You can use Parallel to move files from the current directory when the
-number of files is too large to process with one <code>mv</code> invocation:
-</p><div class="example">
-<pre class="example">printf '%s\n' * | parallel mv {} destdir
-</pre></div>
-
-<p>As you can see, the {} is replaced with each line read from standard input.
-While using <code>ls</code> will work in most instances, it is not sufficient to
-deal with all filenames. <code>printf</code> is a shell builtin, and therefore is
-not subject to the kernel’s limit on the number of arguments to a program,
-so you can use ‘<samp>*</samp>’ (but see below about the <code>dotglob</code> shell option).
-If you need to accommodate special characters in filenames, you can use
-</p>
-<div class="example">
-<pre class="example">printf '%s\0' * | parallel -0 mv {} destdir
-</pre></div>
-
-<p>as alluded to above.
-</p>
-<p>This will run as many <code>mv</code> commands as there are files in the current
-directory.
-You can emulate a parallel <code>xargs</code> by adding the <samp>-X</samp> option:
-</p><div class="example">
-<pre class="example">printf '%s\0' * | parallel -0 -X mv {} destdir
-</pre></div>
-
-<p>(You may have to modify the pattern if you have the <code>dotglob</code> option
-enabled.)
-</p>
-<p>GNU Parallel can replace certain common idioms that operate on lines read
-from a file (in this case, filenames listed one per line):
-</p><div class="example">
-<pre class="example"> while IFS= read -r x; do
- do-something1 "$x" "config-$x"
- do-something2 < "$x"
- done < file | process-output
-</pre></div>
-
-<p>with a more compact syntax reminiscent of lambdas:
-</p><div class="example">
-<pre class="example">cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" |
- process-output
-</pre></div>
-
-<p>Parallel provides a built-in mechanism to remove filename extensions, which
-lends itself to batch file transformations or renaming:
-</p><div class="example">
-<pre class="example">ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}"
-</pre></div>
-<p>This will recompress all files in the current directory with names ending
-in .gz using bzip2, running one job per CPU (-j+0) in parallel.
-(We use <code>ls</code> for brevity here; using <code>find</code> as above is more
-robust in the face of filenames containing unexpected characters.)
-Parallel can take arguments from the command line; the above can also be
-written as
-</p>
-<div class="example">
-<pre class="example">parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
-</pre></div>
-
-<p>If a command generates output, you may want to preserve the input order in
-the output. For instance, the following command
-</p><div class="example">
-<pre class="example">{
- echo foss.org.my ;
- echo debian.org ;
- echo freenetproject.org ;
-} | parallel traceroute
-</pre></div>
-<p>will display as output the traceroute invocation that finishes first.
-Adding the <samp>-k</samp> option
-</p><div class="example">
-<pre class="example">{
- echo foss.org.my ;
- echo debian.org ;
- echo freenetproject.org ;
-} | parallel -k traceroute
-</pre></div>
-<p>will ensure that the output of <code>traceroute foss.org.my</code> is displayed first.
-</p>
-<p>Finally, Parallel can be used to run a sequence of shell commands in parallel,
-similar to ‘<samp>cat file | bash</samp>’.
-It is not uncommon to take a list of filenames, create a series of shell
-commands to operate on them, and feed that list of commands to a shell.
-Parallel can speed this up. Assuming that <samp>file</samp> contains a list of
-shell commands, one per line,
-</p>
-<div class="example">
-<pre class="example">parallel -j 10 < file
-</pre></div>
-
-<p>will evaluate the commands using the shell (since no explicit command is
-supplied as an argument), in blocks of ten shell jobs at a time.
+<p>For a complete description, refer to the GNU Parallel documentation, which
+is available at
+<a href="https://www.gnu.org/software/parallel/parallel_tutorial.html">https://www.gnu.org/software/parallel/parallel_tutorial.html</a>.
</p>
<hr>
-<span id="Shell-Functions"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Shell-Functions">
+<div class="header">
<p>
Next: <a href="#Shell-Parameters" accesskey="n" rel="next">Shell Parameters</a>, Previous: <a href="#Shell-Commands" accesskey="p" rel="prev">Shell Commands</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
word <code>function</code> is optional.
If the <code>function</code> reserved
word is supplied, the parentheses are optional.
-The <var>body</var> of the function is the compound command
+The <em>body</em> of the function is the compound command
<var>compound-command</var> (see <a href="#Compound-Commands">Compound Commands</a>).
That command is usually a <var>list</var> enclosed between { and }, but
-may be any compound command listed above,
-with one exception: If the <code>function</code> reserved word is used, but the
-parentheses are not supplied, the braces are required.
+may be any compound command listed above.
+If the <code>function</code> reserved word is used, but the
+parentheses are not supplied, the braces are recommended.
<var>compound-command</var> is executed whenever <var>fname</var> is specified as the
-name of a command.
+name of a simple command.
When the shell is in <small>POSIX</small> mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>),
-<var>fname</var> must be a valid shell <var>name</var> and
+<var>fname</var> must be a valid shell name and
may not be the same as one of the special builtins
(see <a href="#Special-Builtins">Special Builtins</a>).
In default mode, a function name can be any unquoted shell word that does
before the <code>return</code>.
</p>
<p>Variables local to the function may be declared with the
-<code>local</code> builtin. These variables are visible only to
+<code>local</code> builtin (<em>local variables</em>).
+Ordinarily, variables and their values
+are shared between a function and its caller.
+These variables are visible only to
the function and the commands it invokes. This is particularly
important when a shell function calls other functions.
</p>
+<p>In the following description, the <em>current scope</em> is a currently-
+executing function.
+Previous scopes consist of that function’s caller and so on,
+back to the "global" scope, where the shell is not executing
+any shell function.
+Consequently, a local variable at the current local scope is a variable
+declared using the <code>local</code> or <code>declare</code> builtins in the
+function that is currently executing.
+</p>
<p>Local variables "shadow" variables with the same name declared at
previous scopes. For instance, a local variable declared in a function
hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
</p>
-<p>The shell uses <var>dynamic scoping</var> to control a variable’s visibility
+<p>The shell uses <em>dynamic scoping</em> to control a variable’s visibility
within functions.
With dynamic scoping, visible variables and their values
are a result of the sequence of function calls that caused execution
declaration "shadows", and the value that is restored when the function
returns.
</p>
-<p>For example, if a variable <var>var</var> is declared as local in function
-<var>func1</var>, and <var>func1</var> calls another function <var>func2</var>,
-references to <var>var</var> made from within <var>func2</var> will resolve to the
-local variable <var>var</var> from <var>func1</var>, shadowing any global variable
-named <var>var</var>.
+<p>For example, if a variable <code>var</code> is declared as local in function
+<code>func1</code>, and <code>func1</code> calls another function <code>func2</code>,
+references to <code>var</code> made from within <code>func2</code> will resolve to the
+local variable <code>var</code> from <code>func1</code>, shadowing any global variable
+named <code>var</code>.
</p>
<p>The following script demonstrates this behavior.
When executed, the script displays
otherwise the unset will refer to the variable found in any calling scope
as described above.
If a variable at the current local scope is unset, it will remain so
+(appearing as unset)
until it is reset in that scope or until the function returns.
Once the function returns, any instance of the variable at a previous
scope will become visible.
If the unset acts on a variable at a previous scope, any instance of a
-variable with that name that had been shadowed will become visible.
+variable with that name that had been shadowed will become visible
+(see below how <code>localvar_unset</code>shell option changes this behavior).
</p>
<p>Function names and definitions may be listed with the
<samp>-f</samp> option to the <code>declare</code> (<code>typeset</code>)
-builtin command (see <a href="#Bash-Builtins">Bash Builtins</a>).
+builtin command (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
The <samp>-F</samp> option to <code>declare</code> or <code>typeset</code>
will list the function names only
(and optionally the source file and line number, if the <code>extdebug</code>
shell option is enabled).
-Functions may be exported so that subshells
+Functions may be exported so that child shell processes
+(those created when executing a separate shell invocation)
automatically have them defined with the
<samp>-f</samp> option to the <code>export</code> builtin
(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
By default, no limit is placed on the number of recursive calls.
</p>
<hr>
-<span id="Shell-Parameters"></span><div class="header">
+</div>
+<div class="section" id="Shell-Parameters">
+<div class="header">
<p>
Next: <a href="#Shell-Expansions" accesskey="n" rel="next">Shell Expansions</a>, Previous: <a href="#Shell-Functions" accesskey="p" rel="prev">Shell Functions</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="index-variable_002c-shell"></span>
<span id="index-shell-variable"></span>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Positional-Parameters" accesskey="1">Positional Parameters</a></td><td> </td><td align="left" valign="top">The shell’s command-line arguments.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Special-Parameters" accesskey="2">Special Parameters</a></td><td> </td><td align="left" valign="top">Parameters denoted by special characters.
-</td></tr>
-</table>
-<p>A <var>parameter</var> is an entity that stores values.
+<p>A <em>parameter</em> is an entity that stores values.
It can be a <code>name</code>, a number, or one of the special characters
listed below.
-A <var>variable</var> is a parameter denoted by a <code>name</code>.
-A variable has a <var>value</var> and zero or more <var>attributes</var>.
+A <em>variable</em> is a parameter denoted by a <code>name</code>.
+A variable has a <code>value</code> and zero or more <code>attributes</code>.
Attributes are assigned using the <code>declare</code> builtin command
-(see the description of the <code>declare</code> builtin in <a href="#Bash-Builtins">Bash Builtins</a>).
+(see the description of the <code>declare</code> builtin in <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
<p>A parameter is set if it has been assigned a value. The null string is
a valid value. Once a variable is set, it may be unset only by using
is not given, the variable is assigned the null string. All
<var>value</var>s undergo tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote
-removal (detailed below). If the variable has its <code>integer</code>
+removal (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
+If the variable has its <code>integer</code>
attribute set, then <var>value</var>
is evaluated as an arithmetic expression even if the <code>$((…))</code>
expansion is not used (see <a href="#Arithmetic-Expansion">Arithmetic Expansion</a>).
-Word splitting is not performed, with the exception
-of <code>"$@"</code> as explained below.
-Filename expansion is not performed.
+Word splitting and filename expansion are not performed.
Assignment statements may also appear as arguments to the
<code>alias</code>,
<code>declare</code>, <code>typeset</code>, <code>export</code>, <code>readonly</code>,
-and <code>local</code> builtin commands (<var>declaration</var> commands).
+and <code>local</code> builtin commands (<em>declaration</em> commands).
When in <small>POSIX</small> mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>), these builtins may appear
in a command after one or more instances of the <code>command</code> builtin
and retain these assignment statement properties.
operator can be used to
append to or add to the variable’s previous value.
This includes arguments to builtin commands such as <code>declare</code> that
-accept assignment statements (<var>declaration</var> commands).
-When ‘<samp>+=</samp>’ is applied to a variable for which the <var>integer</var> attribute
+accept assignment statements (declaration commands).
+When ‘<samp>+=</samp>’ is applied to a variable for which the <code>integer</code> attribute
has been set, <var>value</var> is evaluated as an arithmetic expression and
added to the variable’s current value, which is also evaluated.
When ‘<samp>+=</samp>’ is applied to an array variable using compound assignment
When applied to a string-valued variable, <var>value</var> is expanded and
appended to the variable’s value.
</p>
-<p>A variable can be assigned the <var>nameref</var> attribute using the
+<p>A variable can be assigned the <code>nameref</code> attribute using the
<samp>-n</samp> option to the <code>declare</code> or <code>local</code> builtin commands
-(see <a href="#Bash-Builtins">Bash Builtins</a>)
-to create a <var>nameref</var>, or a reference to another variable.
+(see <a href="#Bash-Builtins">Bash Builtin Commands</a>)
+to create a <em>nameref</em>, or a reference to another variable.
This allows variables to be manipulated indirectly.
Whenever the nameref variable is referenced, assigned to, unset, or has
its attributes modified (other than using or changing the nameref
</p><div class="example">
<pre class="example">declare -n ref=$1
</pre></div>
-<p>inside the function creates a nameref variable <var>ref</var> whose value is
+<p>inside the function creates a nameref variable <code>ref</code> whose value is
the variable name passed as the first argument.
-References and assignments to <var>ref</var>, and changes to its attributes,
+References and assignments to <code>ref</code>, and changes to its attributes,
are treated as references, assignments, and attribute modifications
to the variable whose name was passed as <code>$1</code>.
</p>
Otherwise, if <code>unset</code> is executed with the name of a nameref variable
as an argument, the variable referenced by the nameref variable will be unset.
</p>
+<ul class="section-toc">
+<li><a href="#Positional-Parameters" accesskey="1">Positional Parameters</a></li>
+<li><a href="#Special-Parameters" accesskey="2">Special Parameters</a></li>
+</ul>
<hr>
-<span id="Positional-Parameters"></span><div class="header">
+<div class="subsection" id="Positional-Parameters">
+<div class="header">
<p>
Next: <a href="#Special-Parameters" accesskey="n" rel="next">Special Parameters</a>, Up: <a href="#Shell-Parameters" accesskey="u" rel="up">Shell Parameters</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Positional-Parameters-1"></span><h4 class="subsection">3.4.1 Positional Parameters</h4>
<span id="index-parameters_002c-positional"></span>
-<p>A <var>positional parameter</var> is a parameter denoted by one or more
+<p>A <em>positional parameter</em> is a parameter denoted by one or more
digits, other than the single digit <code>0</code>. Positional parameters are
assigned from the shell’s arguments when it is invoked,
and may be reassigned using the <code>set</code> builtin command.
digit is expanded, it must be enclosed in braces.
</p>
<hr>
-<span id="Special-Parameters"></span><div class="header">
+</div>
+<div class="subsection" id="Special-Parameters">
+<div class="header">
<p>
Previous: <a href="#Positional-Parameters" accesskey="p" rel="prev">Positional Parameters</a>, Up: <a href="#Shell-Parameters" accesskey="u" rel="up">Shell Parameters</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
only be referenced; assignment to them is not allowed.
</p>
<dl compact="compact">
-<dt><code>*</code>
-<span id="index-_002a"></span>
-</dt>
+<dt id='index-_002a'><span><code>*</code><a href='#index-_002a' class='copiable-anchor'> ¶</a></span></dt>
<dd><span id="index-_0024_002a"></span>
<p>($*) Expands to the positional parameters, starting from one.
When the expansion is not within double quotes, each positional parameter
separators.
</p>
</dd>
-<dt><code>@</code>
-<span id="index-_0040"></span>
-</dt>
+<dt id='index-_0040'><span><code>@</code><a href='#index-_0040' class='copiable-anchor'> ¶</a></span></dt>
<dd><span id="index-_0024_0040"></span>
<p>($@) Expands to the positional parameters, starting from one.
In contexts where word splitting is performed, this expands each
expand to nothing (i.e., they are removed).
</p>
</dd>
-<dt><code>#</code>
-<span id="index-_0023"></span>
-</dt>
+<dt id='index-_0023'><span><code>#</code><a href='#index-_0023' class='copiable-anchor'> ¶</a></span></dt>
<dd><span id="index-_0024_0023"></span>
<p>($#) Expands to the number of positional parameters in decimal.
</p>
</dd>
-<dt><code>?</code>
-<span id="index-_003f"></span>
-</dt>
+<dt id='index-_003f'><span><code>?</code><a href='#index-_003f' class='copiable-anchor'> ¶</a></span></dt>
<dd><span id="index-_0024_003f"></span>
<p>($?) Expands to the exit status of the most recently executed foreground
pipeline.
</p>
</dd>
-<dt><code>-</code>
-<span id="index-_002d"></span>
-</dt>
+<dt id='index-_002d'><span><code>-</code><a href='#index-_002d' class='copiable-anchor'> ¶</a></span></dt>
<dd><span id="index-_0024_002d"></span>
<p>($-, a hyphen.) Expands to the current option flags as specified upon
invocation, by the <code>set</code>
(such as the <samp>-i</samp> option).
</p>
</dd>
-<dt><code>$</code>
-<span id="index-_0024"></span>
-</dt>
+<dt id='index-_0024'><span><code>$</code><a href='#index-_0024' class='copiable-anchor'> ¶</a></span></dt>
<dd><span id="index-_0024_0024"></span>
-<p>($$) Expands to the process <small>ID</small> of the shell. In a <code>()</code> subshell, it
+<p>($$) Expands to the process <small>ID</small> of the shell. In a subshell, it
expands to the process <small>ID</small> of the invoking shell, not the subshell.
</p>
</dd>
-<dt><code>!</code>
-<span id="index-_0021-1"></span>
-</dt>
+<dt id='index-_0021-1'><span><code>!</code><a href='#index-_0021-1' class='copiable-anchor'> ¶</a></span></dt>
<dd><span id="index-_0024_0021"></span>
<p>($!) Expands to the process <small>ID</small> of the job most recently placed into the
background, whether executed as an asynchronous command or using
the <code>bg</code> builtin (see <a href="#Job-Control-Builtins">Job Control Builtins</a>).
</p>
</dd>
-<dt><code>0</code>
-<span id="index-0"></span>
-</dt>
+<dt id='index-0'><span><code>0</code><a href='#index-0' class='copiable-anchor'> ¶</a></span></dt>
<dd><span id="index-_00240"></span>
<p>($0) Expands to the name of the shell or shell script. This is set at
shell initialization. If Bash is invoked with a file of commands
</dl>
<hr>
-<span id="Shell-Expansions"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Shell-Expansions">
+<div class="header">
<p>
Next: <a href="#Redirections" accesskey="n" rel="next">Redirections</a>, Previous: <a href="#Shell-Parameters" accesskey="p" rel="prev">Shell Parameters</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</li><li> filename expansion
</li></ul>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Brace-Expansion" accesskey="1">Brace Expansion</a></td><td> </td><td align="left" valign="top">Expansion of expressions within braces.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Tilde-Expansion" accesskey="2">Tilde Expansion</a></td><td> </td><td align="left" valign="top">Expansion of the ~ character.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Shell-Parameter-Expansion" accesskey="3">Shell Parameter Expansion</a></td><td> </td><td align="left" valign="top">How Bash expands variables to their values.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Command-Substitution" accesskey="4">Command Substitution</a></td><td> </td><td align="left" valign="top">Using the output of a command as an argument.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Arithmetic-Expansion" accesskey="5">Arithmetic Expansion</a></td><td> </td><td align="left" valign="top">How to use arithmetic in shell expansions.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Process-Substitution" accesskey="6">Process Substitution</a></td><td> </td><td align="left" valign="top">A way to write and read to and from a
- command.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Word-Splitting" accesskey="7">Word Splitting</a></td><td> </td><td align="left" valign="top">How the results of expansion are split into separate
- arguments.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Filename-Expansion" accesskey="8">Filename Expansion</a></td><td> </td><td align="left" valign="top">A shorthand for specifying filenames matching patterns.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Quote-Removal" accesskey="9">Quote Removal</a></td><td> </td><td align="left" valign="top">How and when quote characters are removed from
- words.
-</td></tr>
-</table>
<p>The order of expansions is:
brace expansion;
and filename expansion.
</p>
<p>On systems that can support it, there is an additional expansion
-available: <var>process substitution</var>.
+available: <em>process substitution</em>.
This is performed at the
same time as tilde, parameter, variable, and arithmetic expansion and
command substitution.
</p>
<p>After these expansions are performed, quote characters present in the
original word are removed unless they have been quoted themselves
-(<var>quote removal</var>).
+(<em>quote removal</em>).
</p>
<p>Only brace expansion, word splitting, and filename expansion
can increase the number of words of the expansion; other expansions
<p>After all expansions, <code>quote removal</code> (see <a href="#Quote-Removal">Quote Removal</a>)
is performed.
</p>
+<ul class="section-toc">
+<li><a href="#Brace-Expansion" accesskey="1">Brace Expansion</a></li>
+<li><a href="#Tilde-Expansion" accesskey="2">Tilde Expansion</a></li>
+<li><a href="#Shell-Parameter-Expansion" accesskey="3">Shell Parameter Expansion</a></li>
+<li><a href="#Command-Substitution" accesskey="4">Command Substitution</a></li>
+<li><a href="#Arithmetic-Expansion" accesskey="5">Arithmetic Expansion</a></li>
+<li><a href="#Process-Substitution" accesskey="6">Process Substitution</a></li>
+<li><a href="#Word-Splitting" accesskey="7">Word Splitting</a></li>
+<li><a href="#Filename-Expansion" accesskey="8">Filename Expansion</a></li>
+<li><a href="#Quote-Removal" accesskey="9">Quote Removal</a></li>
+</ul>
<hr>
-<span id="Brace-Expansion"></span><div class="header">
+<div class="subsection" id="Brace-Expansion">
+<div class="header">
<p>
Next: <a href="#Tilde-Expansion" accesskey="n" rel="next">Tilde Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<p>Brace expansion is a mechanism by which arbitrary strings may be generated.
This mechanism is similar to
-<var>filename expansion</var> (see <a href="#Filename-Expansion">Filename Expansion</a>),
+<em>filename expansion</em> (see <a href="#Filename-Expansion">Filename Expansion</a>),
but the filenames generated need not exist.
Patterns to be brace expanded take the form of an optional <var>preamble</var>,
followed by either a series of comma-separated strings or a sequence expression
</pre></div>
<p>A sequence expression takes the form <code>{<var>x</var>..<var>y</var>[..<var>incr</var>]}</code>,
-where <var>x</var> and <var>y</var> are either integers or single characters,
+where <var>x</var> and <var>y</var> are either integers or letters,
and <var>incr</var>, an optional increment, is an integer.
When integers are supplied, the expression expands to each number between
<var>x</var> and <var>y</var>, inclusive.
When either <var>x</var> or <var>y</var> begins with a zero, the shell
attempts to force all generated terms to contain the same number of digits,
zero-padding where necessary.
-When characters are supplied, the expression expands to each character
+When letters are supplied, the expression expands to each character
lexicographically between <var>x</var> and <var>y</var>, inclusive,
using the default C locale.
-Note that both <var>x</var> and <var>y</var> must be of the same type.
+Note that both <var>x</var> and <var>y</var> must be of the same type
+(integer or letter).
When the increment is supplied, it is used as the difference between
each term. The default increment is 1 or -1 as appropriate.
</p>
</pre></div>
<hr>
-<span id="Tilde-Expansion"></span><div class="header">
+</div>
+<div class="subsection" id="Tilde-Expansion">
+<div class="header">
<p>
Next: <a href="#Shell-Parameter-Expansion" accesskey="n" rel="next">Shell Parameter Expansion</a>, Previous: <a href="#Brace-Expansion" accesskey="p" rel="prev">Brace Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<p>If a word begins with an unquoted tilde character (‘<samp>~</samp>’), all of the
characters up to the first unquoted slash (or all characters,
-if there is no unquoted slash) are considered a <var>tilde-prefix</var>.
+if there is no unquoted slash) are considered a <em>tilde-prefix</em>.
If none of the characters in the tilde-prefix are quoted, the
characters in the tilde-prefix following the tilde are treated as a
-possible <var>login name</var>.
+possible <em>login name</em>.
If this login name is the null string, the tilde is replaced with the
value of the <code>HOME</code> shell variable.
If <code>HOME</code> is unset, the home directory of the user executing the
<p>The following table shows how Bash treats unquoted tilde-prefixes:
</p>
<dl compact="compact">
-<dt><code>~</code></dt>
+<dt><span><code>~</code></span></dt>
<dd><p>The value of <code>$HOME</code>
</p></dd>
-<dt><code>~/foo</code></dt>
+<dt><span><code>~/foo</code></span></dt>
<dd><p><samp>$HOME/foo</samp>
</p>
</dd>
-<dt><code>~fred/foo</code></dt>
+<dt><span><code>~fred/foo</code></span></dt>
<dd><p>The subdirectory <code>foo</code> of the home directory of the user
<code>fred</code>
</p>
</dd>
-<dt><code>~+/foo</code></dt>
+<dt><span><code>~+/foo</code></span></dt>
<dd><p><samp>$PWD/foo</samp>
</p>
</dd>
-<dt><code>~-/foo</code></dt>
+<dt><span><code>~-/foo</code></span></dt>
<dd><p><samp>${OLDPWD-'~-'}/foo</samp>
</p>
</dd>
-<dt><code>~<var>N</var></code></dt>
+<dt><span><code>~<var>N</var></code></span></dt>
<dd><p>The string that would be displayed by ‘<samp>dirs +<var>N</var></samp>’
</p>
</dd>
-<dt><code>~+<var>N</var></code></dt>
+<dt><span><code>~+<var>N</var></code></span></dt>
<dd><p>The string that would be displayed by ‘<samp>dirs +<var>N</var></samp>’
</p>
</dd>
-<dt><code>~-<var>N</var></code></dt>
+<dt><span><code>~-<var>N</var></code></span></dt>
<dd><p>The string that would be displayed by ‘<samp>dirs -<var>N</var></samp>’
</p></dd>
</dl>
<p>Bash also performs tilde expansion on words satisfying the conditions of
variable assignments (see <a href="#Shell-Parameters">Shell Parameters</a>)
when they appear as arguments to simple commands.
-Bash does not do this, except for the <var>declaration</var> commands listed
+Bash does not do this, except for the declaration commands listed
above, when in <small>POSIX</small> mode.
</p>
<hr>
-<span id="Shell-Parameter-Expansion"></span><div class="header">
+</div>
+<div class="subsection" id="Shell-Parameter-Expansion">
+<div class="header">
<p>
Next: <a href="#Command-Substitution" accesskey="n" rel="next">Command Substitution</a>, Previous: <a href="#Tilde-Expansion" accesskey="p" rel="prev">Tilde Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
interpreted as part of its name.
</p>
<p>If the first character of <var>parameter</var> is an exclamation point (!),
-and <var>parameter</var> is not a <var>nameref</var>,
+and <var>parameter</var> is not a nameref,
it introduces a level of indirection.
Bash uses the value formed by expanding the rest of
<var>parameter</var> as the new <var>parameter</var>; this is then
is not null; if the colon is omitted, the operator tests only for existence.
</p>
<dl compact="compact">
-<dt><code>${<var>parameter</var>:-<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>:-<var>word</var>}</code></span></dt>
<dd><p>If <var>parameter</var> is unset or null, the expansion of
<var>word</var> is substituted. Otherwise, the value of
<var>parameter</var> is substituted.
</p>
+<div class="example">
+<pre class="example">$ v=123
+$ echo ${v-unset}
+123
+</pre></div>
+
</dd>
-<dt><code>${<var>parameter</var>:=<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>:=<var>word</var>}</code></span></dt>
<dd><p>If <var>parameter</var>
is unset or null, the expansion of <var>word</var>
is assigned to <var>parameter</var>.
Positional parameters and special parameters may not be assigned to
in this way.
</p>
+<div class="example">
+<pre class="example">$ var=
+$ : ${var:=DEFAULT}
+$ echo $var
+DEFAULT
+</pre></div>
+
</dd>
-<dt><code>${<var>parameter</var>:?<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>:?<var>word</var>}</code></span></dt>
<dd><p>If <var>parameter</var>
is null or unset, the expansion of <var>word</var> (or a message
to that effect if <var>word</var>
is not interactive, exits. Otherwise, the value of <var>parameter</var> is
substituted.
</p>
+<div class="example">
+<pre class="example">$ var=
+$ : ${var:?var is unset or null}
+bash: var: var is unset or null
+</pre></div>
+
</dd>
-<dt><code>${<var>parameter</var>:+<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>:+<var>word</var>}</code></span></dt>
<dd><p>If <var>parameter</var>
is null or unset, nothing is substituted, otherwise the expansion of
<var>word</var> is substituted.
</p>
+<div class="example">
+<pre class="example">$ var=123
+$ echo ${var:+var is set and not null}
+var is set and not null
+</pre></div>
+
</dd>
-<dt><code>${<var>parameter</var>:<var>offset</var>}</code></dt>
-<dt><code>${<var>parameter</var>:<var>offset</var>:<var>length</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>:<var>offset</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>:<var>offset</var>:<var>length</var>}</code></span></dt>
<dd><p>This is referred to as Substring Expansion.
It expands to up to <var>length</var> characters of the value of <var>parameter</var>
starting at the character specified by <var>offset</var>.
-If <var>parameter</var> is ‘<samp>@</samp>’, an indexed array subscripted by
+If <var>parameter</var> is ‘<samp>@</samp>’ or ‘<samp>*</samp>’, an indexed array subscripted by
‘<samp>@</samp>’ or ‘<samp>*</samp>’, or an associative array name, the results differ as
described below.
If <var>length</var> is omitted, it expands to the substring of the value of
$ echo ${array[0]: -7:-2}
bcdef
</pre>
-<p>If <var>parameter</var> is ‘<samp>@</samp>’, the result is <var>length</var> positional
-parameters beginning at <var>offset</var>.
+<p>If <var>parameter</var> is ‘<samp>@</samp>’ or ‘<samp>*</samp>’, the result is <var>length</var>
+positional parameters beginning at <var>offset</var>.
A negative <var>offset</var> is taken relative to one greater than the greatest
positional parameter, so an offset of -1 evaluates to the last positional
parameter.
prefixed to the list.
</p>
</dd>
-<dt><code>${!<var>prefix</var>*}</code></dt>
-<dt><code>${!<var>prefix</var>@}</code></dt>
+<dt><span><code>${!<var>prefix</var>*}</code></span></dt>
+<dt><span><code>${!<var>prefix</var>@}</code></span></dt>
<dd><p>Expands to the names of variables whose names begin with <var>prefix</var>,
separated by the first character of the <code>IFS</code> special variable.
When ‘<samp>@</samp>’ is used and the expansion appears within double quotes, each
variable name expands to a separate word.
</p>
</dd>
-<dt><code>${!<var>name</var>[@]}</code></dt>
-<dt><code>${!<var>name</var>[*]}</code></dt>
+<dt><span><code>${!<var>name</var>[@]}</code></span></dt>
+<dt><span><code>${!<var>name</var>[*]}</code></span></dt>
<dd><p>If <var>name</var> is an array variable, expands to the list of array indices
(keys) assigned in <var>name</var>.
If <var>name</var> is not an array, expands to 0 if <var>name</var> is set and null
key expands to a separate word.
</p>
</dd>
-<dt><code>${#<var>parameter</var>}</code></dt>
+<dt><span><code>${#<var>parameter</var>}</code></span></dt>
<dd><p>The length in characters of the expanded value of <var>parameter</var> is
substituted.
If <var>parameter</var> is ‘<samp>*</samp>’ or ‘<samp>@</samp>’, the value substituted
array, and an index of -1 references the last element.
</p>
</dd>
-<dt><code>${<var>parameter</var>#<var>word</var>}</code></dt>
-<dt><code>${<var>parameter</var>##<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>#<var>word</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>##<var>word</var>}</code></span></dt>
<dd><p>The <var>word</var>
is expanded to produce a pattern and matched according to the rules
described below (see <a href="#Pattern-Matching">Pattern Matching</a>). If the pattern matches
array in turn, and the expansion is the resultant list.
</p>
</dd>
-<dt><code>${<var>parameter</var>%<var>word</var>}</code></dt>
-<dt><code>${<var>parameter</var>%%<var>word</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>%<var>word</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>%%<var>word</var>}</code></span></dt>
<dd><p>The <var>word</var>
is expanded to produce a pattern and matched according to the rules
described below (see <a href="#Pattern-Matching">Pattern Matching</a>).
array in turn, and the expansion is the resultant list.
</p>
</dd>
-<dt><code>${<var>parameter</var>/<var>pattern</var>/<var>string</var>}</code></dt>
-<dd>
-<p>The <var>pattern</var> is expanded to produce a pattern just as in
+<dt><span><code>${<var>parameter</var>/<var>pattern</var>/<var>string</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>//<var>pattern</var>/<var>string</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>/#<var>pattern</var>/<var>string</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>/%<var>pattern</var>/<var>string</var>}</code></span></dt>
+<dd><p>The <var>pattern</var> is expanded to produce a pattern just as in
filename expansion.
<var>Parameter</var> is expanded and the longest match of <var>pattern</var>
against its value is replaced with <var>string</var>.
+<var>string</var> undergoes tilde expansion, parameter and variable expansion,
+arithmetic expansion, command and process substitution, and quote removal.
The match is performed according to the rules described below
(see <a href="#Pattern-Matching">Pattern Matching</a>).
-If <var>pattern</var> begins with ‘<samp>/</samp>’, all matches of <var>pattern</var> are
-replaced with <var>string</var>. Normally only the first match is replaced.
-If <var>pattern</var> begins with ‘<samp>#</samp>’, it must match at the beginning
-of the expanded value of <var>parameter</var>.
-If <var>pattern</var> begins with ‘<samp>%</samp>’, it must match at the end
-of the expanded value of <var>parameter</var>.
-If <var>string</var> is null, matches of <var>pattern</var> are deleted
-and the <code>/</code> following <var>pattern</var> may be omitted.
-If the <code>nocasematch</code> shell option
+</p>
+<p>In the first form above, only the first match is replaced.
+If there are two slashes separating <var>parameter</var> and <var>pattern</var>
+(the second form above), all matches of <var>pattern</var> are
+replaced with <var>string</var>.
+If <var>pattern</var> is preceded by ‘<samp>#</samp>’ (the third form above),
+it must match at the beginning of the expanded value of <var>parameter</var>.
+If <var>pattern</var> is preceded by ‘<samp>%</samp>’ (the fourth form above),
+it must match at the end of the expanded value of <var>parameter</var>.
+If the expansion of <var>string</var> is null,
+matches of <var>pattern</var> are deleted.
+If <var>string</var> is null,
+matches of <var>pattern</var> are deleted
+and the ‘<samp>/</samp>’ following <var>pattern</var> may be omitted.
+</p>
+<p>If the <code>patsub_replacement</code> shell option is enabled using <code>shopt</code>,
+any unquoted instances of ‘<samp>&</samp>’ in <var>string</var> are replaced with the
+matching portion of <var>pattern</var>.
+This is intended to duplicate a common <code>sed</code> idiom.
+</p>
+<p>Quoting any part of <var>string</var> inhibits replacement in the
+expansion of the quoted portion, including replacement strings stored
+in shell variables.
+Backslash will escape ‘<samp>&</samp>’ in <var>string</var>; the backslash is removed
+in order to permit a literal ‘<samp>&</samp>’ in the replacement string.
+Users should take care if <var>string</var> is double-quoted to avoid
+unwanted interactions between the backslash and double-quoting, since
+backslash has special meaning within double quotes.
+Pattern substitution performs the check for unquoted ‘<samp>&</samp>’ after
+expanding <var>string</var>,
+so users should ensure to properly quote any occurrences of ‘<samp>&</samp>’
+they want to be taken literally in the replacement
+and ensure any instances of ‘<samp>&</samp>’ they want to be replaced are unquoted.
+</p>
+<p>For instance,
+</p>
+<div class="example">
+<pre class="example">var=abcdef
+rep='& '
+echo ${var/abc/& }
+echo "${var/abc/& }"
+echo ${var/abc/$rep}
+echo "${var/abc/$rep}"
+</pre></div>
+
+<p>will display four lines of "abc def", while
+</p>
+<div class="example">
+<pre class="example">var=abcdef
+rep='& '
+echo ${var/abc/\& }
+echo "${var/abc/\& }"
+echo ${var/abc/"& "}
+echo ${var/abc/"$rep"}
+</pre></div>
+
+<p>will display four lines of "& def".
+Like the pattern removal operators, double quotes surrounding the
+replacement string quote the expanded characters, while double quotes
+enclosing the entire parameter substitution do not, since
+the expansion is performed in a
+context that doesn’t take any enclosing double quotes into account.
+</p>
+<p>Since backslash can escape ‘<samp>&</samp>’, it can also escape a backslash in
+the replacement string.
+This means that ‘<samp>\\</samp>’ will insert a literal
+backslash into the replacement, so these two <code>echo</code> commands
+</p>
+<div class="example">
+<pre class="example">var=abcdef
+rep='\\&xyz'
+echo ${var/abc/\\&xyz}
+echo ${var/abc/$rep}
+</pre></div>
+
+<p>will both output ‘<samp>\abcxyzdef</samp>’.
+</p>
+<p>It should rarely be necessary to enclose only <var>string</var> in double
+quotes.
+</p>
+<p>If the <code>nocasematch</code> shell option
(see the description of <code>shopt</code> in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
is enabled, the match is performed without regard to the case
of alphabetic characters.
array in turn, and the expansion is the resultant list.
</p>
</dd>
-<dt><code>${<var>parameter</var>^<var>pattern</var>}</code></dt>
-<dt><code>${<var>parameter</var>^^<var>pattern</var>}</code></dt>
-<dt><code>${<var>parameter</var>,<var>pattern</var>}</code></dt>
-<dt><code>${<var>parameter</var>,,<var>pattern</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>^<var>pattern</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>^^<var>pattern</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>,<var>pattern</var>}</code></span></dt>
+<dt><span><code>${<var>parameter</var>,,<var>pattern</var>}</code></span></dt>
<dd><p>This expansion modifies the case of alphabetic characters in <var>parameter</var>.
The <var>pattern</var> is expanded to produce a pattern just as in
filename expansion.
Each character in the expanded value of <var>parameter</var> is tested against
<var>pattern</var>, and, if it matches the pattern, its case is converted.
The pattern should not attempt to match more than one character.
-The ‘<samp>^</samp>’ operator converts lowercase letters matching <var>pattern</var>
+</p>
+<p>The ‘<samp>^</samp>’ operator converts lowercase letters matching <var>pattern</var>
to uppercase; the ‘<samp>,</samp>’ operator converts matching uppercase letters
to lowercase.
The ‘<samp>^^</samp>’ and ‘<samp>,,</samp>’ expansions convert each matched character in the
the first character in the expanded value.
If <var>pattern</var> is omitted, it is treated like a ‘<samp>?</samp>’, which matches
every character.
-If <var>parameter</var> is ‘<samp>@</samp>’ or ‘<samp>*</samp>’,
+</p>
+<p>If <var>parameter</var> is ‘<samp>@</samp>’ or ‘<samp>*</samp>’,
the case modification operation is applied to each positional
parameter in turn, and the expansion is the resultant list.
If <var>parameter</var>
array in turn, and the expansion is the resultant list.
</p>
</dd>
-<dt><code>${<var>parameter</var>@<var>operator</var>}</code></dt>
+<dt><span><code>${<var>parameter</var>@<var>operator</var>}</code></span></dt>
<dd><p>The expansion is either a transformation of the value of <var>parameter</var>
or information about <var>parameter</var> itself, depending on the value of
<var>operator</var>. Each <var>operator</var> is a single letter:
</p>
<dl compact="compact">
-<dt><code>U</code></dt>
+<dt><span><code>U</code></span></dt>
<dd><p>The expansion is a string that is the value of <var>parameter</var> with lowercase
alphabetic characters converted to uppercase.
</p></dd>
-<dt><code>u</code></dt>
+<dt><span><code>u</code></span></dt>
<dd><p>The expansion is a string that is the value of <var>parameter</var> with the first
character converted to uppercase, if it is alphabetic.
</p></dd>
-<dt><code>L</code></dt>
+<dt><span><code>L</code></span></dt>
<dd><p>The expansion is a string that is the value of <var>parameter</var> with uppercase
alphabetic characters converted to lowercase.
</p></dd>
-<dt><code>Q</code></dt>
+<dt><span><code>Q</code></span></dt>
<dd><p>The expansion is a string that is the value of <var>parameter</var> quoted in a
format that can be reused as input.
</p></dd>
-<dt><code>E</code></dt>
+<dt><span><code>E</code></span></dt>
<dd><p>The expansion is a string that is the value of <var>parameter</var> with backslash
escape sequences expanded as with the <code>$'…'</code> quoting mechanism.
</p></dd>
-<dt><code>P</code></dt>
+<dt><span><code>P</code></span></dt>
<dd><p>The expansion is a string that is the result of expanding the value of
<var>parameter</var> as if it were a prompt string (see <a href="#Controlling-the-Prompt">Controlling the Prompt</a>).
</p></dd>
-<dt><code>A</code></dt>
+<dt><span><code>A</code></span></dt>
<dd><p>The expansion is a string in the form of
an assignment statement or <code>declare</code> command that, if
evaluated, will recreate <var>parameter</var> with its attributes and value.
</p></dd>
-<dt><code>K</code></dt>
+<dt><span><code>K</code></span></dt>
<dd><p>Produces a possibly-quoted version of the value of <var>parameter</var>,
except that it prints the values of
indexed and associative arrays as a sequence of quoted key-value pairs
(see <a href="#Arrays">Arrays</a>).
</p></dd>
-<dt><code>a</code></dt>
+<dt><span><code>a</code></span></dt>
<dd><p>The expansion is a string consisting of flag values representing
<var>parameter</var>’s attributes.
</p></dd>
+<dt><span><code>k</code></span></dt>
+<dd><p>Like the ‘<samp>K</samp>’ transformation, but expands the keys and values of
+indexed and associative arrays to separate words after word splitting.
+</p></dd>
</dl>
<p>If <var>parameter</var> is ‘<samp>@</samp>’ or ‘<samp>*</samp>’,
</dl>
<hr>
-<span id="Command-Substitution"></span><div class="header">
+</div>
+<div class="subsection" id="Command-Substitution">
+<div class="header">
<p>
Next: <a href="#Arithmetic-Expansion" accesskey="n" rel="next">Arithmetic Expansion</a>, Previous: <a href="#Shell-Parameter-Expansion" accesskey="p" rel="prev">Shell Parameter Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
filename expansion are not performed on the results.
</p>
<hr>
-<span id="Arithmetic-Expansion"></span><div class="header">
+</div>
+<div class="subsection" id="Arithmetic-Expansion">
+<div class="header">
<p>
Next: <a href="#Process-Substitution" accesskey="n" rel="next">Process Substitution</a>, Previous: <a href="#Command-Substitution" accesskey="p" rel="prev">Command Substitution</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<pre class="example">$(( <var>expression</var> ))
</pre></div>
-<p>The expression is treated as if it were within double quotes, but
-a double quote inside the parentheses is not treated specially.
+<p>The <var>expression</var> undergoes the same expansions
+as if it were within double quotes,
+but double quote characters in <var>expression</var> are not treated specially
+and are removed.
All tokens in the expression undergo parameter and variable expansion,
command substitution, and quote removal.
The result is treated as the arithmetic expression to be evaluated.
failure to the standard error and no substitution occurs.
</p>
<hr>
-<span id="Process-Substitution"></span><div class="header">
+</div>
+<div class="subsection" id="Process-Substitution">
+<div class="header">
<p>
Next: <a href="#Word-Splitting" accesskey="n" rel="next">Word Splitting</a>, Previous: <a href="#Arithmetic-Expansion" accesskey="p" rel="prev">Arithmetic Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
expansion.
</p>
<hr>
-<span id="Word-Splitting"></span><div class="header">
+</div>
+<div class="subsection" id="Word-Splitting">
+<div class="header">
<p>
Next: <a href="#Filename-Expansion" accesskey="n" rel="next">Filename Expansion</a>, Previous: <a href="#Process-Substitution" accesskey="p" rel="prev">Process Substitution</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
is performed.
</p>
<hr>
-<span id="Filename-Expansion"></span><div class="header">
+</div>
+<div class="subsection" id="Filename-Expansion">
+<div class="header">
<p>
Next: <a href="#Quote-Removal" accesskey="n" rel="next">Quote Removal</a>, Previous: <a href="#Word-Splitting" accesskey="p" rel="prev">Word Splitting</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Filename-Expansion-1"></span><h4 class="subsection">3.5.8 Filename Expansion</h4>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Pattern-Matching" accesskey="1">Pattern Matching</a></td><td> </td><td align="left" valign="top">How the shell matches patterns.
-</td></tr>
-</table>
<span id="index-expansion_002c-filename"></span>
<span id="index-expansion_002c-pathname"></span>
<span id="index-filename-expansion"></span>
<p>When a pattern is used for filename expansion, the character ‘<samp>.</samp>’
at the start of a filename or immediately following a slash
must be matched explicitly, unless the shell option <code>dotglob</code> is set.
-The filenames ‘<samp>.</samp>’ and ‘<samp>..</samp>’ must always be matched explicitly,
+In order to match the filenames ‘<samp>.</samp>’ and ‘<samp>..</samp>’,
+the pattern must begin with ‘<samp>.</samp>’ (for example, ‘<samp>.?</samp>’),
even if <code>dotglob</code> is set.
-In other cases, the ‘<samp>.</samp>’ character is not treated specially.
+If the <code>globskipdots</code> shell option is enabled, the filenames
+‘<samp>.</samp>’ and ‘<samp>..</samp>’ are never matched, even if the pattern begins
+with a ‘<samp>.</samp>’.
+When not matching filenames, the ‘<samp>.</samp>’ character is not treated specially.
</p>
<p>When matching a filename, the slash character must always be
matched explicitly by a slash in the pattern, but in other matching
</p>
<p>See the description of <code>shopt</code> in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>,
for a description of the <code>nocaseglob</code>, <code>nullglob</code>,
+<code>globskipdots</code>,
<code>failglob</code>, and <code>dotglob</code> options.
</p>
<p>The <code>GLOBIGNORE</code>
The <code>dotglob</code> option is disabled when <code>GLOBIGNORE</code>
is unset.
</p>
+<ul class="section-toc">
+<li><a href="#Pattern-Matching" accesskey="1">Pattern Matching</a></li>
+</ul>
<hr>
-<span id="Pattern-Matching"></span><div class="header">
+<div class="subsubsection" id="Pattern-Matching">
+<div class="header">
<p>
Up: <a href="#Filename-Expansion" accesskey="u" rel="up">Filename Expansion</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</p>
<p>The special pattern characters have the following meanings:
</p><dl compact="compact">
-<dt><code>*</code></dt>
+<dt><span><code>*</code></span></dt>
<dd><p>Matches any string, including the null string.
When the <code>globstar</code> shell option is enabled, and ‘<samp>*</samp>’ is used in
a filename expansion context, two adjacent ‘<samp>*</samp>’s used as a single
If followed by a ‘<samp>/</samp>’, two adjacent ‘<samp>*</samp>’s will match only
directories and subdirectories.
</p></dd>
-<dt><code>?</code></dt>
+<dt><span><code>?</code></span></dt>
<dd><p>Matches any single character.
</p></dd>
-<dt><code>[…]</code></dt>
+<dt><span><code>[…]</code></span></dt>
<dd><p>Matches any one of the enclosed characters. A pair of characters
separated by a hyphen denotes a <var>range expression</var>;
any character that falls between those two characters, inclusive,
may be matched by including it as the first or last character
in the set. A ‘<samp>]</samp>’ may be matched by including it as the first
character in the set.
-The sorting order of characters in range expressions is determined by
+The sorting order of characters in range expressions,
+and the characters included in the range,
+are determined by
the current locale and the values of the
<code>LC_COLLATE</code> and <code>LC_ALL</code> shell variables, if set.
</p>
<p>For example, in the default C locale, ‘<samp>[a-dx-z]</samp>’ is equivalent to
‘<samp>[abcdxyz]</samp>’. Many locales sort characters in dictionary order, and in
these locales ‘<samp>[a-dx-z]</samp>’ is typically not equivalent to ‘<samp>[abcdxyz]</samp>’;
-it might be equivalent to ‘<samp>[aBbCcDdxXyYz]</samp>’, for example. To obtain
+it might be equivalent to ‘<samp>[aBbCcDdxYyZz]</samp>’, for example. To obtain
the traditional interpretation of ranges in bracket expressions, you can
force the use of the C locale by setting the <code>LC_COLLATE</code> or
<code>LC_ALL</code> environment variable to the value ‘<samp>C</samp>’, or enable the
<code>globasciiranges</code> shell option.
</p>
-<p>Within ‘<samp>[</samp>’ and ‘<samp>]</samp>’, <var>character classes</var> can be specified
+<p>Within ‘<samp>[</samp>’ and ‘<samp>]</samp>’, <em>character classes</em> can be specified
using the syntax
<code>[:</code><var>class</var><code>:]</code>, where <var>class</var> is one of the
following classes defined in the <small>POSIX</small> standard:
The <code>word</code> character class matches letters, digits, and the character
‘<samp>_</samp>’.
</p>
-<p>Within ‘<samp>[</samp>’ and ‘<samp>]</samp>’, an <var>equivalence class</var> can be
+<p>Within ‘<samp>[</samp>’ and ‘<samp>]</samp>’, an <em>equivalence class</em> can be
specified using the syntax <code>[=</code><var>c</var><code>=]</code>, which
matches all characters with the same collation weight (as defined
by the current locale) as the character <var>c</var>.
</dl>
<p>If the <code>extglob</code> shell option is enabled using the <code>shopt</code>
-builtin, several extended pattern matching operators are recognized.
+builtin, the shell recognizes several extended pattern matching operators.
In the following description, a <var>pattern-list</var> is a list of one
or more patterns separated by a ‘<samp>|</samp>’.
+When matching filenames, the <code>dotglob</code> shell option determines
+the set of filenames that are tested, as described above.
Composite patterns may be formed using one or more of the following
sub-patterns:
</p>
<dl compact="compact">
-<dt><code>?(<var>pattern-list</var>)</code></dt>
+<dt><span><code>?(<var>pattern-list</var>)</code></span></dt>
<dd><p>Matches zero or one occurrence of the given patterns.
</p>
</dd>
-<dt><code>*(<var>pattern-list</var>)</code></dt>
+<dt><span><code>*(<var>pattern-list</var>)</code></span></dt>
<dd><p>Matches zero or more occurrences of the given patterns.
</p>
</dd>
-<dt><code>+(<var>pattern-list</var>)</code></dt>
+<dt><span><code>+(<var>pattern-list</var>)</code></span></dt>
<dd><p>Matches one or more occurrences of the given patterns.
</p>
</dd>
-<dt><code>@(<var>pattern-list</var>)</code></dt>
+<dt><span><code>@(<var>pattern-list</var>)</code></span></dt>
<dd><p>Matches one of the given patterns.
</p>
</dd>
-<dt><code>!(<var>pattern-list</var>)</code></dt>
+<dt><span><code>!(<var>pattern-list</var>)</code></span></dt>
<dd><p>Matches anything except one of the given patterns.
</p></dd>
</dl>
+<p>The <code>extglob</code> option changes the behavior of the parser, since the
+parentheses are normally treated as operators with syntactic meaning.
+To ensure that extended matching patterns are parsed correctly, make sure
+that <code>extglob</code> is enabled before parsing constructs containing the
+patterns, including shell functions and command substitutions.
+</p>
+<p>When matching filenames, the <code>dotglob</code> shell option determines
+the set of filenames that are tested:
+when <code>dotglob</code> is enabled, the set of filenames includes all files
+beginning with ‘<samp>.</samp>’, but the filenames
+‘<samp>.</samp>’ and ‘<samp>..</samp>’ must be matched by a
+pattern or sub-pattern that begins with a dot;
+when it is disabled, the set does not
+include any filenames beginning with “.” unless the pattern
+or sub-pattern begins with a ‘<samp>.</samp>’.
+As above, ‘<samp>.</samp>’ only has a special meaning when matching filenames.
+</p>
<p>Complicated extended pattern matching against long strings is slow,
especially when the patterns contain alternations and the strings
contain multiple matches.
strings instead of a single long string, may be faster.
</p>
<hr>
-<span id="Quote-Removal"></span><div class="header">
+</div>
+</div>
+<div class="subsection" id="Quote-Removal">
+<div class="header">
<p>
Previous: <a href="#Filename-Expansion" accesskey="p" rel="prev">Filename Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
result from one of the above expansions are removed.
</p>
<hr>
-<span id="Redirections"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Redirections">
+<div class="header">
<p>
Next: <a href="#Executing-Commands" accesskey="n" rel="next">Executing Commands</a>, Previous: <a href="#Shell-Expansions" accesskey="p" rel="prev">Shell Expansions</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="index-redirection"></span>
<p>Before a command is executed, its input and output
-may be <var>redirected</var>
+may be <em>redirected</em>
using a special notation interpreted by the shell.
-Redirection allows commands’ file handles to be
+<em>Redirection</em> allows commands’ file handles to be
duplicated, opened, closed,
made to refer to different files,
and can change the files the command reads from and writes to.
If {<var>varname</var>} is supplied, the redirection persists beyond
the scope of the command, allowing the shell programmer to manage
the file descriptor’s lifetime manually.
+The <code>varredir_close</code> shell option manages this behavior
+(see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
</p>
<p>In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is
internally with the behavior described below.
</p>
<dl compact="compact">
-<dt><code>/dev/fd/<var>fd</var></code></dt>
+<dt><span><code>/dev/fd/<var>fd</var></code></span></dt>
<dd><p>If <var>fd</var> is a valid integer, file descriptor <var>fd</var> is duplicated.
</p>
</dd>
-<dt><code>/dev/stdin</code></dt>
+<dt><span><code>/dev/stdin</code></span></dt>
<dd><p>File descriptor 0 is duplicated.
</p>
</dd>
-<dt><code>/dev/stdout</code></dt>
+<dt><span><code>/dev/stdout</code></span></dt>
<dd><p>File descriptor 1 is duplicated.
</p>
</dd>
-<dt><code>/dev/stderr</code></dt>
+<dt><span><code>/dev/stderr</code></span></dt>
<dd><p>File descriptor 2 is duplicated.
</p>
</dd>
-<dt><code>/dev/tcp/<var>host</var>/<var>port</var></code></dt>
+<dt><span><code>/dev/tcp/<var>host</var>/<var>port</var></code></span></dt>
<dd><p>If <var>host</var> is a valid hostname or Internet address, and <var>port</var>
is an integer port number or service name, Bash attempts to open
the corresponding TCP socket.
</p>
</dd>
-<dt><code>/dev/udp/<var>host</var>/<var>port</var></code></dt>
+<dt><span><code>/dev/udp/<var>host</var>/<var>port</var></code></span></dt>
<dd><p>If <var>host</var> is a valid hostname or Internet address, and <var>port</var>
is an integer port number or service name, Bash attempts to open
the corresponding UDP socket.
care, as they may conflict with file descriptors the shell uses
internally.
</p>
-<span id="Redirecting-Input"></span><h4 class="subsection">3.6.1 Redirecting Input</h4>
+<ul class="section-toc">
+<li><a href="#Redirecting-Input" accesskey="1">Redirecting Input</a></li>
+<li><a href="#Redirecting-Output" accesskey="2">Redirecting Output</a></li>
+<li><a href="#Appending-Redirected-Output" accesskey="3">Appending Redirected Output</a></li>
+<li><a href="#Redirecting-Standard-Output-and-Standard-Error" accesskey="4">Redirecting Standard Output and Standard Error</a></li>
+<li><a href="#Appending-Standard-Output-and-Standard-Error" accesskey="5">Appending Standard Output and Standard Error</a></li>
+<li><a href="#Here-Documents" accesskey="6">Here Documents</a></li>
+<li><a href="#Here-Strings" accesskey="7">Here Strings</a></li>
+<li><a href="#Duplicating-File-Descriptors" accesskey="8">Duplicating File Descriptors</a></li>
+<li><a href="#Moving-File-Descriptors" accesskey="9">Moving File Descriptors</a></li>
+<li><a href="#Opening-File-Descriptors-for-Reading-and-Writing">Opening File Descriptors for Reading and Writing</a></li>
+</ul>
+<div class="subsection" id="Redirecting-Input">
+<h4 class="subsection">3.6.1 Redirecting Input</h4>
<p>Redirection of input causes the file whose name results from
the expansion of <var>word</var>
to be opened for reading on file descriptor <code>n</code>,
<pre class="example">[<var>n</var>]<<var>word</var>
</pre></div>
-<span id="Redirecting-Output"></span><h4 class="subsection">3.6.2 Redirecting Output</h4>
+</div>
+<div class="subsection" id="Redirecting-Output">
+<h4 class="subsection">3.6.2 Redirecting Output</h4>
<p>Redirection of output causes the file whose name results from
the expansion of <var>word</var>
to be opened for writing on file descriptor <var>n</var>,
‘<samp>></samp>’ and the <code>noclobber</code> option is not enabled, the redirection
is attempted even if the file named by <var>word</var> exists.
</p>
-<span id="Appending-Redirected-Output"></span><h4 class="subsection">3.6.3 Appending Redirected Output</h4>
+</div>
+<div class="subsection" id="Appending-Redirected-Output">
+<h4 class="subsection">3.6.3 Appending Redirected Output</h4>
<p>Redirection of output in this fashion
causes the file whose name results from
the expansion of <var>word</var>
<pre class="example">[<var>n</var>]>><var>word</var>
</pre></div>
-<span id="Redirecting-Standard-Output-and-Standard-Error"></span><h4 class="subsection">3.6.4 Redirecting Standard Output and Standard Error</h4>
+</div>
+<div class="subsection" id="Redirecting-Standard-Output-and-Standard-Error">
+<h4 class="subsection">3.6.4 Redirecting Standard Output and Standard Error</h4>
<p>This construct allows both the
standard output (file descriptor 1) and
the standard error output (file descriptor 2)
‘<samp>-</samp>’. If it does, other redirection operators apply
(see Duplicating File Descriptors below) for compatibility reasons.
</p>
-<span id="Appending-Standard-Output-and-Standard-Error"></span><h4 class="subsection">3.6.5 Appending Standard Output and Standard Error</h4>
+</div>
+<div class="subsection" id="Appending-Standard-Output-and-Standard-Error">
+<h4 class="subsection">3.6.5 Appending Standard Output and Standard Error</h4>
<p>This construct allows both the
standard output (file descriptor 1) and
the standard error output (file descriptor 2)
</pre></div>
<p>(see Duplicating File Descriptors below).
</p>
-<span id="Here-Documents"></span><h4 class="subsection">3.6.6 Here Documents</h4>
+</div>
+<div class="subsection" id="Here-Documents">
+<h4 class="subsection">3.6.6 Here Documents</h4>
<p>This type of redirection instructs the shell to read input from the
current source until a line containing only <var>word</var>
(with no trailing blanks) is seen. All of
This allows here-documents within shell scripts to be indented in a
natural fashion.
</p>
-<span id="Here-Strings"></span><h4 class="subsection">3.6.7 Here Strings</h4>
+</div>
+<div class="subsection" id="Here-Strings">
+<h4 class="subsection">3.6.7 Here Strings</h4>
<p>A variant of here documents, the format is:
</p><div class="example">
<pre class="example">[<var>n</var>]<<< <var>word</var>
to the command on its
standard input (or file descriptor <var>n</var> if <var>n</var> is specified).
</p>
-<span id="Duplicating-File-Descriptors"></span><h4 class="subsection">3.6.8 Duplicating File Descriptors</h4>
+</div>
+<div class="subsection" id="Duplicating-File-Descriptors">
+<h4 class="subsection">3.6.8 Duplicating File Descriptors</h4>
<p>The redirection operator
</p><div class="example">
<pre class="example">[<var>n</var>]<&<var>word</var>
expand to one or more digits or ‘<samp>-</samp>’, the standard output and standard
error are redirected as described previously.
</p>
-<span id="Moving-File-Descriptors"></span><h4 class="subsection">3.6.9 Moving File Descriptors</h4>
+</div>
+<div class="subsection" id="Moving-File-Descriptors">
+<h4 class="subsection">3.6.9 Moving File Descriptors</h4>
<p>The redirection operator
</p><div class="example">
<pre class="example">[<var>n</var>]<&<var>digit</var>-
<p>moves the file descriptor <var>digit</var> to file descriptor <var>n</var>,
or the standard output (file descriptor 1) if <var>n</var> is not specified.
</p>
-<span id="Opening-File-Descriptors-for-Reading-and-Writing"></span><h4 class="subsection">3.6.10 Opening File Descriptors for Reading and Writing</h4>
+</div>
+<div class="subsection" id="Opening-File-Descriptors-for-Reading-and-Writing">
+<h4 class="subsection">3.6.10 Opening File Descriptors for Reading and Writing</h4>
<p>The redirection operator
</p><div class="example">
<pre class="example">[<var>n</var>]<><var>word</var>
is not specified. If the file does not exist, it is created.
</p>
<hr>
-<span id="Executing-Commands"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Executing-Commands">
+<div class="header">
<p>
Next: <a href="#Shell-Scripts" accesskey="n" rel="next">Shell Scripts</a>, Previous: <a href="#Redirections" accesskey="p" rel="prev">Redirections</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Executing-Commands-1"></span><h3 class="section">3.7 Executing Commands</h3>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Simple-Command-Expansion" accesskey="1">Simple Command Expansion</a></td><td> </td><td align="left" valign="top">How Bash expands simple commands before
- executing them.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Command-Search-and-Execution" accesskey="2">Command Search and Execution</a></td><td> </td><td align="left" valign="top">How Bash finds commands and runs them.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Command-Execution-Environment" accesskey="3">Command Execution Environment</a></td><td> </td><td align="left" valign="top">The environment in which Bash
- executes commands that are not
- shell builtins.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Environment" accesskey="4">Environment</a></td><td> </td><td align="left" valign="top">The environment given to a command.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Exit-Status" accesskey="5">Exit Status</a></td><td> </td><td align="left" valign="top">The status returned by commands and how Bash
- interprets it.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Signals" accesskey="6">Signals</a></td><td> </td><td align="left" valign="top">What happens when Bash or a command it runs
- receives a signal.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Simple-Command-Expansion" accesskey="1">Simple Command Expansion</a></li>
+<li><a href="#Command-Search-and-Execution" accesskey="2">Command Search and Execution</a></li>
+<li><a href="#Command-Execution-Environment" accesskey="3">Command Execution Environment</a></li>
+<li><a href="#Environment" accesskey="4">Environment</a></li>
+<li><a href="#Exit-Status" accesskey="5">Exit Status</a></li>
+<li><a href="#Signals" accesskey="6">Signals</a></li>
+</ul>
<hr>
-<span id="Simple-Command-Expansion"></span><div class="header">
+<div class="subsection" id="Simple-Command-Expansion">
+<div class="header">
<p>
Next: <a href="#Command-Search-and-Execution" accesskey="n" rel="next">Command Search and Execution</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</li></ol>
<p>If no command name results, the variable assignments affect the current
-shell environment. Otherwise, the variables are added to the environment
+shell environment.
+In the case of such a command (one that consists only of assignment
+statements and redirections), assignment statements are performed before
+redirections.
+Otherwise, the variables are added to the environment
of the executed command and do not affect the current shell environment.
If any of the assignments attempts to assign a value to a readonly variable,
an error occurs, and the command exits with a non-zero status.
were no command substitutions, the command exits with a status of zero.
</p>
<hr>
-<span id="Command-Search-and-Execution"></span><div class="header">
+</div>
+<div class="subsection" id="Command-Search-and-Execution">
+<div class="header">
<p>
Next: <a href="#Command-Execution-Environment" accesskey="n" rel="next">Command Execution Environment</a>, Previous: <a href="#Simple-Command-Expansion" accesskey="p" rel="prev">Simple Command Expansion</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</li><li> If this execution fails because the file is not in executable
format, and the file is not a directory, it is assumed to be a
-<var>shell script</var> and the shell executes it as described in
+<em>shell script</em> and the shell executes it as described in
<a href="#Shell-Scripts">Shell Scripts</a>.
</li><li> If the command was not begun asynchronously, the shell waits for
</li></ol>
<hr>
-<span id="Command-Execution-Environment"></span><div class="header">
+</div>
+<div class="subsection" id="Command-Execution-Environment">
+<div class="header">
<p>
Next: <a href="#Environment" accesskey="n" rel="next">Environment</a>, Previous: <a href="#Command-Search-and-Execution" accesskey="p" rel="prev">Command Search and Execution</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Command-Execution-Environment-1"></span><h4 class="subsection">3.7.3 Command Execution Environment</h4>
<span id="index-execution-environment"></span>
-<p>The shell has an <var>execution environment</var>, which consists of the
+<p>The shell has an <em>execution environment</em>, which consists of the
following:
</p>
<ul>
</li><li> shell aliases defined with <code>alias</code> (see <a href="#Aliases">Aliases</a>)
</li><li> various process <small>ID</small>s, including those of background jobs
-(see <a href="#Lists">Lists</a>), the value of <code>$$</code>, and the value of
+(see <a href="#Lists">Lists of Commands</a>), the value of <code>$$</code>, and the value of
<code>$PPID</code>
</li></ul>
<p>A command invoked in this separate environment cannot affect the
shell’s execution environment.
</p>
+<p>A <em>subshell</em> is a copy of the shell process.
+</p>
<p>Command substitution, commands grouped with parentheses,
and asynchronous commands are invoked in a
subshell environment that is a duplicate of the shell environment,
shell as modified by redirections.
</p>
<hr>
-<span id="Environment"></span><div class="header">
+</div>
+<div class="subsection" id="Environment">
+<div class="header">
<p>
Next: <a href="#Exit-Status" accesskey="n" rel="next">Exit Status</a>, Previous: <a href="#Command-Execution-Environment" accesskey="p" rel="prev">Command Execution Environment</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="index-environment"></span>
<p>When a program is invoked it is given an array of strings
-called the <var>environment</var>.
+called the <em>environment</em>.
This is a list of name-value pairs, of the form <code>name=value</code>.
</p>
<p>Bash provides several ways to manipulate the environment.
On invocation, the shell scans its own environment and
creates a parameter for each name found, automatically marking
-it for <var>export</var>
+it for <code>export</code>
to child processes. Executed commands inherit the environment.
The <code>export</code> and ‘<samp>declare -x</samp>’
commands allow parameters and functions to be added to and
command in its environment.
</p>
<hr>
-<span id="Exit-Status"></span><div class="header">
+</div>
+<div class="subsection" id="Exit-Status">
+<div class="header">
<p>
Next: <a href="#Signals" accesskey="n" rel="next">Signals</a>, Previous: <a href="#Environment" accesskey="p" rel="prev">Environment</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="index-exit-status-1"></span>
<p>The exit status of an executed command is the value returned by the
-<var>waitpid</var> system call or equivalent function. Exit statuses
+<code>waitpid</code> system call or equivalent function. Exit statuses
fall between 0 and 255, though, as explained below, the shell may
use values above 125 specially. Exit statuses from shell builtins and
compound commands are also limited to this range. Under certain
</p>
<p>The exit status is used by the Bash conditional commands
(see <a href="#Conditional-Constructs">Conditional Constructs</a>) and some of the list
-constructs (see <a href="#Lists">Lists</a>).
+constructs (see <a href="#Lists">Lists of Commands</a>).
</p>
<p>All of the Bash builtins return an exit status of zero if they succeed
and a non-zero status on failure, so they may be used by the
All builtins return an exit status of 2 to indicate incorrect usage,
generally invalid options or missing arguments.
</p>
+<p>The exit status of the last command is available in the special
+parameter $? (see <a href="#Special-Parameters">Special Parameters</a>).
+</p>
<hr>
-<span id="Signals"></span><div class="header">
+</div>
+<div class="subsection" id="Signals">
+<div class="header">
<p>
Previous: <a href="#Exit-Status" accesskey="p" rel="prev">Exit Status</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
immediately with an exit status greater than 128, immediately after
which the trap is executed.
</p>
+<p>When job control is not enabled, and Bash is waiting for a foreground
+command to complete, the shell receives keyboard-generated signals
+such as <code>SIGINT</code> (usually generated by ‘<samp>^C</samp>’) that users
+commonly intend to send to that command.
+This happens because the shell and the command are in the same process
+group as the terminal, and ‘<samp>^C</samp>’ sends <code>SIGINT</code> to all processes
+in that process group.
+See <a href="#Job-Control">Job Control</a>, for a more in-depth discussion of process groups.
+</p>
+<p>When Bash is running without job control enabled and receives <code>SIGINT</code>
+while waiting for a foreground command, it waits until that foreground
+command terminates and then decides what to do about the <code>SIGINT</code>:
+</p>
+<ol>
+<li> If the command terminates due to the <code>SIGINT</code>, Bash concludes
+that the user meant to end the entire script, and acts on the
+<code>SIGINT</code> (e.g., by running a <code>SIGINT</code> trap or exiting itself);
+
+</li><li> If the pipeline does not terminate due to <code>SIGINT</code>, the program
+handled the <code>SIGINT</code> itself and did not treat it as a fatal signal.
+In that case, Bash does not treat <code>SIGINT</code> as a fatal signal,
+either, instead assuming that the <code>SIGINT</code> was used as part of the
+program’s normal operation (e.g., <code>emacs</code> uses it to abort editing
+commands) or deliberately discarded. However, Bash will run any
+trap set on <code>SIGINT</code>, as it does with any other trapped signal it
+receives while it is waiting for the foreground command to
+complete, for compatibility.
+</li></ol>
+
<hr>
-<span id="Shell-Scripts"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Shell-Scripts">
+<div class="header">
<p>
Previous: <a href="#Executing-Commands" accesskey="p" rel="prev">Executing Commands</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</p>
<p>A shell script may be made executable by using the <code>chmod</code> command
to turn on the execute bit. When Bash finds such a file while
-searching the <code>$PATH</code> for a command, it spawns a subshell to
-execute it. In other words, executing
+searching the <code>$PATH</code> for a command, it creates a
+new instance of itself
+to execute it.
+In other words, executing
</p><div class="example">
<pre class="example">filename <var>arguments</var>
</pre></div>
in <code>$PATH</code>.
</p>
<hr>
-<span id="Shell-Builtin-Commands"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Shell-Builtin-Commands">
+<div class="header">
<p>
-Next: <a href="#Shell-Variables" accesskey="n" rel="next">Shell Variables</a>, Previous: <a href="#Basic-Shell-Features" accesskey="p" rel="prev">Basic Shell Features</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Shell-Variables" accesskey="n" rel="next">Shell Variables</a>, Previous: <a href="#Basic-Shell-Features" accesskey="p" rel="prev">Basic Shell Features</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Shell-Builtin-Commands-1"></span><h2 class="chapter">4 Shell Builtin Commands</h2>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Bourne-Shell-Builtins" accesskey="1">Bourne Shell Builtins</a></td><td> </td><td align="left" valign="top">Builtin commands inherited from the Bourne
- Shell.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Bash-Builtins" accesskey="2">Bash Builtins</a></td><td> </td><td align="left" valign="top">Table of builtins specific to Bash.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Modifying-Shell-Behavior" accesskey="3">Modifying Shell Behavior</a></td><td> </td><td align="left" valign="top">Builtins to modify shell attributes and
- optional behavior.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Special-Builtins" accesskey="4">Special Builtins</a></td><td> </td><td align="left" valign="top">Builtin commands classified specially by
- POSIX.
-</td></tr>
-</table>
<p>Builtin commands are contained within the shell itself.
When the name of a builtin command is used as the first word of
options interpret arguments beginning with ‘<samp>-</samp>’ as invalid options and
require ‘<samp>--</samp>’ to prevent this interpretation.
</p>
+<ul class="section-toc">
+<li><a href="#Bourne-Shell-Builtins" accesskey="1">Bourne Shell Builtins</a></li>
+<li><a href="#Bash-Builtins" accesskey="2">Bash Builtin Commands</a></li>
+<li><a href="#Modifying-Shell-Behavior" accesskey="3">Modifying Shell Behavior</a></li>
+<li><a href="#Special-Builtins" accesskey="4">Special Builtins</a></li>
+</ul>
<hr>
-<span id="Bourne-Shell-Builtins"></span><div class="header">
+<div class="section" id="Bourne-Shell-Builtins">
+<div class="header">
<p>
-Next: <a href="#Bash-Builtins" accesskey="n" rel="next">Bash Builtins</a>, Up: <a href="#Shell-Builtin-Commands" accesskey="u" rel="up">Shell Builtin Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Bash-Builtins" accesskey="n" rel="next">Bash Builtin Commands</a>, Up: <a href="#Shell-Builtin-Commands" accesskey="u" rel="up">Shell Builtin Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Bourne-Shell-Builtins-1"></span><h3 class="section">4.1 Bourne Shell Builtins</h3>
These commands are implemented as specified by the <small>POSIX</small> standard.
</p>
<dl compact="compact">
-<dt><code>: <span class="roman">(a colon)</span></code></dt>
-<dd><span id="index-_003a"></span>
-<div class="example">
+<dt id='index-_003a'><span><code>: <span class="roman">(a colon)</span></code><a href='#index-_003a' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">: [<var>arguments</var>]
</pre></div>
The return status is zero.
</p>
</dd>
-<dt><code>. <span class="roman">(a period)</span></code></dt>
-<dd><span id="index-_002e"></span>
-<div class="example">
+<dt id='index-_002e'><span><code>. <span class="roman">(a period)</span></code><a href='#index-_002e' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">. <var>filename</var> [<var>arguments</var>]
</pre></div>
<p>Read and execute commands from the <var>filename</var> argument in the
current shell context. If <var>filename</var> does not contain a slash,
-the <code>PATH</code> variable is used to find <var>filename</var>.
-When Bash is not in <small>POSIX</small> mode, the current directory is searched
+the <code>PATH</code> variable is used to find <var>filename</var>,
+but <var>filename</var> does not need to be executable.
+When Bash is not in <small>POSIX</small> mode, it searches the current directory
if <var>filename</var> is not found in <code>$PATH</code>.
If any <var>arguments</var> are supplied, they become the positional
parameters when <var>filename</var> is executed. Otherwise the positional
parameters are unchanged.
-If the <samp>-T</samp> option is enabled, <code>source</code> inherits any trap on
+If the <samp>-T</samp> option is enabled, <code>.</code> inherits any trap on
<code>DEBUG</code>; if it is not, any <code>DEBUG</code> trap string is saved and
-restored around the call to <code>source</code>, and <code>source</code> unsets the
+restored around the call to <code>.</code>, and <code>.</code> unsets the
<code>DEBUG</code> trap while it executes.
If <samp>-T</samp> is not set, and the sourced file changes
-the <code>DEBUG</code> trap, the new value is retained when <code>source</code> completes.
+the <code>DEBUG</code> trap, the new value is retained when <code>.</code> completes.
The return status is the exit status of the last command executed, or
zero if no commands are executed. If <var>filename</var> is not found, or
cannot be read, the return status is non-zero.
This builtin is equivalent to <code>source</code>.
</p>
</dd>
-<dt><code>break</code></dt>
-<dd><span id="index-break"></span>
-<div class="example">
+<dt id='index-break'><span><code>break</code><a href='#index-break' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">break [<var>n</var>]
</pre></div>
The return status is zero unless <var>n</var> is not greater than or equal to 1.
</p>
</dd>
-<dt><code>cd</code></dt>
-<dd><span id="index-cd"></span>
-<div class="example">
+<dt id='index-cd'><span><code>cd</code><a href='#index-cd' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">cd [-L|[-P [-e]] [-@] [<var>directory</var>]
</pre></div>
<p>Change the current working directory to <var>directory</var>.
If <var>directory</var> is not supplied, the value of the <code>HOME</code>
shell variable is used.
-Any additional arguments following <var>directory</var> are ignored.
If the shell variable
<code>CDPATH</code> exists, it is used as a search path:
each directory name in <code>CDPATH</code> is searched for
successful, the absolute pathname of the new working directory is
written to the standard output.
</p>
+<p>If the directory change is successful, <code>cd</code> sets the value of the
+<code>PWD</code> environment variable to the new directory name, and sets the
+<code>OLDPWD</code> environment variable to the value of the current working
+directory before the change.
+</p>
<p>The return status is zero if the directory is successfully changed,
non-zero otherwise.
</p>
</dd>
-<dt><code>continue</code></dt>
-<dd><span id="index-continue"></span>
-<div class="example">
+<dt id='index-continue'><span><code>continue</code><a href='#index-continue' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">continue [<var>n</var>]
</pre></div>
The return status is zero unless <var>n</var> is not greater than or equal to 1.
</p>
</dd>
-<dt><code>eval</code></dt>
-<dd><span id="index-eval"></span>
-<div class="example">
+<dt id='index-eval'><span><code>eval</code><a href='#index-eval' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">eval [<var>arguments</var>]
</pre></div>
zero.
</p>
</dd>
-<dt><code>exec</code></dt>
-<dd><span id="index-exec"></span>
-<div class="example">
+<dt id='index-exec'><span><code>exec</code><a href='#index-exec' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">exec [-cl] [-a <var>name</var>] [<var>command</var> [<var>arguments</var>]]
</pre></div>
return status is zero; otherwise the return status is non-zero.
</p>
</dd>
-<dt><code>exit</code></dt>
-<dd><span id="index-exit"></span>
-<div class="example">
+<dt id='index-exit'><span><code>exit</code><a href='#index-exit' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">exit [<var>n</var>]
</pre></div>
Any trap on <code>EXIT</code> is executed before the shell terminates.
</p>
</dd>
-<dt><code>export</code></dt>
-<dd><span id="index-export"></span>
-<div class="example">
+<dt id='index-export'><span><code>export</code><a href='#index-export' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">export [-fn] [-p] [<var>name</var>[=<var>value</var>]]
</pre></div>
in the environment. If the <samp>-f</samp> option is supplied, the <var>name</var>s
refer to shell functions; otherwise the names refer to shell variables.
The <samp>-n</samp> option means to no longer mark each <var>name</var> for export.
-If no <var>names</var> are supplied, or if the <samp>-p</samp> option is given, a
+If no <var>name</var>s are supplied, or if the <samp>-p</samp> option is given, a
list of names of all exported variables is displayed.
The <samp>-p</samp> option displays output in a form that may be reused as input.
If a variable name is followed by =<var>value</var>, the value of
with a name that is not a shell function.
</p>
</dd>
-<dt><code>getopts</code></dt>
-<dd><span id="index-getopts"></span>
-<div class="example">
+<dt id='index-getopts'><span><code>getopts</code><a href='#index-getopts' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">getopts <var>optstring</var> <var>name</var> [<var>arg</var> …]
</pre></div>
<var>name</var> and <code>OPTARG</code> is set to the option character found.
</p>
</dd>
-<dt><code>hash</code></dt>
-<dd><span id="index-hash"></span>
-<div class="example">
+<dt id='index-hash'><span><code>hash</code><a href='#index-hash' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">hash [-r] [-p <var>filename</var>] [-dt] [<var>name</var>]
</pre></div>
option is supplied.
</p>
</dd>
-<dt><code>pwd</code></dt>
-<dd><span id="index-pwd"></span>
-<div class="example">
+<dt id='index-pwd'><span><code>pwd</code><a href='#index-pwd' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">pwd [-LP]
</pre></div>
is supplied.
</p>
</dd>
-<dt><code>readonly</code></dt>
-<dd><span id="index-readonly"></span>
-<div class="example">
+<dt id='index-readonly'><span><code>readonly</code><a href='#index-readonly' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">readonly [-aAf] [-p] [<var>name</var>[=<var>value</var>]] …
</pre></div>
or the <samp>-f</samp> option is supplied with a name that is not a shell function.
</p>
</dd>
-<dt><code>return</code></dt>
-<dd><span id="index-return"></span>
-<div class="example">
+<dt id='index-return'><span><code>return</code><a href='#index-return' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">return [<var>n</var>]
</pre></div>
and not during the execution of a script by <code>.</code> or <code>source</code>.
</p>
</dd>
-<dt><code>shift</code></dt>
-<dd><span id="index-shift"></span>
-<div class="example">
+<dt id='index-shift'><span><code>shift</code><a href='#index-shift' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">shift [<var>n</var>]
</pre></div>
less than zero, non-zero otherwise.
</p>
</dd>
-<dt><code>test</code></dt>
-<dt><code>[</code></dt>
-<dd><span id="index-test"></span>
-<span id="index-_005b"></span>
+<dt id='index-test'><span><code>test</code><a href='#index-test' class='copiable-anchor'> ¶</a></span></dt>
+<dt><span><code>[</code></span></dt>
+<dd><span id="index-_005b"></span>
<div class="example">
<pre class="example">test <var>expr</var>
</pre></div>
Operator precedence is used when there are five or more arguments.
</p>
<dl compact="compact">
-<dt><code>! <var>expr</var></code></dt>
+<dt><span><code>! <var>expr</var></code></span></dt>
<dd><p>True if <var>expr</var> is false.
</p>
</dd>
-<dt><code>( <var>expr</var> )</code></dt>
+<dt><span><code>( <var>expr</var> )</code></span></dt>
<dd><p>Returns the value of <var>expr</var>.
This may be used to override the normal precedence of operators.
</p>
</dd>
-<dt><code><var>expr1</var> -a <var>expr2</var></code></dt>
+<dt><span><code><var>expr1</var> -a <var>expr2</var></code></span></dt>
<dd><p>True if both <var>expr1</var> and <var>expr2</var> are true.
</p>
</dd>
-<dt><code><var>expr1</var> -o <var>expr2</var></code></dt>
+<dt><span><code><var>expr1</var> -o <var>expr2</var></code></span></dt>
<dd><p>True if either <var>expr1</var> or <var>expr2</var> is true.
</p></dd>
</dl>
expressions using a set of rules based on the number of arguments.
</p>
<dl compact="compact">
-<dt>0 arguments</dt>
+<dt><span>0 arguments</span></dt>
<dd><p>The expression is false.
</p>
</dd>
-<dt>1 argument</dt>
+<dt><span>1 argument</span></dt>
<dd><p>The expression is true if, and only if, the argument is not null.
</p>
</dd>
-<dt>2 arguments</dt>
+<dt><span>2 arguments</span></dt>
<dd><p>If the first argument is ‘<samp>!</samp>’, the expression is true if and
only if the second argument is null.
If the first argument is one of the unary conditional operators
false.
</p>
</dd>
-<dt>3 arguments</dt>
+<dt><span>3 arguments</span></dt>
<dd><p>The following conditions are applied in the order listed.
</p>
<ol>
</li></ol>
</dd>
-<dt>4 arguments</dt>
-<dd><p>If the first argument is ‘<samp>!</samp>’, the result is the negation of
+<dt><span>4 arguments</span></dt>
+<dd><p>The following conditions are applied in the order listed.
+</p>
+<ol>
+<li> If the first argument is ‘<samp>!</samp>’, the result is the negation of
the three-argument expression composed of the remaining arguments.
-Otherwise, the expression is parsed and evaluated according to
+</li><li> If the first argument is exactly ‘<samp>(</samp>’ and the fourth argument is
+exactly ‘<samp>)</samp>’, the result is the two-argument test of the second
+and third arguments.
+</li><li> Otherwise, the expression is parsed and evaluated according to
precedence using the rules listed above.
-</p>
+</li></ol>
+
</dd>
-<dt>5 or more arguments</dt>
+<dt><span>5 or more arguments</span></dt>
<dd><p>The expression is parsed and evaluated according to precedence
using the rules listed above.
</p></dd>
operators sort lexicographically using ASCII ordering.
</p>
</dd>
-<dt><code>times</code></dt>
-<dd><span id="index-times"></span>
-<div class="example">
+<dt id='index-times'><span><code>times</code><a href='#index-times' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">times
</pre></div>
The return status is zero.
</p>
</dd>
-<dt><code>trap</code></dt>
-<dd><span id="index-trap"></span>
-<div class="example">
+<dt id='index-trap'><span><code>trap</code><a href='#index-trap' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">trap [-lp] [<var>arg</var>] [<var>sigspec</var> …]
</pre></div>
valid signal.
</p>
</dd>
-<dt><code>umask</code></dt>
-<dd><span id="index-umask"></span>
-<div class="example">
+<dt id='index-umask'><span><code>umask</code><a href='#index-umask' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">umask [-p] [-S] [<var>mode</var>]
</pre></div>
results in permissions of <code>755</code>.
</p>
</dd>
-<dt><code>unset</code></dt>
-<dd><span id="index-unset"></span>
-<div class="example">
+<dt id='index-unset'><span><code>unset</code><a href='#index-unset' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">unset [-fnv] [<var>name</var>]
</pre></div>
If the <samp>-f</samp> option is given, the <var>name</var>s refer to shell
functions, and the function definition is removed.
If the <samp>-n</samp> option is supplied, and <var>name</var> is a variable with
-the <var>nameref</var> attribute, <var>name</var> will be unset rather than the
+the <code>nameref</code> attribute, <var>name</var> will be unset rather than the
variable it references.
<samp>-n</samp> has no effect if the <samp>-f</samp> option is supplied.
If no options are supplied, each <var>name</var> refers to a variable; if
Readonly variables and functions may not be unset.
Some shell variables lose their special behavior if they are unset; such
behavior is noted in the description of the individual variables.
-The return status is zero unless a <var>name</var> is readonly.
+The return status is zero unless a <var>name</var> is readonly or may not be unset.
</p></dd>
</dl>
<hr>
-<span id="Bash-Builtins"></span><div class="header">
+</div>
+<div class="section" id="Bash-Builtins">
+<div class="header">
<p>
Next: <a href="#Modifying-Shell-Behavior" accesskey="n" rel="next">Modifying Shell Behavior</a>, Previous: <a href="#Bourne-Shell-Builtins" accesskey="p" rel="prev">Bourne Shell Builtins</a>, Up: <a href="#Shell-Builtin-Commands" accesskey="u" rel="up">Shell Builtin Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
Some of these commands are specified in the <small>POSIX</small> standard.
</p>
<dl compact="compact">
-<dt><code>alias</code></dt>
-<dd><span id="index-alias"></span>
-<div class="example">
+<dt id='index-alias'><span><code>alias</code><a href='#index-alias' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">alias [-p] [<var>name</var>[=<var>value</var>] …]
</pre></div>
Aliases are described in <a href="#Aliases">Aliases</a>.
</p>
</dd>
-<dt><code>bind</code></dt>
-<dd><span id="index-bind"></span>
-<div class="example">
+<dt id='index-bind'><span><code>bind</code><a href='#index-bind' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">bind [-m <var>keymap</var>] [-lpsvPSVX]
bind [-m <var>keymap</var>] [-q <var>function</var>] [-u <var>function</var>] [-r <var>keyseq</var>]
bind [-m <var>keymap</var>] -f <var>filename</var>
bind [-m <var>keymap</var>] -x <var>keyseq:shell-command</var>
bind [-m <var>keymap</var>] <var>keyseq:function-name</var>
bind [-m <var>keymap</var>] <var>keyseq:readline-command</var>
+bind <var>readline-command-line</var>
</pre></div>
<p>Display current Readline (see <a href="#Command-Line-Editing">Command Line Editing</a>)
<p>Options, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-m <var>keymap</var></code></dt>
+<dt><span><code>-m <var>keymap</var></code></span></dt>
<dd><p>Use <var>keymap</var> as the keymap to be affected by
the subsequent bindings. Acceptable <var>keymap</var>
names are
synonym); <code>emacs</code> is equivalent to <code>emacs-standard</code>.
</p>
</dd>
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>List the names of all Readline functions.
</p>
</dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>Display Readline function names and bindings in such a way that they
can be used as input or in a Readline initialization file.
</p>
</dd>
-<dt><code>-P</code></dt>
+<dt><span><code>-P</code></span></dt>
<dd><p>List current Readline function names and bindings.
</p>
</dd>
-<dt><code>-v</code></dt>
+<dt><span><code>-v</code></span></dt>
<dd><p>Display Readline variable names and values in such a way that they
can be used as input or in a Readline initialization file.
</p>
</dd>
-<dt><code>-V</code></dt>
+<dt><span><code>-V</code></span></dt>
<dd><p>List current Readline variable names and values.
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Display Readline key sequences bound to macros and the strings they output
in such a way that they can be used as input or in a Readline
initialization file.
</p>
</dd>
-<dt><code>-S</code></dt>
+<dt><span><code>-S</code></span></dt>
<dd><p>Display Readline key sequences bound to macros and the strings they output.
</p>
</dd>
-<dt><code>-f <var>filename</var></code></dt>
+<dt><span><code>-f <var>filename</var></code></span></dt>
<dd><p>Read key bindings from <var>filename</var>.
</p>
</dd>
-<dt><code>-q <var>function</var></code></dt>
+<dt><span><code>-q <var>function</var></code></span></dt>
<dd><p>Query about which keys invoke the named <var>function</var>.
</p>
</dd>
-<dt><code>-u <var>function</var></code></dt>
+<dt><span><code>-u <var>function</var></code></span></dt>
<dd><p>Unbind all keys bound to the named <var>function</var>.
</p>
</dd>
-<dt><code>-r <var>keyseq</var></code></dt>
+<dt><span><code>-r <var>keyseq</var></code></span></dt>
<dd><p>Remove any current binding for <var>keyseq</var>.
</p>
</dd>
-<dt><code>-x <var>keyseq:shell-command</var></code></dt>
+<dt><span><code>-x <var>keyseq:shell-command</var></code></span></dt>
<dd><p>Cause <var>shell-command</var> to be executed whenever <var>keyseq</var> is
entered.
When <var>shell-command</var> is executed, the shell sets the
buffer and the <code>READLINE_POINT</code> and <code>READLINE_MARK</code> variables
to the current location of the insertion point and the saved insertion
point (the <var>mark</var>), respectively.
+The shell assigns any numeric argument the user supplied to the
+<code>READLINE_ARGUMENT</code> variable.
+If there was no argument, that variable is not set.
If the executed command changes the value of any of <code>READLINE_LINE</code>,
<code>READLINE_POINT</code>, or <code>READLINE_MARK</code>, those new values will be
reflected in the editing state.
</p>
</dd>
-<dt><code>-X</code></dt>
+<dt><span><code>-X</code></span></dt>
<dd><p>List all key sequences bound to shell commands and the associated commands
in a format that can be reused as input.
</p></dd>
error occurs.
</p>
</dd>
-<dt><code>builtin</code></dt>
-<dd><span id="index-builtin"></span>
-<div class="example">
+<dt id='index-builtin'><span><code>builtin</code><a href='#index-builtin' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">builtin [<var>shell-builtin</var> [<var>args</var>]]
</pre></div>
builtin command.
</p>
</dd>
-<dt><code>caller</code></dt>
-<dd><span id="index-caller"></span>
-<div class="example">
+<dt id='index-caller'><span><code>caller</code><a href='#index-caller' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">caller [<var>expr</var>]
</pre></div>
call stack.
</p>
</dd>
-<dt><code>command</code></dt>
-<dd><span id="index-command"></span>
-<div class="example">
+<dt id='index-command'><span><code>command</code><a href='#index-command' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">command [-pVv] <var>command</var> [<var>arguments</var> …]
</pre></div>
zero if <var>command</var> is found, and non-zero if not.
</p>
</dd>
-<dt><code>declare</code></dt>
-<dd><span id="index-declare"></span>
-<div class="example">
+<dt id='index-declare'><span><code>declare</code><a href='#index-declare' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">declare [-aAfFgiIlnrtux] [-p] [<var>name</var>[=<var>value</var>] …]
</pre></div>
It is ignored in all other cases.
</p>
<p>The <samp>-I</samp> option causes local variables to inherit the attributes
-(except the <var>nameref</var> attribute)
+(except the <code>nameref</code> attribute)
and value of any existing variable with the same
<var>name</var> at a surrounding scope.
If there is no existing variable, the local variable is initially unset.
the specified attributes or to give variables attributes:
</p>
<dl compact="compact">
-<dt><code>-a</code></dt>
+<dt><span><code>-a</code></span></dt>
<dd><p>Each <var>name</var> is an indexed array variable (see <a href="#Arrays">Arrays</a>).
</p>
</dd>
-<dt><code>-A</code></dt>
+<dt><span><code>-A</code></span></dt>
<dd><p>Each <var>name</var> is an associative array variable (see <a href="#Arrays">Arrays</a>).
</p>
</dd>
-<dt><code>-f</code></dt>
+<dt><span><code>-f</code></span></dt>
<dd><p>Use function names only.
</p>
</dd>
-<dt><code>-i</code></dt>
+<dt><span><code>-i</code></span></dt>
<dd><p>The variable is to be treated as
an integer; arithmetic evaluation (see <a href="#Shell-Arithmetic">Shell Arithmetic</a>) is
performed when the variable is assigned a value.
</p>
</dd>
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>When the variable is assigned a value, all upper-case characters are
converted to lower-case.
The upper-case attribute is disabled.
</p>
</dd>
-<dt><code>-n</code></dt>
-<dd><p>Give each <var>name</var> the <var>nameref</var> attribute, making
+<dt><span><code>-n</code></span></dt>
+<dd><p>Give each <var>name</var> the <code>nameref</code> attribute, making
it a name reference to another variable.
That other variable is defined by the value of <var>name</var>.
All references, assignments, and attribute modifications
The nameref attribute cannot be applied to array variables.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>Make <var>name</var>s readonly. These names cannot then be assigned values
by subsequent assignment statements or unset.
</p>
</dd>
-<dt><code>-t</code></dt>
+<dt><span><code>-t</code></span></dt>
<dd><p>Give each <var>name</var> the <code>trace</code> attribute.
Traced functions inherit the <code>DEBUG</code> and <code>RETURN</code> traps from
the calling shell.
The trace attribute has no special meaning for variables.
</p>
</dd>
-<dt><code>-u</code></dt>
+<dt><span><code>-u</code></span></dt>
<dd><p>When the variable is assigned a value, all lower-case characters are
converted to upper-case.
The lower-case attribute is disabled.
</p>
</dd>
-<dt><code>-x</code></dt>
+<dt><span><code>-x</code></span></dt>
<dd><p>Mark each <var>name</var> for export to subsequent commands via
the environment.
</p></dd>
an attempt is made to assign a value to a readonly variable,
an attempt is made to assign a value to an array variable without
using the compound assignment syntax (see <a href="#Arrays">Arrays</a>),
-one of the <var>names</var> is not a valid shell variable name,
+one of the <var>name</var>s is not a valid shell variable name,
an attempt is made to turn off readonly status for a readonly variable,
an attempt is made to turn off array status for an array variable,
or an attempt is made to display a non-existent function with <samp>-f</samp>.
</p>
</dd>
-<dt><code>echo</code></dt>
-<dd><span id="index-echo"></span>
-<div class="example">
+<dt id='index-echo'><span><code>echo</code><a href='#index-echo' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">echo [-neE] [<var>arg</var> …]
</pre></div>
</p>
<p><code>echo</code> interprets the following escape sequences:
</p><dl compact="compact">
-<dt><code>\a</code></dt>
+<dt><span><code>\a</code></span></dt>
<dd><p>alert (bell)
</p></dd>
-<dt><code>\b</code></dt>
+<dt><span><code>\b</code></span></dt>
<dd><p>backspace
</p></dd>
-<dt><code>\c</code></dt>
+<dt><span><code>\c</code></span></dt>
<dd><p>suppress further output
</p></dd>
-<dt><code>\e</code></dt>
-<dt><code>\E</code></dt>
+<dt><span><code>\e</code></span></dt>
+<dt><span><code>\E</code></span></dt>
<dd><p>escape
</p></dd>
-<dt><code>\f</code></dt>
+<dt><span><code>\f</code></span></dt>
<dd><p>form feed
</p></dd>
-<dt><code>\n</code></dt>
+<dt><span><code>\n</code></span></dt>
<dd><p>new line
</p></dd>
-<dt><code>\r</code></dt>
+<dt><span><code>\r</code></span></dt>
<dd><p>carriage return
</p></dd>
-<dt><code>\t</code></dt>
+<dt><span><code>\t</code></span></dt>
<dd><p>horizontal tab
</p></dd>
-<dt><code>\v</code></dt>
+<dt><span><code>\v</code></span></dt>
<dd><p>vertical tab
</p></dd>
-<dt><code>\\</code></dt>
+<dt><span><code>\\</code></span></dt>
<dd><p>backslash
</p></dd>
-<dt><code>\0<var>nnn</var></code></dt>
+<dt><span><code>\0<var>nnn</var></code></span></dt>
<dd><p>the eight-bit character whose value is the octal value <var>nnn</var>
(zero to three octal digits)
</p></dd>
-<dt><code>\x<var>HH</var></code></dt>
+<dt><span><code>\x<var>HH</var></code></span></dt>
<dd><p>the eight-bit character whose value is the hexadecimal value <var>HH</var>
(one or two hex digits)
</p></dd>
-<dt><code>\u<var>HHHH</var></code></dt>
+<dt><span><code>\u<var>HHHH</var></code></span></dt>
<dd><p>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
<var>HHHH</var> (one to four hex digits)
</p></dd>
-<dt><code>\U<var>HHHHHHHH</var></code></dt>
+<dt><span><code>\U<var>HHHHHHHH</var></code></span></dt>
<dd><p>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value
<var>HHHHHHHH</var> (one to eight hex digits)
</p></dd>
</dl>
</dd>
-<dt><code>enable</code></dt>
-<dd><span id="index-enable"></span>
-<div class="example">
+<dt id='index-enable'><span><code>enable</code><a href='#index-enable' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">enable [-a] [-dnps] [-f <var>filename</var>] [<var>name</var> …]
</pre></div>
</p>
<p>The <samp>-f</samp> option means to load the new builtin command <var>name</var>
from shared object <var>filename</var>, on systems that support dynamic loading.
+Bash will use the value of the <code>BASH_LOADABLES_PATH</code> variable as a
+colon-separated list of directories in which to search for <var>filename</var>.
+The default is system-dependent.
The <samp>-d</samp> option will delete a builtin loaded with <samp>-f</samp>.
</p>
<p>If there are no options, a list of the shell builtins is displayed.
builtins. If <samp>-s</samp> is used with <samp>-f</samp>, the new builtin becomes
a special builtin (see <a href="#Special-Builtins">Special Builtins</a>).
</p>
+<p>If no options are supplied and a <var>name</var> is not a shell builtin,
+<code>enable</code> will attempt to load <var>name</var> from a shared object named
+<var>name</var>, as if the command were
+‘<samp>enable -f <var>name</var> <var>name</var></samp>’.
+</p>
<p>The return status is zero unless a <var>name</var> is not a shell builtin
or there is an error loading a new builtin from a shared object.
</p>
</dd>
-<dt><code>help</code></dt>
-<dd><span id="index-help"></span>
-<div class="example">
+<dt id='index-help'><span><code>help</code><a href='#index-help' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">help [-dms] [<var>pattern</var>]
</pre></div>
<p>Options, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-d</code></dt>
+<dt><span><code>-d</code></span></dt>
<dd><p>Display a short description of each <var>pattern</var>
</p></dd>
-<dt><code>-m</code></dt>
+<dt><span><code>-m</code></span></dt>
<dd><p>Display the description of each <var>pattern</var> in a manpage-like format
</p></dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Display only a short usage synopsis for each <var>pattern</var>
</p></dd>
</dl>
<p>The return status is zero unless no command matches <var>pattern</var>.
</p>
</dd>
-<dt><code>let</code></dt>
-<dd><span id="index-let"></span>
-<div class="example">
+<dt id='index-let'><span><code>let</code><a href='#index-let' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">let <var>expression</var> [<var>expression</var> …]
</pre></div>
otherwise 0 is returned.
</p>
</dd>
-<dt><code>local</code></dt>
-<dd><span id="index-local"></span>
-<div class="example">
+<dt id='index-local'><span><code>local</code><a href='#index-local' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">local [<var>option</var>] <var>name</var>[=<var>value</var>] …
</pre></div>
readonly variable.
</p>
</dd>
-<dt><code>logout</code></dt>
-<dd><span id="index-logout"></span>
-<div class="example">
+<dt id='index-logout'><span><code>logout</code><a href='#index-logout' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">logout [<var>n</var>]
</pre></div>
parent.
</p>
</dd>
-<dt><code>mapfile</code></dt>
-<dd><span id="index-mapfile"></span>
-<div class="example">
+<dt id='index-mapfile'><span><code>mapfile</code><a href='#index-mapfile' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">mapfile [-d <var>delim</var>] [-n <var>count</var>] [-O <var>origin</var>] [-s <var>count</var>]
[-t] [-u <var>fd</var>] [-C <var>callback</var>] [-c <var>quantum</var>] [<var>array</var>]
</pre></div>
Options, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-d</code></dt>
+<dt><span><code>-d</code></span></dt>
<dd><p>The first character of <var>delim</var> is used to terminate each input line,
rather than newline.
If <var>delim</var> is the empty string, <code>mapfile</code> will terminate a line
when it reads a NUL character.
</p></dd>
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Copy at most <var>count</var> lines. If <var>count</var> is 0, all lines are copied.
</p></dd>
-<dt><code>-O</code></dt>
+<dt><span><code>-O</code></span></dt>
<dd><p>Begin assigning to <var>array</var> at index <var>origin</var>.
The default index is 0.
</p></dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Discard the first <var>count</var> lines read.
</p></dd>
-<dt><code>-t</code></dt>
+<dt><span><code>-t</code></span></dt>
<dd><p>Remove a trailing <var>delim</var> (default newline) from each line read.
</p></dd>
-<dt><code>-u</code></dt>
+<dt><span><code>-u</code></span></dt>
<dd><p>Read lines from file descriptor <var>fd</var> instead of the standard input.
</p></dd>
-<dt><code>-C</code></dt>
+<dt><span><code>-C</code></span></dt>
<dd><p>Evaluate <var>callback</var> each time <var>quantum</var> lines are read.
The <samp>-c</samp> option specifies <var>quantum</var>.
</p></dd>
-<dt><code>-c</code></dt>
+<dt><span><code>-c</code></span></dt>
<dd><p>Specify the number of lines read between each call to <var>callback</var>.
</p></dd>
</dl>
is not an indexed array.
</p>
</dd>
-<dt><code>printf</code></dt>
-<dd><span id="index-printf"></span>
-<div class="example">
+<dt id='index-printf'><span><code>printf</code><a href='#index-printf' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">printf [-v <var>var</var>] <var>format</var> [<var>arguments</var>]
</pre></div>
interprets the following extensions:
</p>
<dl compact="compact">
-<dt><code>%b</code></dt>
+<dt><span><code>%b</code></span></dt>
<dd><p>Causes <code>printf</code> to expand backslash escape sequences in the
corresponding <var>argument</var> in the same way as <code>echo -e</code>
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
+(see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p></dd>
-<dt><code>%q</code></dt>
+<dt><span><code>%q</code></span></dt>
<dd><p>Causes <code>printf</code> to output the
corresponding <var>argument</var> in a format that can be reused as shell input.
</p></dd>
-<dt><code>%(<var>datefmt</var>)T</code></dt>
+<dt><span><code>%Q</code></span></dt>
+<dd><p>like <code>%q</code>, but applies any supplied precision to the <var>argument</var>
+before quoting it.
+</p></dd>
+<dt><span><code>%(<var>datefmt</var>)T</code></span></dt>
<dd><p>Causes <code>printf</code> to output the date-time string resulting from using
<var>datefmt</var> as a format string for <code>strftime</code>(3).
The corresponding <var>argument</var> is an integer representing the number of
non-zero on failure.
</p>
</dd>
-<dt><code>read</code></dt>
-<dd><span id="index-read"></span>
-<div class="example">
+<dt id='index-read'><span><code>read</code><a href='#index-read' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">read [-ers] [-a <var>aname</var>] [-d <var>delim</var>] [-i <var>text</var>] [-n <var>nchars</var>]
[-N <var>nchars</var>] [-p <var>prompt</var>] [-t <var>timeout</var>] [-u <var>fd</var>] [<var>name</var> …]
</pre></div>
<p>Options, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-a <var>aname</var></code></dt>
+<dt><span><code>-a <var>aname</var></code></span></dt>
<dd><p>The words are assigned to sequential indices of the array variable
<var>aname</var>, starting at 0.
All elements are removed from <var>aname</var> before the assignment.
Other <var>name</var> arguments are ignored.
</p>
</dd>
-<dt><code>-d <var>delim</var></code></dt>
+<dt><span><code>-d <var>delim</var></code></span></dt>
<dd><p>The first character of <var>delim</var> is used to terminate the input line,
rather than newline.
If <var>delim</var> is the empty string, <code>read</code> will terminate a line
when it reads a NUL character.
</p>
</dd>
-<dt><code>-e</code></dt>
+<dt><span><code>-e</code></span></dt>
<dd><p>Readline (see <a href="#Command-Line-Editing">Command Line Editing</a>) is used to obtain the line.
Readline uses the current (or default, if line editing was not previously
active) editing settings, but uses Readline’s default filename completion.
</p>
</dd>
-<dt><code>-i <var>text</var></code></dt>
+<dt><span><code>-i <var>text</var></code></span></dt>
<dd><p>If Readline is being used to read the line, <var>text</var> is placed into
the editing buffer before editing begins.
</p>
</dd>
-<dt><code>-n <var>nchars</var></code></dt>
+<dt><span><code>-n <var>nchars</var></code></span></dt>
<dd><p><code>read</code> returns after reading <var>nchars</var> characters rather than
waiting for a complete line of input, but honors a delimiter if fewer
than <var>nchars</var> characters are read before the delimiter.
</p>
</dd>
-<dt><code>-N <var>nchars</var></code></dt>
+<dt><span><code>-N <var>nchars</var></code></span></dt>
<dd><p><code>read</code> returns after reading exactly <var>nchars</var> characters rather
than waiting for a complete line of input, unless EOF is encountered or
<code>read</code> times out.
(with the exception of backslash; see the <samp>-r</samp> option below).
</p>
</dd>
-<dt><code>-p <var>prompt</var></code></dt>
+<dt><span><code>-p <var>prompt</var></code></span></dt>
<dd><p>Display <var>prompt</var>, without a trailing newline, before attempting
to read any input.
The prompt is displayed only if input is coming from a terminal.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>If this option is given, backslash does not act as an escape character.
The backslash is considered to be part of the line.
In particular, a backslash-newline pair may not then be used as a line
continuation.
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Silent mode. If input is coming from a terminal, characters are
not echoed.
</p>
</dd>
-<dt><code>-t <var>timeout</var></code></dt>
+<dt><span><code>-t <var>timeout</var></code></span></dt>
<dd><p>Cause <code>read</code> to time out and return failure if a complete line of
input (or a specified number of characters)
is not read within <var>timeout</var> seconds.
If <code>read</code> times out, <code>read</code> saves any partial input read into
the specified variable <var>name</var>.
If <var>timeout</var> is 0, <code>read</code> returns immediately, without trying to
-read any data. The exit status is 0 if input is available on
-the specified file descriptor, non-zero otherwise.
+read any data.
+The exit status is 0 if input is available on the specified file descriptor,
+or the read will return EOF,
+non-zero otherwise.
The exit status is greater than 128 if the timeout is exceeded.
</p>
</dd>
-<dt><code>-u <var>fd</var></code></dt>
+<dt><span><code>-u <var>fd</var></code></span></dt>
<dd><p>Read input from file descriptor <var>fd</var>.
</p></dd>
</dl>
or an invalid file descriptor is supplied as the argument to <samp>-u</samp>.
</p>
</dd>
-<dt><code>readarray</code></dt>
-<dd><span id="index-readarray"></span>
-<div class="example">
+<dt id='index-readarray'><span><code>readarray</code><a href='#index-readarray' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">readarray [-d <var>delim</var>] [-n <var>count</var>] [-O <var>origin</var>] [-s <var>count</var>]
[-t] [-u <var>fd</var>] [-C <var>callback</var>] [-c <var>quantum</var>] [<var>array</var>]
</pre></div>
<p>A synonym for <code>mapfile</code>.
</p>
</dd>
-<dt><code>source</code></dt>
-<dd><span id="index-source"></span>
-<div class="example">
+<dt id='index-source'><span><code>source</code><a href='#index-source' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">source <var>filename</var>
</pre></div>
<p>A synonym for <code>.</code> (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
</p>
</dd>
-<dt><code>type</code></dt>
-<dd><span id="index-type"></span>
-<div class="example">
+<dt id='index-type'><span><code>type</code><a href='#index-type' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">type [-afptP] [<var>name</var> …]
</pre></div>
<p>If the <samp>-f</samp> option is used, <code>type</code> does not attempt to find
shell functions, as with the <code>command</code> builtin.
</p>
-<p>The return status is zero if all of the <var>names</var> are found, non-zero
+<p>The return status is zero if all of the <var>name</var>s are found, non-zero
if any are not found.
</p>
</dd>
-<dt><code>typeset</code></dt>
-<dd><span id="index-typeset"></span>
-<div class="example">
+<dt id='index-typeset'><span><code>typeset</code><a href='#index-typeset' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">typeset [-afFgrxilnrtux] [-p] [<var>name</var>[=<var>value</var>] …]
</pre></div>
It is a synonym for the <code>declare</code> builtin command.
</p>
</dd>
-<dt><code>ulimit</code></dt>
-<dd><span id="index-ulimit"></span>
-<div class="example">
+<dt id='index-ulimit'><span><code>ulimit</code><a href='#index-ulimit' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">ulimit [-HS] -a
ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [<var>limit</var>]
</pre></div>
option is given, it is interpreted as follows:
</p>
<dl compact="compact">
-<dt><code>-S</code></dt>
+<dt><span><code>-S</code></span></dt>
<dd><p>Change and report the soft limit associated with a resource.
</p>
</dd>
-<dt><code>-H</code></dt>
+<dt><span><code>-H</code></span></dt>
<dd><p>Change and report the hard limit associated with a resource.
</p>
</dd>
-<dt><code>-a</code></dt>
+<dt><span><code>-a</code></span></dt>
<dd><p>All current limits are reported; no limits are set.
</p>
</dd>
-<dt><code>-b</code></dt>
+<dt><span><code>-b</code></span></dt>
<dd><p>The maximum socket buffer size.
</p>
</dd>
-<dt><code>-c</code></dt>
+<dt><span><code>-c</code></span></dt>
<dd><p>The maximum size of core files created.
</p>
</dd>
-<dt><code>-d</code></dt>
+<dt><span><code>-d</code></span></dt>
<dd><p>The maximum size of a process’s data segment.
</p>
</dd>
-<dt><code>-e</code></dt>
+<dt><span><code>-e</code></span></dt>
<dd><p>The maximum scheduling priority ("nice").
</p>
</dd>
-<dt><code>-f</code></dt>
+<dt><span><code>-f</code></span></dt>
<dd><p>The maximum size of files written by the shell and its children.
</p>
</dd>
-<dt><code>-i</code></dt>
+<dt><span><code>-i</code></span></dt>
<dd><p>The maximum number of pending signals.
</p>
</dd>
-<dt><code>-k</code></dt>
+<dt><span><code>-k</code></span></dt>
<dd><p>The maximum number of kqueues that may be allocated.
</p>
</dd>
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>The maximum size that may be locked into memory.
</p>
</dd>
-<dt><code>-m</code></dt>
+<dt><span><code>-m</code></span></dt>
<dd><p>The maximum resident set size (many systems do not honor this limit).
</p>
</dd>
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>The maximum number of open file descriptors (most systems do not
allow this value to be set).
</p>
</dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>The pipe buffer size.
</p>
</dd>
-<dt><code>-q</code></dt>
+<dt><span><code>-q</code></span></dt>
<dd><p>The maximum number of bytes in <small>POSIX</small> message queues.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>The maximum real-time scheduling priority.
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>The maximum stack size.
</p>
</dd>
-<dt><code>-t</code></dt>
+<dt><span><code>-t</code></span></dt>
<dd><p>The maximum amount of cpu time in seconds.
</p>
</dd>
-<dt><code>-u</code></dt>
+<dt><span><code>-u</code></span></dt>
<dd><p>The maximum number of processes available to a single user.
</p>
</dd>
-<dt><code>-v</code></dt>
+<dt><span><code>-v</code></span></dt>
<dd><p>The maximum amount of virtual memory available to the shell, and, on
some systems, to its children.
</p>
</dd>
-<dt><code>-x</code></dt>
+<dt><span><code>-x</code></span></dt>
<dd><p>The maximum number of file locks.
</p>
</dd>
-<dt><code>-P</code></dt>
+<dt><span><code>-P</code></span></dt>
<dd><p>The maximum number of pseudoterminals.
</p>
</dd>
-<dt><code>-R</code></dt>
+<dt><span><code>-R</code></span></dt>
<dd><p>The maximum time a real-time process can run before blocking, in microseconds.
</p>
</dd>
-<dt><code>-T</code></dt>
+<dt><span><code>-T</code></span></dt>
<dd><p>The maximum number of threads.
</p></dd>
</dl>
or an error occurs while setting a new limit.
</p>
</dd>
-<dt><code>unalias</code></dt>
-<dd><span id="index-unalias"></span>
-<div class="example">
+<dt id='index-unalias'><span><code>unalias</code><a href='#index-unalias' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">unalias [-a] [<var>name</var> … ]
</pre></div>
</dl>
<hr>
-<span id="Modifying-Shell-Behavior"></span><div class="header">
+</div>
+<div class="section" id="Modifying-Shell-Behavior">
+<div class="header">
<p>
-Next: <a href="#Special-Builtins" accesskey="n" rel="next">Special Builtins</a>, Previous: <a href="#Bash-Builtins" accesskey="p" rel="prev">Bash Builtins</a>, Up: <a href="#Shell-Builtin-Commands" accesskey="u" rel="up">Shell Builtin Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Special-Builtins" accesskey="n" rel="next">Special Builtins</a>, Previous: <a href="#Bash-Builtins" accesskey="p" rel="prev">Bash Builtin Commands</a>, Up: <a href="#Shell-Builtin-Commands" accesskey="u" rel="up">Shell Builtin Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Modifying-Shell-Behavior-1"></span><h3 class="section">4.3 Modifying Shell Behavior</h3>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#The-Set-Builtin" accesskey="1">The Set Builtin</a></td><td> </td><td align="left" valign="top">Change the values of shell attributes and
- positional parameters.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#The-Shopt-Builtin" accesskey="2">The Shopt Builtin</a></td><td> </td><td align="left" valign="top">Modify shell optional behavior.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#The-Set-Builtin" accesskey="1">The Set Builtin</a></li>
+<li><a href="#The-Shopt-Builtin" accesskey="2">The Shopt Builtin</a></li>
+</ul>
<hr>
-<span id="The-Set-Builtin"></span><div class="header">
+<div class="subsection" id="The-Set-Builtin">
+<div class="header">
<p>
Next: <a href="#The-Shopt-Builtin" accesskey="n" rel="next">The Shopt Builtin</a>, Up: <a href="#Modifying-Shell-Behavior" accesskey="u" rel="up">Modifying Shell Behavior</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
parameters, or to display the names and values of shell variables.
</p>
<dl compact="compact">
-<dt><code>set</code></dt>
-<dd><span id="index-set"></span>
-<div class="example">
-<pre class="example">set [--abefhkmnptuvxBCEHPT] [-o <var>option-name</var>] [<var>argument</var> …]
-set [+abefhkmnptuvxBCEHPT] [+o <var>option-name</var>] [<var>argument</var> …]
+<dt id='index-set'><span><code>set</code><a href='#index-set' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
+<pre class="example">set [-abefhkmnptuvxBCEHPT] [-o <var>option-name</var>] [--] [-] [<var>argument</var> …]
+set [+abefhkmnptuvxBCEHPT] [+o <var>option-name</var>] [--] [-] [<var>argument</var> …]
</pre></div>
<p>If no options or arguments are supplied, <code>set</code> displays the names
Options, if specified, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-a</code></dt>
+<dt><span><code>-a</code></span></dt>
<dd><p>Each variable or function that is created or modified is given the
export attribute and marked for export to the environment of
subsequent commands.
</p>
</dd>
-<dt><code>-b</code></dt>
+<dt><span><code>-b</code></span></dt>
<dd><p>Cause the status of terminated background jobs to be reported
immediately, rather than before printing the next primary prompt.
</p>
</dd>
-<dt><code>-e</code></dt>
+<dt><span><code>-e</code></span></dt>
<dd><p>Exit immediately if
a pipeline (see <a href="#Pipelines">Pipelines</a>), which may consist of a single simple command
(see <a href="#Simple-Commands">Simple Commands</a>),
-a list (see <a href="#Lists">Lists</a>),
+a list (see <a href="#Lists">Lists of Commands</a>),
or a compound command (see <a href="#Compound-Commands">Compound Commands</a>)
returns a non-zero status.
The shell does not exit if the command that fails is part of the
call completes.
</p>
</dd>
-<dt><code>-f</code></dt>
+<dt><span><code>-f</code></span></dt>
<dd><p>Disable filename expansion (globbing).
</p>
</dd>
-<dt><code>-h</code></dt>
+<dt><span><code>-h</code></span></dt>
<dd><p>Locate and remember (hash) commands as they are looked up for execution.
This option is enabled by default.
</p>
</dd>
-<dt><code>-k</code></dt>
+<dt><span><code>-k</code></span></dt>
<dd><p>All arguments in the form of assignment statements are placed
in the environment for a command, not just those that precede
the command name.
</p>
</dd>
-<dt><code>-m</code></dt>
+<dt><span><code>-m</code></span></dt>
<dd><p>Job control is enabled (see <a href="#Job-Control">Job Control</a>).
All processes run in a separate process group.
When a background job completes, the shell prints a line
containing its exit status.
</p>
</dd>
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Read commands but do not execute them.
This may be used to check a script for syntax errors.
This option is ignored by interactive shells.
</p>
</dd>
-<dt><code>-o <var>option-name</var></code></dt>
+<dt><span><code>-o <var>option-name</var></code></span></dt>
<dd>
<p>Set the option corresponding to <var>option-name</var>:
</p>
<dl compact="compact">
-<dt><code>allexport</code></dt>
+<dt><span><code>allexport</code></span></dt>
<dd><p>Same as <code>-a</code>.
</p>
</dd>
-<dt><code>braceexpand</code></dt>
+<dt><span><code>braceexpand</code></span></dt>
<dd><p>Same as <code>-B</code>.
</p>
</dd>
-<dt><code>emacs</code></dt>
+<dt><span><code>emacs</code></span></dt>
<dd><p>Use an <code>emacs</code>-style line editing interface (see <a href="#Command-Line-Editing">Command Line Editing</a>).
This also affects the editing interface used for <code>read -e</code>.
</p>
</dd>
-<dt><code>errexit</code></dt>
+<dt><span><code>errexit</code></span></dt>
<dd><p>Same as <code>-e</code>.
</p>
</dd>
-<dt><code>errtrace</code></dt>
+<dt><span><code>errtrace</code></span></dt>
<dd><p>Same as <code>-E</code>.
</p>
</dd>
-<dt><code>functrace</code></dt>
+<dt><span><code>functrace</code></span></dt>
<dd><p>Same as <code>-T</code>.
</p>
</dd>
-<dt><code>hashall</code></dt>
+<dt><span><code>hashall</code></span></dt>
<dd><p>Same as <code>-h</code>.
</p>
</dd>
-<dt><code>histexpand</code></dt>
+<dt><span><code>histexpand</code></span></dt>
<dd><p>Same as <code>-H</code>.
</p>
</dd>
-<dt><code>history</code></dt>
+<dt><span><code>history</code></span></dt>
<dd><p>Enable command history, as described in <a href="#Bash-History-Facilities">Bash History Facilities</a>.
This option is on by default in interactive shells.
</p>
</dd>
-<dt><code>ignoreeof</code></dt>
+<dt><span><code>ignoreeof</code></span></dt>
<dd><p>An interactive shell will not exit upon reading EOF.
</p>
</dd>
-<dt><code>keyword</code></dt>
+<dt><span><code>keyword</code></span></dt>
<dd><p>Same as <code>-k</code>.
</p>
</dd>
-<dt><code>monitor</code></dt>
+<dt><span><code>monitor</code></span></dt>
<dd><p>Same as <code>-m</code>.
</p>
</dd>
-<dt><code>noclobber</code></dt>
+<dt><span><code>noclobber</code></span></dt>
<dd><p>Same as <code>-C</code>.
</p>
</dd>
-<dt><code>noexec</code></dt>
+<dt><span><code>noexec</code></span></dt>
<dd><p>Same as <code>-n</code>.
</p>
</dd>
-<dt><code>noglob</code></dt>
+<dt><span><code>noglob</code></span></dt>
<dd><p>Same as <code>-f</code>.
</p>
</dd>
-<dt><code>nolog</code></dt>
+<dt><span><code>nolog</code></span></dt>
<dd><p>Currently ignored.
</p>
</dd>
-<dt><code>notify</code></dt>
+<dt><span><code>notify</code></span></dt>
<dd><p>Same as <code>-b</code>.
</p>
</dd>
-<dt><code>nounset</code></dt>
+<dt><span><code>nounset</code></span></dt>
<dd><p>Same as <code>-u</code>.
</p>
</dd>
-<dt><code>onecmd</code></dt>
+<dt><span><code>onecmd</code></span></dt>
<dd><p>Same as <code>-t</code>.
</p>
</dd>
-<dt><code>physical</code></dt>
+<dt><span><code>physical</code></span></dt>
<dd><p>Same as <code>-P</code>.
</p>
</dd>
-<dt><code>pipefail</code></dt>
+<dt><span><code>pipefail</code></span></dt>
<dd><p>If set, the return value of a pipeline is the value of the last
(rightmost) command to exit with a non-zero status, or zero if all
commands in the pipeline exit successfully.
This option is disabled by default.
</p>
</dd>
-<dt><code>posix</code></dt>
+<dt><span><code>posix</code></span></dt>
<dd><p>Change the behavior of Bash where the default operation differs
from the <small>POSIX</small> standard to match the standard
(see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
standard.
</p>
</dd>
-<dt><code>privileged</code></dt>
+<dt><span><code>privileged</code></span></dt>
<dd><p>Same as <code>-p</code>.
</p>
</dd>
-<dt><code>verbose</code></dt>
+<dt><span><code>verbose</code></span></dt>
<dd><p>Same as <code>-v</code>.
</p>
</dd>
-<dt><code>vi</code></dt>
+<dt><span><code>vi</code></span></dt>
<dd><p>Use a <code>vi</code>-style line editing interface.
This also affects the editing interface used for <code>read -e</code>.
</p>
</dd>
-<dt><code>xtrace</code></dt>
+<dt><span><code>xtrace</code></span></dt>
<dd><p>Same as <code>-x</code>.
</p></dd>
</dl>
</dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>Turn on privileged mode.
In this mode, the <code>$BASH_ENV</code> and <code>$ENV</code> files are not
processed, shell functions are not inherited from the environment,
and group ids to be set to the real user and group ids.
</p>
</dd>
-<dt><code>-t</code></dt>
+<dt><span><code>-r</code></span></dt>
+<dd><p>Enable restricted shell mode.
+This option cannot be unset once it has been set.
+</p>
+</dd>
+<dt><span><code>-t</code></span></dt>
<dd><p>Exit after reading and executing one command.
</p>
</dd>
-<dt><code>-u</code></dt>
+<dt><span><code>-u</code></span></dt>
<dd><p>Treat unset variables and parameters other than the special parameters
-‘<samp>@</samp>’ or ‘<samp>*</samp>’ as an error when performing parameter expansion.
+‘<samp>@</samp>’ or ‘<samp>*</samp>’,
+or array variables subscripted with ‘<samp>@</samp>’ or ‘<samp>*</samp>’,
+as an error when performing parameter expansion.
An error message will be written to the standard error, and a non-interactive
shell will exit.
</p>
</dd>
-<dt><code>-v</code></dt>
+<dt><span><code>-v</code></span></dt>
<dd><p>Print shell input lines as they are read.
</p>
</dd>
-<dt><code>-x</code></dt>
+<dt><span><code>-x</code></span></dt>
<dd><p>Print a trace of simple commands, <code>for</code> commands, <code>case</code>
commands, <code>select</code> commands, and arithmetic <code>for</code> commands
and their arguments or associated word lists after they are
the command and its expanded arguments.
</p>
</dd>
-<dt><code>-B</code></dt>
+<dt><span><code>-B</code></span></dt>
<dd><p>The shell will perform brace expansion (see <a href="#Brace-Expansion">Brace Expansion</a>).
This option is on by default.
</p>
</dd>
-<dt><code>-C</code></dt>
+<dt><span><code>-C</code></span></dt>
<dd><p>Prevent output redirection using ‘<samp>></samp>’, ‘<samp>>&</samp>’, and ‘<samp><></samp>’
from overwriting existing files.
</p>
</dd>
-<dt><code>-E</code></dt>
+<dt><span><code>-E</code></span></dt>
<dd><p>If set, any trap on <code>ERR</code> is inherited by shell functions, command
substitutions, and commands executed in a subshell environment.
The <code>ERR</code> trap is normally not inherited in such cases.
</p>
</dd>
-<dt><code>-H</code></dt>
-<dd><p>Enable ‘<samp>!</samp>’ style history substitution (see <a href="#History-Interaction">History Interaction</a>).
+<dt><span><code>-H</code></span></dt>
+<dd><p>Enable ‘<samp>!</samp>’ style history substitution (see <a href="#History-Interaction">History Expansion</a>).
This option is on by default for interactive shells.
</p>
</dd>
-<dt><code>-P</code></dt>
+<dt><span><code>-P</code></span></dt>
<dd><p>If set, do not resolve symbolic links when performing commands such as
<code>cd</code> which change the current directory. The physical directory
is used instead. By default, Bash follows
</pre></div>
</dd>
-<dt><code>-T</code></dt>
+<dt><span><code>-T</code></span></dt>
<dd><p>If set, any trap on <code>DEBUG</code> and <code>RETURN</code> are inherited by
shell functions, command substitutions, and commands executed
in a subshell environment.
in such cases.
</p>
</dd>
-<dt><code>--</code></dt>
+<dt><span><code>--</code></span></dt>
<dd><p>If no arguments follow this option, then the positional parameters are
unset. Otherwise, the positional parameters are set to the
<var>arguments</var>, even if some of them begin with a ‘<samp>-</samp>’.
</p>
</dd>
-<dt><code>-</code></dt>
+<dt><span><code>-</code></span></dt>
<dd><p>Signal the end of options, cause all remaining <var>arguments</var>
to be assigned to the positional parameters. The <samp>-x</samp>
and <samp>-v</samp> options are turned off.
</dl>
<hr>
-<span id="The-Shopt-Builtin"></span><div class="header">
+</div>
+<div class="subsection" id="The-Shopt-Builtin">
+<div class="header">
<p>
Previous: <a href="#The-Set-Builtin" accesskey="p" rel="prev">The Set Builtin</a>, Up: <a href="#Modifying-Shell-Behavior" accesskey="u" rel="up">Modifying Shell Behavior</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<p>This builtin allows you to change additional shell optional behavior.
</p>
<dl compact="compact">
-<dt><code>shopt</code></dt>
-<dd><span id="index-shopt"></span>
-<div class="example">
+<dt id='index-shopt'><span><code>shopt</code><a href='#index-shopt' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">shopt [-pqsu] [-o] [<var>optname</var> …]
</pre></div>
option to the <code>set</code> builtin command (see <a href="#The-Set-Builtin">The Set Builtin</a>).
With no options, or with the <samp>-p</samp> option, a list of all settable
options is displayed, with an indication of whether or not each is set;
-if <var>optnames</var> are supplied, the output is restricted to those options.
+if <var>optname</var>s are supplied, the output is restricted to those options.
The <samp>-p</samp> option causes output to be displayed in a form that
may be reused as input.
Other options have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Enable (set) each <var>optname</var>.
</p>
</dd>
-<dt><code>-u</code></dt>
+<dt><span><code>-u</code></span></dt>
<dd><p>Disable (unset) each <var>optname</var>.
</p>
</dd>
-<dt><code>-q</code></dt>
+<dt><span><code>-q</code></span></dt>
<dd><p>Suppresses normal output; the return status
indicates whether the <var>optname</var> is set or unset.
If multiple <var>optname</var> arguments are given with <samp>-q</samp>,
-the return status is zero if all <var>optnames</var> are enabled;
+the return status is zero if all <var>optname</var>s are enabled;
non-zero otherwise.
</p>
</dd>
-<dt><code>-o</code></dt>
+<dt><span><code>-o</code></span></dt>
<dd><p>Restricts the values of
<var>optname</var> to be those defined for the <samp>-o</samp> option to the
<code>set</code> builtin (see <a href="#The-Set-Builtin">The Set Builtin</a>).
<p>Unless otherwise noted, the <code>shopt</code> options are disabled (off)
by default.
</p>
-<p>The return status when listing options is zero if all <var>optnames</var>
+<p>The return status when listing options is zero if all <var>optname</var>s
are enabled, non-zero otherwise. When setting or unsetting options,
the return status is zero unless an <var>optname</var> is not a valid shell
option.
</p>
<p>The list of <code>shopt</code> options is:
</p><dl compact="compact">
-<dt><code>assoc_expand_once</code></dt>
+<dt><span><code>assoc_expand_once</code></span></dt>
<dd><p>If set, the shell suppresses multiple evaluation of associative array
subscripts during arithmetic expression evaluation, while executing
builtins that can perform variable assignments,
and while executing builtins that perform array dereferencing.
</p>
</dd>
-<dt><code>autocd</code></dt>
+<dt><span><code>autocd</code></span></dt>
<dd><p>If set, a command name that is the name of a directory is executed as if
it were the argument to the <code>cd</code> command.
This option is only used by interactive shells.
</p>
</dd>
-<dt><code>cdable_vars</code></dt>
+<dt><span><code>cdable_vars</code></span></dt>
<dd><p>If this is set, an argument to the <code>cd</code> builtin command that
is not a directory is assumed to be the name of a variable whose
value is the directory to change to.
</p>
</dd>
-<dt><code>cdspell</code></dt>
+<dt><span><code>cdspell</code></span></dt>
<dd><p>If set, minor errors in the spelling of a directory component in a
<code>cd</code> command will be corrected.
The errors checked for are transposed characters,
This option is only used by interactive shells.
</p>
</dd>
-<dt><code>checkhash</code></dt>
+<dt><span><code>checkhash</code></span></dt>
<dd><p>If this is set, Bash checks that a command found in the hash
table exists before trying to execute it. If a hashed command no
longer exists, a normal path search is performed.
</p>
</dd>
-<dt><code>checkjobs</code></dt>
+<dt><span><code>checkjobs</code></span></dt>
<dd><p>If set, Bash lists the status of any stopped and running jobs before
exiting an interactive shell. If any jobs are running, this causes
the exit to be deferred until a second exit is attempted without an
The shell always postpones exiting if any jobs are stopped.
</p>
</dd>
-<dt><code>checkwinsize</code></dt>
+<dt><span><code>checkwinsize</code></span></dt>
<dd><p>If set, Bash checks the window size after each external (non-builtin)
command and, if necessary, updates the values of
<code>LINES</code> and <code>COLUMNS</code>.
This option is enabled by default.
</p>
</dd>
-<dt><code>cmdhist</code></dt>
+<dt><span><code>cmdhist</code></span></dt>
<dd><p>If set, Bash
attempts to save all lines of a multiple-line
command in the same history entry. This allows
history is enabled (see <a href="#Bash-History-Facilities">Bash History Facilities</a>).
</p>
</dd>
-<dt><code>compat31</code></dt>
-<dt><code>compat32</code></dt>
-<dt><code>compat40</code></dt>
-<dt><code>compat41</code></dt>
-<dt><code>compat42</code></dt>
-<dt><code>compat43</code></dt>
-<dt><code>compat44</code></dt>
+<dt><span><code>compat31</code></span></dt>
+<dt><span><code>compat32</code></span></dt>
+<dt><span><code>compat40</code></span></dt>
+<dt><span><code>compat41</code></span></dt>
+<dt><span><code>compat42</code></span></dt>
+<dt><span><code>compat43</code></span></dt>
+<dt><span><code>compat44</code></span></dt>
<dd><p>These control aspects of the shell’s compatibility mode
(see <a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a>).
</p>
</dd>
-<dt><code>complete_fullquote</code></dt>
+<dt><span><code>complete_fullquote</code></span></dt>
<dd><p>If set, Bash
quotes all shell metacharacters in filenames and directory names when
performing completion.
versions through 4.2.
</p>
</dd>
-<dt><code>direxpand</code></dt>
+<dt><span><code>direxpand</code></span></dt>
<dd><p>If set, Bash
replaces directory names with the results of word expansion when performing
-filename completion. This changes the contents of the readline editing
+filename completion. This changes the contents of the Readline editing
buffer.
If not set, Bash attempts to preserve what the user typed.
</p>
</dd>
-<dt><code>dirspell</code></dt>
+<dt><span><code>dirspell</code></span></dt>
<dd><p>If set, Bash
attempts spelling correction on directory names during word completion
if the directory name initially supplied does not exist.
</p>
</dd>
-<dt><code>dotglob</code></dt>
+<dt><span><code>dotglob</code></span></dt>
<dd><p>If set, Bash includes filenames beginning with a ‘.’ in
the results of filename expansion.
The filenames ‘<samp>.</samp>’ and ‘<samp>..</samp>’ must always be matched explicitly,
even if <code>dotglob</code> is set.
</p>
</dd>
-<dt><code>execfail</code></dt>
+<dt><span><code>execfail</code></span></dt>
<dd><p>If this is set, a non-interactive shell will not exit if
it cannot execute the file specified as an argument to the <code>exec</code>
builtin command. An interactive shell does not exit if <code>exec</code>
fails.
</p>
</dd>
-<dt><code>expand_aliases</code></dt>
+<dt><span><code>expand_aliases</code></span></dt>
<dd><p>If set, aliases are expanded as described below under Aliases,
<a href="#Aliases">Aliases</a>.
This option is enabled by default for interactive shells.
</p>
</dd>
-<dt><code>extdebug</code></dt>
+<dt><span><code>extdebug</code></span></dt>
<dd><p>If set at shell invocation,
or in a shell startup file,
arrange to execute the debugger profile
If set after invocation, behavior intended for use by debuggers is enabled:
</p>
<ol>
-<li> The <samp>-F</samp> option to the <code>declare</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>)
+<li> The <samp>-F</samp> option to the <code>declare</code> builtin (see <a href="#Bash-Builtins">Bash Builtin Commands</a>)
displays the source file name and line number corresponding to each function
name supplied as an argument.
</li></ol>
</dd>
-<dt><code>extglob</code></dt>
+<dt><span><code>extglob</code></span></dt>
<dd><p>If set, the extended pattern matching features described above
(see <a href="#Pattern-Matching">Pattern Matching</a>) are enabled.
</p>
</dd>
-<dt><code>extquote</code></dt>
+<dt><span><code>extquote</code></span></dt>
<dd><p>If set, <code>$'<var>string</var>'</code> and <code>$"<var>string</var>"</code> quoting is
performed within <code>${<var>parameter</var>}</code> expansions
enclosed in double quotes. This option is enabled by default.
</p>
</dd>
-<dt><code>failglob</code></dt>
+<dt><span><code>failglob</code></span></dt>
<dd><p>If set, patterns which fail to match filenames during filename expansion
result in an expansion error.
</p>
</dd>
-<dt><code>force_fignore</code></dt>
+<dt><span><code>force_fignore</code></span></dt>
<dd><p>If set, the suffixes specified by the <code>FIGNORE</code> shell variable
cause words to be ignored when performing word completion even if
the ignored words are the only possible completions.
This option is enabled by default.
</p>
</dd>
-<dt><code>globasciiranges</code></dt>
+<dt><span><code>globasciiranges</code></span></dt>
<dd><p>If set, range expressions used in pattern matching bracket expressions
(see <a href="#Pattern-Matching">Pattern Matching</a>)
behave as if in the traditional C locale when performing
and upper-case and lower-case ASCII characters will collate together.
</p>
</dd>
-<dt><code>globstar</code></dt>
+<dt><span><code>globskipdots</code></span></dt>
+<dd><p>If set, filename expansion will never match the filenames
+‘<samp>.</samp>’ and ‘<samp>..</samp>’,
+even if the pattern begins with a ‘<samp>.</samp>’.
+This option is enabled by default.
+</p>
+</dd>
+<dt><span><code>globstar</code></span></dt>
<dd><p>If set, the pattern ‘<samp>**</samp>’ used in a filename expansion context will
match all files and zero or more directories and subdirectories.
If the pattern is followed by a ‘<samp>/</samp>’, only directories and
subdirectories match.
</p>
</dd>
-<dt><code>gnu_errfmt</code></dt>
+<dt><span><code>gnu_errfmt</code></span></dt>
<dd><p>If set, shell error messages are written in the standard <small>GNU</small> error
message format.
</p>
</dd>
-<dt><code>histappend</code></dt>
+<dt><span><code>histappend</code></span></dt>
<dd><p>If set, the history list is appended to the file named by the value
of the <code>HISTFILE</code>
variable when the shell exits, rather than overwriting the file.
</p>
</dd>
-<dt><code>histreedit</code></dt>
+<dt><span><code>histreedit</code></span></dt>
<dd><p>If set, and Readline
is being used, a user is given the opportunity to re-edit a
failed history substitution.
</p>
</dd>
-<dt><code>histverify</code></dt>
+<dt><span><code>histverify</code></span></dt>
<dd><p>If set, and Readline
is being used, the results of history substitution are not immediately
passed to the shell parser. Instead, the resulting line is loaded into
the Readline editing buffer, allowing further modification.
</p>
</dd>
-<dt><code>hostcomplete</code></dt>
+<dt><span><code>hostcomplete</code></span></dt>
<dd><p>If set, and Readline is being used, Bash will attempt to perform
hostname completion when a word containing a ‘<samp>@</samp>’ is being
-completed (see <a href="#Commands-For-Completion">Commands For Completion</a>). This option is enabled
+completed (see <a href="#Commands-For-Completion">Letting Readline Type For You</a>). This option is enabled
by default.
</p>
</dd>
-<dt><code>huponexit</code></dt>
+<dt><span><code>huponexit</code></span></dt>
<dd><p>If set, Bash will send <code>SIGHUP</code> to all jobs when an interactive
login shell exits (see <a href="#Signals">Signals</a>).
</p>
</dd>
-<dt><code>inherit_errexit</code></dt>
+<dt><span><code>inherit_errexit</code></span></dt>
<dd><p>If set, command substitution inherits the value of the <code>errexit</code> option,
instead of unsetting it in the subshell environment.
This option is enabled when <small>POSIX</small> mode is enabled.
</p>
</dd>
-<dt><code>interactive_comments</code></dt>
+<dt><span><code>interactive_comments</code></span></dt>
<dd><p>Allow a word beginning with ‘<samp>#</samp>’
to cause that word and all remaining characters on that
line to be ignored in an interactive shell.
This option is enabled by default.
</p>
</dd>
-<dt><code>lastpipe</code></dt>
+<dt><span><code>lastpipe</code></span></dt>
<dd><p>If set, and job control is not active, the shell runs the last command of
a pipeline not executed in the background in the current shell environment.
</p>
</dd>
-<dt><code>lithist</code></dt>
+<dt><span><code>lithist</code></span></dt>
<dd><p>If enabled, and the <code>cmdhist</code>
option is enabled, multi-line commands are saved to the history with
embedded newlines rather than using semicolon separators where possible.
</p>
</dd>
-<dt><code>localvar_inherit</code></dt>
+<dt><span><code>localvar_inherit</code></span></dt>
<dd><p>If set, local variables inherit the value and attributes of a variable of
the same name that exists at a previous scope before any new value is
-assigned. The <var>nameref</var> attribute is not inherited.
+assigned. The <code>nameref</code> attribute is not inherited.
</p>
</dd>
-<dt><code>localvar_unset</code></dt>
+<dt><span><code>localvar_unset</code></span></dt>
<dd><p>If set, calling <code>unset</code> on local variables in previous function scopes
marks them so subsequent lookups find them unset until that function
returns. This is identical to the behavior of unsetting local variables
at the current function scope.
</p>
</dd>
-<dt><code>login_shell</code></dt>
+<dt><span><code>login_shell</code></span></dt>
<dd><p>The shell sets this option if it is started as a login shell
(see <a href="#Invoking-Bash">Invoking Bash</a>).
The value may not be changed.
</p>
</dd>
-<dt><code>mailwarn</code></dt>
+<dt><span><code>mailwarn</code></span></dt>
<dd><p>If set, and a file that Bash is checking for mail has been
accessed since the last time it was checked, the message
<code>"The mail in <var>mailfile</var> has been read"</code> is displayed.
</p>
</dd>
-<dt><code>no_empty_cmd_completion</code></dt>
+<dt><span><code>no_empty_cmd_completion</code></span></dt>
<dd><p>If set, and Readline is being used, Bash will not attempt to search
the <code>PATH</code> for possible completions when completion is attempted
on an empty line.
</p>
</dd>
-<dt><code>nocaseglob</code></dt>
+<dt><span><code>nocaseglob</code></span></dt>
<dd><p>If set, Bash matches filenames in a case-insensitive fashion when
performing filename expansion.
</p>
</dd>
-<dt><code>nocasematch</code></dt>
+<dt><span><code>nocasematch</code></span></dt>
<dd><p>If set, Bash matches patterns in a case-insensitive fashion when
performing matching while executing <code>case</code> or <code>[[</code>
-conditional commands,
+conditional commands (see <a href="#Conditional-Constructs">Conditional Constructs</a>,
when performing pattern substitution word expansions,
or when filtering possible completions as part of programmable completion.
</p>
</dd>
-<dt><code>nullglob</code></dt>
+<dt><span><code>noexpand_translation</code></span></dt>
+<dd><p>If set, Bash
+encloses the translated results of $"..." quoting in single quotes
+instead of double quotes.
+If the string is not translated, this has no effect.
+</p>
+</dd>
+<dt><span><code>nullglob</code></span></dt>
<dd><p>If set, Bash allows filename patterns which match no
files to expand to a null string, rather than themselves.
</p>
</dd>
-<dt><code>progcomp</code></dt>
+<dt><span><code>patsub_replacement</code></span></dt>
+<dd><p>If set, Bash
+expands occurrences of ‘<samp>&</samp>’ in the replacement string of pattern
+substitution to the text matched by the pattern, as described
+above (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
+This option is enabled by default.
+</p>
+</dd>
+<dt><span><code>progcomp</code></span></dt>
<dd><p>If set, the programmable completion facilities
(see <a href="#Programmable-Completion">Programmable Completion</a>) are enabled.
This option is enabled by default.
</p>
</dd>
-<dt><code>progcomp_alias</code></dt>
+<dt><span><code>progcomp_alias</code></span></dt>
<dd><p>If set, and programmable completion is enabled, Bash treats a command
name that doesn’t have any completions as a possible alias and attempts
alias expansion. If it has an alias, Bash attempts programmable
completion using the command word resulting from the expanded alias.
</p>
</dd>
-<dt><code>promptvars</code></dt>
+<dt><span><code>promptvars</code></span></dt>
<dd><p>If set, prompt strings undergo
parameter expansion, command substitution, arithmetic
expansion, and quote removal after being expanded
This option is enabled by default.
</p>
</dd>
-<dt><code>restricted_shell</code></dt>
+<dt><span><code>restricted_shell</code></span></dt>
<dd><p>The shell sets this option if it is started in restricted mode
(see <a href="#The-Restricted-Shell">The Restricted Shell</a>).
The value may not be changed.
the startup files to discover whether or not a shell is restricted.
</p>
</dd>
-<dt><code>shift_verbose</code></dt>
+<dt><span><code>shift_verbose</code></span></dt>
<dd><p>If this is set, the <code>shift</code>
builtin prints an error message when the shift count exceeds the
number of positional parameters.
</p>
</dd>
-<dt><code>sourcepath</code></dt>
-<dd><p>If set, the <code>source</code> builtin uses the value of <code>PATH</code>
+<dt><span><code>sourcepath</code></span></dt>
+<dd><p>If set, the <code>.</code> (<code>source</code>) builtin uses the value of <code>PATH</code>
to find the directory containing the file supplied as an argument.
This option is enabled by default.
</p>
</dd>
-<dt><code>xpg_echo</code></dt>
+<dt><span><code>varredir_close</code></span></dt>
+<dd><p>If set, the shell automatically closes file descriptors assigned using the
+<code>{varname}</code> redirection syntax (see <a href="#Redirections">Redirections</a>) instead of
+leaving them open when the command completes.
+</p>
+</dd>
+<dt><span><code>xpg_echo</code></span></dt>
<dd><p>If set, the <code>echo</code> builtin expands backslash-escape sequences
by default.
</p>
</dl>
<hr>
-<span id="Special-Builtins"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Special-Builtins">
+<div class="header">
<p>
Previous: <a href="#Modifying-Shell-Behavior" accesskey="p" rel="prev">Modifying Shell Behavior</a>, Up: <a href="#Shell-Builtin-Commands" accesskey="u" rel="up">Shell Builtin Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</pre></div>
<hr>
-<span id="Shell-Variables"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Shell-Variables">
+<div class="header">
<p>
-Next: <a href="#Bash-Features" accesskey="n" rel="next">Bash Features</a>, Previous: <a href="#Shell-Builtin-Commands" accesskey="p" rel="prev">Shell Builtin Commands</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Bash-Features" accesskey="n" rel="next">Bash Features</a>, Previous: <a href="#Shell-Builtin-Commands" accesskey="p" rel="prev">Shell Builtin Commands</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Shell-Variables-1"></span><h2 class="chapter">5 Shell Variables</h2>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Bourne-Shell-Variables" accesskey="1">Bourne Shell Variables</a></td><td> </td><td align="left" valign="top">Variables which Bash uses in the same way
- as the Bourne Shell.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Bash-Variables" accesskey="2">Bash Variables</a></td><td> </td><td align="left" valign="top">List of variables that exist in Bash.
-</td></tr>
-</table>
<p>This chapter describes the shell variables that Bash uses.
Bash automatically assigns default values to a number of variables.
</p>
+<ul class="section-toc">
+<li><a href="#Bourne-Shell-Variables" accesskey="1">Bourne Shell Variables</a></li>
+<li><a href="#Bash-Variables" accesskey="2">Bash Variables</a></li>
+</ul>
<hr>
-<span id="Bourne-Shell-Variables"></span><div class="header">
+<div class="section" id="Bourne-Shell-Variables">
+<div class="header">
<p>
Next: <a href="#Bash-Variables" accesskey="n" rel="next">Bash Variables</a>, Up: <a href="#Shell-Variables" accesskey="u" rel="up">Shell Variables</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
In some cases, Bash assigns a default value to the variable.
</p>
<dl compact="compact">
-<dt><code>CDPATH</code>
-<span id="index-CDPATH"></span>
-</dt>
+<dt id='index-CDPATH'><span><code>CDPATH</code><a href='#index-CDPATH' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of directories used as a search path for
the <code>cd</code> builtin command.
</p>
</dd>
-<dt><code>HOME</code>
-<span id="index-HOME"></span>
-</dt>
+<dt id='index-HOME'><span><code>HOME</code><a href='#index-HOME' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The current user’s home directory; the default for the <code>cd</code> builtin
command.
The value of this variable is also used by tilde expansion
(see <a href="#Tilde-Expansion">Tilde Expansion</a>).
</p>
</dd>
-<dt><code>IFS</code>
-<span id="index-IFS"></span>
-</dt>
+<dt id='index-IFS'><span><code>IFS</code><a href='#index-IFS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A list of characters that separate fields; used when the shell splits
words as part of expansion.
</p>
</dd>
-<dt><code>MAIL</code>
-<span id="index-MAIL"></span>
-</dt>
+<dt id='index-MAIL'><span><code>MAIL</code><a href='#index-MAIL' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If this parameter is set to a filename or directory name
and the <code>MAILPATH</code> variable
is not set, Bash informs the user of the arrival of mail in
the specified file or Maildir-format directory.
</p>
</dd>
-<dt><code>MAILPATH</code>
-<span id="index-MAILPATH"></span>
-</dt>
+<dt id='index-MAILPATH'><span><code>MAILPATH</code><a href='#index-MAILPATH' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of filenames which the shell periodically checks
for new mail.
Each list entry can specify the message that is printed when new mail
the current mail file.
</p>
</dd>
-<dt><code>OPTARG</code>
-<span id="index-OPTARG"></span>
-</dt>
+<dt id='index-OPTARG'><span><code>OPTARG</code><a href='#index-OPTARG' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The value of the last option argument processed by the <code>getopts</code> builtin.
</p>
</dd>
-<dt><code>OPTIND</code>
-<span id="index-OPTIND"></span>
-</dt>
+<dt id='index-OPTIND'><span><code>OPTIND</code><a href='#index-OPTIND' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The index of the last option argument processed by the <code>getopts</code> builtin.
</p>
</dd>
-<dt><code>PATH</code>
-<span id="index-PATH"></span>
-</dt>
+<dt id='index-PATH'><span><code>PATH</code><a href='#index-PATH' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of directories in which the shell looks for
commands.
A zero-length (null) directory name in the value of <code>PATH</code> indicates the
or trailing colon.
</p>
</dd>
-<dt><code>PS1</code>
-<span id="index-PS1"></span>
-</dt>
+<dt id='index-PS1'><span><code>PS1</code><a href='#index-PS1' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The primary prompt string. The default value is ‘<samp>\s-\v\$ </samp>’.
See <a href="#Controlling-the-Prompt">Controlling the Prompt</a>, for the complete list of escape
sequences that are expanded before <code>PS1</code> is displayed.
</p>
</dd>
-<dt><code>PS2</code>
-<span id="index-PS2"></span>
-</dt>
+<dt id='index-PS2'><span><code>PS2</code><a href='#index-PS2' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The secondary prompt string. The default value is ‘<samp>> </samp>’.
<code>PS2</code> is expanded in the same way as <code>PS1</code> before being
displayed.
</dl>
<hr>
-<span id="Bash-Variables"></span><div class="header">
+</div>
+<div class="section" id="Bash-Variables">
+<div class="header">
<p>
Previous: <a href="#Bourne-Shell-Variables" accesskey="p" rel="prev">Bourne Shell Variables</a>, Up: <a href="#Shell-Variables" accesskey="u" rel="up">Shell Variables</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
(see <a href="#Job-Control-Variables">Job Control Variables</a>).
</p>
<dl compact="compact">
-<dt><code>_</code>
-<span id="index-_005f"></span>
-</dt>
+<dt id='index-_005f'><span><code>_</code><a href='#index-_005f' class='copiable-anchor'> ¶</a></span></dt>
<dd><span id="index-_0024_005f"></span>
<p>($_, an underscore.)
At shell startup, set to the pathname used to invoke the
When checking mail, this parameter holds the name of the mail file.
</p>
</dd>
-<dt><code>BASH</code>
-<span id="index-BASH"></span>
-</dt>
+<dt id='index-BASH'><span><code>BASH</code><a href='#index-BASH' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The full pathname used to execute the current instance of Bash.
</p>
</dd>
-<dt><code>BASHOPTS</code>
-<span id="index-BASHOPTS"></span>
-</dt>
+<dt id='index-BASHOPTS'><span><code>BASHOPTS</code><a href='#index-BASHOPTS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of enabled shell options. Each word in
the list is a valid argument for the <samp>-s</samp> option to the
<code>shopt</code> builtin command (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
reading any startup files. This variable is readonly.
</p>
</dd>
-<dt><code>BASHPID</code>
-<span id="index-BASHPID"></span>
-</dt>
+<dt id='index-BASHPID'><span><code>BASHPID</code><a href='#index-BASHPID' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Expands to the process ID of the current Bash process.
This differs from <code>$$</code> under certain circumstances, such as subshells
that do not require Bash to be re-initialized.
subsequently reset.
</p>
</dd>
-<dt><code>BASH_ALIASES</code>
-<span id="index-BASH_005fALIASES"></span>
-</dt>
+<dt id='index-BASH_005fALIASES'><span><code>BASH_ALIASES</code><a href='#index-BASH_005fALIASES' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An associative array variable whose members correspond to the internal
list of aliases as maintained by the <code>alias</code> builtin.
(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
subsequently reset.
</p>
</dd>
-<dt><code>BASH_ARGC</code>
-<span id="index-BASH_005fARGC"></span>
-</dt>
+<dt id='index-BASH_005fARGC'><span><code>BASH_ARGC</code><a href='#index-BASH_005fARGC' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable whose values are the number of parameters in each
frame of the current bash execution call stack. The number of
parameters to the current subroutine (shell function or script executed
may result in inconsistent values.
</p>
</dd>
-<dt><code>BASH_ARGV</code>
-<span id="index-BASH_005fARGV"></span>
-</dt>
+<dt id='index-BASH_005fARGV'><span><code>BASH_ARGV</code><a href='#index-BASH_005fARGV' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable containing all of the parameters in the current bash
execution call stack. The final parameter of the last subroutine call
is at the top of the stack; the first parameter of the initial call is
may result in inconsistent values.
</p>
</dd>
-<dt><code>BASH_ARGV0</code>
-<span id="index-BASH_005fARGV0"></span>
-</dt>
+<dt id='index-BASH_005fARGV0'><span><code>BASH_ARGV0</code><a href='#index-BASH_005fARGV0' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>When referenced, this variable expands to the name of the shell or shell
script (identical to <code>$0</code>; See <a href="#Special-Parameters">Special Parameters</a>,
for the description of special parameter 0).
subsequently reset.
</p>
</dd>
-<dt><code>BASH_CMDS</code>
-<span id="index-BASH_005fCMDS"></span>
-</dt>
+<dt id='index-BASH_005fCMDS'><span><code>BASH_CMDS</code><a href='#index-BASH_005fCMDS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An associative array variable whose members correspond to the internal
hash table of commands as maintained by the <code>hash</code> builtin
(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
subsequently reset.
</p>
</dd>
-<dt><code>BASH_COMMAND</code>
-<span id="index-BASH_005fCOMMAND"></span>
-</dt>
+<dt id='index-BASH_005fCOMMAND'><span><code>BASH_COMMAND</code><a href='#index-BASH_005fCOMMAND' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The command currently being executed or about to be executed, unless the
shell is executing a command as the result of a trap,
in which case it is the command executing at the time of the trap.
subsequently reset.
</p>
</dd>
-<dt><code>BASH_COMPAT</code>
-<span id="index-BASH_005fCOMPAT"></span>
-</dt>
+<dt id='index-BASH_005fCOMPAT'><span><code>BASH_COMPAT</code><a href='#index-BASH_005fCOMPAT' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The value is used to set the shell’s compatibility level.
See <a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a>, for a description of the various
compatibility levels and their effects.
The current version is also a valid value.
</p>
</dd>
-<dt><code>BASH_ENV</code>
-<span id="index-BASH_005fENV"></span>
-</dt>
+<dt id='index-BASH_005fENV'><span><code>BASH_ENV</code><a href='#index-BASH_005fENV' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If this variable is set when Bash is invoked to execute a shell
script, its value is expanded and used as the name of a startup file
to read before executing the script. See <a href="#Bash-Startup-Files">Bash Startup Files</a>.
</p>
</dd>
-<dt><code>BASH_EXECUTION_STRING</code>
-<span id="index-BASH_005fEXECUTION_005fSTRING"></span>
-</dt>
+<dt id='index-BASH_005fEXECUTION_005fSTRING'><span><code>BASH_EXECUTION_STRING</code><a href='#index-BASH_005fEXECUTION_005fSTRING' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The command argument to the <samp>-c</samp> invocation option.
</p>
</dd>
-<dt><code>BASH_LINENO</code>
-<span id="index-BASH_005fLINENO"></span>
-</dt>
+<dt id='index-BASH_005fLINENO'><span><code>BASH_LINENO</code><a href='#index-BASH_005fLINENO' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable whose members are the line numbers in source files
-where each corresponding member of <var>FUNCNAME</var> was invoked.
+where each corresponding member of <code>FUNCNAME</code> was invoked.
<code>${BASH_LINENO[$i]}</code> is the line number in the source file
(<code>${BASH_SOURCE[$i+1]}</code>) where
<code>${FUNCNAME[$i]}</code> was called (or <code>${BASH_LINENO[$i-1]}</code> if
Use <code>LINENO</code> to obtain the current line number.
</p>
</dd>
-<dt><code>BASH_LOADABLES_PATH</code>
-<span id="index-BASH_005fLOADABLES_005fPATH"></span>
-</dt>
+<dt id='index-BASH_005fLOADABLES_005fPATH'><span><code>BASH_LOADABLES_PATH</code><a href='#index-BASH_005fLOADABLES_005fPATH' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of directories in which the shell looks for
dynamically loadable builtins specified by the
<code>enable</code> command.
</p>
</dd>
-<dt><code>BASH_REMATCH</code>
-<span id="index-BASH_005fREMATCH"></span>
-</dt>
+<dt id='index-BASH_005fREMATCH'><span><code>BASH_REMATCH</code><a href='#index-BASH_005fREMATCH' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable whose members are assigned by the ‘<samp>=~</samp>’ binary
operator to the <code>[[</code> conditional command
(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
string matching the <var>n</var>th parenthesized subexpression.
</p>
</dd>
-<dt><code>BASH_SOURCE</code>
-<span id="index-BASH_005fSOURCE"></span>
-</dt>
+<dt id='index-BASH_005fSOURCE'><span><code>BASH_SOURCE</code><a href='#index-BASH_005fSOURCE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable whose members are the source filenames where the
corresponding shell function names in the <code>FUNCNAME</code> array
variable are defined.
<code>${BASH_SOURCE[$i]}</code> and called from <code>${BASH_SOURCE[$i+1]}</code>
</p>
</dd>
-<dt><code>BASH_SUBSHELL</code>
-<span id="index-BASH_005fSUBSHELL"></span>
-</dt>
+<dt id='index-BASH_005fSUBSHELL'><span><code>BASH_SUBSHELL</code><a href='#index-BASH_005fSUBSHELL' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Incremented by one within each subshell or subshell environment when
the shell begins executing in that environment.
The initial value is 0.
subsequently reset.
</p>
</dd>
-<dt><code>BASH_VERSINFO</code>
-<span id="index-BASH_005fVERSINFO"></span>
-</dt>
+<dt id='index-BASH_005fVERSINFO'><span><code>BASH_VERSINFO</code><a href='#index-BASH_005fVERSINFO' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A readonly array variable (see <a href="#Arrays">Arrays</a>)
whose members hold version information for this instance of Bash.
The values assigned to the array members are as follows:
</p>
<dl compact="compact">
-<dt><code>BASH_VERSINFO[0]</code></dt>
-<dd><p>The major version number (the <var>release</var>).
+<dt><span><code>BASH_VERSINFO[0]</code></span></dt>
+<dd><p>The major version number (the <em>release</em>).
</p>
</dd>
-<dt><code>BASH_VERSINFO[1]</code></dt>
-<dd><p>The minor version number (the <var>version</var>).
+<dt><span><code>BASH_VERSINFO[1]</code></span></dt>
+<dd><p>The minor version number (the <em>version</em>).
</p>
</dd>
-<dt><code>BASH_VERSINFO[2]</code></dt>
+<dt><span><code>BASH_VERSINFO[2]</code></span></dt>
<dd><p>The patch level.
</p>
</dd>
-<dt><code>BASH_VERSINFO[3]</code></dt>
+<dt><span><code>BASH_VERSINFO[3]</code></span></dt>
<dd><p>The build version.
</p>
</dd>
-<dt><code>BASH_VERSINFO[4]</code></dt>
-<dd><p>The release status (e.g., <var>beta1</var>).
+<dt><span><code>BASH_VERSINFO[4]</code></span></dt>
+<dd><p>The release status (e.g., <code>beta1</code>).
</p>
</dd>
-<dt><code>BASH_VERSINFO[5]</code></dt>
+<dt><span><code>BASH_VERSINFO[5]</code></span></dt>
<dd><p>The value of <code>MACHTYPE</code>.
</p></dd>
</dl>
</dd>
-<dt><code>BASH_VERSION</code>
-<span id="index-BASH_005fVERSION"></span>
-</dt>
+<dt id='index-BASH_005fVERSION'><span><code>BASH_VERSION</code><a href='#index-BASH_005fVERSION' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The version number of the current instance of Bash.
</p>
</dd>
-<dt><code>BASH_XTRACEFD</code>
-<span id="index-BASH_005fXTRACEFD"></span>
-</dt>
+<dt id='index-BASH_005fXTRACEFD'><span><code>BASH_XTRACEFD</code><a href='#index-BASH_005fXTRACEFD' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If set to an integer corresponding to a valid file descriptor, Bash
will write the trace output generated when ‘<samp>set -x</samp>’
is enabled to that file descriptor.
being closed.
</p>
</dd>
-<dt><code>CHILD_MAX</code>
-<span id="index-CHILD_005fMAX"></span>
-</dt>
+<dt id='index-CHILD_005fMAX'><span><code>CHILD_MAX</code><a href='#index-CHILD_005fMAX' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Set the number of exited child status values for the shell to remember.
Bash will not allow this value to be decreased below a <small>POSIX</small>-mandated
minimum, and there is a maximum value (currently 8192) that this may
The minimum value is system-dependent.
</p>
</dd>
-<dt><code>COLUMNS</code>
-<span id="index-COLUMNS"></span>
-</dt>
+<dt id='index-COLUMNS'><span><code>COLUMNS</code><a href='#index-COLUMNS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Used by the <code>select</code> command to determine the terminal width
when printing selection lists.
Automatically set if the <code>checkwinsize</code> option is enabled
<code>SIGWINCH</code>.
</p>
</dd>
-<dt><code>COMP_CWORD</code>
-<span id="index-COMP_005fCWORD"></span>
-</dt>
+<dt id='index-COMP_005fCWORD'><span><code>COMP_CWORD</code><a href='#index-COMP_005fCWORD' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An index into <code>${COMP_WORDS}</code> of the word containing the current
cursor position.
This variable is available only in shell functions invoked by the
programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
</p>
</dd>
-<dt><code>COMP_LINE</code>
-<span id="index-COMP_005fLINE"></span>
-</dt>
+<dt id='index-COMP_005fLINE'><span><code>COMP_LINE</code><a href='#index-COMP_005fLINE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The current command line.
This variable is available only in shell functions and external
commands invoked by the
programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
</p>
</dd>
-<dt><code>COMP_POINT</code>
-<span id="index-COMP_005fPOINT"></span>
-</dt>
+<dt id='index-COMP_005fPOINT'><span><code>COMP_POINT</code><a href='#index-COMP_005fPOINT' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The index of the current cursor position relative to the beginning of
the current command.
If the current cursor position is at the end of the current command,
programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
</p>
</dd>
-<dt><code>COMP_TYPE</code>
-<span id="index-COMP_005fTYPE"></span>
-</dt>
+<dt id='index-COMP_005fTYPE'><span><code>COMP_TYPE</code><a href='#index-COMP_005fTYPE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Set to an integer value corresponding to the type of completion attempted
that caused a completion function to be called:
-<var>TAB</var>, for normal completion,
+<tt class="key">TAB</tt>, for normal completion,
‘<samp>?</samp>’, for listing completions after successive tabs,
‘<samp>!</samp>’, for listing alternatives on partial word completion,
‘<samp>@</samp>’, to list completions if the word is not unmodified,
programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
</p>
</dd>
-<dt><code>COMP_KEY</code>
-<span id="index-COMP_005fKEY"></span>
-</dt>
+<dt id='index-COMP_005fKEY'><span><code>COMP_KEY</code><a href='#index-COMP_005fKEY' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The key (or final key of a key sequence) used to invoke the current
completion function.
</p>
</dd>
-<dt><code>COMP_WORDBREAKS</code>
-<span id="index-COMP_005fWORDBREAKS"></span>
-</dt>
+<dt id='index-COMP_005fWORDBREAKS'><span><code>COMP_WORDBREAKS</code><a href='#index-COMP_005fWORDBREAKS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The set of characters that the Readline library treats as word
separators when performing word completion.
If <code>COMP_WORDBREAKS</code>
even if it is subsequently reset.
</p>
</dd>
-<dt><code>COMP_WORDS</code>
-<span id="index-COMP_005fWORDS"></span>
-</dt>
+<dt id='index-COMP_005fWORDS'><span><code>COMP_WORDS</code><a href='#index-COMP_005fWORDS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable consisting of the individual
words in the current command line.
The line is split into words as Readline would split it, using
programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
</p>
</dd>
-<dt><code>COMPREPLY</code>
-<span id="index-COMPREPLY"></span>
-</dt>
+<dt id='index-COMPREPLY'><span><code>COMPREPLY</code><a href='#index-COMPREPLY' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable from which Bash reads the possible completions
generated by a shell function invoked by the programmable completion
facility (see <a href="#Programmable-Completion">Programmable Completion</a>).
Each array element contains one possible completion.
</p>
</dd>
-<dt><code>COPROC</code>
-<span id="index-COPROC"></span>
-</dt>
+<dt id='index-COPROC'><span><code>COPROC</code><a href='#index-COPROC' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable created to hold the file descriptors
for output from and input to an unnamed coprocess (see <a href="#Coprocesses">Coprocesses</a>).
</p>
</dd>
-<dt><code>DIRSTACK</code>
-<span id="index-DIRSTACK"></span>
-</dt>
+<dt id='index-DIRSTACK'><span><code>DIRSTACK</code><a href='#index-DIRSTACK' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable containing the current contents of the directory stack.
Directories appear in the stack in the order they are displayed by the
<code>dirs</code> builtin.
it is subsequently reset.
</p>
</dd>
-<dt><code>EMACS</code>
-<span id="index-EMACS"></span>
-</dt>
+<dt id='index-EMACS'><span><code>EMACS</code><a href='#index-EMACS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If Bash finds this variable in the environment when the shell
starts with value ‘<samp>t</samp>’, it assumes that the shell is running in an
Emacs shell buffer and disables line editing.
</p>
</dd>
-<dt><code>ENV</code>
-<span id="index-ENV"></span>
-</dt>
-<dd><p>Expanded and executed similarlty to <code>BASH_ENV</code>
+<dt id='index-ENV'><span><code>ENV</code><a href='#index-ENV' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>Expanded and executed similarly to <code>BASH_ENV</code>
(see <a href="#Bash-Startup-Files">Bash Startup Files</a>)
when an interactive shell is invoked in
<small>POSIX</small> Mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
</p>
</dd>
-<dt><code>EPOCHREALTIME</code>
-<span id="index-EPOCHREALTIME"></span>
-</dt>
+<dt id='index-EPOCHREALTIME'><span><code>EPOCHREALTIME</code><a href='#index-EPOCHREALTIME' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Each time this parameter is referenced, it expands to the number of seconds
since the Unix Epoch as a floating point value with micro-second granularity
-(see the documentation for the C library function <var>time</var> for the
+(see the documentation for the C library function <code>time</code> for the
definition of Epoch).
Assignments to <code>EPOCHREALTIME</code> are ignored.
If <code>EPOCHREALTIME</code>
it is subsequently reset.
</p>
</dd>
-<dt><code>EPOCHSECONDS</code>
-<span id="index-EPOCHSECONDS"></span>
-</dt>
+<dt id='index-EPOCHSECONDS'><span><code>EPOCHSECONDS</code><a href='#index-EPOCHSECONDS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Each time this parameter is referenced, it expands to the number of seconds
since the Unix Epoch (see the documentation for the C library function
-<var>time</var> for the definition of Epoch).
+<code>time</code> for the definition of Epoch).
Assignments to <code>EPOCHSECONDS</code> are ignored.
If <code>EPOCHSECONDS</code>
is unset, it loses its special properties, even if
it is subsequently reset.
</p>
</dd>
-<dt><code>EUID</code>
-<span id="index-EUID"></span>
-</dt>
+<dt id='index-EUID'><span><code>EUID</code><a href='#index-EUID' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The numeric effective user id of the current user. This variable
is readonly.
</p>
</dd>
-<dt><code>EXECIGNORE</code>
-<span id="index-EXECIGNORE"></span>
-</dt>
+<dt id='index-EXECIGNORE'><span><code>EXECIGNORE</code><a href='#index-EXECIGNORE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of shell patterns (see <a href="#Pattern-Matching">Pattern Matching</a>)
defining the list of filenames to be ignored by command search using
<code>PATH</code>.
option.
</p>
</dd>
-<dt><code>FCEDIT</code>
-<span id="index-FCEDIT"></span>
-</dt>
+<dt id='index-FCEDIT'><span><code>FCEDIT</code><a href='#index-FCEDIT' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The editor used as a default by the <samp>-e</samp> option to the <code>fc</code>
builtin command.
</p>
</dd>
-<dt><code>FIGNORE</code>
-<span id="index-FIGNORE"></span>
-</dt>
+<dt id='index-FIGNORE'><span><code>FIGNORE</code><a href='#index-FIGNORE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of suffixes to ignore when performing
filename completion.
A filename whose suffix matches one of the entries in
value is ‘<samp>.o:~</samp>’
</p>
</dd>
-<dt><code>FUNCNAME</code>
-<span id="index-FUNCNAME"></span>
-</dt>
+<dt id='index-FUNCNAME'><span><code>FUNCNAME</code><a href='#index-FUNCNAME' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable containing the names of all shell functions
currently in the execution call stack.
The element with index 0 is the name of any currently-executing
information.
</p>
</dd>
-<dt><code>FUNCNEST</code>
-<span id="index-FUNCNEST"></span>
-</dt>
+<dt id='index-FUNCNEST'><span><code>FUNCNEST</code><a href='#index-FUNCNEST' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If set to a numeric value greater than 0, defines a maximum function
nesting level. Function invocations that exceed this nesting level
will cause the current command to abort.
</p>
</dd>
-<dt><code>GLOBIGNORE</code>
-<span id="index-GLOBIGNORE"></span>
-</dt>
+<dt id='index-GLOBIGNORE'><span><code>GLOBIGNORE</code><a href='#index-GLOBIGNORE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of patterns defining the set of file names to
be ignored by filename expansion.
If a file name matched by a filename expansion pattern also matches one
option.
</p>
</dd>
-<dt><code>GROUPS</code>
-<span id="index-GROUPS"></span>
-</dt>
+<dt id='index-GROUPS'><span><code>GROUPS</code><a href='#index-GROUPS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable containing the list of groups of which the current
user is a member.
Assignments to <code>GROUPS</code> have no effect.
subsequently reset.
</p>
</dd>
-<dt><code>histchars</code>
-<span id="index-histchars"></span>
-</dt>
+<dt id='index-histchars'><span><code>histchars</code><a href='#index-histchars' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Up to three characters which control history expansion, quick
-substitution, and tokenization (see <a href="#History-Interaction">History Interaction</a>).
+substitution, and tokenization (see <a href="#History-Interaction">History Expansion</a>).
The first character is the
-<var>history expansion</var> character, that is, the character which signifies the
+<em>history expansion</em> character, that is, the character which signifies the
start of a history expansion, normally ‘<samp>!</samp>’. The second character is the
character which signifies ‘quick substitution’ when seen as the first
character on a line, normally ‘<samp>^</samp>’. The optional third character is the
parser to treat the rest of the line as a comment.
</p>
</dd>
-<dt><code>HISTCMD</code>
-<span id="index-HISTCMD"></span>
-</dt>
+<dt id='index-HISTCMD'><span><code>HISTCMD</code><a href='#index-HISTCMD' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The history number, or index in the history list, of the current
command.
Assignments to <code>HISTCMD</code> are ignored.
even if it is subsequently reset.
</p>
</dd>
-<dt><code>HISTCONTROL</code>
-<span id="index-HISTCONTROL"></span>
-</dt>
+<dt id='index-HISTCONTROL'><span><code>HISTCONTROL</code><a href='#index-HISTCONTROL' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of values controlling how commands are saved on
the history list.
If the list of values includes ‘<samp>ignorespace</samp>’, lines which begin
<code>HISTCONTROL</code>.
</p>
</dd>
-<dt><code>HISTFILE</code>
-<span id="index-HISTFILE"></span>
-</dt>
+<dt id='index-HISTFILE'><span><code>HISTFILE</code><a href='#index-HISTFILE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The name of the file to which the command history is saved. The
default value is <samp>~/.bash_history</samp>.
</p>
</dd>
-<dt><code>HISTFILESIZE</code>
-<span id="index-HISTFILESIZE"></span>
-</dt>
+<dt id='index-HISTFILESIZE'><span><code>HISTFILESIZE</code><a href='#index-HISTFILESIZE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The maximum number of lines contained in the history file.
When this variable is assigned a value, the history file is truncated,
if necessary, to contain no more than that number of lines
after reading any startup files.
</p>
</dd>
-<dt><code>HISTIGNORE</code>
-<span id="index-HISTIGNORE"></span>
-</dt>
+<dt id='index-HISTIGNORE'><span><code>HISTIGNORE</code><a href='#index-HISTIGNORE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of patterns used to decide which command
lines should be saved on the history list. Each pattern is
anchored at the beginning of the line and must match the complete
provides the functionality of <code>ignoreboth</code>.
</p>
</dd>
-<dt><code>HISTSIZE</code>
-<span id="index-HISTSIZE"></span>
-</dt>
+<dt id='index-HISTSIZE'><span><code>HISTSIZE</code><a href='#index-HISTSIZE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The maximum number of commands to remember on the history list.
If the value is 0, commands are not saved in the history list.
Numeric values less than zero result in every command being saved
The shell sets the default value to 500 after reading any startup files.
</p>
</dd>
-<dt><code>HISTTIMEFORMAT</code>
-<span id="index-HISTTIMEFORMAT"></span>
-</dt>
+<dt id='index-HISTTIMEFORMAT'><span><code>HISTTIMEFORMAT</code><a href='#index-HISTTIMEFORMAT' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If this variable is set and not null, its value is used as a format string
-for <var>strftime</var> to print the time stamp associated with each history
+for <code>strftime</code> to print the time stamp associated with each history
entry displayed by the <code>history</code> builtin.
If this variable is set, time stamps are written to the history file so
they may be preserved across shell sessions.
other history lines.
</p>
</dd>
-<dt><code>HOSTFILE</code>
-<span id="index-HOSTFILE"></span>
-</dt>
+<dt id='index-HOSTFILE'><span><code>HOSTFILE</code><a href='#index-HOSTFILE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Contains the name of a file in the same format as <samp>/etc/hosts</samp> that
should be read when the shell needs to complete a hostname.
The list of possible hostname completions may be changed while the shell
When <code>HOSTFILE</code> is unset, the hostname list is cleared.
</p>
</dd>
-<dt><code>HOSTNAME</code>
-<span id="index-HOSTNAME"></span>
-</dt>
+<dt id='index-HOSTNAME'><span><code>HOSTNAME</code><a href='#index-HOSTNAME' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The name of the current host.
</p>
</dd>
-<dt><code>HOSTTYPE</code>
-<span id="index-HOSTTYPE"></span>
-</dt>
+<dt id='index-HOSTTYPE'><span><code>HOSTTYPE</code><a href='#index-HOSTTYPE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A string describing the machine Bash is running on.
</p>
</dd>
-<dt><code>IGNOREEOF</code>
-<span id="index-IGNOREEOF"></span>
-</dt>
+<dt id='index-IGNOREEOF'><span><code>IGNOREEOF</code><a href='#index-IGNOREEOF' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Controls the action of the shell on receipt of an <code>EOF</code> character
as the sole input. If set, the value denotes the number
of consecutive <code>EOF</code> characters that can be read as the
input to the shell. This is only in effect for interactive shells.
</p>
</dd>
-<dt><code>INPUTRC</code>
-<span id="index-INPUTRC"></span>
-</dt>
+<dt id='index-INPUTRC'><span><code>INPUTRC</code><a href='#index-INPUTRC' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The name of the Readline initialization file, overriding the default
of <samp>~/.inputrc</samp>.
</p>
</dd>
-<dt><code>INSIDE_EMACS</code>
-<span id="index-INSIDE_005fEMACS"></span>
-</dt>
+<dt id='index-INSIDE_005fEMACS'><span><code>INSIDE_EMACS</code><a href='#index-INSIDE_005fEMACS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If Bash finds this variable in the environment when the shell
starts, it assumes that the shell is running in an Emacs shell buffer
and may disable line editing depending on the value of <code>TERM</code>.
</p>
</dd>
-<dt><code>LANG</code>
-<span id="index-LANG"></span>
-</dt>
+<dt id='index-LANG-1'><span><code>LANG</code><a href='#index-LANG-1' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Used to determine the locale category for any category not specifically
selected with a variable starting with <code>LC_</code>.
</p>
</dd>
-<dt><code>LC_ALL</code>
-<span id="index-LC_005fALL"></span>
-</dt>
+<dt id='index-LC_005fALL'><span><code>LC_ALL</code><a href='#index-LC_005fALL' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This variable overrides the value of <code>LANG</code> and any other
<code>LC_</code> variable specifying a locale category.
</p>
</dd>
-<dt><code>LC_COLLATE</code>
-<span id="index-LC_005fCOLLATE"></span>
-</dt>
+<dt id='index-LC_005fCOLLATE'><span><code>LC_COLLATE</code><a href='#index-LC_005fCOLLATE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This variable determines the collation order used when sorting the
results of filename expansion, and
determines the behavior of range expressions, equivalence classes,
(see <a href="#Filename-Expansion">Filename Expansion</a>).
</p>
</dd>
-<dt><code>LC_CTYPE</code>
-<span id="index-LC_005fCTYPE"></span>
-</dt>
+<dt id='index-LC_005fCTYPE'><span><code>LC_CTYPE</code><a href='#index-LC_005fCTYPE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This variable determines the interpretation of characters and the
behavior of character classes within filename expansion and pattern
matching (see <a href="#Filename-Expansion">Filename Expansion</a>).
</p>
</dd>
-<dt><code>LC_MESSAGES</code>
-<span id="index-LC_005fMESSAGES-1"></span>
-</dt>
+<dt id='index-LC_005fMESSAGES-1'><span><code>LC_MESSAGES</code><a href='#index-LC_005fMESSAGES-1' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This variable determines the locale used to translate double-quoted
-strings preceded by a ‘<samp>$</samp>’ (see <a href="#Locale-Translation">Locale Translation</a>).
+strings preceded by a ‘<samp>$</samp>’ (see <a href="#Locale-Translation">Locale-Specific Translation</a>).
</p>
</dd>
-<dt><code>LC_NUMERIC</code>
-<span id="index-LC_005fNUMERIC"></span>
-</dt>
+<dt id='index-LC_005fNUMERIC'><span><code>LC_NUMERIC</code><a href='#index-LC_005fNUMERIC' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This variable determines the locale category used for number formatting.
</p>
</dd>
-<dt><code>LC_TIME</code>
-<span id="index-LC_005fTIME"></span>
-</dt>
+<dt id='index-LC_005fTIME'><span><code>LC_TIME</code><a href='#index-LC_005fTIME' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This variable determines the locale category used for data and time
formatting.
</p>
</dd>
-<dt><code>LINENO</code>
-<span id="index-LINENO"></span>
-</dt>
+<dt id='index-LINENO'><span><code>LINENO</code><a href='#index-LINENO' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The line number in the script or shell function currently executing.
If <code>LINENO</code>
is unset, it loses its special properties, even if it is
subsequently reset.
</p>
</dd>
-<dt><code>LINES</code>
-<span id="index-LINES"></span>
-</dt>
+<dt id='index-LINES'><span><code>LINES</code><a href='#index-LINES' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Used by the <code>select</code> command to determine the column length
for printing selection lists.
Automatically set if the <code>checkwinsize</code> option is enabled
<code>SIGWINCH</code>.
</p>
</dd>
-<dt><code>MACHTYPE</code>
-<span id="index-MACHTYPE"></span>
-</dt>
+<dt id='index-MACHTYPE'><span><code>MACHTYPE</code><a href='#index-MACHTYPE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A string that fully describes the system type on which Bash
is executing, in the standard <small>GNU</small> <var>cpu-company-system</var> format.
</p>
</dd>
-<dt><code>MAILCHECK</code>
-<span id="index-MAILCHECK"></span>
-</dt>
+<dt id='index-MAILCHECK'><span><code>MAILCHECK</code><a href='#index-MAILCHECK' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>How often (in seconds) that the shell should check for mail in the
files specified in the <code>MAILPATH</code> or <code>MAIL</code> variables.
The default is 60 seconds. When it is time to check
greater than or equal to zero, the shell disables mail checking.
</p>
</dd>
-<dt><code>MAPFILE</code>
-<span id="index-MAPFILE"></span>
-</dt>
+<dt id='index-MAPFILE'><span><code>MAPFILE</code><a href='#index-MAPFILE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable created to hold the text read by the
<code>mapfile</code> builtin when no variable name is supplied.
</p>
</dd>
-<dt><code>OLDPWD</code>
-<span id="index-OLDPWD"></span>
-</dt>
+<dt id='index-OLDPWD'><span><code>OLDPWD</code><a href='#index-OLDPWD' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The previous working directory as set by the <code>cd</code> builtin.
</p>
</dd>
-<dt><code>OPTERR</code>
-<span id="index-OPTERR"></span>
-</dt>
+<dt id='index-OPTERR'><span><code>OPTERR</code><a href='#index-OPTERR' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If set to the value 1, Bash displays error messages
generated by the <code>getopts</code> builtin command.
</p>
</dd>
-<dt><code>OSTYPE</code>
-<span id="index-OSTYPE"></span>
-</dt>
+<dt id='index-OSTYPE'><span><code>OSTYPE</code><a href='#index-OSTYPE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A string describing the operating system Bash is running on.
</p>
</dd>
-<dt><code>PIPESTATUS</code>
-<span id="index-PIPESTATUS"></span>
-</dt>
+<dt id='index-PIPESTATUS'><span><code>PIPESTATUS</code><a href='#index-PIPESTATUS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>An array variable (see <a href="#Arrays">Arrays</a>)
containing a list of exit status values from the processes
in the most-recently-executed foreground pipeline (which may
contain only a single command).
</p>
</dd>
-<dt><code>POSIXLY_CORRECT</code>
-<span id="index-POSIXLY_005fCORRECT"></span>
-</dt>
+<dt id='index-POSIXLY_005fCORRECT'><span><code>POSIXLY_CORRECT</code><a href='#index-POSIXLY_005fCORRECT' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If this variable is in the environment when Bash starts, the shell
enters <small>POSIX</small> mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>) before reading the
startup files, as if the <samp>--posix</samp> invocation option had been supplied.
not already set.
</p>
</dd>
-<dt><code>PPID</code>
-<span id="index-PPID"></span>
-</dt>
+<dt id='index-PPID'><span><code>PPID</code><a href='#index-PPID' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The process <small>ID</small> of the shell’s parent process. This variable
is readonly.
</p>
</dd>
-<dt><code>PROMPT_COMMAND</code>
-<span id="index-PROMPT_005fCOMMAND"></span>
-</dt>
+<dt id='index-PROMPT_005fCOMMAND'><span><code>PROMPT_COMMAND</code><a href='#index-PROMPT_005fCOMMAND' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If this variable is set, and is an array,
the value of each set element is interpreted as a command to execute
before printing the primary prompt (<code>$PS1</code>).
its value is used as a command to execute instead.
</p>
</dd>
-<dt><code>PROMPT_DIRTRIM</code>
-<span id="index-PROMPT_005fDIRTRIM"></span>
-</dt>
+<dt id='index-PROMPT_005fDIRTRIM'><span><code>PROMPT_DIRTRIM</code><a href='#index-PROMPT_005fDIRTRIM' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If set to a number greater than zero, the value is used as the number of
trailing directory components to retain when expanding the <code>\w</code> and
<code>\W</code> prompt string escapes (see <a href="#Controlling-the-Prompt">Controlling the Prompt</a>).
Characters removed are replaced with an ellipsis.
</p>
</dd>
-<dt><code>PS0</code>
-<span id="index-PS0"></span>
-</dt>
+<dt id='index-PS0'><span><code>PS0</code><a href='#index-PS0' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The value of this parameter is expanded like <code>PS1</code>
and displayed by interactive shells after reading a command
and before the command is executed.
</p>
</dd>
-<dt><code>PS3</code>
-<span id="index-PS3"></span>
-</dt>
+<dt id='index-PS3'><span><code>PS3</code><a href='#index-PS3' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The value of this variable is used as the prompt for the
<code>select</code> command. If this variable is not set, the
<code>select</code> command prompts with ‘<samp>#? </samp>’
</p>
</dd>
-<dt><code>PS4</code>
-<span id="index-PS4"></span>
-</dt>
-<dd><p>The value of this parameter is expanded like <var>PS1</var>
+<dt id='index-PS4'><span><code>PS4</code><a href='#index-PS4' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The value of this parameter is expanded like <code>PS1</code>
and the expanded value is the prompt printed before the command line
is echoed when the <samp>-x</samp> option is set (see <a href="#The-Set-Builtin">The Set Builtin</a>).
The first character of the expanded value is replicated multiple times,
The default is ‘<samp>+ </samp>’.
</p>
</dd>
-<dt><code>PWD</code>
-<span id="index-PWD"></span>
-</dt>
+<dt id='index-PWD'><span><code>PWD</code><a href='#index-PWD' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The current working directory as set by the <code>cd</code> builtin.
</p>
</dd>
-<dt><code>RANDOM</code>
-<span id="index-RANDOM"></span>
-</dt>
+<dt id='index-RANDOM'><span><code>RANDOM</code><a href='#index-RANDOM' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Each time this parameter is referenced, it expands to a random integer
between 0 and 32767. Assigning a value to this
variable seeds the random number generator.
subsequently reset.
</p>
</dd>
-<dt><code>READLINE_LINE</code>
-<span id="index-READLINE_005fLINE"></span>
-</dt>
+<dt id='index-READLINE_005fARGUMENT'><span><code>READLINE_ARGUMENT</code><a href='#index-READLINE_005fARGUMENT' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>Any numeric argument given to a Readline command that was defined using
+‘<samp>bind -x</samp>’ (see <a href="#Bash-Builtins">Bash Builtin Commands</a>
+when it was invoked.
+</p>
+</dd>
+<dt id='index-READLINE_005fLINE'><span><code>READLINE_LINE</code><a href='#index-READLINE_005fLINE' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The contents of the Readline line buffer, for use
-with ‘<samp>bind -x</samp>’ (see <a href="#Bash-Builtins">Bash Builtins</a>).
+with ‘<samp>bind -x</samp>’ (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
</dd>
-<dt><code>READLINE_MARK</code>
-<span id="index-READLINE_005fMARK"></span>
-</dt>
-<dd><p>The position of the <var>mark</var> (saved insertion point) in the
+<dt id='index-READLINE_005fMARK'><span><code>READLINE_MARK</code><a href='#index-READLINE_005fMARK' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The position of the <em>mark</em> (saved insertion point) in the
Readline line buffer, for use
-with ‘<samp>bind -x</samp>’ (see <a href="#Bash-Builtins">Bash Builtins</a>).
+with ‘<samp>bind -x</samp>’ (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
The characters between the insertion point and the mark are often
-called the <var>region</var>.
+called the <em>region</em>.
</p>
</dd>
-<dt><code>READLINE_POINT</code>
-<span id="index-READLINE_005fPOINT"></span>
-</dt>
+<dt id='index-READLINE_005fPOINT'><span><code>READLINE_POINT</code><a href='#index-READLINE_005fPOINT' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The position of the insertion point in the Readline line buffer, for use
-with ‘<samp>bind -x</samp>’ (see <a href="#Bash-Builtins">Bash Builtins</a>).
+with ‘<samp>bind -x</samp>’ (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
</dd>
-<dt><code>REPLY</code>
-<span id="index-REPLY"></span>
-</dt>
+<dt id='index-REPLY'><span><code>REPLY</code><a href='#index-REPLY' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The default variable for the <code>read</code> builtin.
</p>
</dd>
-<dt><code>SECONDS</code>
-<span id="index-SECONDS"></span>
-</dt>
-<dd><p>This variable expands to the number of seconds since the
-shell was started. Assignment to this variable resets
-the count to the value assigned, and the expanded value
-becomes the value assigned plus the number of seconds
+<dt id='index-SECONDS'><span><code>SECONDS</code><a href='#index-SECONDS' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>This variable expands to the number of seconds since the shell was started.
+Assignment to this variable resets the count to the value assigned, and the
+expanded value becomes the value assigned plus the number of seconds
since the assignment.
-The number of seconds at shell invocation and the current time is always
+The number of seconds at shell invocation and the current time are always
determined by querying the system clock.
If <code>SECONDS</code>
is unset, it loses its special properties,
even if it is subsequently reset.
</p>
</dd>
-<dt><code>SHELL</code>
-<span id="index-SHELL"></span>
-</dt>
+<dt id='index-SHELL'><span><code>SHELL</code><a href='#index-SHELL' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This environment variable expands to the full pathname to the shell.
If it is not set when the shell starts,
Bash assigns to it the full pathname of the current user’s login shell.
</p>
</dd>
-<dt><code>SHELLOPTS</code>
-<span id="index-SHELLOPTS"></span>
-</dt>
+<dt id='index-SHELLOPTS'><span><code>SHELLOPTS</code><a href='#index-SHELLOPTS' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A colon-separated list of enabled shell options. Each word in
the list is a valid argument for the <samp>-o</samp> option to the
<code>set</code> builtin command (see <a href="#The-Set-Builtin">The Set Builtin</a>).
reading any startup files. This variable is readonly.
</p>
</dd>
-<dt><code>SHLVL</code>
-<span id="index-SHLVL"></span>
-</dt>
+<dt id='index-SHLVL'><span><code>SHLVL</code><a href='#index-SHLVL' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Incremented by one each time a new instance of Bash is started. This is
intended to be a count of how deeply your Bash shells are nested.
</p>
</dd>
-<dt><code>SRANDOM</code>
-<span id="index-SRANDOM"></span>
-</dt>
+<dt id='index-SRANDOM'><span><code>SRANDOM</code><a href='#index-SRANDOM' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This variable expands to a 32-bit pseudo-random number each time it is
referenced. The random number generator is not linear on systems that
support <samp>/dev/urandom</samp> or <code>arc4random</code>, so each returned number
even if it is subsequently reset.
</p>
</dd>
-<dt><code>TIMEFORMAT</code>
-<span id="index-TIMEFORMAT"></span>
-</dt>
+<dt id='index-TIMEFORMAT'><span><code>TIMEFORMAT</code><a href='#index-TIMEFORMAT' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The value of this parameter is used as a format string specifying
how the timing information for pipelines prefixed with the <code>time</code>
reserved word should be displayed.
follows; the braces denote optional portions.
</p>
<dl compact="compact">
-<dt><code>%%</code></dt>
+<dt><span><code>%%</code></span></dt>
<dd><p>A literal ‘<samp>%</samp>’.
</p>
</dd>
-<dt><code>%[<var>p</var>][l]R</code></dt>
+<dt><span><code>%[<var>p</var>][l]R</code></span></dt>
<dd><p>The elapsed time in seconds.
</p>
</dd>
-<dt><code>%[<var>p</var>][l]U</code></dt>
+<dt><span><code>%[<var>p</var>][l]U</code></span></dt>
<dd><p>The number of CPU seconds spent in user mode.
</p>
</dd>
-<dt><code>%[<var>p</var>][l]S</code></dt>
+<dt><span><code>%[<var>p</var>][l]S</code></span></dt>
<dd><p>The number of CPU seconds spent in system mode.
</p>
</dd>
-<dt><code>%P</code></dt>
+<dt><span><code>%P</code></span></dt>
<dd><p>The CPU percentage, computed as (%U + %S) / %R.
</p></dd>
</dl>
A trailing newline is added when the format string is displayed.
</p>
</dd>
-<dt><code>TMOUT</code>
-<span id="index-TMOUT"></span>
-</dt>
+<dt id='index-TMOUT'><span><code>TMOUT</code><a href='#index-TMOUT' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If set to a value greater than zero, <code>TMOUT</code> is treated as the
-default timeout for the <code>read</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>).
+default timeout for the <code>read</code> builtin (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
The <code>select</code> command (see <a href="#Conditional-Constructs">Conditional Constructs</a>) terminates
if input does not arrive after <code>TMOUT</code> seconds when input is coming
from a terminal.
line of input does not arrive.
</p>
</dd>
-<dt><code>TMPDIR</code>
-<span id="index-TMPDIR"></span>
-</dt>
+<dt id='index-TMPDIR'><span><code>TMPDIR</code><a href='#index-TMPDIR' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If set, Bash uses its value as the name of a directory in which
Bash creates temporary files for the shell’s use.
</p>
</dd>
-<dt><code>UID</code>
-<span id="index-UID"></span>
-</dt>
+<dt id='index-UID'><span><code>UID</code><a href='#index-UID' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The numeric real user id of the current user. This variable is readonly.
</p>
</dd>
</dl>
<hr>
-<span id="Bash-Features"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Bash-Features">
+<div class="header">
<p>
-Next: <a href="#Job-Control" accesskey="n" rel="next">Job Control</a>, Previous: <a href="#Shell-Variables" accesskey="p" rel="prev">Shell Variables</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Job-Control" accesskey="n" rel="next">Job Control</a>, Previous: <a href="#Shell-Variables" accesskey="p" rel="prev">Shell Variables</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Bash-Features-2"></span><h2 class="chapter">6 Bash Features</h2>
<p>This chapter describes features unique to Bash.
</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Invoking-Bash" accesskey="1">Invoking Bash</a></td><td> </td><td align="left" valign="top">Command line options that you can give
- to Bash.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Bash-Startup-Files" accesskey="2">Bash Startup Files</a></td><td> </td><td align="left" valign="top">When and how Bash executes scripts.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Interactive-Shells" accesskey="3">Interactive Shells</a></td><td> </td><td align="left" valign="top">What an interactive shell is.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Bash-Conditional-Expressions" accesskey="4">Bash Conditional Expressions</a></td><td> </td><td align="left" valign="top">Primitives used in composing expressions for
- the <code>test</code> builtin.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Shell-Arithmetic" accesskey="5">Shell Arithmetic</a></td><td> </td><td align="left" valign="top">Arithmetic on shell variables.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Aliases" accesskey="6">Aliases</a></td><td> </td><td align="left" valign="top">Substituting one command for another.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Arrays" accesskey="7">Arrays</a></td><td> </td><td align="left" valign="top">Array Variables.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#The-Directory-Stack" accesskey="8">The Directory Stack</a></td><td> </td><td align="left" valign="top">History of visited directories.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Controlling-the-Prompt" accesskey="9">Controlling the Prompt</a></td><td> </td><td align="left" valign="top">Customizing the various prompt strings.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#The-Restricted-Shell">The Restricted Shell</a></td><td> </td><td align="left" valign="top">A more controlled mode of shell execution.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a></td><td> </td><td align="left" valign="top">Making Bash behave more closely to what
- the POSIX standard specifies.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a></td><td> </td><td align="left" valign="top">How Bash supports behavior that was present
- in earlier versions and has changed.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Invoking-Bash" accesskey="1">Invoking Bash</a></li>
+<li><a href="#Bash-Startup-Files" accesskey="2">Bash Startup Files</a></li>
+<li><a href="#Interactive-Shells" accesskey="3">Interactive Shells</a></li>
+<li><a href="#Bash-Conditional-Expressions" accesskey="4">Bash Conditional Expressions</a></li>
+<li><a href="#Shell-Arithmetic" accesskey="5">Shell Arithmetic</a></li>
+<li><a href="#Aliases" accesskey="6">Aliases</a></li>
+<li><a href="#Arrays" accesskey="7">Arrays</a></li>
+<li><a href="#The-Directory-Stack" accesskey="8">The Directory Stack</a></li>
+<li><a href="#Controlling-the-Prompt" accesskey="9">Controlling the Prompt</a></li>
+<li><a href="#The-Restricted-Shell">The Restricted Shell</a></li>
+<li><a href="#Bash-POSIX-Mode">Bash POSIX Mode</a></li>
+<li><a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a></li>
+</ul>
<hr>
-<span id="Invoking-Bash"></span><div class="header">
+<div class="section" id="Invoking-Bash">
+<div class="header">
<p>
Next: <a href="#Bash-Startup-Files" accesskey="n" rel="next">Bash Startup Files</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
line before the single-character options to be recognized.
</p>
<dl compact="compact">
-<dt><code>--debugger</code></dt>
+<dt><span><code>--debugger</code></span></dt>
<dd><p>Arrange for the debugger profile to be executed before the shell
starts. Turns on extended debugging mode (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>
for a description of the <code>extdebug</code> option to the <code>shopt</code>
builtin).
</p>
</dd>
-<dt><code>--dump-po-strings</code></dt>
+<dt><span><code>--dump-po-strings</code></span></dt>
<dd><p>A list of all double-quoted strings preceded by ‘<samp>$</samp>’
is printed on the standard output
in the <small>GNU</small> <code>gettext</code> PO (portable object) file format.
Equivalent to <samp>-D</samp> except for the output format.
</p>
</dd>
-<dt><code>--dump-strings</code></dt>
+<dt><span><code>--dump-strings</code></span></dt>
<dd><p>Equivalent to <samp>-D</samp>.
</p>
</dd>
-<dt><code>--help</code></dt>
+<dt><span><code>--help</code></span></dt>
<dd><p>Display a usage message on standard output and exit successfully.
</p>
</dd>
-<dt><code>--init-file <var>filename</var></code></dt>
-<dt><code>--rcfile <var>filename</var></code></dt>
+<dt><span><code>--init-file <var>filename</var></code></span></dt>
+<dt><span><code>--rcfile <var>filename</var></code></span></dt>
<dd><p>Execute commands from <var>filename</var> (instead of <samp>~/.bashrc</samp>)
in an interactive shell.
</p>
</dd>
-<dt><code>--login</code></dt>
+<dt><span><code>--login</code></span></dt>
<dd><p>Equivalent to <samp>-l</samp>.
</p>
</dd>
-<dt><code>--noediting</code></dt>
+<dt><span><code>--noediting</code></span></dt>
<dd><p>Do not use the <small>GNU</small> Readline library (see <a href="#Command-Line-Editing">Command Line Editing</a>)
to read command lines when the shell is interactive.
</p>
</dd>
-<dt><code>--noprofile</code></dt>
+<dt><span><code>--noprofile</code></span></dt>
<dd><p>Don’t load the system-wide startup file <samp>/etc/profile</samp>
or any of the personal initialization files
<samp>~/.bash_profile</samp>, <samp>~/.bash_login</samp>, or <samp>~/.profile</samp>
when Bash is invoked as a login shell.
</p>
</dd>
-<dt><code>--norc</code></dt>
+<dt><span><code>--norc</code></span></dt>
<dd><p>Don’t read the <samp>~/.bashrc</samp> initialization file in an
interactive shell. This is on by default if the shell is
invoked as <code>sh</code>.
</p>
</dd>
-<dt><code>--posix</code></dt>
+<dt><span><code>--posix</code></span></dt>
<dd><p>Change the behavior of Bash where the default operation differs
from the <small>POSIX</small> standard to match the standard. This
is intended to make Bash behave as a strict superset of that
<small>POSIX</small> mode.
</p>
</dd>
-<dt><code>--restricted</code></dt>
+<dt><span><code>--restricted</code></span></dt>
<dd><p>Make the shell a restricted shell (see <a href="#The-Restricted-Shell">The Restricted Shell</a>).
</p>
</dd>
-<dt><code>--verbose</code></dt>
+<dt><span><code>--verbose</code></span></dt>
<dd><p>Equivalent to <samp>-v</samp>. Print shell input lines as they’re read.
</p>
</dd>
-<dt><code>--version</code></dt>
+<dt><span><code>--version</code></span></dt>
<dd><p>Show version information for this instance of
Bash on the standard output and exit successfully.
</p></dd>
invocation which are not available with the <code>set</code> builtin.
</p>
<dl compact="compact">
-<dt><code>-c</code></dt>
+<dt><span><code>-c</code></span></dt>
<dd><p>Read and execute commands from the first non-option argument
<var>command_string</var>, then exit.
If there are arguments after the <var>command_string</var>,
in warning and error messages.
</p>
</dd>
-<dt><code>-i</code></dt>
+<dt><span><code>-i</code></span></dt>
<dd><p>Force the shell to run interactively. Interactive shells are
described in <a href="#Interactive-Shells">Interactive Shells</a>.
</p>
</dd>
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>Make this shell act as if it had been directly invoked by login.
When the shell is interactive, this is equivalent to starting a
login shell with ‘<samp>exec -l bash</samp>’.
of a login shell.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>Make the shell a restricted shell (see <a href="#The-Restricted-Shell">The Restricted Shell</a>).
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>If this option is present, or if no arguments remain after option
processing, then commands are read from the standard input.
This option allows the positional parameters to be set
through a pipe.
</p>
</dd>
-<dt><code>-D</code></dt>
+<dt><span><code>-D</code></span></dt>
<dd><p>A list of all double-quoted strings preceded by ‘<samp>$</samp>’
is printed on the standard output.
These are the strings that
are subject to language translation when the current locale
-is not <code>C</code> or <code>POSIX</code> (see <a href="#Locale-Translation">Locale Translation</a>).
+is not <code>C</code> or <code>POSIX</code> (see <a href="#Locale-Translation">Locale-Specific Translation</a>).
This implies the <samp>-n</samp> option; no commands will be executed.
</p>
</dd>
-<dt><code>[-+]O [<var>shopt_option</var>]</code></dt>
+<dt><span><code>[-+]O [<var>shopt_option</var>]</code></span></dt>
<dd><p><var>shopt_option</var> is one of the shell options accepted by the
<code>shopt</code> builtin (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
If <var>shopt_option</var> is present, <samp>-O</samp> sets the value of that option;
that may be reused as input.
</p>
</dd>
-<dt><code>--</code></dt>
+<dt><span><code>--</code></span></dt>
<dd><p>A <code>--</code> signals the end of options and disables further option
processing.
Any arguments after the <code>--</code> are treated as filenames and arguments.
in the script. If no commands are executed, the exit status is 0.
</p>
<hr>
-<span id="Bash-Startup-Files"></span><div class="header">
+</div>
+<div class="section" id="Bash-Startup-Files">
+<div class="header">
<p>
Next: <a href="#Interactive-Shells" accesskey="n" rel="next">Interactive Shells</a>, Previous: <a href="#Invoking-Bash" accesskey="p" rel="prev">Invoking Bash</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Invoked-by-remote-shell-daemon"></span><h4 class="subsubheading">Invoked by remote shell daemon</h4>
<p>Bash attempts to determine when it is being run with its standard input
-connected to a network connection, as when executed by the remote shell
-daemon, usually <code>rshd</code>, or the secure shell daemon <code>sshd</code>.
-If Bash determines it is being run in
-this fashion, it reads and executes commands from <samp>~/.bashrc</samp>, if that
+connected to a network connection, as when executed by
+the historical remote shell daemon, usually <code>rshd</code>,
+or the secure shell daemon <code>sshd</code>.
+If Bash
+determines it is being run non-interactively in this fashion,
+it reads and executes commands from <samp>~/.bashrc</samp>, if that
file exists and is readable.
It will not do this if invoked as <code>sh</code>.
The <samp>--norc</samp> option may be used to inhibit this behavior, and the
the same, but the effective user id is not reset.
</p>
<hr>
-<span id="Interactive-Shells"></span><div class="header">
+</div>
+<div class="section" id="Interactive-Shells">
+<div class="header">
<p>
Next: <a href="#Bash-Conditional-Expressions" accesskey="n" rel="next">Bash Conditional Expressions</a>, Previous: <a href="#Bash-Startup-Files" accesskey="p" rel="prev">Bash Startup Files</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="index-interactive-shell-1"></span>
<span id="index-shell_002c-interactive"></span>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#What-is-an-Interactive-Shell_003f" accesskey="1">What is an Interactive Shell?</a></td><td> </td><td align="left" valign="top">What determines whether a shell is Interactive.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Is-this-Shell-Interactive_003f" accesskey="2">Is this Shell Interactive?</a></td><td> </td><td align="left" valign="top">How to tell if a shell is interactive.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Interactive-Shell-Behavior" accesskey="3">Interactive Shell Behavior</a></td><td> </td><td align="left" valign="top">What changes in a interactive shell?
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#What-is-an-Interactive-Shell_003f" accesskey="1">What is an Interactive Shell?</a></li>
+<li><a href="#Is-this-Shell-Interactive_003f" accesskey="2">Is this Shell Interactive?</a></li>
+<li><a href="#Interactive-Shell-Behavior" accesskey="3">Interactive Shell Behavior</a></li>
+</ul>
<hr>
-<span id="What-is-an-Interactive-Shell_003f"></span><div class="header">
+<div class="subsection" id="What-is-an-Interactive-Shell_003f">
+<div class="header">
<p>
Next: <a href="#Is-this-Shell-Interactive_003f" accesskey="n" rel="next">Is this Shell Interactive?</a>, Up: <a href="#Interactive-Shells" accesskey="u" rel="up">Interactive Shells</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="What-is-an-Interactive-Shell_003f-1"></span><h4 class="subsection">6.3.1 What is an Interactive Shell?</h4>
<p>An interactive shell
-is one started without non-option arguments, unless <samp>-s</samp> is
-specified, without specifying the <samp>-c</samp> option, and
+is one started without non-option arguments
+(unless <samp>-s</samp> is specified)
+and without specifying the <samp>-c</samp> option,
whose input and error output are both
connected to terminals (as determined by <code>isatty(3)</code>),
or one started with the <samp>-i</samp> option.
when an interactive shell is started.
</p>
<hr>
-<span id="Is-this-Shell-Interactive_003f"></span><div class="header">
+</div>
+<div class="subsection" id="Is-this-Shell-Interactive_003f">
+<div class="header">
<p>
Next: <a href="#Interactive-Shell-Behavior" accesskey="n" rel="next">Interactive Shell Behavior</a>, Previous: <a href="#What-is-an-Interactive-Shell_003f" accesskey="p" rel="prev">What is an Interactive Shell?</a>, Up: <a href="#Interactive-Shells" accesskey="u" rel="up">Interactive Shells</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</pre></div>
<hr>
-<span id="Interactive-Shell-Behavior"></span><div class="header">
+</div>
+<div class="subsection" id="Interactive-Shell-Behavior">
+<div class="header">
<p>
Previous: <a href="#Is-this-Shell-Interactive_003f" accesskey="p" rel="prev">Is this Shell Interactive?</a>, Up: <a href="#Interactive-Shells" accesskey="u" rel="up">Interactive Shells</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
See <a href="#Controlling-the-Prompt">Controlling the Prompt</a>, for a complete list of prompt
string escape sequences.
-</li><li> Bash executes the values of the set elements of the <code>PROMPT_COMMANDS</code>
+</li><li> Bash executes the values of the set elements of the <code>PROMPT_COMMAND</code>
array variable as commands before printing the primary prompt, <code>$PS1</code>
(see <a href="#Bash-Variables">Bash Variables</a>).
standard input when reading a command (see <a href="#The-Set-Builtin">The Set Builtin</a>).
</li><li> Command history (see <a href="#Bash-History-Facilities">Bash History Facilities</a>)
-and history expansion (see <a href="#History-Interaction">History Interaction</a>)
+and history expansion (see <a href="#History-Interaction">History Expansion</a>)
are enabled by default.
Bash will save the command history to the file named by <code>$HISTFILE</code>
when a shell with history enabled exits.
</li><li> Parser syntax errors will not cause the shell to exit.
-</li><li> Simple spelling correction for directory arguments to the <code>cd</code>
-builtin is enabled by default (see the description of the <code>cdspell</code>
+</li><li> If the <code>cdspell</code> shell option is enabled, the shell will attempt
+simple spelling correction for directory arguments to the <code>cd</code>
+builtin (see the description of the <code>cdspell</code>
option to the <code>shopt</code> builtin in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
+The <code>cdspell</code> option is only effective in interactive shells.
</li><li> The shell will check the value of the <code>TMOUT</code> variable and exit
if a command is not read within the specified number of seconds after
</li></ol>
<hr>
-<span id="Bash-Conditional-Expressions"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Bash-Conditional-Expressions">
+<div class="header">
<p>
Next: <a href="#Shell-Arithmetic" accesskey="n" rel="next">Shell Arithmetic</a>, Previous: <a href="#Interactive-Shells" accesskey="p" rel="prev">Interactive Shells</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="index-expressions_002c-conditional"></span>
<p>Conditional expressions are used by the <code>[[</code> compound command
-and the <code>test</code> and <code>[</code> builtin commands. The <code>test</code>
+(see <a href="#Conditional-Constructs">Conditional Constructs</a>)
+and the <code>test</code> and <code>[</code> builtin commands
+(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
+The <code>test</code>
and <code>[</code> commands determine their behavior based on the number
of arguments; see the descriptions of those commands for any other
command-specific actions.
links and operate on the target of the link, rather than the link itself.
</p>
<dl compact="compact">
-<dt><code>-a <var>file</var></code></dt>
+<dt><span><code>-a <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists.
</p>
</dd>
-<dt><code>-b <var>file</var></code></dt>
+<dt><span><code>-b <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a block special file.
</p>
</dd>
-<dt><code>-c <var>file</var></code></dt>
+<dt><span><code>-c <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a character special file.
</p>
</dd>
-<dt><code>-d <var>file</var></code></dt>
+<dt><span><code>-d <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a directory.
</p>
</dd>
-<dt><code>-e <var>file</var></code></dt>
+<dt><span><code>-e <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists.
</p>
</dd>
-<dt><code>-f <var>file</var></code></dt>
+<dt><span><code>-f <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a regular file.
</p>
</dd>
-<dt><code>-g <var>file</var></code></dt>
+<dt><span><code>-g <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and its set-group-id bit is set.
</p>
</dd>
-<dt><code>-h <var>file</var></code></dt>
+<dt><span><code>-h <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a symbolic link.
</p>
</dd>
-<dt><code>-k <var>file</var></code></dt>
+<dt><span><code>-k <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and its "sticky" bit is set.
</p>
</dd>
-<dt><code>-p <var>file</var></code></dt>
+<dt><span><code>-p <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a named pipe (FIFO).
</p>
</dd>
-<dt><code>-r <var>file</var></code></dt>
+<dt><span><code>-r <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is readable.
</p>
</dd>
-<dt><code>-s <var>file</var></code></dt>
+<dt><span><code>-s <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and has a size greater than zero.
</p>
</dd>
-<dt><code>-t <var>fd</var></code></dt>
+<dt><span><code>-t <var>fd</var></code></span></dt>
<dd><p>True if file descriptor <var>fd</var> is open and refers to a terminal.
</p>
</dd>
-<dt><code>-u <var>file</var></code></dt>
+<dt><span><code>-u <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and its set-user-id bit is set.
</p>
</dd>
-<dt><code>-w <var>file</var></code></dt>
+<dt><span><code>-w <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is writable.
</p>
</dd>
-<dt><code>-x <var>file</var></code></dt>
+<dt><span><code>-x <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is executable.
</p>
</dd>
-<dt><code>-G <var>file</var></code></dt>
+<dt><span><code>-G <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is owned by the effective group id.
</p>
</dd>
-<dt><code>-L <var>file</var></code></dt>
+<dt><span><code>-L <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a symbolic link.
</p>
</dd>
-<dt><code>-N <var>file</var></code></dt>
+<dt><span><code>-N <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and has been modified since it was last read.
</p>
</dd>
-<dt><code>-O <var>file</var></code></dt>
+<dt><span><code>-O <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is owned by the effective user id.
</p>
</dd>
-<dt><code>-S <var>file</var></code></dt>
+<dt><span><code>-S <var>file</var></code></span></dt>
<dd><p>True if <var>file</var> exists and is a socket.
</p>
</dd>
-<dt><code><var>file1</var> -ef <var>file2</var></code></dt>
+<dt><span><code><var>file1</var> -ef <var>file2</var></code></span></dt>
<dd><p>True if <var>file1</var> and <var>file2</var> refer to the same device and
inode numbers.
</p>
</dd>
-<dt><code><var>file1</var> -nt <var>file2</var></code></dt>
+<dt><span><code><var>file1</var> -nt <var>file2</var></code></span></dt>
<dd><p>True if <var>file1</var> is newer (according to modification date)
than <var>file2</var>, or if <var>file1</var> exists and <var>file2</var> does not.
</p>
</dd>
-<dt><code><var>file1</var> -ot <var>file2</var></code></dt>
+<dt><span><code><var>file1</var> -ot <var>file2</var></code></span></dt>
<dd><p>True if <var>file1</var> is older than <var>file2</var>,
or if <var>file2</var> exists and <var>file1</var> does not.
</p>
</dd>
-<dt><code>-o <var>optname</var></code></dt>
+<dt><span><code>-o <var>optname</var></code></span></dt>
<dd><p>True if the shell option <var>optname</var> is enabled.
The list of options appears in the description of the <samp>-o</samp>
option to the <code>set</code> builtin (see <a href="#The-Set-Builtin">The Set Builtin</a>).
</p>
</dd>
-<dt><code>-v <var>varname</var></code></dt>
+<dt><span><code>-v <var>varname</var></code></span></dt>
<dd><p>True if the shell variable <var>varname</var> is set (has been assigned a value).
</p>
</dd>
-<dt><code>-R <var>varname</var></code></dt>
+<dt><span><code>-R <var>varname</var></code></span></dt>
<dd><p>True if the shell variable <var>varname</var> is set and is a name reference.
</p>
</dd>
-<dt><code>-z <var>string</var></code></dt>
+<dt><span><code>-z <var>string</var></code></span></dt>
<dd><p>True if the length of <var>string</var> is zero.
</p>
</dd>
-<dt><code>-n <var>string</var></code></dt>
-<dt><code><var>string</var></code></dt>
+<dt><span><code>-n <var>string</var></code></span></dt>
+<dt><span><code><var>string</var></code></span></dt>
<dd><p>True if the length of <var>string</var> is non-zero.
</p>
</dd>
-<dt><code><var>string1</var> == <var>string2</var></code></dt>
-<dt><code><var>string1</var> = <var>string2</var></code></dt>
+<dt><span><code><var>string1</var> == <var>string2</var></code></span></dt>
+<dt><span><code><var>string1</var> = <var>string2</var></code></span></dt>
<dd><p>True if the strings are equal.
When used with the <code>[[</code> command, this performs pattern matching as
described above (see <a href="#Conditional-Constructs">Conditional Constructs</a>).
<p>‘<samp>=</samp>’ should be used with the <code>test</code> command for <small>POSIX</small> conformance.
</p>
</dd>
-<dt><code><var>string1</var> != <var>string2</var></code></dt>
+<dt><span><code><var>string1</var> != <var>string2</var></code></span></dt>
<dd><p>True if the strings are not equal.
</p>
</dd>
-<dt><code><var>string1</var> < <var>string2</var></code></dt>
+<dt><span><code><var>string1</var> < <var>string2</var></code></span></dt>
<dd><p>True if <var>string1</var> sorts before <var>string2</var> lexicographically.
</p>
</dd>
-<dt><code><var>string1</var> > <var>string2</var></code></dt>
+<dt><span><code><var>string1</var> > <var>string2</var></code></span></dt>
<dd><p>True if <var>string1</var> sorts after <var>string2</var> lexicographically.
</p>
</dd>
-<dt><code><var>arg1</var> OP <var>arg2</var></code></dt>
+<dt><span><code><var>arg1</var> OP <var>arg2</var></code></span></dt>
<dd><p><code>OP</code> is one of
‘<samp>-eq</samp>’, ‘<samp>-ne</samp>’, ‘<samp>-lt</samp>’, ‘<samp>-le</samp>’, ‘<samp>-gt</samp>’, or ‘<samp>-ge</samp>’.
These arithmetic binary operators return true if <var>arg1</var>
</dl>
<hr>
-<span id="Shell-Arithmetic"></span><div class="header">
+</div>
+<div class="section" id="Shell-Arithmetic">
+<div class="header">
<p>
Next: <a href="#Aliases" accesskey="n" rel="next">Aliases</a>, Previous: <a href="#Bash-Conditional-Expressions" accesskey="p" rel="prev">Bash Conditional Expressions</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
The levels are listed in order of decreasing precedence.
</p>
<dl compact="compact">
-<dt><code><var>id</var>++ <var>id</var>--</code></dt>
+<dt><span><code><var>id</var>++ <var>id</var>--</code></span></dt>
<dd><p>variable post-increment and post-decrement
</p>
</dd>
-<dt><code>++<var>id</var> --<var>id</var></code></dt>
+<dt><span><code>++<var>id</var> --<var>id</var></code></span></dt>
<dd><p>variable pre-increment and pre-decrement
</p>
</dd>
-<dt><code>- +</code></dt>
+<dt><span><code>- +</code></span></dt>
<dd><p>unary minus and plus
</p>
</dd>
-<dt><code>! ~</code></dt>
+<dt><span><code>! ~</code></span></dt>
<dd><p>logical and bitwise negation
</p>
</dd>
-<dt><code>**</code></dt>
+<dt><span><code>**</code></span></dt>
<dd><p>exponentiation
</p>
</dd>
-<dt><code>* / %</code></dt>
+<dt><span><code>* / %</code></span></dt>
<dd><p>multiplication, division, remainder
</p>
</dd>
-<dt><code>+ -</code></dt>
+<dt><span><code>+ -</code></span></dt>
<dd><p>addition, subtraction
</p>
</dd>
-<dt><code><< >></code></dt>
+<dt><span><code><< >></code></span></dt>
<dd><p>left and right bitwise shifts
</p>
</dd>
-<dt><code><= >= < ></code></dt>
+<dt><span><code><= >= < ></code></span></dt>
<dd><p>comparison
</p>
</dd>
-<dt><code>== !=</code></dt>
+<dt><span><code>== !=</code></span></dt>
<dd><p>equality and inequality
</p>
</dd>
-<dt><code>&</code></dt>
+<dt><span><code>&</code></span></dt>
<dd><p>bitwise AND
</p>
</dd>
-<dt><code>^</code></dt>
+<dt><span><code>^</code></span></dt>
<dd><p>bitwise exclusive OR
</p>
</dd>
-<dt><code>|</code></dt>
+<dt><span><code>|</code></span></dt>
<dd><p>bitwise OR
</p>
</dd>
-<dt><code>&&</code></dt>
+<dt><span><code>&&</code></span></dt>
<dd><p>logical AND
</p>
</dd>
-<dt><code>||</code></dt>
+<dt><span><code>||</code></span></dt>
<dd><p>logical OR
</p>
</dd>
-<dt><code>expr ? expr : expr</code></dt>
+<dt><span><code>expr ? expr : expr</code></span></dt>
<dd><p>conditional operator
</p>
</dd>
-<dt><code>= *= /= %= += -= <<= >>= &= ^= |=</code></dt>
+<dt><span><code>= *= /= %= += -= <<= >>= &= ^= |=</code></span></dt>
<dd><p>assignment
</p>
</dd>
-<dt><code>expr1 , expr2</code></dt>
+<dt><span><code>expr1 , expr2</code></span></dt>
<dd><p>comma
</p></dd>
</dl>
by name without using the parameter expansion syntax.
The value of a variable is evaluated as an arithmetic expression
when it is referenced, or when a variable which has been given the
-<var>integer</var> attribute using ‘<samp>declare -i</samp>’ is assigned a value.
+<code>integer</code> attribute using ‘<samp>declare -i</samp>’ is assigned a value.
A null value evaluates to 0.
-A shell variable need not have its <var>integer</var> attribute turned on
+A shell variable need not have its <code>integer</code> attribute turned on
to be used in an expression.
</p>
<p>Integer constants follow the C language definition, without suffixes or
rules above.
</p>
<hr>
-<span id="Aliases"></span><div class="header">
+</div>
+<div class="section" id="Aliases">
+<div class="header">
<p>
Next: <a href="#Arrays" accesskey="n" rel="next">Arrays</a>, Previous: <a href="#Shell-Arithmetic" accesskey="p" rel="prev">Shell Arithmetic</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Aliases-1"></span><h3 class="section">6.6 Aliases</h3>
<span id="index-alias-expansion"></span>
-<p><var>Aliases</var> allow a string to be substituted for a word when it is used
+<p><em>Aliases</em> allow a string to be substituted for a word when it is used
as the first word of a simple command.
The shell maintains a list of aliases that may be set and unset with
the <code>alias</code> and <code>unalias</code> builtin commands.
for instance, and Bash does not try to recursively expand the
replacement text.
If the last character of the alias value is a
-<var>blank</var>, then the next command word following the
+<code>blank</code>, then the next command word following the
alias is also checked for alias expansion.
</p>
<p>Aliases are created and listed with the <code>alias</code>
</p>
<p>There is no mechanism for using arguments in the replacement text,
as in <code>csh</code>.
-If arguments are needed, a shell function should be used
+If arguments are needed, use a shell function
(see <a href="#Shell-Functions">Shell Functions</a>).
</p>
<p>Aliases are not expanded when the shell is not interactive,
<p>For almost every purpose, shell functions are preferred over aliases.
</p>
<hr>
-<span id="Arrays"></span><div class="header">
+</div>
+<div class="section" id="Arrays">
+<div class="header">
<p>
Next: <a href="#The-Directory-Stack" accesskey="n" rel="next">The Directory Stack</a>, Previous: <a href="#Aliases" accesskey="p" rel="prev">Aliases</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<var>name</var>, so negative indices count back from the end of the
array, and an index of -1 references the last element.
</p>
+<p>The ‘<samp>+=</samp>’ operator will append to an array variable when assigning
+using the compound assignment syntax; see <a href="#Shell-Parameters">Shell Parameters</a> above.
+</p>
<p>Any element of an array may be referenced using
<code>${<var>name</var>[<var>subscript</var>]}</code>.
The braces are required to avoid
Negative subscripts to indexed arrays are interpreted as described above.
Unsetting the last element of an array variable does not unset the variable.
<code>unset <var>name</var></code>, where <var>name</var> is an array, removes the
-entire array. A subscript of ‘<samp>*</samp>’ or ‘<samp>@</samp>’ also removes the
entire array.
+<code>unset <var>name</var>[<var>subscript</var>]</code> behaves differently
+depending on the array type when given a
+subscript of ‘<samp>*</samp>’ or ‘<samp>@</samp>’.
+When <var>name</var> is an associative array, it removes the element with key
+‘<samp>*</samp>’ or ‘<samp>@</samp>’.
+If <var>name</var> is an indexed array, <code>unset</code> removes all of the elements,
+but does not remove the array itself.
</p>
<p>When using a variable name with a subscript as an argument to a command,
such as with <code>unset</code>, without using the word expansion syntax
reused as input.
</p>
<hr>
-<span id="The-Directory-Stack"></span><div class="header">
+</div>
+<div class="section" id="The-Directory-Stack">
+<div class="header">
<p>
Next: <a href="#Controlling-the-Prompt" accesskey="n" rel="next">Controlling the Prompt</a>, Previous: <a href="#Arrays" accesskey="p" rel="prev">Arrays</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="The-Directory-Stack-1"></span><h3 class="section">6.8 The Directory Stack</h3>
<span id="index-directory-stack"></span>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Directory-Stack-Builtins" accesskey="1">Directory Stack Builtins</a></td><td> </td><td align="left" valign="top">Bash builtin commands to manipulate
- the directory stack.
-</td></tr>
-</table>
<p>The directory stack is a list of recently-visited directories. The
<code>pushd</code> builtin adds directories to the stack as it changes
<p>The contents of the directory stack are also visible
as the value of the <code>DIRSTACK</code> shell variable.
</p>
+<ul class="section-toc">
+<li><a href="#Directory-Stack-Builtins" accesskey="1">Directory Stack Builtins</a></li>
+</ul>
<hr>
-<span id="Directory-Stack-Builtins"></span><div class="header">
+<div class="subsection" id="Directory-Stack-Builtins">
+<div class="header">
<p>
Up: <a href="#The-Directory-Stack" accesskey="u" rel="up">The Directory Stack</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Directory-Stack-Builtins-1"></span><h4 class="subsection">6.8.1 Directory Stack Builtins</h4>
<dl compact="compact">
-<dt><code>dirs</code></dt>
-<dd><span id="index-dirs"></span>
-<div class="example">
+<dt id='index-dirs'><span><code>dirs</code><a href='#index-dirs' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">dirs [-clpv] [+<var>N</var> | -<var>N</var>]
</pre></div>
The current directory is always the first directory in the stack.
</p>
<dl compact="compact">
-<dt><code>-c</code></dt>
+<dt><span><code>-c</code></span></dt>
<dd><p>Clears the directory stack by deleting all of the elements.
</p></dd>
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>Produces a listing using full pathnames;
the default listing format uses a tilde to denote the home directory.
</p></dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>Causes <code>dirs</code> to print the directory stack with one entry per
line.
</p></dd>
-<dt><code>-v</code></dt>
+<dt><span><code>-v</code></span></dt>
<dd><p>Causes <code>dirs</code> to print the directory stack with one entry per
line, prefixing each entry with its index in the stack.
</p></dd>
-<dt><code>+<var>N</var></code></dt>
+<dt><span><code>+<var>N</var></code></span></dt>
<dd><p>Displays the <var>N</var>th directory (counting from the left of the
list printed by <code>dirs</code> when invoked without options), starting
with zero.
</p></dd>
-<dt><code>-<var>N</var></code></dt>
+<dt><span><code>-<var>N</var></code></span></dt>
<dd><p>Displays the <var>N</var>th directory (counting from the right of the
list printed by <code>dirs</code> when invoked without options), starting
with zero.
</dl>
</dd>
-<dt><code>popd</code></dt>
-<dd><span id="index-popd"></span>
-<div class="example">
+<dt id='index-popd'><span><code>popd</code><a href='#index-popd' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">popd [-n] [+<var>N</var> | -<var>N</var>]
</pre></div>
-<p>When no arguments are given, <code>popd</code>
-removes the top directory from the stack and
-performs a <code>cd</code> to the new top directory.
+<p>Removes elements from the directory stack.
The elements are numbered from 0 starting at the first directory
-listed with <code>dirs</code>; that is, <code>popd</code> is equivalent to <code>popd +0</code>.
+listed by <code>dirs</code>;
+that is, <code>popd</code> is equivalent to <code>popd +0</code>.
+</p>
+<p>When no arguments are given, <code>popd</code>
+removes the top directory from the stack and changes to
+the new top directory.
+</p>
+<p>Arguments, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Suppresses the normal change of directory when removing directories
from the stack, so that only the stack is manipulated.
</p></dd>
-<dt><code>+<var>N</var></code></dt>
+<dt><span><code>+<var>N</var></code></span></dt>
<dd><p>Removes the <var>N</var>th directory (counting from the left of the
-list printed by <code>dirs</code>), starting with zero.
+list printed by <code>dirs</code>), starting with zero, from the stack.
</p></dd>
-<dt><code>-<var>N</var></code></dt>
+<dt><span><code>-<var>N</var></code></span></dt>
<dd><p>Removes the <var>N</var>th directory (counting from the right of the
-list printed by <code>dirs</code>), starting with zero.
+list printed by <code>dirs</code>), starting with zero, from the stack.
</p></dd>
</dl>
+<p>If the top element of the directory stack is modified, and
+the <samp>-n</samp> option was not supplied, <code>popd</code> uses the <code>cd</code>
+builtin to change to the directory at the top of the stack.
+If the <code>cd</code> fails, <code>popd</code> returns a non-zero value.
+</p>
+<p>Otherwise, <code>popd</code> returns an unsuccessful status if
+an invalid option is encountered, the directory stack
+is empty, or a non-existent directory stack entry is specified.
+</p>
+<p>If the <code>popd</code> command is successful,
+Bash runs <code>dirs</code> to show the final contents of the directory stack,
+and the return status is 0.
+</p>
<span id="index-pushd"></span>
</dd>
-<dt><code>pushd</code></dt>
+<dt><span><code>pushd</code></span></dt>
<dd><div class="example">
<pre class="example">pushd [-n] [<var>+N</var> | <var>-N</var> | <var>dir</var>]
</pre></div>
-<p>Save the current directory on the top of the directory stack
-and then <code>cd</code> to <var>dir</var>.
-With no arguments, <code>pushd</code> exchanges the top two directories
-and makes the new top the current directory.
+<p>Adds a directory to the top of the directory stack, or rotates
+the stack, making the new top of the stack the current working
+directory.
+With no arguments, <code>pushd</code> exchanges the top two elements
+of the directory stack.
+</p>
+<p>Arguments, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Suppresses the normal change of directory when rotating or
adding directories to the stack, so that only the stack is manipulated.
</p></dd>
-<dt><code>+<var>N</var></code></dt>
+<dt><span><code>+<var>N</var></code></span></dt>
<dd><p>Brings the <var>N</var>th directory (counting from the left of the
list printed by <code>dirs</code>, starting with zero) to the top of
the list by rotating the stack.
</p></dd>
-<dt><code>-<var>N</var></code></dt>
+<dt><span><code>-<var>N</var></code></span></dt>
<dd><p>Brings the <var>N</var>th directory (counting from the right of the
list printed by <code>dirs</code>, starting with zero) to the top of
the list by rotating the stack.
</p></dd>
-<dt><code><var>dir</var></code></dt>
-<dd><p>Makes <var>dir</var> be the top of the stack, making
-it the new current directory as if it had been supplied as an argument
-to the <code>cd</code> builtin.
+<dt><span><code><var>dir</var></code></span></dt>
+<dd><p>Makes <var>dir</var> be the top of the stack.
</p></dd>
</dl>
+
+<p>After the stack has been modified, if the <samp>-n</samp> option was not
+supplied, <code>pushd</code> uses the <code>cd</code> builtin to change to the
+directory at the top of the stack.
+If the <code>cd</code> fails, <code>pushd</code> returns a non-zero value.
+</p>
+<p>Otherwise, if no arguments are supplied, <code>pushd</code> returns 0 unless the
+directory stack is empty.
+When rotating the directory stack, <code>pushd</code> returns 0 unless
+the directory stack is empty or a non-existent directory stack element
+is specified.
+</p>
+<p>If the <code>pushd</code> command is successful,
+Bash runs <code>dirs</code> to show the final contents of the directory stack.
+</p>
</dd>
</dl>
<hr>
-<span id="Controlling-the-Prompt"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Controlling-the-Prompt">
+<div class="header">
<p>
Next: <a href="#The-Restricted-Shell" accesskey="n" rel="next">The Restricted Shell</a>, Previous: <a href="#The-Directory-Stack" accesskey="p" rel="prev">The Directory Stack</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Controlling-the-Prompt-1"></span><h3 class="section">6.9 Controlling the Prompt</h3>
<span id="index-prompting"></span>
-<p>Bash examines the value of the array variable <code>PROMPT_COMMANDS</code> just before
+<p>Bash examines the value of the array variable <code>PROMPT_COMMAND</code> just before
printing each primary prompt.
-If any elements in <code>PROMPT_COMMANDS</code> are set and non-null, Bash
+If any elements in <code>PROMPT_COMMAND</code> are set and non-null, Bash
executes each value, in numeric order,
just as if it had been typed on the command line.
</p>
<code>PS4</code>:
</p>
<dl compact="compact">
-<dt><code>\a</code></dt>
+<dt><span><code>\a</code></span></dt>
<dd><p>A bell character.
</p></dd>
-<dt><code>\d</code></dt>
+<dt><span><code>\d</code></span></dt>
<dd><p>The date, in "Weekday Month Date" format (e.g., "Tue May 26").
</p></dd>
-<dt><code>\D{<var>format</var>}</code></dt>
+<dt><span><code>\D{<var>format</var>}</code></span></dt>
<dd><p>The <var>format</var> is passed to <code>strftime</code>(3) and the result is inserted
into the prompt string; an empty <var>format</var> results in a locale-specific
time representation. The braces are required.
</p></dd>
-<dt><code>\e</code></dt>
+<dt><span><code>\e</code></span></dt>
<dd><p>An escape character.
</p></dd>
-<dt><code>\h</code></dt>
+<dt><span><code>\h</code></span></dt>
<dd><p>The hostname, up to the first ‘.’.
</p></dd>
-<dt><code>\H</code></dt>
+<dt><span><code>\H</code></span></dt>
<dd><p>The hostname.
</p></dd>
-<dt><code>\j</code></dt>
+<dt><span><code>\j</code></span></dt>
<dd><p>The number of jobs currently managed by the shell.
</p></dd>
-<dt><code>\l</code></dt>
+<dt><span><code>\l</code></span></dt>
<dd><p>The basename of the shell’s terminal device name.
</p></dd>
-<dt><code>\n</code></dt>
+<dt><span><code>\n</code></span></dt>
<dd><p>A newline.
</p></dd>
-<dt><code>\r</code></dt>
+<dt><span><code>\r</code></span></dt>
<dd><p>A carriage return.
</p></dd>
-<dt><code>\s</code></dt>
+<dt><span><code>\s</code></span></dt>
<dd><p>The name of the shell, the basename of <code>$0</code> (the portion
following the final slash).
</p></dd>
-<dt><code>\t</code></dt>
+<dt><span><code>\t</code></span></dt>
<dd><p>The time, in 24-hour HH:MM:SS format.
</p></dd>
-<dt><code>\T</code></dt>
+<dt><span><code>\T</code></span></dt>
<dd><p>The time, in 12-hour HH:MM:SS format.
</p></dd>
-<dt><code>\@</code></dt>
+<dt><span><code>\@</code></span></dt>
<dd><p>The time, in 12-hour am/pm format.
</p></dd>
-<dt><code>\A</code></dt>
+<dt><span><code>\A</code></span></dt>
<dd><p>The time, in 24-hour HH:MM format.
</p></dd>
-<dt><code>\u</code></dt>
+<dt><span><code>\u</code></span></dt>
<dd><p>The username of the current user.
</p></dd>
-<dt><code>\v</code></dt>
+<dt><span><code>\v</code></span></dt>
<dd><p>The version of Bash (e.g., 2.00)
</p></dd>
-<dt><code>\V</code></dt>
+<dt><span><code>\V</code></span></dt>
<dd><p>The release of Bash, version + patchlevel (e.g., 2.00.0)
</p></dd>
-<dt><code>\w</code></dt>
-<dd><p>The current working directory, with <code>$HOME</code> abbreviated with a tilde
+<dt><span><code>\w</code></span></dt>
+<dd><p>The value of the <code>PWD</code> shell variable (<code>$PWD</code>),
+with <code>$HOME</code> abbreviated with a tilde
(uses the <code>$PROMPT_DIRTRIM</code> variable).
</p></dd>
-<dt><code>\W</code></dt>
+<dt><span><code>\W</code></span></dt>
<dd><p>The basename of <code>$PWD</code>, with <code>$HOME</code> abbreviated with a tilde.
</p></dd>
-<dt><code>\!</code></dt>
+<dt><span><code>\!</code></span></dt>
<dd><p>The history number of this command.
</p></dd>
-<dt><code>\#</code></dt>
+<dt><span><code>\#</code></span></dt>
<dd><p>The command number of this command.
</p></dd>
-<dt><code>\$</code></dt>
+<dt><span><code>\$</code></span></dt>
<dd><p>If the effective uid is 0, <code>#</code>, otherwise <code>$</code>.
</p></dd>
-<dt><code>\<var>nnn</var></code></dt>
+<dt><span><code>\<var>nnn</var></code></span></dt>
<dd><p>The character whose ASCII code is the octal value <var>nnn</var>.
</p></dd>
-<dt><code>\\</code></dt>
+<dt><span><code>\\</code></span></dt>
<dd><p>A backslash.
</p></dd>
-<dt><code>\[</code></dt>
+<dt><span><code>\[</code></span></dt>
<dd><p>Begin a sequence of non-printing characters. This could be used to
embed a terminal control sequence into the prompt.
</p></dd>
-<dt><code>\]</code></dt>
+<dt><span><code>\]</code></span></dt>
<dd><p>End a sequence of non-printing characters.
</p></dd>
</dl>
word expansion.
</p>
<hr>
-<span id="The-Restricted-Shell"></span><div class="header">
+</div>
+<div class="section" id="The-Restricted-Shell">
+<div class="header">
<p>
Next: <a href="#Bash-POSIX-Mode" accesskey="n" rel="next">Bash POSIX Mode</a>, Previous: <a href="#Controlling-the-Prompt" accesskey="p" rel="prev">Controlling the Prompt</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<samp>-f</samp> and <samp>-d</samp> options to the <code>enable</code> builtin.
</li><li> Using the <code>enable</code> builtin command to enable disabled shell builtins.
</li><li> Specifying the <samp>-p</samp> option to the <code>command</code> builtin.
-</li><li> Turning off restricted mode with ‘<samp>set +r</samp>’ or ‘<samp>set +o restricted</samp>’.
+</li><li> Turning off restricted mode with ‘<samp>set +r</samp>’ or ‘<samp>shopt -u restricted_shell</samp>’.
</li></ul>
<p>These restrictions are enforced after any startup files are read.
<p>The restricted shell mode is only one component of a useful restricted
environment. It should be accompanied by setting <code>PATH</code> to a value
that allows execution of only a few verified commands (commands that
-allow shell escapes are particularly vulnerable), leaving the user
-in a non-writable directory other than his home directory after login,
+allow shell escapes are particularly vulnerable), changing the current
+directory to a non-writable directory other than <code>$HOME</code> after login,
not allowing the restricted shell to execute shell scripts, and cleaning
the environment of variables that cause some commands to modify their
behavior (e.g., <code>VISUAL</code> or <code>PAGER</code>).
</p>
<hr>
-<span id="Bash-POSIX-Mode"></span><div class="header">
+</div>
+<div class="section" id="Bash-POSIX-Mode">
+<div class="header">
<p>
Next: <a href="#Shell-Compatibility-Mode" accesskey="n" rel="next">Shell Compatibility Mode</a>, Previous: <a href="#The-Restricted-Shell" accesskey="p" rel="prev">The Restricted Shell</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</li><li> Reserved words appearing in a context where reserved words are recognized
do not undergo alias expansion.
+</li><li> Alias expansion is performed when initially parsing a command substitution.
+The default mode generally defers it, when enabled, until the command
+substitution is executed. This means that command substitution will not
+expand aliases that are defined after the command substitution is initially
+parsed (e.g., as part of a function definition).
+
</li><li> The <small>POSIX</small> <code>PS1</code> and <code>PS2</code> expansions of ‘<samp>!</samp>’ to
the history number and ‘<samp>!!</samp>’ to ‘<samp>!</samp>’ are enabled,
and parameter expansion is performed on the values of <code>PS1</code> and
</li><li> A non-interactive shell exits with an error status if a variable
assignment error occurs in an assignment statement preceding a special
-builtin, but not with any other simple command.
+builtin, but not with any other simple command. For any other simple
+command, the shell aborts execution of that command, and execution continues
+at the top level ("the shell shall not perform any further processing of the
+command in which the error occurred").
</li><li> A non-interactive shell exits with an error status if the iteration
variable in a <code>for</code> statement or the selection variable in a
</li><li> While variable indirection is available, it may not be applied to the
‘<samp>#</samp>’ and ‘<samp>?</samp>’ special parameters.
-</li><li> When expanding the ‘<samp>*</samp>’ special parameter in a pattern context where the
+</li><li> Expanding the ‘<samp>*</samp>’ special parameter in a pattern context where the
expansion is double-quoted does not treat the <code>$*</code> as if it were
double-quoted.
variable values without quotes, unless they contain shell metacharacters,
even if the result contains nonprinting characters.
-</li><li> When the <code>cd</code> builtin is invoked in <var>logical</var> mode, and the pathname
+</li><li> When the <code>cd</code> builtin is invoked in logical mode, and the pathname
constructed from <code>$PWD</code> and the directory name supplied as an argument
does not refer to an existing directory, <code>cd</code> will fail instead of
-falling back to <var>physical</var> mode.
+falling back to physical mode.
</li><li> When the <code>cd</code> builtin cannot change a directory because the
length of the pathname
constructed from <code>$PWD</code> and the directory name supplied as an argument
-exceeds <var>PATH_MAX</var> when all symbolic links are expanded, <code>cd</code> will
+exceeds <code>PATH_MAX</code> when all symbolic links are expanded, <code>cd</code> will
fail instead of attempting to use only the supplied directory name.
</li><li> The <code>pwd</code> builtin verifies that the value it prints is the same as the
If Bash receives a trapped signal while executing <code>read</code>, the trap
handler executes and <code>read</code> returns an exit status greater than 128.
+</li><li> The <code>printf</code> builtin uses <code>double</code> (via <code>strtod</code>) to convert
+arguments corresponding to floating point conversion specifiers, instead of
+<code>long double</code> if it’s available. The ‘<samp>L</samp>’ length modifier forces
+<code>printf</code> to use <code>long double</code> if it’s available.
+
</li><li> Bash removes an exited background process’s status from the list of such
statuses after the <code>wait</code> builtin is used to obtain it.
(see <a href="#Optional-Features">Optional Features</a>).
</p>
<hr>
-<span id="Shell-Compatibility-Mode"></span><div class="header">
+</div>
+<div class="section" id="Shell-Compatibility-Mode">
+<div class="header">
<p>
Previous: <a href="#Bash-POSIX-Mode" accesskey="p" rel="prev">Bash POSIX Mode</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="index-Compatibility-Level"></span>
<span id="index-Compatibility-Mode"></span>
-<p>Bash-4.0 introduced the concept of a ‘shell compatibility level’, specified
-as a set of options to the shopt builtin
+<p>Bash-4.0 introduced the concept of a <em>shell compatibility level</em>,
+specified as a set of options to the shopt builtin
(<code>compat31</code>,
<code>compat32</code>,
<code>compat40</code>,
<p>This section does not mention behavior that is standard for a particular
version (e.g., setting <code>compat32</code> means that quoting the rhs of the regexp
matching operator quotes special regexp characters in the word, which is
-default behavior in bash-3.2 and above).
+default behavior in bash-3.2 and subsequent versions).
</p>
<p>If a user enables, say, <code>compat32</code>, it may affect the behavior of other
compatibility levels up to and including the current compatibility level.
and it is required for bash-5.1 and later versions.
</p>
<dl compact="compact">
-<dt><code>compat31</code></dt>
+<dt><span><code>compat31</code></span></dt>
<dd><ul>
<li> quoting the rhs of the <code>[[</code> command’s regexp matching operator (=~)
has no special effect
</li></ul>
</dd>
-<dt><code>compat32</code></dt>
+<dt><span><code>compat32</code></span></dt>
<dd><ul>
<li> interrupting a command list such as "a ; b ; c" causes the execution
of the next command in the list (in bash-4.0 and later versions,
</li></ul>
</dd>
-<dt><code>compat40</code></dt>
+<dt><span><code>compat40</code></span></dt>
<dd><ul>
<li> the ‘<samp><</samp>’ and ‘<samp>></samp>’ operators to the <code>[[</code> command do not
consider the current locale when comparing strings; they use ASCII
</li></ul>
</dd>
-<dt><code>compat41</code></dt>
+<dt><span><code>compat41</code></span></dt>
<dd><ul>
<li> in posix mode, <code>time</code> may be followed by options and still be
recognized as a reserved word (this is <small>POSIX</small> interpretation 267)
</li></ul>
</dd>
-<dt><code>compat42</code></dt>
+<dt><span><code>compat42</code></span></dt>
<dd><ul>
<li> the replacement string in double-quoted pattern substitution does not
undergo quote removal, as it does in versions after bash-4.2
</li></ul>
</dd>
-<dt><code>compat43</code></dt>
+<dt><span><code>compat43</code></span></dt>
<dd><ul>
<li> the shell does not print a warning message if an attempt is made to
use a quoted compound assignment as an argument to declare
-(declare -a foo=’(1 2)’). Later versions warn that this usage is
+(e.g., declare -a foo=’(1 2)’). Later versions warn that this usage is
deprecated
</li><li> word expansion errors are considered non-fatal errors that cause the
current command to fail, even in posix mode
</li></ul>
</dd>
-<dt><code>compat44</code></dt>
+<dt><span><code>compat44</code></span></dt>
<dd><ul>
<li> the shell sets up the values used by <code>BASH_ARGV</code> and <code>BASH_ARGC</code>
so they can expand to the shell’s positional parameters even if extended
</li></ul>
</dd>
-<dt><code>compat50 (set using BASH_COMPAT)</code></dt>
+<dt><span><code>compat50 (set using BASH_COMPAT)</code></span></dt>
<dd><ul>
<li> Bash-5.1 changed the way <code>$RANDOM</code> is generated to introduce slightly
more randomness. If the shell compatibility level is set to 50 or
output that can be reused as input. Bash-5.1 suppresses that message
when the <samp>-l</samp> option is supplied.
</li></ul>
+
+</dd>
+<dt><span><code>compat51 (set using BASH_COMPAT)</code></span></dt>
+<dd><ul>
+<li> The <code>unset</code> builtin will unset the array <code>a</code> given an argument like
+‘<samp>a[@]</samp>’.
+Bash-5.2 will unset an element with key ‘<samp>@</samp>’ (associative arrays)
+or remove all the elements without unsetting the array (indexed arrays)
+</li><li> arithmetic commands ( ((...)) ) and the expressions in an arithmetic for
+statement can be expanded more than once
+</li><li> expressions used as arguments to arithmetic operators in the <code>[[</code>
+conditional command can be expanded more than once
+</li><li> the expressions in substring parameter brace expansion can be
+expanded more than once
+</li><li> the expressions in the $(( ... )) word expansion can be expanded
+more than once
+</li><li> arithmetic expressions used as indexed array subscripts can be
+expanded more than once
+</li><li> <code>test -v</code>, when given an argument of ‘<samp>A[@]</samp>’, where <var>A</var> is
+an existing associative array, will return true if the array has any set
+elements.
+Bash-5.2 will look for and report on a key named ‘<samp>@</samp>’
+</li><li> the ${<var>parameter</var>[:]=<var>value</var>} word expansion will return
+<var>value</var>, before any variable-specific transformations have been
+performed (e.g., converting to lowercase).
+Bash-5.2 will return the final value assigned to the variable.
+</li><li> Parsing command substitutions will behave as if extended glob
+(see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
+is enabled, so that parsing a command substitution containing an extglob
+pattern (say, as part of a shell function) will not fail.
+This assumes the intent is to enable extglob before the command is executed
+and word expansions are performed.
+It will fail at word expansion time if extglob hasn’t been
+enabled by the time the command is executed.
+</li></ul>
</dd>
</dl>
<hr>
-<span id="Job-Control"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Job-Control">
+<div class="header">
<p>
-Next: <a href="#Command-Line-Editing" accesskey="n" rel="next">Command Line Editing</a>, Previous: <a href="#Bash-Features" accesskey="p" rel="prev">Bash Features</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Command-Line-Editing" accesskey="n" rel="next">Command Line Editing</a>, Previous: <a href="#Bash-Features" accesskey="p" rel="prev">Bash Features</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Job-Control-1"></span><h2 class="chapter">7 Job Control</h2>
<p>This chapter discusses what job control is, how it works, and how
Bash allows you to access its facilities.
</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Job-Control-Basics" accesskey="1">Job Control Basics</a></td><td> </td><td align="left" valign="top">How job control works.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Job-Control-Builtins" accesskey="2">Job Control Builtins</a></td><td> </td><td align="left" valign="top">Bash builtin commands used to interact
- with job control.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Job-Control-Variables" accesskey="3">Job Control Variables</a></td><td> </td><td align="left" valign="top">Variables Bash uses to customize job
- control.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Job-Control-Basics" accesskey="1">Job Control Basics</a></li>
+<li><a href="#Job-Control-Builtins" accesskey="2">Job Control Builtins</a></li>
+<li><a href="#Job-Control-Variables" accesskey="3">Job Control Variables</a></li>
+</ul>
<hr>
-<span id="Job-Control-Basics"></span><div class="header">
+<div class="section" id="Job-Control-Basics">
+<div class="header">
<p>
Next: <a href="#Job-Control-Builtins" accesskey="n" rel="next">Job Control Builtins</a>, Up: <a href="#Job-Control" accesskey="u" rel="up">Job Control</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</p>
<p>If the operating system on which Bash is running supports
job control, Bash contains facilities to use it. Typing the
-<var>suspend</var> character (typically ‘<samp>^Z</samp>’, Control-Z) while a
+<em>suspend</em> character (typically ‘<samp>^Z</samp>’, Control-Z) while a
process is running causes that process to be stopped and returns
-control to Bash. Typing the <var>delayed suspend</var> character
+control to Bash. Typing the <em>delayed suspend</em> character
(typically ‘<samp>^Y</samp>’, Control-Y) causes the process to be stopped
when it attempts to read input from the terminal, and control to
be returned to Bash. The user then manipulates the state of
causing pending output and typeahead to be discarded.
</p>
<p>There are a number of ways to refer to a job in the shell. The
-character ‘<samp>%</samp>’ introduces a job specification (<var>jobspec</var>).
+character ‘<samp>%</samp>’ introduces a job specification (<em>jobspec</em>).
</p>
<p>Job number <code>n</code> may be referred to as ‘<samp>%n</samp>’.
The symbols ‘<samp>%%</samp>’ and ‘<samp>%+</samp>’ refer to the shell’s notion of the
until the job or process terminates before returning.
</p>
<hr>
-<span id="Job-Control-Builtins"></span><div class="header">
+</div>
+<div class="section" id="Job-Control-Builtins">
+<div class="header">
<p>
Next: <a href="#Job-Control-Variables" accesskey="n" rel="next">Job Control Variables</a>, Previous: <a href="#Job-Control-Basics" accesskey="p" rel="prev">Job Control Basics</a>, Up: <a href="#Job-Control" accesskey="u" rel="up">Job Control</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Job-Control-Builtins-1"></span><h3 class="section">7.2 Job Control Builtins</h3>
<dl compact="compact">
-<dt><code>bg</code></dt>
-<dd><span id="index-bg"></span>
-<div class="example">
+<dt id='index-bg'><span><code>bg</code><a href='#index-bg' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">bg [<var>jobspec</var> …]
</pre></div>
that was started without job control.
</p>
</dd>
-<dt><code>fg</code></dt>
-<dd><span id="index-fg"></span>
-<div class="example">
+<dt id='index-fg'><span><code>fg</code><a href='#index-fg' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">fg [<var>jobspec</var>]
</pre></div>
<var>jobspec</var> specifies a job that was started without job control.
</p>
</dd>
-<dt><code>jobs</code></dt>
-<dd><span id="index-jobs"></span>
-<div class="example">
+<dt id='index-jobs'><span><code>jobs</code><a href='#index-jobs' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">jobs [-lnprs] [<var>jobspec</var>]
jobs -x <var>command</var> [<var>arguments</var>]
</pre></div>
following meanings:
</p>
<dl compact="compact">
-<dt><code>-l</code></dt>
+<dt><span><code>-l</code></span></dt>
<dd><p>List process <small>ID</small>s in addition to the normal information.
</p>
</dd>
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Display information only about jobs that have changed status since
the user was last notified of their status.
</p>
</dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>List only the process <small>ID</small> of the job’s process group leader.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>Display only running jobs.
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>Display only stopped jobs.
</p></dd>
</dl>
passing it <var>argument</var>s, returning its exit status.
</p>
</dd>
-<dt><code>kill</code></dt>
-<dd><span id="index-kill"></span>
-<div class="example">
+<dt id='index-kill'><span><code>kill</code><a href='#index-kill' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">kill [-s <var>sigspec</var>] [-n <var>signum</var>] [-<var>sigspec</var>] <var>jobspec</var> or <var>pid</var>
kill -l|-L [<var>exit_status</var>]
</pre></div>
or non-zero if an error occurs or an invalid option is encountered.
</p>
</dd>
-<dt><code>wait</code></dt>
-<dd><span id="index-wait"></span>
-<div class="example">
+<dt id='index-wait'><span><code>wait</code><a href='#index-wait' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">wait [-fn] [-p <var>varname</var>] [<var>jobspec</var> or <var>pid</var> …]
</pre></div>
<var>$!</var>,
and the return status is zero.
If the <samp>-n</samp> option is supplied, <code>wait</code> waits for a single job
-from the list of <var>pids</var> or <var>jobspecs</var> or, if no arguments are
+from the list of <var>pid</var>s or <var>jobspec</var>s or, if no arguments are
supplied, any job,
to complete and returns its exit status.
If none of the supplied arguments is a child of the shell, or if no arguments
This is useful only when the <samp>-n</samp> option is supplied.
Supplying the <samp>-f</samp> option, when job control is enabled,
forces <code>wait</code> to wait for each <var>pid</var> or <var>jobspec</var> to
-terminate before returning its status, intead of returning when it changes
+terminate before returning its status, instead of returning when it changes
status.
If neither <var>jobspec</var> nor <var>pid</var> specifies an active child process
of the shell, the return status is 127.
+If <code>wait</code> is interrupted by a signal, the return status will be greater
+than 128, as described above (see <a href="#Signals">Signals</a>).
+Otherwise, the return status is the exit status
+of the last process or job waited for.
</p>
</dd>
-<dt><code>disown</code></dt>
-<dd><span id="index-disown"></span>
-<div class="example">
+<dt id='index-disown'><span><code>disown</code><a href='#index-disown' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">disown [-ar] [-h] [<var>jobspec</var> … | <var>pid</var> … ]
</pre></div>
argument restricts operation to running jobs.
</p>
</dd>
-<dt><code>suspend</code></dt>
-<dd><span id="index-suspend"></span>
-<div class="example">
+<dt id='index-suspend'><span><code>suspend</code><a href='#index-suspend' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">suspend [-f]
</pre></div>
<p>Suspend the execution of this shell until it receives a
<code>SIGCONT</code> signal.
-A login shell cannot be suspended; the <samp>-f</samp>
+A login shell,
+or a shell without job control enabled,
+cannot be suspended; the <samp>-f</samp>
option can be used to override this and force the suspension.
-</p></dd>
+The return status is 0 unless the shell is a login shell
+or job control is not enabled
+and
+<samp>-f</samp>
+is not supplied.
+</p>
+</dd>
</dl>
<p>When job control is not active, the <code>kill</code> and <code>wait</code>
supplied process <small>ID</small>s.
</p>
<hr>
-<span id="Job-Control-Variables"></span><div class="header">
+</div>
+<div class="section" id="Job-Control-Variables">
+<div class="header">
<p>
Previous: <a href="#Job-Control-Builtins" accesskey="p" rel="prev">Job Control Builtins</a>, Up: <a href="#Job-Control" accesskey="u" rel="up">Job Control</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Job-Control-Variables-1"></span><h3 class="section">7.3 Job Control Variables</h3>
<dl compact="compact">
-<dt><code>auto_resume</code>
-<span id="index-auto_005fresume"></span>
-</dt>
+<dt id='index-auto_005fresume'><span><code>auto_resume</code><a href='#index-auto_005fresume' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This variable controls how the shell interacts with the user and
job control. If this variable exists then single word simple
commands without redirections are treated as candidates for resumption
<hr>
-<span id="Command-Line-Editing"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Command-Line-Editing">
+<div class="header">
<p>
-Next: <a href="#Using-History-Interactively" accesskey="n" rel="next">Using History Interactively</a>, Previous: <a href="#Job-Control" accesskey="p" rel="prev">Job Control</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Using-History-Interactively" accesskey="n" rel="next">Using History Interactively</a>, Previous: <a href="#Job-Control" accesskey="p" rel="prev">Job Control</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Command-Line-Editing-1"></span><h2 class="chapter">8 Command Line Editing</h2>
Command line editing is enabled by default when using an interactive shell,
unless the <samp>--noediting</samp> option is supplied at shell invocation.
Line editing is also used when using the <samp>-e</samp> option to the
-<code>read</code> builtin command (see <a href="#Bash-Builtins">Bash Builtins</a>).
+<code>read</code> builtin command (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
By default, the line editing commands are similar to those of Emacs.
A vi-style line editing interface is also available.
Line editing can be enabled at any time using the <samp>-o emacs</samp> or
(see <a href="#The-Set-Builtin">The Set Builtin</a>), or disabled using the <samp>+o emacs</samp> or
<samp>+o vi</samp> options to <code>set</code>.
</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Introduction-and-Notation" accesskey="1">Introduction and Notation</a></td><td> </td><td align="left" valign="top">Notation used in this text.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Readline-Interaction" accesskey="2">Readline Interaction</a></td><td> </td><td align="left" valign="top">The minimum set of commands for editing a line.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Readline-Init-File" accesskey="3">Readline Init File</a></td><td> </td><td align="left" valign="top">Customizing Readline from a user’s view.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Bindable-Readline-Commands" accesskey="4">Bindable Readline Commands</a></td><td> </td><td align="left" valign="top">A description of most of the Readline commands
- available for binding
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Readline-vi-Mode" accesskey="5">Readline vi Mode</a></td><td> </td><td align="left" valign="top">A short description of how to make Readline
- behave like the vi editor.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Programmable-Completion" accesskey="6">Programmable Completion</a></td><td> </td><td align="left" valign="top">How to specify the possible completions for
- a specific command.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Programmable-Completion-Builtins" accesskey="7">Programmable Completion Builtins</a></td><td> </td><td align="left" valign="top">Builtin commands to specify how to
- complete arguments for a particular command.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#A-Programmable-Completion-Example" accesskey="8">A Programmable Completion Example</a></td><td> </td><td align="left" valign="top">An example shell function for
- generating possible completions.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Introduction-and-Notation" accesskey="1">Introduction to Line Editing</a></li>
+<li><a href="#Readline-Interaction" accesskey="2">Readline Interaction</a></li>
+<li><a href="#Readline-Init-File" accesskey="3">Readline Init File</a></li>
+<li><a href="#Bindable-Readline-Commands" accesskey="4">Bindable Readline Commands</a></li>
+<li><a href="#Readline-vi-Mode" accesskey="5">Readline vi Mode</a></li>
+<li><a href="#Programmable-Completion" accesskey="6">Programmable Completion</a></li>
+<li><a href="#Programmable-Completion-Builtins" accesskey="7">Programmable Completion Builtins</a></li>
+<li><a href="#A-Programmable-Completion-Example" accesskey="8">A Programmable Completion Example</a></li>
+</ul>
<hr>
-<span id="Introduction-and-Notation"></span><div class="header">
+<div class="section" id="Introduction-and-Notation">
+<div class="header">
<p>
Next: <a href="#Readline-Interaction" accesskey="n" rel="next">Readline Interaction</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
some keyboards.
</p>
<hr>
-<span id="Readline-Interaction"></span><div class="header">
+</div>
+<div class="section" id="Readline-Interaction">
+<div class="header">
<p>
-Next: <a href="#Readline-Init-File" accesskey="n" rel="next">Readline Init File</a>, Previous: <a href="#Introduction-and-Notation" accesskey="p" rel="prev">Introduction and Notation</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Readline-Init-File" accesskey="n" rel="next">Readline Init File</a>, Previous: <a href="#Introduction-and-Notation" accesskey="p" rel="prev">Introduction to Line Editing</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Readline-Interaction-1"></span><h3 class="section">8.2 Readline Interaction</h3>
<span id="index-interaction_002c-readline"></span>
end of the line to press <tt class="key">RET</tt>; the entire line is accepted
regardless of the location of the cursor within the line.
</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Readline-Bare-Essentials" accesskey="1">Readline Bare Essentials</a></td><td> </td><td align="left" valign="top">The least you need to know about Readline.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Readline-Movement-Commands" accesskey="2">Readline Movement Commands</a></td><td> </td><td align="left" valign="top">Moving about the input line.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Readline-Killing-Commands" accesskey="3">Readline Killing Commands</a></td><td> </td><td align="left" valign="top">How to delete text, and how to get it back!
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Readline-Arguments" accesskey="4">Readline Arguments</a></td><td> </td><td align="left" valign="top">Giving numeric arguments to commands.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Searching" accesskey="5">Searching</a></td><td> </td><td align="left" valign="top">Searching through previous lines.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Readline-Bare-Essentials" accesskey="1">Readline Bare Essentials</a></li>
+<li><a href="#Readline-Movement-Commands" accesskey="2">Readline Movement Commands</a></li>
+<li><a href="#Readline-Killing-Commands" accesskey="3">Readline Killing Commands</a></li>
+<li><a href="#Readline-Arguments" accesskey="4">Readline Arguments</a></li>
+<li><a href="#Searching" accesskey="5">Searching for Commands in the History</a></li>
+</ul>
<hr>
-<span id="Readline-Bare-Essentials"></span><div class="header">
+<div class="subsection" id="Readline-Bare-Essentials">
+<div class="header">
<p>
Next: <a href="#Readline-Movement-Commands" accesskey="n" rel="next">Readline Movement Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
essentials for editing the text of an input line follows.
</p>
<dl compact="compact">
-<dt><kbd>C-b</kbd></dt>
+<dt><span><kbd>C-b</kbd></span></dt>
<dd><p>Move back one character.
</p></dd>
-<dt><kbd>C-f</kbd></dt>
+<dt><span><kbd>C-f</kbd></span></dt>
<dd><p>Move forward one character.
</p></dd>
-<dt><tt class="key">DEL</tt> or <tt class="key">Backspace</tt></dt>
+<dt><span><tt class="key">DEL</tt> or <tt class="key">Backspace</tt></span></dt>
<dd><p>Delete the character to the left of the cursor.
</p></dd>
-<dt><kbd>C-d</kbd></dt>
+<dt><span><kbd>C-d</kbd></span></dt>
<dd><p>Delete the character underneath the cursor.
</p></dd>
-<dt>Printing characters<!-- /@w --></dt>
+<dt><span>Printing characters<!-- /@w --></span></dt>
<dd><p>Insert the character into the line at the cursor.
</p></dd>
-<dt><kbd>C-_</kbd> or <kbd>C-x C-u</kbd></dt>
+<dt><span><kbd>C-_</kbd> or <kbd>C-x C-u</kbd></span></dt>
<dd><p>Undo the last editing command. You can undo all the way back to an
empty line.
</p></dd>
</dl>
-<p>(Depending on your configuration, the <tt class="key">Backspace</tt> key be set to
+<p>(Depending on your configuration, the <tt class="key">Backspace</tt> key might be set to
delete the character to the left of the cursor and the <tt class="key">DEL</tt> key set
to delete the character underneath the cursor, like <kbd>C-d</kbd>, rather
than the character to the left of the cursor.)
</p>
<hr>
-<span id="Readline-Movement-Commands"></span><div class="header">
+</div>
+<div class="subsection" id="Readline-Movement-Commands">
+<div class="header">
<p>
Next: <a href="#Readline-Killing-Commands" accesskey="n" rel="next">Readline Killing Commands</a>, Previous: <a href="#Readline-Bare-Essentials" accesskey="p" rel="prev">Readline Bare Essentials</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
about the line.
</p>
<dl compact="compact">
-<dt><kbd>C-a</kbd></dt>
+<dt><span><kbd>C-a</kbd></span></dt>
<dd><p>Move to the start of the line.
</p></dd>
-<dt><kbd>C-e</kbd></dt>
+<dt><span><kbd>C-e</kbd></span></dt>
<dd><p>Move to the end of the line.
</p></dd>
-<dt><kbd>M-f</kbd></dt>
+<dt><span><kbd>M-f</kbd></span></dt>
<dd><p>Move forward a word, where a word is composed of letters and digits.
</p></dd>
-<dt><kbd>M-b</kbd></dt>
+<dt><span><kbd>M-b</kbd></span></dt>
<dd><p>Move backward a word.
</p></dd>
-<dt><kbd>C-l</kbd></dt>
+<dt><span><kbd>C-l</kbd></span></dt>
<dd><p>Clear the screen, reprinting the current line at the top.
</p></dd>
</dl>
operate on characters while meta keystrokes operate on words.
</p>
<hr>
-<span id="Readline-Killing-Commands"></span><div class="header">
+</div>
+<div class="subsection" id="Readline-Killing-Commands">
+<div class="header">
<p>
Next: <a href="#Readline-Arguments" accesskey="n" rel="next">Readline Arguments</a>, Previous: <a href="#Readline-Movement-Commands" accesskey="p" rel="prev">Readline Movement Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<p>Here is the list of commands for killing text.
</p>
<dl compact="compact">
-<dt><kbd>C-k</kbd></dt>
+<dt><span><kbd>C-k</kbd></span></dt>
<dd><p>Kill the text from the current cursor position to the end of the line.
</p>
</dd>
-<dt><kbd>M-d</kbd></dt>
+<dt><span><kbd>M-d</kbd></span></dt>
<dd><p>Kill from the cursor to the end of the current word, or, if between
words, to the end of the next word.
Word boundaries are the same as those used by <kbd>M-f</kbd>.
</p>
</dd>
-<dt><kbd>M-<span class="key">DEL</span></kbd></dt>
-<dd><p>Kill from the cursor the start of the current word, or, if between
+<dt><span><kbd>M-<span class="key">DEL</span></kbd></span></dt>
+<dd><p>Kill from the cursor to the start of the current word, or, if between
words, to the start of the previous word.
Word boundaries are the same as those used by <kbd>M-b</kbd>.
</p>
</dd>
-<dt><kbd>C-w</kbd></dt>
+<dt><span><kbd>C-w</kbd></span></dt>
<dd><p>Kill from the cursor to the previous whitespace. This is different than
<kbd>M-<span class="key">DEL</span></kbd> because the word boundaries differ.
</p>
means to copy the most-recently-killed text from the kill buffer.
</p>
<dl compact="compact">
-<dt><kbd>C-y</kbd></dt>
+<dt><span><kbd>C-y</kbd></span></dt>
<dd><p>Yank the most recently killed text back into the buffer at the cursor.
</p>
</dd>
-<dt><kbd>M-y</kbd></dt>
+<dt><span><kbd>M-y</kbd></span></dt>
<dd><p>Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is <kbd>C-y</kbd> or <kbd>M-y</kbd>.
</p></dd>
</dl>
<hr>
-<span id="Readline-Arguments"></span><div class="header">
+</div>
+<div class="subsection" id="Readline-Arguments">
+<div class="header">
<p>
-Next: <a href="#Searching" accesskey="n" rel="next">Searching</a>, Previous: <a href="#Readline-Killing-Commands" accesskey="p" rel="prev">Readline Killing Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Searching" accesskey="n" rel="next">Searching for Commands in the History</a>, Previous: <a href="#Readline-Killing-Commands" accesskey="p" rel="prev">Readline Killing Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Readline-Arguments-1"></span><h4 class="subsection">8.2.4 Readline Arguments</h4>
which will delete the next ten characters on the input line.
</p>
<hr>
-<span id="Searching"></span><div class="header">
+</div>
+<div class="subsection" id="Searching">
+<div class="header">
<p>
Previous: <a href="#Readline-Arguments" accesskey="p" rel="prev">Readline Arguments</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
typed by the user or be part of the contents of the current line.
</p>
<hr>
-<span id="Readline-Init-File"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Readline-Init-File">
+<div class="header">
<p>
Next: <a href="#Bindable-Readline-Commands" accesskey="n" rel="next">Bindable Readline Commands</a>, Previous: <a href="#Readline-Interaction" accesskey="p" rel="prev">Readline Interaction</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
keybindings installed by default, it is possible to use a different set
of keybindings.
Any user can customize programs that use Readline by putting
-commands in an <em>inputrc</em> file, conventionally in his home directory.
+commands in an <em>inputrc</em> file,
+conventionally in their home directory.
The name of this
file is taken from the value of the shell variable <code>INPUTRC</code>. If
that variable is unset, the default is <samp>~/.inputrc</samp>. If that
<samp>/etc/inputrc</samp>.
The <code>bind</code><!-- /@w --> builtin command can also be used to set Readline
keybindings and variables.
-See <a href="#Bash-Builtins">Bash Builtins</a>.
+See <a href="#Bash-Builtins">Bash Builtin Commands</a>.
</p>
<p>When a program which uses the Readline library starts up, the
init file is read, and the key bindings are set.
<p>In addition, the <code>C-x C-r</code> command re-reads this init file, thus
incorporating any changes that you might have made to it.
</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Readline-Init-File-Syntax" accesskey="1">Readline Init File Syntax</a></td><td> </td><td align="left" valign="top">Syntax for the commands in the inputrc file.
-</td></tr>
-<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-
-</pre></th></tr><tr><td align="left" valign="top">• <a href="#Conditional-Init-Constructs" accesskey="2">Conditional Init Constructs</a></td><td> </td><td align="left" valign="top">Conditional key bindings in the inputrc file.
-</td></tr>
-<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-
-</pre></th></tr><tr><td align="left" valign="top">• <a href="#Sample-Init-File" accesskey="3">Sample Init File</a></td><td> </td><td align="left" valign="top">An example inputrc file.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Readline-Init-File-Syntax" accesskey="1">Readline Init File Syntax</a></li>
+<li><a href="#Conditional-Init-Constructs" accesskey="2">Conditional Init Constructs</a></li>
+<li><a href="#Sample-Init-File" accesskey="3">Sample Init File</a></li>
+</ul>
<hr>
-<span id="Readline-Init-File-Syntax"></span><div class="header">
+<div class="subsection" id="Readline-Init-File-Syntax">
+<div class="header">
<p>
Next: <a href="#Conditional-Init-Constructs" accesskey="n" rel="next">Conditional Init Constructs</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
denote variable settings and key bindings.
</p>
<dl compact="compact">
-<dt>Variable Settings</dt>
+<dt><span>Variable Settings</span></dt>
<dd><p>You can modify the run-time behavior of Readline by
altering the values of variables in Readline
using the <code>set</code> command within the init file.
value results in the variable being set to off.
</p>
<p>The <code>bind <span class="nolinebreak">-V</span></code><!-- /@w --> command lists the current Readline variable names
-and values. See <a href="#Bash-Builtins">Bash Builtins</a>.
+and values. See <a href="#Bash-Builtins">Bash Builtin Commands</a>.
</p>
<p>A great deal of run-time behavior is changeable with the following
variables.
</p>
<span id="index-variables_002c-readline"></span>
<dl compact="compact">
-<dt><code>bell-style</code></dt>
-<dd><span id="index-bell_002dstyle"></span>
-<p>Controls what happens when Readline wants to ring the terminal bell.
+<dt id='index-active_002dregion_002dstart_002dcolor'><span><code>active-region-start-color</code><a href='#index-active_002dregion_002dstart_002dcolor' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A string variable that controls the text color and background when displaying
+the text in the active region (see the description of
+<code>enable-active-region</code> below).
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal before displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that puts the terminal in standout mode,
+as obtained from the terminal’s terminfo description.
+A sample value might be ‘<samp>\e[01;33m</samp>’.
+</p>
+</dd>
+<dt id='index-active_002dregion_002dend_002dcolor'><span><code>active-region-end-color</code><a href='#index-active_002dregion_002dend_002dcolor' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>A string variable that "undoes" the effects of <code>active-region-start-color</code>
+and restores "normal" terminal display appearance after displaying text
+in the active region.
+This string must not take up any physical character positions on the display,
+so it should consist only of terminal escape sequences.
+It is output to the terminal after displaying the text in the active region.
+This variable is reset to the default value whenever the terminal type changes.
+The default value is the string that restores the terminal from standout mode,
+as obtained from the terminal’s terminfo description.
+A sample value might be ‘<samp>\e[0m</samp>’.
+</p>
+</dd>
+<dt id='index-bell_002dstyle'><span><code>bell-style</code><a href='#index-bell_002dstyle' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>Controls what happens when Readline wants to ring the terminal bell.
If set to ‘<samp>none</samp>’, Readline never rings the bell. If set to
‘<samp>visible</samp>’, Readline uses a visible bell if one is available.
If set to ‘<samp>audible</samp>’ (the default), Readline attempts to ring
the terminal’s bell.
</p>
</dd>
-<dt><code>bind-tty-special-chars</code></dt>
-<dd><span id="index-bind_002dtty_002dspecial_002dchars"></span>
-<p>If set to ‘<samp>on</samp>’ (the default), Readline attempts to bind the control
+<dt id='index-bind_002dtty_002dspecial_002dchars'><span><code>bind-tty-special-chars</code><a href='#index-bind_002dtty_002dspecial_002dchars' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’ (the default), Readline attempts to bind the control
characters treated specially by the kernel’s terminal driver to their
Readline equivalents.
</p>
</dd>
-<dt><code>blink-matching-paren</code></dt>
-<dd><span id="index-blink_002dmatching_002dparen"></span>
-<p>If set to ‘<samp>on</samp>’, Readline attempts to briefly move the cursor to an
+<dt id='index-blink_002dmatching_002dparen'><span><code>blink-matching-paren</code><a href='#index-blink_002dmatching_002dparen' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, Readline attempts to briefly move the cursor to an
opening parenthesis when a closing parenthesis is inserted. The default
is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>colored-completion-prefix</code></dt>
-<dd><span id="index-colored_002dcompletion_002dprefix"></span>
-<p>If set to ‘<samp>on</samp>’, when listing completions, Readline displays the
+<dt id='index-colored_002dcompletion_002dprefix'><span><code>colored-completion-prefix</code><a href='#index-colored_002dcompletion_002dprefix' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, when listing completions, Readline displays the
common prefix of the set of possible completions using a different color.
The color definitions are taken from the value of the <code>LS_COLORS</code>
environment variable.
+If there is a color definition in <code>LS_COLORS</code> for the custom suffix
+‘<samp>readline-colored-completion-prefix</samp>’, Readline uses this color for
+the common prefix instead of its default.
The default is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>colored-stats</code></dt>
-<dd><span id="index-colored_002dstats"></span>
-<p>If set to ‘<samp>on</samp>’, Readline displays possible completions using different
+<dt id='index-colored_002dstats'><span><code>colored-stats</code><a href='#index-colored_002dstats' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, Readline displays possible completions using different
colors to indicate their file type.
The color definitions are taken from the value of the <code>LS_COLORS</code>
environment variable.
The default is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>comment-begin</code></dt>
-<dd><span id="index-comment_002dbegin"></span>
-<p>The string to insert at the beginning of the line when the
+<dt id='index-comment_002dbegin'><span><code>comment-begin</code><a href='#index-comment_002dbegin' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The string to insert at the beginning of the line when the
<code>insert-comment</code> command is executed. The default value
is <code>"#"</code>.
</p>
</dd>
-<dt><code>completion-display-width</code></dt>
-<dd><span id="index-completion_002ddisplay_002dwidth"></span>
-<p>The number of screen columns used to display possible matches
+<dt id='index-completion_002ddisplay_002dwidth'><span><code>completion-display-width</code><a href='#index-completion_002ddisplay_002dwidth' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The number of screen columns used to display possible matches
when performing completion.
The value is ignored if it is less than 0 or greater than the terminal
screen width.
The default value is -1.
</p>
</dd>
-<dt><code>completion-ignore-case</code></dt>
-<dd><span id="index-completion_002dignore_002dcase"></span>
-<p>If set to ‘<samp>on</samp>’, Readline performs filename matching and completion
+<dt id='index-completion_002dignore_002dcase'><span><code>completion-ignore-case</code><a href='#index-completion_002dignore_002dcase' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, Readline performs filename matching and completion
in a case-insensitive fashion.
The default value is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>completion-map-case</code></dt>
-<dd><span id="index-completion_002dmap_002dcase"></span>
-<p>If set to ‘<samp>on</samp>’, and <var>completion-ignore-case</var> is enabled, Readline
+<dt id='index-completion_002dmap_002dcase'><span><code>completion-map-case</code><a href='#index-completion_002dmap_002dcase' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, and <var>completion-ignore-case</var> is enabled, Readline
treats hyphens (‘<samp>-</samp>’) and underscores (‘<samp>_</samp>’) as equivalent when
performing case-insensitive filename matching and completion.
The default value is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>completion-prefix-display-length</code></dt>
-<dd><span id="index-completion_002dprefix_002ddisplay_002dlength"></span>
-<p>The length in characters of the common prefix of a list of possible
+<dt id='index-completion_002dprefix_002ddisplay_002dlength'><span><code>completion-prefix-display-length</code><a href='#index-completion_002dprefix_002ddisplay_002dlength' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The length in characters of the common prefix of a list of possible
completions that is displayed without modification. When set to a
value greater than zero, common prefixes longer than this value are
replaced with an ellipsis when displaying possible completions.
</p>
</dd>
-<dt><code>completion-query-items</code></dt>
-<dd><span id="index-completion_002dquery_002ditems"></span>
-<p>The number of possible completions that determines when the user is
+<dt id='index-completion_002dquery_002ditems'><span><code>completion-query-items</code><a href='#index-completion_002dquery_002ditems' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The number of possible completions that determines when the user is
asked whether the list of possibilities should be displayed.
If the number of possible completions is greater than or equal to this value,
Readline will ask whether or not the user wishes to view them;
otherwise, they are simply listed.
-This variable must be set to an integer value greater than or equal to 0.
-A negative value means Readline should never ask.
+This variable must be set to an integer value greater than or equal to zero.
+A zero value means Readline should never ask; negative values are
+treated as zero.
The default limit is <code>100</code>.
</p>
</dd>
-<dt><code>convert-meta</code></dt>
-<dd><span id="index-convert_002dmeta"></span>
-<p>If set to ‘<samp>on</samp>’, Readline will convert characters with the
+<dt id='index-convert_002dmeta'><span><code>convert-meta</code><a href='#index-convert_002dmeta' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, Readline will convert characters with the
eighth bit set to an <small>ASCII</small> key sequence by stripping the eighth
bit and prefixing an <tt class="key">ESC</tt> character, converting them to a
-meta-prefixed key sequence. The default value is ‘<samp>on</samp>’, but
+meta-prefixed key sequence.
+The default value is ‘<samp>on</samp>’, but
will be set to ‘<samp>off</samp>’ if the locale is one that contains
eight-bit characters.
+This variable is dependent on the <code>LC_CTYPE</code> locale category, and
+may change if the locale is changed.
</p>
</dd>
-<dt><code>disable-completion</code></dt>
-<dd><span id="index-disable_002dcompletion"></span>
-<p>If set to ‘<samp>On</samp>’, Readline will inhibit word completion.
+<dt id='index-disable_002dcompletion'><span><code>disable-completion</code><a href='#index-disable_002dcompletion' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>On</samp>’, Readline will inhibit word completion.
Completion characters will be inserted into the line as if they had
been mapped to <code>self-insert</code>. The default is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>echo-control-characters</code></dt>
-<dd><span id="index-echo_002dcontrol_002dcharacters"></span>
-<p>When set to ‘<samp>on</samp>’, on operating systems that indicate they support it,
-readline echoes a character corresponding to a signal generated from the
+<dt id='index-echo_002dcontrol_002dcharacters'><span><code>echo-control-characters</code><a href='#index-echo_002dcontrol_002dcharacters' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>When set to ‘<samp>on</samp>’, on operating systems that indicate they support it,
+Readline echoes a character corresponding to a signal generated from the
keyboard. The default is ‘<samp>on</samp>’.
</p>
</dd>
-<dt><code>editing-mode</code></dt>
-<dd><span id="index-editing_002dmode"></span>
-<p>The <code>editing-mode</code> variable controls which default set of
+<dt id='index-editing_002dmode'><span><code>editing-mode</code><a href='#index-editing_002dmode' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The <code>editing-mode</code> variable controls which default set of
key bindings is used. By default, Readline starts up in Emacs editing
mode, where the keystrokes are most similar to Emacs. This variable can be
set to either ‘<samp>emacs</samp>’ or ‘<samp>vi</samp>’.
</p>
</dd>
-<dt><code>emacs-mode-string</code></dt>
-<dd><span id="index-emacs_002dmode_002dstring"></span>
-<p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt id='index-emacs_002dmode_002dstring'><span><code>emacs-mode-string</code><a href='#index-emacs_002dmode_002dstring' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If the <var>show-mode-in-prompt</var> variable is enabled,
this string is displayed immediately before the last line of the primary
prompt when emacs editing mode is active. The value is expanded like a
key binding, so the standard set of meta- and control prefixes and
The default is ‘<samp>@</samp>’.
</p>
</dd>
-<dt><code>enable-bracketed-paste</code></dt>
-<dd><span id="index-enable_002dbracketed_002dpaste"></span>
-<p>When set to ‘<samp>On</samp>’, Readline will configure the terminal in a way
-that will enable it to insert each paste into the editing buffer as a
-single string of characters, instead of treating each character as if
-it had been read from the keyboard. This can prevent pasted characters
-from being interpreted as editing commands. The default is ‘<samp>On</samp>’.
-</p>
-</dd>
-<dt><code>enable-keypad</code></dt>
-<dd><span id="index-enable_002dkeypad"></span>
-<p>When set to ‘<samp>on</samp>’, Readline will try to enable the application
+<dt id='index-enable_002dactive_002dregion'><span><code>enable-active-region</code><a href='#index-enable_002dactive_002dregion' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The <em>point</em> is the current cursor position, and <em>mark</em> refers
+to a saved cursor position (see <a href="#Commands-For-Moving">Commands For Moving</a>).
+The text between the point and mark is referred to as the <em>region</em>.
+When this variable is set to ‘<samp>On</samp>’, Readline allows certain commands
+to designate the region as <em>active</em>.
+When the region is active, Readline highlights the text in the region using
+the value of the <code>active-region-start-color</code>, which defaults to the
+string that enables
+the terminal’s standout mode.
+The active region shows the text inserted by bracketed-paste and any
+matching text found by incremental and non-incremental history searches.
+The default is ‘<samp>On</samp>’.
+</p>
+</dd>
+<dt id='index-enable_002dbracketed_002dpaste'><span><code>enable-bracketed-paste</code><a href='#index-enable_002dbracketed_002dpaste' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>When set to ‘<samp>On</samp>’, Readline configures the terminal to insert each
+paste into the editing buffer as a single string of characters, instead
+of treating each character as if it had been read from the keyboard.
+This is called putting the terminal into <em>bracketed paste mode</em>;
+it prevents Readline from executing any editing commands bound to key
+sequences appearing in the pasted text.
+The default is ‘<samp>On</samp>’.
+</p>
+</dd>
+<dt id='index-enable_002dkeypad'><span><code>enable-keypad</code><a href='#index-enable_002dkeypad' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>When set to ‘<samp>on</samp>’, Readline will try to enable the application
keypad when it is called. Some systems need this to enable the
arrow keys. The default is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>enable-meta-key</code></dt>
+<dt><span><code>enable-meta-key</code></span></dt>
<dd><p>When set to ‘<samp>on</samp>’, Readline will try to enable any meta modifier
key the terminal claims to support when it is called. On many terminals,
the meta key is used to send eight-bit characters.
The default is ‘<samp>on</samp>’.
</p>
</dd>
-<dt><code>expand-tilde</code></dt>
-<dd><span id="index-expand_002dtilde"></span>
-<p>If set to ‘<samp>on</samp>’, tilde expansion is performed when Readline
+<dt id='index-expand_002dtilde'><span><code>expand-tilde</code><a href='#index-expand_002dtilde' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, tilde expansion is performed when Readline
attempts word completion. The default is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>history-preserve-point</code></dt>
-<dd><span id="index-history_002dpreserve_002dpoint"></span>
-<p>If set to ‘<samp>on</samp>’, the history code attempts to place the point (the
+<dt id='index-history_002dpreserve_002dpoint'><span><code>history-preserve-point</code><a href='#index-history_002dpreserve_002dpoint' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, the history code attempts to place the point (the
current cursor position) at the
same location on each history line retrieved with <code>previous-history</code>
or <code>next-history</code>. The default is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>history-size</code></dt>
-<dd><span id="index-history_002dsize"></span>
-<p>Set the maximum number of history entries saved in the history list.
+<dt id='index-history_002dsize'><span><code>history-size</code><a href='#index-history_002dsize' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>Set the maximum number of history entries saved in the history list.
If set to zero, any existing history entries are deleted and no new entries
are saved.
If set to a value less than zero, the number of history entries is not
the maximum number of history entries will be set to 500.
</p>
</dd>
-<dt><code>horizontal-scroll-mode</code></dt>
-<dd><span id="index-horizontal_002dscroll_002dmode"></span>
-<p>This variable can be set to either ‘<samp>on</samp>’ or ‘<samp>off</samp>’. Setting it
+<dt id='index-horizontal_002dscroll_002dmode'><span><code>horizontal-scroll-mode</code><a href='#index-horizontal_002dscroll_002dmode' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>This variable can be set to either ‘<samp>on</samp>’ or ‘<samp>off</samp>’. Setting it
to ‘<samp>on</samp>’ means that the text of the lines being edited will scroll
horizontally on a single screen line when they are longer than the width
of the screen, instead of wrapping onto a new screen line.
By default, this variable is set to ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>input-meta</code></dt>
-<dd><span id="index-input_002dmeta"></span>
-<span id="index-meta_002dflag"></span>
+<dt id='index-input_002dmeta'><span><code>input-meta</code><a href='#index-input_002dmeta' class='copiable-anchor'> ¶</a></span></dt>
+<dd><span id="index-meta_002dflag"></span>
<p>If set to ‘<samp>on</samp>’, Readline will enable eight-bit input (it
will not clear the eighth bit in the characters it reads),
regardless of what the terminal claims it can support. The
default value is ‘<samp>off</samp>’, but Readline will set it to ‘<samp>on</samp>’ if the
locale contains eight-bit characters.
The name <code>meta-flag</code> is a synonym for this variable.
+This variable is dependent on the <code>LC_CTYPE</code> locale category, and
+may change if the locale is changed.
</p>
</dd>
-<dt><code>isearch-terminators</code></dt>
-<dd><span id="index-isearch_002dterminators"></span>
-<p>The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (see <a href="#Searching">Searching</a>).
+<dt id='index-isearch_002dterminators'><span><code>isearch-terminators</code><a href='#index-isearch_002dterminators' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>The string of characters that should terminate an incremental search without
+subsequently executing the character as a command (see <a href="#Searching">Searching for Commands in the History</a>).
If this variable has not been given a value, the characters <tt class="key">ESC</tt> and
<kbd>C-J</kbd> will terminate an incremental search.
</p>
</dd>
-<dt><code>keymap</code></dt>
-<dd><span id="index-keymap"></span>
-<p>Sets Readline’s idea of the current keymap for key binding commands.
+<dt id='index-keymap'><span><code>keymap</code><a href='#index-keymap' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>Sets Readline’s idea of the current keymap for key binding commands.
Built-in <code>keymap</code> names are
<code>emacs</code>,
<code>emacs-standard</code>,
default keymap.
</p>
</dd>
-<dt><code>keyseq-timeout</code></dt>
+<dt><span><code>keyseq-timeout</code></span></dt>
<dd><p>Specifies the duration Readline will wait for a character when reading an
ambiguous key sequence (one that can form a complete key sequence using
the input read so far, or can take additional input to complete a longer
The default value is <code>500</code>.
</p>
</dd>
-<dt><code>mark-directories</code></dt>
+<dt><span><code>mark-directories</code></span></dt>
<dd><p>If set to ‘<samp>on</samp>’, completed directory names have a slash
appended. The default is ‘<samp>on</samp>’.
</p>
</dd>
-<dt><code>mark-modified-lines</code></dt>
-<dd><span id="index-mark_002dmodified_002dlines"></span>
-<p>This variable, when set to ‘<samp>on</samp>’, causes Readline to display an
+<dt id='index-mark_002dmodified_002dlines'><span><code>mark-modified-lines</code><a href='#index-mark_002dmodified_002dlines' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>This variable, when set to ‘<samp>on</samp>’, causes Readline to display an
asterisk (‘<samp>*</samp>’) at the start of history lines which have been modified.
This variable is ‘<samp>off</samp>’ by default.
</p>
</dd>
-<dt><code>mark-symlinked-directories</code></dt>
-<dd><span id="index-mark_002dsymlinked_002ddirectories"></span>
-<p>If set to ‘<samp>on</samp>’, completed names which are symbolic links
+<dt id='index-mark_002dsymlinked_002ddirectories'><span><code>mark-symlinked-directories</code><a href='#index-mark_002dsymlinked_002ddirectories' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, completed names which are symbolic links
to directories have a slash appended (subject to the value of
<code>mark-directories</code>).
The default is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>match-hidden-files</code></dt>
-<dd><span id="index-match_002dhidden_002dfiles"></span>
-<p>This variable, when set to ‘<samp>on</samp>’, causes Readline to match files whose
+<dt id='index-match_002dhidden_002dfiles'><span><code>match-hidden-files</code><a href='#index-match_002dhidden_002dfiles' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>This variable, when set to ‘<samp>on</samp>’, causes Readline to match files whose
names begin with a ‘<samp>.</samp>’ (hidden files) when performing filename
completion.
If set to ‘<samp>off</samp>’, the leading ‘<samp>.</samp>’ must be
This variable is ‘<samp>on</samp>’ by default.
</p>
</dd>
-<dt><code>menu-complete-display-prefix</code></dt>
-<dd><span id="index-menu_002dcomplete_002ddisplay_002dprefix"></span>
-<p>If set to ‘<samp>on</samp>’, menu completion displays the common prefix of the
+<dt id='index-menu_002dcomplete_002ddisplay_002dprefix'><span><code>menu-complete-display-prefix</code><a href='#index-menu_002dcomplete_002ddisplay_002dprefix' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, menu completion displays the common prefix of the
list of possible completions (which may be empty) before cycling through
the list. The default is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>output-meta</code></dt>
-<dd><span id="index-output_002dmeta"></span>
-<p>If set to ‘<samp>on</samp>’, Readline will display characters with the
+<dt id='index-output_002dmeta'><span><code>output-meta</code><a href='#index-output_002dmeta' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
sequence.
The default is ‘<samp>off</samp>’, but Readline will set it to ‘<samp>on</samp>’ if the
locale contains eight-bit characters.
+This variable is dependent on the <code>LC_CTYPE</code> locale category, and
+may change if the locale is changed.
</p>
</dd>
-<dt><code>page-completions</code></dt>
-<dd><span id="index-page_002dcompletions"></span>
-<p>If set to ‘<samp>on</samp>’, Readline uses an internal <code>more</code>-like pager
+<dt id='index-page_002dcompletions'><span><code>page-completions</code><a href='#index-page_002dcompletions' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, Readline uses an internal <code>more</code>-like pager
to display a screenful of possible completions at a time.
This variable is ‘<samp>on</samp>’ by default.
</p>
</dd>
-<dt><code>print-completions-horizontally</code></dt>
+<dt><span><code>print-completions-horizontally</code></span></dt>
<dd><p>If set to ‘<samp>on</samp>’, Readline will display completions with matches
sorted horizontally in alphabetical order, rather than down the screen.
The default is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>revert-all-at-newline</code></dt>
-<dd><span id="index-revert_002dall_002dat_002dnewline"></span>
-<p>If set to ‘<samp>on</samp>’, Readline will undo all changes to history lines
+<dt id='index-revert_002dall_002dat_002dnewline'><span><code>revert-all-at-newline</code><a href='#index-revert_002dall_002dat_002dnewline' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, Readline will undo all changes to history lines
before returning when <code>accept-line</code> is executed. By default,
history lines may be modified and retain individual undo lists across
-calls to <code>readline</code>. The default is ‘<samp>off</samp>’.
+calls to <code>readline()</code>. The default is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>show-all-if-ambiguous</code></dt>
-<dd><span id="index-show_002dall_002dif_002dambiguous"></span>
-<p>This alters the default behavior of the completion functions. If
+<dt id='index-show_002dall_002dif_002dambiguous'><span><code>show-all-if-ambiguous</code><a href='#index-show_002dall_002dif_002dambiguous' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>This alters the default behavior of the completion functions. If
set to ‘<samp>on</samp>’,
words which have more than one possible completion cause the
matches to be listed immediately instead of ringing the bell.
The default value is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>show-all-if-unmodified</code></dt>
-<dd><span id="index-show_002dall_002dif_002dunmodified"></span>
-<p>This alters the default behavior of the completion functions in
+<dt id='index-show_002dall_002dif_002dunmodified'><span><code>show-all-if-unmodified</code><a href='#index-show_002dall_002dif_002dunmodified' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>This alters the default behavior of the completion functions in
a fashion similar to <var>show-all-if-ambiguous</var>.
If set to ‘<samp>on</samp>’,
words which have more than one possible completion without any
The default value is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>show-mode-in-prompt</code></dt>
-<dd><span id="index-show_002dmode_002din_002dprompt"></span>
-<p>If set to ‘<samp>on</samp>’, add a string to the beginning of the prompt
+<dt id='index-show_002dmode_002din_002dprompt'><span><code>show-mode-in-prompt</code><a href='#index-show_002dmode_002din_002dprompt' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi insertion.
The mode strings are user-settable (e.g., <var>emacs-mode-string</var>).
The default value is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>skip-completed-text</code></dt>
-<dd><span id="index-skip_002dcompleted_002dtext"></span>
-<p>If set to ‘<samp>on</samp>’, this alters the default completion behavior when
+<dt id='index-skip_002dcompleted_002dtext'><span><code>skip-completed-text</code><a href='#index-skip_002dcompleted_002dtext' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, this alters the default completion behavior when
inserting a single match into the line. It’s only active when
-performing completion in the middle of a word. If enabled, readline
+performing completion in the middle of a word. If enabled, Readline
does not insert characters from the completion that match characters
after point in the word being completed, so portions of the word
following the cursor are not duplicated.
The default value is ‘<samp>off</samp>’.
</p>
</dd>
-<dt><code>vi-cmd-mode-string</code></dt>
-<dd><span id="index-vi_002dcmd_002dmode_002dstring"></span>
-<p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt id='index-vi_002dcmd_002dmode_002dstring'><span><code>vi-cmd-mode-string</code><a href='#index-vi_002dcmd_002dmode_002dstring' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If the <var>show-mode-in-prompt</var> variable is enabled,
this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in command mode.
The value is expanded like a
The default is ‘<samp>(cmd)</samp>’.
</p>
</dd>
-<dt><code>vi-ins-mode-string</code></dt>
-<dd><span id="index-vi_002dins_002dmode_002dstring"></span>
-<p>If the <var>show-mode-in-prompt</var> variable is enabled,
+<dt id='index-vi_002dins_002dmode_002dstring'><span><code>vi-ins-mode-string</code><a href='#index-vi_002dins_002dmode_002dstring' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If the <var>show-mode-in-prompt</var> variable is enabled,
this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in insertion mode.
The value is expanded like a
The default is ‘<samp>(ins)</samp>’.
</p>
</dd>
-<dt><code>visible-stats</code></dt>
-<dd><span id="index-visible_002dstats"></span>
-<p>If set to ‘<samp>on</samp>’, a character denoting a file’s type
+<dt id='index-visible_002dstats'><span><code>visible-stats</code><a href='#index-visible_002dstats' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>If set to ‘<samp>on</samp>’, a character denoting a file’s type
is appended to the filename when listing possible
completions. The default is ‘<samp>off</samp>’.
</p>
</dl>
</dd>
-<dt>Key Bindings</dt>
+<dt><span>Key Bindings</span></dt>
<dd><p>The syntax for controlling key bindings in the init file is
simple. First you need to find the name of the command that you
want to change. The following sections contain tables of the command
The name of the key can be expressed in different ways, depending on
what you find most comfortable.
</p>
-<p>In addition to command names, readline allows keys to be bound
+<p>In addition to command names, Readline allows keys to be bound
to a string that is inserted when the key is pressed (a <var>macro</var>).
</p>
<p>The <code>bind <span class="nolinebreak">-p</span></code><!-- /@w --> command displays Readline function names and
-bindings in a format that can put directly into an initialization file.
-See <a href="#Bash-Builtins">Bash Builtins</a>.
+bindings in a format that can be put directly into an initialization file.
+See <a href="#Bash-Builtins">Bash Builtin Commands</a>.
</p>
<dl compact="compact">
-<dt><var>keyname</var>: <var><span class="nolinebreak">function-name</span></var> or <var>macro</var><!-- /@w --></dt>
+<dt><span><var>keyname</var>: <var><span class="nolinebreak">function-name</span></var> or <var>macro</var><!-- /@w --></span></dt>
<dd><p><var>keyname</var> is the name of a key spelled out in English. For example:
</p><div class="example">
<pre class="example">Control-u: universal-argument
<var>TAB</var>.
</p>
</dd>
-<dt>"<var>keyseq</var>": <var><span class="nolinebreak">function-name</span></var> or <var>macro</var><!-- /@w --></dt>
+<dt><span>"<var>keyseq</var>": <var><span class="nolinebreak">function-name</span></var> or <var>macro</var><!-- /@w --></span></dt>
<dd><p><var>keyseq</var> differs from <var>keyname</var> above in that strings
denoting an entire key sequence can be specified, by placing
the key sequence in double quotes. Some <small>GNU</small> Emacs style key
specifying key sequences:
</p>
<dl compact="compact">
-<dt><code><kbd>\C-</kbd></code></dt>
+<dt><span><code><kbd>\C-</kbd></code></span></dt>
<dd><p>control prefix
</p></dd>
-<dt><code><kbd>\M-</kbd></code></dt>
+<dt><span><code><kbd>\M-</kbd></code></span></dt>
<dd><p>meta prefix
</p></dd>
-<dt><code><kbd>\e</kbd></code></dt>
+<dt><span><code><kbd>\e</kbd></code></span></dt>
<dd><p>an escape character
</p></dd>
-<dt><code><kbd>\\</kbd></code></dt>
+<dt><span><code><kbd>\\</kbd></code></span></dt>
<dd><p>backslash
</p></dd>
-<dt><code><kbd>\"</kbd></code></dt>
+<dt><span><code><kbd>\"</kbd></code></span></dt>
<dd><p><tt class="key">"</tt>, a double quotation mark
</p></dd>
-<dt><code><kbd>\'</kbd></code></dt>
+<dt><span><code><kbd>\'</kbd></code></span></dt>
<dd><p><tt class="key">'</tt>, a single quote or apostrophe
</p></dd>
</dl>
set of backslash escapes is available:
</p>
<dl compact="compact">
-<dt><code>\a</code></dt>
+<dt><span><code>\a</code></span></dt>
<dd><p>alert (bell)
</p></dd>
-<dt><code>\b</code></dt>
+<dt><span><code>\b</code></span></dt>
<dd><p>backspace
</p></dd>
-<dt><code>\d</code></dt>
+<dt><span><code>\d</code></span></dt>
<dd><p>delete
</p></dd>
-<dt><code>\f</code></dt>
+<dt><span><code>\f</code></span></dt>
<dd><p>form feed
</p></dd>
-<dt><code>\n</code></dt>
+<dt><span><code>\n</code></span></dt>
<dd><p>newline
</p></dd>
-<dt><code>\r</code></dt>
+<dt><span><code>\r</code></span></dt>
<dd><p>carriage return
</p></dd>
-<dt><code>\t</code></dt>
+<dt><span><code>\t</code></span></dt>
<dd><p>horizontal tab
</p></dd>
-<dt><code>\v</code></dt>
+<dt><span><code>\v</code></span></dt>
<dd><p>vertical tab
</p></dd>
-<dt><code>\<var>nnn</var></code></dt>
+<dt><span><code>\<var>nnn</var></code></span></dt>
<dd><p>the eight-bit character whose value is the octal value <var>nnn</var>
(one to three digits)
</p></dd>
-<dt><code>\x<var>HH</var></code></dt>
+<dt><span><code>\x<var>HH</var></code></span></dt>
<dd><p>the eight-bit character whose value is the hexadecimal value <var>HH</var>
(one or two hex digits)
</p></dd>
</dl>
<hr>
-<span id="Conditional-Init-Constructs"></span><div class="header">
+</div>
+<div class="subsection" id="Conditional-Init-Constructs">
+<div class="header">
<p>
Next: <a href="#Sample-Init-File" accesskey="n" rel="next">Sample Init File</a>, Previous: <a href="#Readline-Init-File-Syntax" accesskey="p" rel="prev">Readline Init File Syntax</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
of tests. There are four parser directives used.
</p>
<dl compact="compact">
-<dt><code>$if</code></dt>
+<dt><span><code>$if</code></span></dt>
<dd><p>The <code>$if</code> construct allows bindings to be made based on the
editing mode, the terminal being used, or the application using
Readline. The text of the test, after any comparison operator,
unless otherwise noted, no characters are required to isolate it.
</p>
<dl compact="compact">
-<dt><code>mode</code></dt>
+<dt><span><code>mode</code></span></dt>
<dd><p>The <code>mode=</code> form of the <code>$if</code> directive is used to test
whether Readline is in <code>emacs</code> or <code>vi</code> mode.
This may be used in conjunction
Readline is starting out in <code>emacs</code> mode.
</p>
</dd>
-<dt><code>term</code></dt>
+<dt><span><code>term</code></span></dt>
<dd><p>The <code>term=</code> form may be used to include terminal-specific
key bindings, perhaps to bind the key sequences output by the
terminal’s function keys. The word on the right side of the
for instance.
</p>
</dd>
-<dt><code>version</code></dt>
+<dt><span><code>version</code></span></dt>
<dd><p>The <code>version</code> test may be used to perform comparisons against
specific Readline versions.
The <code>version</code> expands to the current Readline version.
</pre></div>
</dd>
-<dt><code>application</code></dt>
+<dt><span><code>application</code></span></dt>
<dd><p>The <var>application</var> construct is used to include
application-specific settings. Each program using the Readline
library sets the <var>application name</var>, and you can test for
</pre></div>
</dd>
-<dt><code>variable</code></dt>
+<dt><span><code>variable</code></span></dt>
<dd><p>The <var>variable</var> construct provides simple equality tests for Readline
variables and values.
The permitted comparison operators are ‘<samp>=</samp>’, ‘<samp>==</samp>’, and ‘<samp>!=</samp>’.
</dl>
</dd>
-<dt><code>$endif</code></dt>
+<dt><span><code>$endif</code></span></dt>
<dd><p>This command, as seen in the previous example, terminates an
<code>$if</code> command.
</p>
</dd>
-<dt><code>$else</code></dt>
+<dt><span><code>$else</code></span></dt>
<dd><p>Commands in this branch of the <code>$if</code> directive are executed if
the test fails.
</p>
</dd>
-<dt><code>$include</code></dt>
+<dt><span><code>$include</code></span></dt>
<dd><p>This directive takes a single filename as an argument and reads commands
and bindings from that file.
For example, the following directive reads from <samp>/etc/inputrc</samp>:
</dl>
<hr>
-<span id="Sample-Init-File"></span><div class="header">
+</div>
+<div class="subsection" id="Sample-Init-File">
+<div class="header">
<p>
Previous: <a href="#Conditional-Init-Constructs" accesskey="p" rel="prev">Conditional Init Constructs</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</pre></div>
<hr>
-<span id="Bindable-Readline-Commands"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Bindable-Readline-Commands">
+<div class="header">
<p>
Next: <a href="#Readline-vi-Mode" accesskey="n" rel="next">Readline vi Mode</a>, Previous: <a href="#Readline-Init-File" accesskey="p" rel="prev">Readline Init File</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Bindable-Readline-Commands-1"></span><h3 class="section">8.4 Bindable Readline Commands</h3>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Commands-For-Moving" accesskey="1">Commands For Moving</a></td><td> </td><td align="left" valign="top">Moving about the line.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Commands-For-History" accesskey="2">Commands For History</a></td><td> </td><td align="left" valign="top">Getting at previous lines.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Commands-For-Text" accesskey="3">Commands For Text</a></td><td> </td><td align="left" valign="top">Commands for changing text.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Commands-For-Killing" accesskey="4">Commands For Killing</a></td><td> </td><td align="left" valign="top">Commands for killing and yanking.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Numeric-Arguments" accesskey="5">Numeric Arguments</a></td><td> </td><td align="left" valign="top">Specifying numeric arguments, repeat counts.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Commands-For-Completion" accesskey="6">Commands For Completion</a></td><td> </td><td align="left" valign="top">Getting Readline to do the typing for you.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Keyboard-Macros" accesskey="7">Keyboard Macros</a></td><td> </td><td align="left" valign="top">Saving and re-executing typed characters
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Miscellaneous-Commands" accesskey="8">Miscellaneous Commands</a></td><td> </td><td align="left" valign="top">Other miscellaneous commands.
-</td></tr>
-</table>
<p>This section describes Readline commands that may be bound to key
sequences.
You can list your key bindings by executing
<code>bind <span class="nolinebreak">-P</span></code><!-- /@w --> or, for a more terse format, suitable for an
-<var>inputrc</var> file, <code>bind <span class="nolinebreak">-p</span></code><!-- /@w -->. (See <a href="#Bash-Builtins">Bash Builtins</a>.)
+<var>inputrc</var> file, <code>bind <span class="nolinebreak">-p</span></code><!-- /@w -->. (See <a href="#Bash-Builtins">Bash Builtin Commands</a>.)
Command names without an accompanying key sequence are unbound by default.
</p>
<p>In the following descriptions, <em>point</em> refers to the current cursor
<code>set-mark</code> command.
The text between the point and mark is referred to as the <em>region</em>.
</p>
+<ul class="section-toc">
+<li><a href="#Commands-For-Moving" accesskey="1">Commands For Moving</a></li>
+<li><a href="#Commands-For-History" accesskey="2">Commands For Manipulating The History</a></li>
+<li><a href="#Commands-For-Text" accesskey="3">Commands For Changing Text</a></li>
+<li><a href="#Commands-For-Killing" accesskey="4">Killing And Yanking</a></li>
+<li><a href="#Numeric-Arguments" accesskey="5">Specifying Numeric Arguments</a></li>
+<li><a href="#Commands-For-Completion" accesskey="6">Letting Readline Type For You</a></li>
+<li><a href="#Keyboard-Macros" accesskey="7">Keyboard Macros</a></li>
+<li><a href="#Miscellaneous-Commands" accesskey="8">Some Miscellaneous Commands</a></li>
+</ul>
<hr>
-<span id="Commands-For-Moving"></span><div class="header">
+<div class="subsection" id="Commands-For-Moving">
+<div class="header">
<p>
-Next: <a href="#Commands-For-History" accesskey="n" rel="next">Commands For History</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Commands-For-History" accesskey="n" rel="next">Commands For Manipulating The History</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Commands-For-Moving-1"></span><h4 class="subsection">8.4.1 Commands For Moving</h4>
<dl compact="compact">
-<dt><code>beginning-of-line (C-a)</code>
-<span id="index-beginning_002dof_002dline-_0028C_002da_0029"></span>
-</dt>
+<dt id='index-beginning_002dof_002dline-_0028C_002da_0029'><span><code>beginning-of-line (C-a)</code><a href='#index-beginning_002dof_002dline-_0028C_002da_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move to the start of the current line.
</p>
</dd>
-<dt><code>end-of-line (C-e)</code>
-<span id="index-end_002dof_002dline-_0028C_002de_0029"></span>
-</dt>
+<dt id='index-end_002dof_002dline-_0028C_002de_0029'><span><code>end-of-line (C-e)</code><a href='#index-end_002dof_002dline-_0028C_002de_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move to the end of the line.
</p>
</dd>
-<dt><code>forward-char (C-f)</code>
-<span id="index-forward_002dchar-_0028C_002df_0029"></span>
-</dt>
+<dt id='index-forward_002dchar-_0028C_002df_0029'><span><code>forward-char (C-f)</code><a href='#index-forward_002dchar-_0028C_002df_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move forward a character.
</p>
</dd>
-<dt><code>backward-char (C-b)</code>
-<span id="index-backward_002dchar-_0028C_002db_0029"></span>
-</dt>
+<dt id='index-backward_002dchar-_0028C_002db_0029'><span><code>backward-char (C-b)</code><a href='#index-backward_002dchar-_0028C_002db_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move back a character.
</p>
</dd>
-<dt><code>forward-word (M-f)</code>
-<span id="index-forward_002dword-_0028M_002df_0029"></span>
-</dt>
+<dt id='index-forward_002dword-_0028M_002df_0029'><span><code>forward-word (M-f)</code><a href='#index-forward_002dword-_0028M_002df_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move forward to the end of the next word.
Words are composed of letters and digits.
</p>
</dd>
-<dt><code>backward-word (M-b)</code>
-<span id="index-backward_002dword-_0028M_002db_0029"></span>
-</dt>
+<dt id='index-backward_002dword-_0028M_002db_0029'><span><code>backward-word (M-b)</code><a href='#index-backward_002dword-_0028M_002db_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move back to the start of the current or previous word.
Words are composed of letters and digits.
</p>
</dd>
-<dt><code>shell-forward-word (M-C-f)</code>
-<span id="index-shell_002dforward_002dword-_0028M_002dC_002df_0029"></span>
-</dt>
+<dt id='index-shell_002dforward_002dword-_0028M_002dC_002df_0029'><span><code>shell-forward-word (M-C-f)</code><a href='#index-shell_002dforward_002dword-_0028M_002dC_002df_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move forward to the end of the next word.
Words are delimited by non-quoted shell metacharacters.
</p>
</dd>
-<dt><code>shell-backward-word (M-C-b)</code>
-<span id="index-shell_002dbackward_002dword-_0028M_002dC_002db_0029"></span>
-</dt>
+<dt id='index-shell_002dbackward_002dword-_0028M_002dC_002db_0029'><span><code>shell-backward-word (M-C-b)</code><a href='#index-shell_002dbackward_002dword-_0028M_002dC_002db_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move back to the start of the current or previous word.
Words are delimited by non-quoted shell metacharacters.
</p>
</dd>
-<dt><code>previous-screen-line ()</code>
-<span id="index-previous_002dscreen_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-previous_002dscreen_002dline-_0028_0029'><span><code>previous-screen-line ()</code><a href='#index-previous_002dscreen_002dline-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Attempt to move point to the same physical screen column on the previous
physical screen line. This will not have the desired effect if the current
Readline line does not take up more than one physical line or if point is not
greater than the length of the prompt plus the screen width.
</p>
</dd>
-<dt><code>next-screen-line ()</code>
-<span id="index-next_002dscreen_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-next_002dscreen_002dline-_0028_0029'><span><code>next-screen-line ()</code><a href='#index-next_002dscreen_002dline-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Attempt to move point to the same physical screen column on the next
physical screen line. This will not have the desired effect if the current
Readline line does not take up more than one physical line or if the length
plus the screen width.
</p>
</dd>
-<dt><code>clear-display (M-C-l)</code>
-<span id="index-clear_002ddisplay-_0028M_002dC_002dl_0029"></span>
-</dt>
+<dt id='index-clear_002ddisplay-_0028M_002dC_002dl_0029'><span><code>clear-display (M-C-l)</code><a href='#index-clear_002ddisplay-_0028M_002dC_002dl_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Clear the screen and, if possible, the terminal’s scrollback buffer,
then redraw the current line,
leaving the current line at the top of the screen.
</p>
</dd>
-<dt><code>clear-screen (C-l)</code>
-<span id="index-clear_002dscreen-_0028C_002dl_0029"></span>
-</dt>
+<dt id='index-clear_002dscreen-_0028C_002dl_0029'><span><code>clear-screen (C-l)</code><a href='#index-clear_002dscreen-_0028C_002dl_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Clear the screen,
then redraw the current line,
leaving the current line at the top of the screen.
</p>
</dd>
-<dt><code>redraw-current-line ()</code>
-<span id="index-redraw_002dcurrent_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-redraw_002dcurrent_002dline-_0028_0029'><span><code>redraw-current-line ()</code><a href='#index-redraw_002dcurrent_002dline-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Refresh the current line. By default, this is unbound.
</p>
</dd>
</dl>
<hr>
-<span id="Commands-For-History"></span><div class="header">
+</div>
+<div class="subsection" id="Commands-For-History">
+<div class="header">
<p>
-Next: <a href="#Commands-For-Text" accesskey="n" rel="next">Commands For Text</a>, Previous: <a href="#Commands-For-Moving" accesskey="p" rel="prev">Commands For Moving</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Commands-For-Text" accesskey="n" rel="next">Commands For Changing Text</a>, Previous: <a href="#Commands-For-Moving" accesskey="p" rel="prev">Commands For Moving</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Commands-For-Manipulating-The-History"></span><h4 class="subsection">8.4.2 Commands For Manipulating The History</h4>
<dl compact="compact">
-<dt><code>accept-line (Newline or Return)</code>
-<span id="index-accept_002dline-_0028Newline-or-Return_0029"></span>
-</dt>
+<dt id='index-accept_002dline-_0028Newline-or-Return_0029'><span><code>accept-line (Newline or Return)</code><a href='#index-accept_002dline-_0028Newline-or-Return_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Accept the line regardless of where the cursor is.
If this line is
non-empty, add it to the history list according to the setting of
to its original state.
</p>
</dd>
-<dt><code>previous-history (C-p)</code>
-<span id="index-previous_002dhistory-_0028C_002dp_0029"></span>
-</dt>
+<dt id='index-previous_002dhistory-_0028C_002dp_0029'><span><code>previous-history (C-p)</code><a href='#index-previous_002dhistory-_0028C_002dp_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move ‘back’ through the history list, fetching the previous command.
</p>
</dd>
-<dt><code>next-history (C-n)</code>
-<span id="index-next_002dhistory-_0028C_002dn_0029"></span>
-</dt>
+<dt id='index-next_002dhistory-_0028C_002dn_0029'><span><code>next-history (C-n)</code><a href='#index-next_002dhistory-_0028C_002dn_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move ‘forward’ through the history list, fetching the next command.
</p>
</dd>
-<dt><code>beginning-of-history (M-<)</code>
-<span id="index-beginning_002dof_002dhistory-_0028M_002d_003c_0029"></span>
-</dt>
+<dt id='index-beginning_002dof_002dhistory-_0028M_002d_003c_0029'><span><code>beginning-of-history (M-<)</code><a href='#index-beginning_002dof_002dhistory-_0028M_002d_003c_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move to the first line in the history.
</p>
</dd>
-<dt><code>end-of-history (M->)</code>
-<span id="index-end_002dof_002dhistory-_0028M_002d_003e_0029"></span>
-</dt>
+<dt id='index-end_002dof_002dhistory-_0028M_002d_003e_0029'><span><code>end-of-history (M->)</code><a href='#index-end_002dof_002dhistory-_0028M_002d_003e_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Move to the end of the input history, i.e., the line currently
being entered.
</p>
</dd>
-<dt><code>reverse-search-history (C-r)</code>
-<span id="index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"></span>
-</dt>
+<dt id='index-reverse_002dsearch_002dhistory-_0028C_002dr_0029'><span><code>reverse-search-history (C-r)</code><a href='#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Search backward starting at the current line and moving ‘up’ through
the history as necessary. This is an incremental search.
This command sets the region to the matched text and activates the mark.
</p>
</dd>
-<dt><code>forward-search-history (C-s)</code>
-<span id="index-forward_002dsearch_002dhistory-_0028C_002ds_0029"></span>
-</dt>
+<dt id='index-forward_002dsearch_002dhistory-_0028C_002ds_0029'><span><code>forward-search-history (C-s)</code><a href='#index-forward_002dsearch_002dhistory-_0028C_002ds_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Search forward starting at the current line and moving ‘down’ through
the history as necessary. This is an incremental search.
This command sets the region to the matched text and activates the mark.
</p>
</dd>
-<dt><code>non-incremental-reverse-search-history (M-p)</code>
-<span id="index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"></span>
-</dt>
+<dt id='index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029'><span><code>non-incremental-reverse-search-history (M-p)</code><a href='#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Search backward starting at the current line and moving ‘up’
through the history as necessary using a non-incremental search
for a string supplied by the user.
The search string may match anywhere in a history line.
</p>
</dd>
-<dt><code>non-incremental-forward-search-history (M-n)</code>
-<span id="index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"></span>
-</dt>
+<dt id='index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029'><span><code>non-incremental-forward-search-history (M-n)</code><a href='#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Search forward starting at the current line and moving ‘down’
through the history as necessary using a non-incremental search
for a string supplied by the user.
The search string may match anywhere in a history line.
</p>
</dd>
-<dt><code>history-search-forward ()</code>
-<span id="index-history_002dsearch_002dforward-_0028_0029"></span>
-</dt>
+<dt id='index-history_002dsearch_002dforward-_0028_0029'><span><code>history-search-forward ()</code><a href='#index-history_002dsearch_002dforward-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Search forward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
By default, this command is unbound.
</p>
</dd>
-<dt><code>history-search-backward ()</code>
-<span id="index-history_002dsearch_002dbackward-_0028_0029"></span>
-</dt>
+<dt id='index-history_002dsearch_002dbackward-_0028_0029'><span><code>history-search-backward ()</code><a href='#index-history_002dsearch_002dbackward-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Search backward through the history for the string of characters
between the start of the current line and the point.
The search string must match at the beginning of a history line.
By default, this command is unbound.
</p>
</dd>
-<dt><code>history-substring-search-forward ()</code>
-<span id="index-history_002dsubstring_002dsearch_002dforward-_0028_0029"></span>
-</dt>
+<dt id='index-history_002dsubstring_002dsearch_002dforward-_0028_0029'><span><code>history-substring-search-forward ()</code><a href='#index-history_002dsubstring_002dsearch_002dforward-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Search forward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
By default, this command is unbound.
</p>
</dd>
-<dt><code>history-substring-search-backward ()</code>
-<span id="index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"></span>
-</dt>
+<dt id='index-history_002dsubstring_002dsearch_002dbackward-_0028_0029'><span><code>history-substring-search-backward ()</code><a href='#index-history_002dsubstring_002dsearch_002dbackward-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Search backward through the history for the string of characters
between the start of the current line and the point.
The search string may match anywhere in a history line.
By default, this command is unbound.
</p>
</dd>
-<dt><code>yank-nth-arg (M-C-y)</code>
-<span id="index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"></span>
-</dt>
+<dt id='index-yank_002dnth_002darg-_0028M_002dC_002dy_0029'><span><code>yank-nth-arg (M-C-y)</code><a href='#index-yank_002dnth_002darg-_0028M_002dC_002dy_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Insert the first argument to the previous command (usually
the second word on the previous line) at point.
With an argument <var>n</var>,
as if the ‘<samp>!<var>n</var></samp>’ history expansion had been specified.
</p>
</dd>
-<dt><code>yank-last-arg (M-. or M-_)</code>
-<span id="index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"></span>
-</dt>
+<dt id='index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029'><span><code>yank-last-arg (M-. or M-_)</code><a href='#index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Insert last argument to the previous command (the last word of the
previous history entry).
With a numeric argument, behave exactly like <code>yank-nth-arg</code>.
as if the ‘<samp>!$</samp>’ history expansion had been specified.
</p>
</dd>
-<dt><code>operate-and-get-next (C-o)</code>
-<span id="index-operate_002dand_002dget_002dnext-_0028C_002do_0029"></span>
-</dt>
+<dt id='index-operate_002dand_002dget_002dnext-_0028C_002do_0029'><span><code>operate-and-get-next (C-o)</code><a href='#index-operate_002dand_002dget_002dnext-_0028C_002do_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Accept the current line for return to the calling application as if a
newline had been entered,
and fetch the next line relative to the current line from the history
of the current line.
</p>
</dd>
+<dt id='index-fetch_002dhistory-_0028_0029'><span><code>fetch-history ()</code><a href='#index-fetch_002dhistory-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>With a numeric argument, fetch that entry from the history list
+and make it the current line.
+Without an argument, move back to the first entry in the history list.
+</p>
+</dd>
</dl>
<hr>
-<span id="Commands-For-Text"></span><div class="header">
+</div>
+<div class="subsection" id="Commands-For-Text">
+<div class="header">
<p>
-Next: <a href="#Commands-For-Killing" accesskey="n" rel="next">Commands For Killing</a>, Previous: <a href="#Commands-For-History" accesskey="p" rel="prev">Commands For History</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Commands-For-Killing" accesskey="n" rel="next">Killing And Yanking</a>, Previous: <a href="#Commands-For-History" accesskey="p" rel="prev">Commands For Manipulating The History</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Commands-For-Changing-Text"></span><h4 class="subsection">8.4.3 Commands For Changing Text</h4>
<dl compact="compact">
-<dt><code><i>end-of-file</i> (usually C-d)</code>
-<span id="index-end_002dof_002dfile-_0028usually-C_002dd_0029"></span>
-</dt>
+<dt id='index-end_002dof_002dfile-_0028usually-C_002dd_0029'><span><code><i>end-of-file</i> (usually C-d)</code><a href='#index-end_002dof_002dfile-_0028usually-C_002dd_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The character indicating end-of-file as set, for example, by
<code>stty</code>. If this character is read when there are no characters
on the line, and point is at the beginning of the line, Readline
interprets it as the end of input and returns <small>EOF</small>.
</p>
</dd>
-<dt><code>delete-char (C-d)</code>
-<span id="index-delete_002dchar-_0028C_002dd_0029"></span>
-</dt>
+<dt id='index-delete_002dchar-_0028C_002dd_0029'><span><code>delete-char (C-d)</code><a href='#index-delete_002dchar-_0028C_002dd_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Delete the character at point. If this function is bound to the
same character as the tty <small>EOF</small> character, as <kbd>C-d</kbd>
commonly is, see above for the effects.
</p>
</dd>
-<dt><code>backward-delete-char (Rubout)</code>
-<span id="index-backward_002ddelete_002dchar-_0028Rubout_0029"></span>
-</dt>
+<dt id='index-backward_002ddelete_002dchar-_0028Rubout_0029'><span><code>backward-delete-char (Rubout)</code><a href='#index-backward_002ddelete_002dchar-_0028Rubout_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Delete the character behind the cursor. A numeric argument means
to kill the characters instead of deleting them.
</p>
</dd>
-<dt><code>forward-backward-delete-char ()</code>
-<span id="index-forward_002dbackward_002ddelete_002dchar-_0028_0029"></span>
-</dt>
+<dt id='index-forward_002dbackward_002ddelete_002dchar-_0028_0029'><span><code>forward-backward-delete-char ()</code><a href='#index-forward_002dbackward_002ddelete_002dchar-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Delete the character under the cursor, unless the cursor is at the
end of the line, in which case the character behind the cursor is
deleted. By default, this is not bound to a key.
</p>
</dd>
-<dt><code>quoted-insert (C-q or C-v)</code>
-<span id="index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"></span>
-</dt>
+<dt id='index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029'><span><code>quoted-insert (C-q or C-v)</code><a href='#index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Add the next character typed to the line verbatim. This is
how to insert key sequences like <kbd>C-q</kbd>, for example.
</p>
</dd>
-<dt><code>self-insert (a, b, A, 1, !, …)</code>
-<span id="index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"></span>
-</dt>
+<dt id='index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029'><span><code>self-insert (a, b, A, 1, !, …)</code><a href='#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Insert yourself.
</p>
</dd>
-<dt><code>bracketed-paste-begin ()</code>
-<span id="index-bracketed_002dpaste_002dbegin-_0028_0029"></span>
-</dt>
+<dt id='index-bracketed_002dpaste_002dbegin-_0028_0029'><span><code>bracketed-paste-begin ()</code><a href='#index-bracketed_002dpaste_002dbegin-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This function is intended to be bound to the "bracketed paste" escape
sequence sent by some terminals, and such a binding is assigned by default.
It allows Readline to insert the pasted text as a single unit without treating
denote the region.
</p>
</dd>
-<dt><code>transpose-chars (C-t)</code>
-<span id="index-transpose_002dchars-_0028C_002dt_0029"></span>
-</dt>
+<dt id='index-transpose_002dchars-_0028C_002dt_0029'><span><code>transpose-chars (C-t)</code><a href='#index-transpose_002dchars-_0028C_002dt_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Drag the character before the cursor forward over
the character at the cursor, moving the
cursor forward as well. If the insertion point
Negative arguments have no effect.
</p>
</dd>
-<dt><code>transpose-words (M-t)</code>
-<span id="index-transpose_002dwords-_0028M_002dt_0029"></span>
-</dt>
+<dt id='index-transpose_002dwords-_0028M_002dt_0029'><span><code>transpose-words (M-t)</code><a href='#index-transpose_002dwords-_0028M_002dt_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Drag the word before point past the word after point,
moving point past that word as well.
If the insertion point is at the end of the line, this transposes
the last two words on the line.
</p>
</dd>
-<dt><code>upcase-word (M-u)</code>
-<span id="index-upcase_002dword-_0028M_002du_0029"></span>
-</dt>
+<dt id='index-upcase_002dword-_0028M_002du_0029'><span><code>upcase-word (M-u)</code><a href='#index-upcase_002dword-_0028M_002du_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Uppercase the current (or following) word. With a negative argument,
uppercase the previous word, but do not move the cursor.
</p>
</dd>
-<dt><code>downcase-word (M-l)</code>
-<span id="index-downcase_002dword-_0028M_002dl_0029"></span>
-</dt>
+<dt id='index-downcase_002dword-_0028M_002dl_0029'><span><code>downcase-word (M-l)</code><a href='#index-downcase_002dword-_0028M_002dl_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Lowercase the current (or following) word. With a negative argument,
lowercase the previous word, but do not move the cursor.
</p>
</dd>
-<dt><code>capitalize-word (M-c)</code>
-<span id="index-capitalize_002dword-_0028M_002dc_0029"></span>
-</dt>
+<dt id='index-capitalize_002dword-_0028M_002dc_0029'><span><code>capitalize-word (M-c)</code><a href='#index-capitalize_002dword-_0028M_002dc_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Capitalize the current (or following) word. With a negative argument,
capitalize the previous word, but do not move the cursor.
</p>
</dd>
-<dt><code>overwrite-mode ()</code>
-<span id="index-overwrite_002dmode-_0028_0029"></span>
-</dt>
+<dt id='index-overwrite_002dmode-_0028_0029'><span><code>overwrite-mode ()</code><a href='#index-overwrite_002dmode-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Toggle overwrite mode. With an explicit positive numeric argument,
switches to overwrite mode. With an explicit non-positive numeric
argument, switches to insert mode. This command affects only
</dl>
<hr>
-<span id="Commands-For-Killing"></span><div class="header">
+</div>
+<div class="subsection" id="Commands-For-Killing">
+<div class="header">
<p>
-Next: <a href="#Numeric-Arguments" accesskey="n" rel="next">Numeric Arguments</a>, Previous: <a href="#Commands-For-Text" accesskey="p" rel="prev">Commands For Text</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Numeric-Arguments" accesskey="n" rel="next">Specifying Numeric Arguments</a>, Previous: <a href="#Commands-For-Text" accesskey="p" rel="prev">Commands For Changing Text</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Killing-And-Yanking"></span><h4 class="subsection">8.4.4 Killing And Yanking</h4>
<dl compact="compact">
-<dt><code>kill-line (C-k)</code>
-<span id="index-kill_002dline-_0028C_002dk_0029"></span>
-</dt>
+<dt id='index-kill_002dline-_0028C_002dk_0029'><span><code>kill-line (C-k)</code><a href='#index-kill_002dline-_0028C_002dk_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill the text from point to the end of the line.
With a negative numeric argument, kill backward from the cursor to the
beginning of the current line.
</p>
</dd>
-<dt><code>backward-kill-line (C-x Rubout)</code>
-<span id="index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"></span>
-</dt>
+<dt id='index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029'><span><code>backward-kill-line (C-x Rubout)</code><a href='#index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill backward from the cursor to the beginning of the current line.
With a negative numeric argument, kill forward from the cursor to the
end of the current line.
</p>
</dd>
-<dt><code>unix-line-discard (C-u)</code>
-<span id="index-unix_002dline_002ddiscard-_0028C_002du_0029"></span>
-</dt>
+<dt id='index-unix_002dline_002ddiscard-_0028C_002du_0029'><span><code>unix-line-discard (C-u)</code><a href='#index-unix_002dline_002ddiscard-_0028C_002du_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill backward from the cursor to the beginning of the current line.
</p>
</dd>
-<dt><code>kill-whole-line ()</code>
-<span id="index-kill_002dwhole_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-kill_002dwhole_002dline-_0028_0029'><span><code>kill-whole-line ()</code><a href='#index-kill_002dwhole_002dline-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill all characters on the current line, no matter where point is.
By default, this is unbound.
</p>
</dd>
-<dt><code>kill-word (M-d)</code>
-<span id="index-kill_002dword-_0028M_002dd_0029"></span>
-</dt>
+<dt id='index-kill_002dword-_0028M_002dd_0029'><span><code>kill-word (M-d)</code><a href='#index-kill_002dword-_0028M_002dd_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill from point to the end of the current word, or if between
words, to the end of the next word.
Word boundaries are the same as <code>forward-word</code>.
</p>
</dd>
-<dt><code>backward-kill-word (M-<span class="key">DEL</span>)</code>
-<span id="index-backward_002dkill_002dword-_0028M_002dDEL_0029"></span>
-</dt>
+<dt id='index-backward_002dkill_002dword-_0028M_002dDEL_0029'><span><code>backward-kill-word (M-<span class="key">DEL</span>)</code><a href='#index-backward_002dkill_002dword-_0028M_002dDEL_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill the word behind point.
Word boundaries are the same as <code>backward-word</code>.
</p>
</dd>
-<dt><code>shell-kill-word (M-C-d)</code>
-<span id="index-shell_002dkill_002dword-_0028M_002dC_002dd_0029"></span>
-</dt>
+<dt id='index-shell_002dkill_002dword-_0028M_002dC_002dd_0029'><span><code>shell-kill-word (M-C-d)</code><a href='#index-shell_002dkill_002dword-_0028M_002dC_002dd_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill from point to the end of the current word, or if between
words, to the end of the next word.
Word boundaries are the same as <code>shell-forward-word</code>.
</p>
</dd>
-<dt><code>shell-backward-kill-word ()</code>
-<span id="index-shell_002dbackward_002dkill_002dword-_0028_0029"></span>
-</dt>
+<dt id='index-shell_002dbackward_002dkill_002dword-_0028_0029'><span><code>shell-backward-kill-word ()</code><a href='#index-shell_002dbackward_002dkill_002dword-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill the word behind point.
Word boundaries are the same as <code>shell-backward-word</code>.
</p>
</dd>
-<dt><code>shell-transpose-words (M-C-t)</code>
-<span id="index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029"></span>
-</dt>
+<dt id='index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029'><span><code>shell-transpose-words (M-C-t)</code><a href='#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Drag the word before point past the word after point,
moving point past that word as well.
If the insertion point is at the end of the line, this transposes
<code>shell-backward-word</code>.
</p>
</dd>
-<dt><code>unix-word-rubout (C-w)</code>
-<span id="index-unix_002dword_002drubout-_0028C_002dw_0029"></span>
-</dt>
+<dt id='index-unix_002dword_002drubout-_0028C_002dw_0029'><span><code>unix-word-rubout (C-w)</code><a href='#index-unix_002dword_002drubout-_0028C_002dw_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill the word behind point, using white space as a word boundary.
The killed text is saved on the kill-ring.
</p>
</dd>
-<dt><code>unix-filename-rubout ()</code>
-<span id="index-unix_002dfilename_002drubout-_0028_0029"></span>
-</dt>
+<dt id='index-unix_002dfilename_002drubout-_0028_0029'><span><code>unix-filename-rubout ()</code><a href='#index-unix_002dfilename_002drubout-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill the word behind point, using white space and the slash character
as the word boundaries.
The killed text is saved on the kill-ring.
</p>
</dd>
-<dt><code>delete-horizontal-space ()</code>
-<span id="index-delete_002dhorizontal_002dspace-_0028_0029"></span>
-</dt>
+<dt id='index-delete_002dhorizontal_002dspace-_0028_0029'><span><code>delete-horizontal-space ()</code><a href='#index-delete_002dhorizontal_002dspace-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Delete all spaces and tabs around point. By default, this is unbound.
</p>
</dd>
-<dt><code>kill-region ()</code>
-<span id="index-kill_002dregion-_0028_0029"></span>
-</dt>
+<dt id='index-kill_002dregion-_0028_0029'><span><code>kill-region ()</code><a href='#index-kill_002dregion-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Kill the text in the current region.
By default, this command is unbound.
</p>
</dd>
-<dt><code>copy-region-as-kill ()</code>
-<span id="index-copy_002dregion_002das_002dkill-_0028_0029"></span>
-</dt>
+<dt id='index-copy_002dregion_002das_002dkill-_0028_0029'><span><code>copy-region-as-kill ()</code><a href='#index-copy_002dregion_002das_002dkill-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Copy the text in the region to the kill buffer, so it can be yanked
right away. By default, this command is unbound.
</p>
</dd>
-<dt><code>copy-backward-word ()</code>
-<span id="index-copy_002dbackward_002dword-_0028_0029"></span>
-</dt>
+<dt id='index-copy_002dbackward_002dword-_0028_0029'><span><code>copy-backward-word ()</code><a href='#index-copy_002dbackward_002dword-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Copy the word before point to the kill buffer.
The word boundaries are the same as <code>backward-word</code>.
By default, this command is unbound.
</p>
</dd>
-<dt><code>copy-forward-word ()</code>
-<span id="index-copy_002dforward_002dword-_0028_0029"></span>
-</dt>
+<dt id='index-copy_002dforward_002dword-_0028_0029'><span><code>copy-forward-word ()</code><a href='#index-copy_002dforward_002dword-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Copy the word following point to the kill buffer.
The word boundaries are the same as <code>forward-word</code>.
By default, this command is unbound.
</p>
</dd>
-<dt><code>yank (C-y)</code>
-<span id="index-yank-_0028C_002dy_0029"></span>
-</dt>
+<dt id='index-yank-_0028C_002dy_0029'><span><code>yank (C-y)</code><a href='#index-yank-_0028C_002dy_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Yank the top of the kill ring into the buffer at point.
</p>
</dd>
-<dt><code>yank-pop (M-y)</code>
-<span id="index-yank_002dpop-_0028M_002dy_0029"></span>
-</dt>
+<dt id='index-yank_002dpop-_0028M_002dy_0029'><span><code>yank-pop (M-y)</code><a href='#index-yank_002dpop-_0028M_002dy_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is <code>yank</code> or <code>yank-pop</code>.
</p></dd>
</dl>
<hr>
-<span id="Numeric-Arguments"></span><div class="header">
+</div>
+<div class="subsection" id="Numeric-Arguments">
+<div class="header">
<p>
-Next: <a href="#Commands-For-Completion" accesskey="n" rel="next">Commands For Completion</a>, Previous: <a href="#Commands-For-Killing" accesskey="p" rel="prev">Commands For Killing</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Commands-For-Completion" accesskey="n" rel="next">Letting Readline Type For You</a>, Previous: <a href="#Commands-For-Killing" accesskey="p" rel="prev">Killing And Yanking</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Specifying-Numeric-Arguments"></span><h4 class="subsection">8.4.5 Specifying Numeric Arguments</h4>
<dl compact="compact">
-<dt><code>digit-argument (<kbd>M-0</kbd>, <kbd>M-1</kbd>, … <kbd>M--</kbd>)</code>
-<span id="index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"></span>
-</dt>
+<dt id='index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029'><span><code>digit-argument (<kbd>M-0</kbd>, <kbd>M-1</kbd>, … <kbd>M--</kbd>)</code><a href='#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Add this digit to the argument already accumulating, or start a new
argument. <kbd>M--</kbd> starts a negative argument.
</p>
</dd>
-<dt><code>universal-argument ()</code>
-<span id="index-universal_002dargument-_0028_0029"></span>
-</dt>
+<dt id='index-universal_002dargument-_0028_0029'><span><code>universal-argument ()</code><a href='#index-universal_002dargument-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>This is another way to specify an argument.
If this command is followed by one or more digits, optionally with a
leading minus sign, those digits define the argument.
</dl>
<hr>
-<span id="Commands-For-Completion"></span><div class="header">
+</div>
+<div class="subsection" id="Commands-For-Completion">
+<div class="header">
<p>
-Next: <a href="#Keyboard-Macros" accesskey="n" rel="next">Keyboard Macros</a>, Previous: <a href="#Numeric-Arguments" accesskey="p" rel="prev">Numeric Arguments</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Keyboard-Macros" accesskey="n" rel="next">Keyboard Macros</a>, Previous: <a href="#Numeric-Arguments" accesskey="p" rel="prev">Specifying Numeric Arguments</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Letting-Readline-Type-For-You"></span><h4 class="subsection">8.4.6 Letting Readline Type For You</h4>
<dl compact="compact">
-<dt><code>complete (<span class="key">TAB</span>)</code>
-<span id="index-complete-_0028TAB_0029"></span>
-</dt>
+<dt id='index-complete-_0028TAB_0029'><span><code>complete (<span class="key">TAB</span>)</code><a href='#index-complete-_0028TAB_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Attempt to perform completion on the text before point.
The actual completion performed is application-specific.
Bash attempts completion treating the text as a variable (if the
of these produces a match, filename completion is attempted.
</p>
</dd>
-<dt><code>possible-completions (M-?)</code>
-<span id="index-possible_002dcompletions-_0028M_002d_003f_0029"></span>
-</dt>
+<dt id='index-possible_002dcompletions-_0028M_002d_003f_0029'><span><code>possible-completions (M-?)</code><a href='#index-possible_002dcompletions-_0028M_002d_003f_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>List the possible completions of the text before point.
When displaying completions, Readline sets the number of columns used
for display to the value of <code>completion-display-width</code>, the value of
the environment variable <code>COLUMNS</code>, or the screen width, in that order.
</p>
</dd>
-<dt><code>insert-completions (M-*)</code>
-<span id="index-insert_002dcompletions-_0028M_002d_002a_0029"></span>
-</dt>
+<dt id='index-insert_002dcompletions-_0028M_002d_002a_0029'><span><code>insert-completions (M-*)</code><a href='#index-insert_002dcompletions-_0028M_002d_002a_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Insert all completions of the text before point that would have
been generated by <code>possible-completions</code>.
</p>
</dd>
-<dt><code>menu-complete ()</code>
-<span id="index-menu_002dcomplete-_0028_0029"></span>
-</dt>
+<dt id='index-menu_002dcomplete-_0028_0029'><span><code>menu-complete ()</code><a href='#index-menu_002dcomplete-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Similar to <code>complete</code>, but replaces the word to be completed
with a single match from the list of possible completions.
Repeated execution of <code>menu-complete</code> steps through the list
by default.
</p>
</dd>
-<dt><code>menu-complete-backward ()</code>
-<span id="index-menu_002dcomplete_002dbackward-_0028_0029"></span>
-</dt>
+<dt id='index-menu_002dcomplete_002dbackward-_0028_0029'><span><code>menu-complete-backward ()</code><a href='#index-menu_002dcomplete_002dbackward-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Identical to <code>menu-complete</code>, but moves backward through the list
of possible completions, as if <code>menu-complete</code> had been given a
negative argument.
</p>
</dd>
-<dt><code>delete-char-or-list ()</code>
-<span id="index-delete_002dchar_002dor_002dlist-_0028_0029"></span>
-</dt>
+<dt id='index-delete_002dchar_002dor_002dlist-_0028_0029'><span><code>delete-char-or-list ()</code><a href='#index-delete_002dchar_002dor_002dlist-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Deletes the character under the cursor if not at the beginning or
end of the line (like <code>delete-char</code>).
If at the end of the line, behaves identically to
This command is unbound by default.
</p>
</dd>
-<dt><code>complete-filename (M-/)</code>
-<span id="index-complete_002dfilename-_0028M_002d_002f_0029"></span>
-</dt>
+<dt id='index-complete_002dfilename-_0028M_002d_002f_0029'><span><code>complete-filename (M-/)</code><a href='#index-complete_002dfilename-_0028M_002d_002f_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Attempt filename completion on the text before point.
</p>
</dd>
-<dt><code>possible-filename-completions (C-x /)</code>
-<span id="index-possible_002dfilename_002dcompletions-_0028C_002dx-_002f_0029"></span>
-</dt>
+<dt id='index-possible_002dfilename_002dcompletions-_0028C_002dx-_002f_0029'><span><code>possible-filename-completions (C-x /)</code><a href='#index-possible_002dfilename_002dcompletions-_0028C_002dx-_002f_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>List the possible completions of the text before point,
treating it as a filename.
</p>
</dd>
-<dt><code>complete-username (M-~)</code>
-<span id="index-complete_002dusername-_0028M_002d_007e_0029"></span>
-</dt>
+<dt id='index-complete_002dusername-_0028M_002d_007e_0029'><span><code>complete-username (M-~)</code><a href='#index-complete_002dusername-_0028M_002d_007e_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Attempt completion on the text before point, treating
it as a username.
</p>
</dd>
-<dt><code>possible-username-completions (C-x ~)</code>
-<span id="index-possible_002dusername_002dcompletions-_0028C_002dx-_007e_0029"></span>
-</dt>
+<dt id='index-possible_002dusername_002dcompletions-_0028C_002dx-_007e_0029'><span><code>possible-username-completions (C-x ~)</code><a href='#index-possible_002dusername_002dcompletions-_0028C_002dx-_007e_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>List the possible completions of the text before point,
treating it as a username.
</p>
</dd>
-<dt><code>complete-variable (M-$)</code>
-<span id="index-complete_002dvariable-_0028M_002d_0024_0029"></span>
-</dt>
+<dt id='index-complete_002dvariable-_0028M_002d_0024_0029'><span><code>complete-variable (M-$)</code><a href='#index-complete_002dvariable-_0028M_002d_0024_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Attempt completion on the text before point, treating
it as a shell variable.
</p>
</dd>
-<dt><code>possible-variable-completions (C-x $)</code>
-<span id="index-possible_002dvariable_002dcompletions-_0028C_002dx-_0024_0029"></span>
-</dt>
+<dt id='index-possible_002dvariable_002dcompletions-_0028C_002dx-_0024_0029'><span><code>possible-variable-completions (C-x $)</code><a href='#index-possible_002dvariable_002dcompletions-_0028C_002dx-_0024_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>List the possible completions of the text before point,
treating it as a shell variable.
</p>
</dd>
-<dt><code>complete-hostname (M-@)</code>
-<span id="index-complete_002dhostname-_0028M_002d_0040_0029"></span>
-</dt>
+<dt id='index-complete_002dhostname-_0028M_002d_0040_0029'><span><code>complete-hostname (M-@)</code><a href='#index-complete_002dhostname-_0028M_002d_0040_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Attempt completion on the text before point, treating
it as a hostname.
</p>
</dd>
-<dt><code>possible-hostname-completions (C-x @)</code>
-<span id="index-possible_002dhostname_002dcompletions-_0028C_002dx-_0040_0029"></span>
-</dt>
+<dt id='index-possible_002dhostname_002dcompletions-_0028C_002dx-_0040_0029'><span><code>possible-hostname-completions (C-x @)</code><a href='#index-possible_002dhostname_002dcompletions-_0028C_002dx-_0040_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>List the possible completions of the text before point,
treating it as a hostname.
</p>
</dd>
-<dt><code>complete-command (M-!)</code>
-<span id="index-complete_002dcommand-_0028M_002d_0021_0029"></span>
-</dt>
+<dt id='index-complete_002dcommand-_0028M_002d_0021_0029'><span><code>complete-command (M-!)</code><a href='#index-complete_002dcommand-_0028M_002d_0021_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Attempt completion on the text before point, treating
it as a command name. Command completion attempts to
match the text against aliases, reserved words, shell
in that order.
</p>
</dd>
-<dt><code>possible-command-completions (C-x !)</code>
-<span id="index-possible_002dcommand_002dcompletions-_0028C_002dx-_0021_0029"></span>
-</dt>
+<dt id='index-possible_002dcommand_002dcompletions-_0028C_002dx-_0021_0029'><span><code>possible-command-completions (C-x !)</code><a href='#index-possible_002dcommand_002dcompletions-_0028C_002dx-_0021_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>List the possible completions of the text before point,
treating it as a command name.
</p>
</dd>
-<dt><code>dynamic-complete-history (M-<span class="key">TAB</span>)</code>
-<span id="index-dynamic_002dcomplete_002dhistory-_0028M_002dTAB_0029"></span>
-</dt>
+<dt id='index-dynamic_002dcomplete_002dhistory-_0028M_002dTAB_0029'><span><code>dynamic-complete-history (M-<span class="key">TAB</span>)</code><a href='#index-dynamic_002dcomplete_002dhistory-_0028M_002dTAB_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Attempt completion on the text before point, comparing
the text against lines from the history list for possible
completion matches.
</p>
</dd>
-<dt><code>dabbrev-expand ()</code>
-<span id="index-dabbrev_002dexpand-_0028_0029"></span>
-</dt>
+<dt id='index-dabbrev_002dexpand-_0028_0029'><span><code>dabbrev-expand ()</code><a href='#index-dabbrev_002dexpand-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Attempt menu completion on the text before point, comparing
the text against lines from the history list for possible
completion matches.
</p>
</dd>
-<dt><code>complete-into-braces (M-{)</code>
-<span id="index-complete_002dinto_002dbraces-_0028M_002d_007b_0029"></span>
-</dt>
+<dt id='index-complete_002dinto_002dbraces-_0028M_002d_007b_0029'><span><code>complete-into-braces (M-{)</code><a href='#index-complete_002dinto_002dbraces-_0028M_002d_007b_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Perform filename completion and insert the list of possible completions
enclosed within braces so the list is available to the shell
(see <a href="#Brace-Expansion">Brace Expansion</a>).
</dl>
<hr>
-<span id="Keyboard-Macros"></span><div class="header">
+</div>
+<div class="subsection" id="Keyboard-Macros">
+<div class="header">
<p>
-Next: <a href="#Miscellaneous-Commands" accesskey="n" rel="next">Miscellaneous Commands</a>, Previous: <a href="#Commands-For-Completion" accesskey="p" rel="prev">Commands For Completion</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Miscellaneous-Commands" accesskey="n" rel="next">Some Miscellaneous Commands</a>, Previous: <a href="#Commands-For-Completion" accesskey="p" rel="prev">Letting Readline Type For You</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Keyboard-Macros-1"></span><h4 class="subsection">8.4.7 Keyboard Macros</h4>
<dl compact="compact">
-<dt><code>start-kbd-macro (C-x ()</code>
-<span id="index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"></span>
-</dt>
+<dt id='index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029'><span><code>start-kbd-macro (C-x ()</code><a href='#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Begin saving the characters typed into the current keyboard macro.
</p>
</dd>
-<dt><code>end-kbd-macro (C-x ))</code>
-<span id="index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"></span>
-</dt>
+<dt id='index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029'><span><code>end-kbd-macro (C-x ))</code><a href='#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Stop saving the characters typed into the current keyboard macro
and save the definition.
</p>
</dd>
-<dt><code>call-last-kbd-macro (C-x e)</code>
-<span id="index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"></span>
-</dt>
+<dt id='index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029'><span><code>call-last-kbd-macro (C-x e)</code><a href='#index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
</p>
</dd>
-<dt><code>print-last-kbd-macro ()</code>
-<span id="index-print_002dlast_002dkbd_002dmacro-_0028_0029"></span>
-</dt>
-<dd><p>Print the last keboard macro defined in a format suitable for the
+<dt id='index-print_002dlast_002dkbd_002dmacro-_0028_0029'><span><code>print-last-kbd-macro ()</code><a href='#index-print_002dlast_002dkbd_002dmacro-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>Print the last keyboard macro defined in a format suitable for the
<var>inputrc</var> file.
</p>
</dd>
</dl>
<hr>
-<span id="Miscellaneous-Commands"></span><div class="header">
+</div>
+<div class="subsection" id="Miscellaneous-Commands">
+<div class="header">
<p>
Previous: <a href="#Keyboard-Macros" accesskey="p" rel="prev">Keyboard Macros</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Some-Miscellaneous-Commands"></span><h4 class="subsection">8.4.8 Some Miscellaneous Commands</h4>
<dl compact="compact">
-<dt><code>re-read-init-file (C-x C-r)</code>
-<span id="index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"></span>
-</dt>
+<dt id='index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029'><span><code>re-read-init-file (C-x C-r)</code><a href='#index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Read in the contents of the <var>inputrc</var> file, and incorporate
any bindings or variable assignments found there.
</p>
</dd>
-<dt><code>abort (C-g)</code>
-<span id="index-abort-_0028C_002dg_0029"></span>
-</dt>
+<dt id='index-abort-_0028C_002dg_0029'><span><code>abort (C-g)</code><a href='#index-abort-_0028C_002dg_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Abort the current editing command and
ring the terminal’s bell (subject to the setting of
<code>bell-style</code>).
</p>
</dd>
-<dt><code>do-lowercase-version (M-A, M-B, M-<var>x</var>, …)</code>
-<span id="index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"></span>
-</dt>
+<dt id='index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029'><span><code>do-lowercase-version (M-A, M-B, M-<var>x</var>, …)</code><a href='#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>If the metafied character <var>x</var> is upper case, run the command
that is bound to the corresponding metafied lower case character.
The behavior is undefined if <var>x</var> is already lower case.
</p>
</dd>
-<dt><code>prefix-meta (<span class="key">ESC</span>)</code>
-<span id="index-prefix_002dmeta-_0028ESC_0029"></span>
-</dt>
+<dt id='index-prefix_002dmeta-_0028ESC_0029'><span><code>prefix-meta (<span class="key">ESC</span>)</code><a href='#index-prefix_002dmeta-_0028ESC_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Metafy the next character typed. This is for keyboards
without a meta key. Typing ‘<samp><span class="key">ESC</span> f</samp>’ is equivalent to typing
<kbd>M-f</kbd>.
</p>
</dd>
-<dt><code>undo (C-_ or C-x C-u)</code>
-<span id="index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"></span>
-</dt>
+<dt id='index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029'><span><code>undo (C-_ or C-x C-u)</code><a href='#index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Incremental undo, separately remembered for each line.
</p>
</dd>
-<dt><code>revert-line (M-r)</code>
-<span id="index-revert_002dline-_0028M_002dr_0029"></span>
-</dt>
+<dt id='index-revert_002dline-_0028M_002dr_0029'><span><code>revert-line (M-r)</code><a href='#index-revert_002dline-_0028M_002dr_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Undo all changes made to this line. This is like executing the <code>undo</code>
command enough times to get back to the beginning.
</p>
</dd>
-<dt><code>tilde-expand (M-&)</code>
-<span id="index-tilde_002dexpand-_0028M_002d_0026_0029"></span>
-</dt>
+<dt id='index-tilde_002dexpand-_0028M_002d_0026_0029'><span><code>tilde-expand (M-&)</code><a href='#index-tilde_002dexpand-_0028M_002d_0026_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Perform tilde expansion on the current word.
</p>
</dd>
-<dt><code>set-mark (C-@)</code>
-<span id="index-set_002dmark-_0028C_002d_0040_0029"></span>
-</dt>
+<dt id='index-set_002dmark-_0028C_002d_0040_0029'><span><code>set-mark (C-@)</code><a href='#index-set_002dmark-_0028C_002d_0040_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Set the mark to the point. If a
numeric argument is supplied, the mark is set to that position.
</p>
</dd>
-<dt><code>exchange-point-and-mark (C-x C-x)</code>
-<span id="index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"></span>
-</dt>
+<dt id='index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029'><span><code>exchange-point-and-mark (C-x C-x)</code><a href='#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Swap the point with the mark. The current cursor position is set to
the saved position, and the old cursor position is saved as the mark.
</p>
</dd>
-<dt><code>character-search (C-])</code>
-<span id="index-character_002dsearch-_0028C_002d_005d_0029"></span>
-</dt>
+<dt id='index-character_002dsearch-_0028C_002d_005d_0029'><span><code>character-search (C-])</code><a href='#index-character_002dsearch-_0028C_002d_005d_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
+character. A negative argument searches for previous occurrences.
</p>
</dd>
-<dt><code>character-search-backward (M-C-])</code>
-<span id="index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"></span>
-</dt>
+<dt id='index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029'><span><code>character-search-backward (M-C-])</code><a href='#index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
+of that character. A negative argument searches for subsequent
occurrences.
</p>
</dd>
-<dt><code>skip-csi-sequence ()</code>
-<span id="index-skip_002dcsi_002dsequence-_0028_0029"></span>
-</dt>
+<dt id='index-skip_002dcsi_002dsequence-_0028_0029'><span><code>skip-csi-sequence ()</code><a href='#index-skip_002dcsi_002dsequence-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Read enough characters to consume a multi-key sequence such as those
defined for keys like Home and End. Such sequences begin with a
Control Sequence Indicator (CSI), usually ESC-[. If this sequence is
bound to "\e[", keys producing such sequences will have no effect
-unless explicitly bound to a readline command, instead of inserting
+unless explicitly bound to a Readline command, instead of inserting
stray characters into the editing buffer. This is unbound by default,
but usually bound to ESC-[.
</p>
</dd>
-<dt><code>insert-comment (M-#)</code>
-<span id="index-insert_002dcomment-_0028M_002d_0023_0029"></span>
-</dt>
+<dt id='index-insert_002dcomment-_0028M_002d_0023_0029'><span><code>insert-comment (M-#)</code><a href='#index-insert_002dcomment-_0028M_002d_0023_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Without a numeric argument, the value of the <code>comment-begin</code>
variable is inserted at the beginning of the current line.
If a numeric argument is supplied, this command acts as a toggle: if
will be executed by the shell.
</p>
</dd>
-<dt><code>dump-functions ()</code>
-<span id="index-dump_002dfunctions-_0028_0029"></span>
-</dt>
+<dt id='index-dump_002dfunctions-_0028_0029'><span><code>dump-functions ()</code><a href='#index-dump_002dfunctions-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Print all of the functions and their key bindings to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an <var>inputrc</var> file. This command is unbound by default.
</p>
</dd>
-<dt><code>dump-variables ()</code>
-<span id="index-dump_002dvariables-_0028_0029"></span>
-</dt>
+<dt id='index-dump_002dvariables-_0028_0029'><span><code>dump-variables ()</code><a href='#index-dump_002dvariables-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Print all of the settable variables and their values to the
Readline output stream. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an <var>inputrc</var> file. This command is unbound by default.
</p>
</dd>
-<dt><code>dump-macros ()</code>
-<span id="index-dump_002dmacros-_0028_0029"></span>
-</dt>
+<dt id='index-dump_002dmacros-_0028_0029'><span><code>dump-macros ()</code><a href='#index-dump_002dmacros-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Print all of the Readline key sequences bound to macros and the
strings they output. If a numeric argument is supplied,
the output is formatted in such a way that it can be made part
of an <var>inputrc</var> file. This command is unbound by default.
</p>
</dd>
-<dt><code>glob-complete-word (M-g)</code>
-<span id="index-glob_002dcomplete_002dword-_0028M_002dg_0029"></span>
-</dt>
+<dt id='index-spell_002dcorrect_002dword-_0028C_002dx-s_0029'><span><code>spell-correct-word (C-x s)</code><a href='#index-spell_002dcorrect_002dword-_0028C_002dx-s_0029' class='copiable-anchor'> ¶</a></span></dt>
+<dd><p>Perform spelling correction on the current word, treating it as a directory
+or filename, in the same way as the <code>cdspell</code> shell option.
+Word boundaries are the same as those used by <code>shell-forward-word</code>.
+</p>
+</dd>
+<dt id='index-glob_002dcomplete_002dword-_0028M_002dg_0029'><span><code>glob-complete-word (M-g)</code><a href='#index-glob_002dcomplete_002dword-_0028M_002dg_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The word before point is treated as a pattern for pathname expansion,
with an asterisk implicitly appended. This pattern is used to
generate a list of matching file names for possible completions.
</p>
</dd>
-<dt><code>glob-expand-word (C-x *)</code>
-<span id="index-glob_002dexpand_002dword-_0028C_002dx-_002a_0029"></span>
-</dt>
+<dt id='index-glob_002dexpand_002dword-_0028C_002dx-_002a_0029'><span><code>glob-expand-word (C-x *)</code><a href='#index-glob_002dexpand_002dword-_0028C_002dx-_002a_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The word before point is treated as a pattern for pathname expansion,
and the list of matching file names is inserted, replacing the word.
If a numeric argument is supplied, a ‘<samp>*</samp>’ is appended before
pathname expansion.
</p>
</dd>
-<dt><code>glob-list-expansions (C-x g)</code>
-<span id="index-glob_002dlist_002dexpansions-_0028C_002dx-g_0029"></span>
-</dt>
+<dt id='index-glob_002dlist_002dexpansions-_0028C_002dx-g_0029'><span><code>glob-list-expansions (C-x g)</code><a href='#index-glob_002dlist_002dexpansions-_0028C_002dx-g_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>The list of expansions that would have been generated by
<code>glob-expand-word</code> is displayed, and the line is redrawn.
If a numeric argument is supplied, a ‘<samp>*</samp>’ is appended before
pathname expansion.
</p>
</dd>
-<dt><code>display-shell-version (C-x C-v)</code>
-<span id="index-display_002dshell_002dversion-_0028C_002dx-C_002dv_0029"></span>
-</dt>
+<dt id='index-display_002dshell_002dversion-_0028C_002dx-C_002dv_0029'><span><code>display-shell-version (C-x C-v)</code><a href='#index-display_002dshell_002dversion-_0028C_002dx-C_002dv_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Display version information about the current instance of Bash.
</p>
</dd>
-<dt><code>shell-expand-line (M-C-e)</code>
-<span id="index-shell_002dexpand_002dline-_0028M_002dC_002de_0029"></span>
-</dt>
+<dt id='index-shell_002dexpand_002dline-_0028M_002dC_002de_0029'><span><code>shell-expand-line (M-C-e)</code><a href='#index-shell_002dexpand_002dline-_0028M_002dC_002de_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Expand the line as the shell does.
This performs alias and history expansion as well as all of the shell
word expansions (see <a href="#Shell-Expansions">Shell Expansions</a>).
</p>
</dd>
-<dt><code>history-expand-line (M-^)</code>
-<span id="index-history_002dexpand_002dline-_0028M_002d_005e_0029"></span>
-</dt>
+<dt id='index-history_002dexpand_002dline-_0028M_002d_005e_0029'><span><code>history-expand-line (M-^)</code><a href='#index-history_002dexpand_002dline-_0028M_002d_005e_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Perform history expansion on the current line.
</p>
</dd>
-<dt><code>magic-space ()</code>
-<span id="index-magic_002dspace-_0028_0029"></span>
-</dt>
+<dt id='index-magic_002dspace-_0028_0029'><span><code>magic-space ()</code><a href='#index-magic_002dspace-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Perform history expansion on the current line and insert a space
-(see <a href="#History-Interaction">History Interaction</a>).
+(see <a href="#History-Interaction">History Expansion</a>).
</p>
</dd>
-<dt><code>alias-expand-line ()</code>
-<span id="index-alias_002dexpand_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-alias_002dexpand_002dline-_0028_0029'><span><code>alias-expand-line ()</code><a href='#index-alias_002dexpand_002dline-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Perform alias expansion on the current line (see <a href="#Aliases">Aliases</a>).
</p>
</dd>
-<dt><code>history-and-alias-expand-line ()</code>
-<span id="index-history_002dand_002dalias_002dexpand_002dline-_0028_0029"></span>
-</dt>
+<dt id='index-history_002dand_002dalias_002dexpand_002dline-_0028_0029'><span><code>history-and-alias-expand-line ()</code><a href='#index-history_002dand_002dalias_002dexpand_002dline-_0028_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Perform history and alias expansion on the current line.
</p>
</dd>
-<dt><code>insert-last-argument (M-. or M-_)</code>
-<span id="index-insert_002dlast_002dargument-_0028M_002d_002e-or-M_002d_005f_0029"></span>
-</dt>
+<dt id='index-insert_002dlast_002dargument-_0028M_002d_002e-or-M_002d_005f_0029'><span><code>insert-last-argument (M-. or M-_)</code><a href='#index-insert_002dlast_002dargument-_0028M_002d_002e-or-M_002d_005f_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>A synonym for <code>yank-last-arg</code>.
</p>
</dd>
-<dt><code>edit-and-execute-command (C-x C-e)</code>
-<span id="index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029"></span>
-</dt>
+<dt id='index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029'><span><code>edit-and-execute-command (C-x C-e)</code><a href='#index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029' class='copiable-anchor'> ¶</a></span></dt>
<dd><p>Invoke an editor on the current command line, and execute the result as shell
commands.
Bash attempts to invoke
</dl>
<hr>
-<span id="Readline-vi-Mode"></span><div class="header">
+</div>
+</div>
+<div class="section" id="Readline-vi-Mode">
+<div class="header">
<p>
Next: <a href="#Programmable-Completion" accesskey="n" rel="next">Programmable Completion</a>, Previous: <a href="#Bindable-Readline-Commands" accesskey="p" rel="prev">Bindable Readline Commands</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
so forth.
</p>
<hr>
-<span id="Programmable-Completion"></span><div class="header">
+</div>
+<div class="section" id="Programmable-Completion">
+<div class="header">
<p>
Next: <a href="#Programmable-Completion-Builtins" accesskey="n" rel="next">Programmable Completion Builtins</a>, Previous: <a href="#Readline-vi-Mode" accesskey="p" rel="prev">Readline vi Mode</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<p>Once a compspec has been found, it is used to generate the list of
matching words.
If a compspec is not found, the default Bash completion
-described above (see <a href="#Commands-For-Completion">Commands For Completion</a>) is performed.
+described above (see <a href="#Commands-For-Completion">Letting Readline Type For You</a>) is performed.
</p>
<p>First, the actions specified by the compspec are used.
Only matches which are prefixed by the word being completed are
</pre></div>
<hr>
-<span id="Programmable-Completion-Builtins"></span><div class="header">
+</div>
+<div class="section" id="Programmable-Completion-Builtins">
+<div class="header">
<p>
Next: <a href="#A-Programmable-Completion-Example" accesskey="n" rel="next">A Programmable Completion Example</a>, Previous: <a href="#Programmable-Completion" accesskey="p" rel="prev">Programmable Completion</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
be completed, and two to modify the completion as it is happening.
</p>
<dl compact="compact">
-<dt><code>compgen</code></dt>
-<dd><span id="index-compgen"></span>
-<div class="example">
+<dt id='index-compgen'><span><code>compgen</code><a href='#index-compgen' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example"><code>compgen [<var>option</var>] [<var>word</var>]</code>
</pre></div>
matches were generated.
</p>
</dd>
-<dt><code>complete</code></dt>
-<dd><span id="index-complete"></span>
-<div class="example">
+<dt id='index-complete'><span><code>complete</code><a href='#index-complete' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example"><code>complete [-abcdefgjksuv] [-o <var>comp-option</var>] [-DEI] [-A <var>action</var>] [-G <var>globpat</var>]
[-W <var>wordlist</var>] [-F <var>function</var>] [-C <var>command</var>] [-X <var>filterpat</var>]
[-P <var>prefix</var>] [-S <var>suffix</var>] <var>name</var> [<var>name</var> …]</code>
</p>
<dl compact="compact">
-<dt><code>-o <var>comp-option</var></code></dt>
+<dt><span><code>-o <var>comp-option</var></code></span></dt>
<dd><p>The <var>comp-option</var> controls several aspects of the compspec’s behavior
beyond the simple generation of completions.
<var>comp-option</var> may be one of:
</p>
<dl compact="compact">
-<dt><code>bashdefault</code></dt>
+<dt><span><code>bashdefault</code></span></dt>
<dd><p>Perform the rest of the default Bash completions if the compspec
generates no matches.
</p>
</dd>
-<dt><code>default</code></dt>
+<dt><span><code>default</code></span></dt>
<dd><p>Use Readline’s default filename completion if the compspec generates
no matches.
</p>
</dd>
-<dt><code>dirnames</code></dt>
+<dt><span><code>dirnames</code></span></dt>
<dd><p>Perform directory name completion if the compspec generates no matches.
</p>
</dd>
-<dt><code>filenames</code></dt>
+<dt><span><code>filenames</code></span></dt>
<dd><p>Tell Readline that the compspec generates filenames, so it can perform any
filename-specific processing (like adding a slash to directory names,
quoting special characters, or suppressing trailing spaces).
with <samp>-F</samp>.
</p>
</dd>
-<dt><code>noquote</code></dt>
+<dt><span><code>noquote</code></span></dt>
<dd><p>Tell Readline not to quote the completed words if they are filenames
(quoting filenames is the default).
</p>
</dd>
-<dt><code>nosort</code></dt>
+<dt><span><code>nosort</code></span></dt>
<dd><p>Tell Readline not to sort the list of possible completions alphabetically.
</p>
</dd>
-<dt><code>nospace</code></dt>
+<dt><span><code>nospace</code></span></dt>
<dd><p>Tell Readline not to append a space (the default) to words completed at
the end of the line.
</p>
</dd>
-<dt><code>plusdirs</code></dt>
+<dt><span><code>plusdirs</code></span></dt>
<dd><p>After any matches defined by the compspec are generated,
directory name completion is attempted and any
matches are added to the results of the other actions.
</dl>
</dd>
-<dt><code>-A <var>action</var></code></dt>
+<dt><span><code>-A <var>action</var></code></span></dt>
<dd><p>The <var>action</var> may be one of the following to generate a list of possible
completions:
</p>
<dl compact="compact">
-<dt><code>alias</code></dt>
+<dt><span><code>alias</code></span></dt>
<dd><p>Alias names. May also be specified as <samp>-a</samp>.
</p>
</dd>
-<dt><code>arrayvar</code></dt>
+<dt><span><code>arrayvar</code></span></dt>
<dd><p>Array variable names.
</p>
</dd>
-<dt><code>binding</code></dt>
+<dt><span><code>binding</code></span></dt>
<dd><p>Readline key binding names (see <a href="#Bindable-Readline-Commands">Bindable Readline Commands</a>).
</p>
</dd>
-<dt><code>builtin</code></dt>
+<dt><span><code>builtin</code></span></dt>
<dd><p>Names of shell builtin commands. May also be specified as <samp>-b</samp>.
</p>
</dd>
-<dt><code>command</code></dt>
+<dt><span><code>command</code></span></dt>
<dd><p>Command names. May also be specified as <samp>-c</samp>.
</p>
</dd>
-<dt><code>directory</code></dt>
+<dt><span><code>directory</code></span></dt>
<dd><p>Directory names. May also be specified as <samp>-d</samp>.
</p>
</dd>
-<dt><code>disabled</code></dt>
+<dt><span><code>disabled</code></span></dt>
<dd><p>Names of disabled shell builtins.
</p>
</dd>
-<dt><code>enabled</code></dt>
+<dt><span><code>enabled</code></span></dt>
<dd><p>Names of enabled shell builtins.
</p>
</dd>
-<dt><code>export</code></dt>
+<dt><span><code>export</code></span></dt>
<dd><p>Names of exported shell variables. May also be specified as <samp>-e</samp>.
</p>
</dd>
-<dt><code>file</code></dt>
+<dt><span><code>file</code></span></dt>
<dd><p>File names. May also be specified as <samp>-f</samp>.
</p>
</dd>
-<dt><code>function</code></dt>
+<dt><span><code>function</code></span></dt>
<dd><p>Names of shell functions.
</p>
</dd>
-<dt><code>group</code></dt>
+<dt><span><code>group</code></span></dt>
<dd><p>Group names. May also be specified as <samp>-g</samp>.
</p>
</dd>
-<dt><code>helptopic</code></dt>
-<dd><p>Help topics as accepted by the <code>help</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>).
+<dt><span><code>helptopic</code></span></dt>
+<dd><p>Help topics as accepted by the <code>help</code> builtin (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
</dd>
-<dt><code>hostname</code></dt>
+<dt><span><code>hostname</code></span></dt>
<dd><p>Hostnames, as taken from the file specified by the
<code>HOSTFILE</code> shell variable (see <a href="#Bash-Variables">Bash Variables</a>).
</p>
</dd>
-<dt><code>job</code></dt>
+<dt><span><code>job</code></span></dt>
<dd><p>Job names, if job control is active. May also be specified as <samp>-j</samp>.
</p>
</dd>
-<dt><code>keyword</code></dt>
+<dt><span><code>keyword</code></span></dt>
<dd><p>Shell reserved words. May also be specified as <samp>-k</samp>.
</p>
</dd>
-<dt><code>running</code></dt>
+<dt><span><code>running</code></span></dt>
<dd><p>Names of running jobs, if job control is active.
</p>
</dd>
-<dt><code>service</code></dt>
+<dt><span><code>service</code></span></dt>
<dd><p>Service names. May also be specified as <samp>-s</samp>.
</p>
</dd>
-<dt><code>setopt</code></dt>
+<dt><span><code>setopt</code></span></dt>
<dd><p>Valid arguments for the <samp>-o</samp> option to the <code>set</code> builtin
(see <a href="#The-Set-Builtin">The Set Builtin</a>).
</p>
</dd>
-<dt><code>shopt</code></dt>
+<dt><span><code>shopt</code></span></dt>
<dd><p>Shell option names as accepted by the <code>shopt</code> builtin
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
+(see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
</dd>
-<dt><code>signal</code></dt>
+<dt><span><code>signal</code></span></dt>
<dd><p>Signal names.
</p>
</dd>
-<dt><code>stopped</code></dt>
+<dt><span><code>stopped</code></span></dt>
<dd><p>Names of stopped jobs, if job control is active.
</p>
</dd>
-<dt><code>user</code></dt>
+<dt><span><code>user</code></span></dt>
<dd><p>User names. May also be specified as <samp>-u</samp>.
</p>
</dd>
-<dt><code>variable</code></dt>
+<dt><span><code>variable</code></span></dt>
<dd><p>Names of all shell variables. May also be specified as <samp>-v</samp>.
</p></dd>
</dl>
</dd>
-<dt><code>-C <var>command</var></code></dt>
+<dt><span><code>-C <var>command</var></code></span></dt>
<dd><p><var>command</var> is executed in a subshell environment, and its output is
used as the possible completions.
+Arguments are passed as with the <samp>-F</samp> option.
</p>
</dd>
-<dt><code>-F <var>function</var></code></dt>
+<dt><span><code>-F <var>function</var></code></span></dt>
<dd><p>The shell function <var>function</var> is executed in the current shell
environment.
When it is executed, $1 is the name of the command whose arguments are
of the <code>COMPREPLY</code> array variable.
</p>
</dd>
-<dt><code>-G <var>globpat</var></code></dt>
+<dt><span><code>-G <var>globpat</var></code></span></dt>
<dd><p>The filename expansion pattern <var>globpat</var> is expanded to generate
the possible completions.
</p>
</dd>
-<dt><code>-P <var>prefix</var></code></dt>
+<dt><span><code>-P <var>prefix</var></code></span></dt>
<dd><p><var>prefix</var> is added at the beginning of each possible completion
after all other options have been applied.
</p>
</dd>
-<dt><code>-S <var>suffix</var></code></dt>
+<dt><span><code>-S <var>suffix</var></code></span></dt>
<dd><p><var>suffix</var> is appended to each possible completion
after all other options have been applied.
</p>
</dd>
-<dt><code>-W <var>wordlist</var></code></dt>
+<dt><span><code>-W <var>wordlist</var></code></span></dt>
<dd><p>The <var>wordlist</var> is split using the characters in the
<code>IFS</code> special variable as delimiters, and each resultant word
is expanded.
match the word being completed.
</p>
</dd>
-<dt><code>-X <var>filterpat</var></code></dt>
+<dt><span><code>-X <var>filterpat</var></code></span></dt>
<dd><p><var>filterpat</var> is a pattern as used for filename expansion.
It is applied to the list of possible completions generated by the
preceding options and arguments, and each completion matching
an error occurs adding a completion specification.
</p>
</dd>
-<dt><code>compopt</code></dt>
-<dd><span id="index-compopt"></span>
-<div class="example">
+<dt id='index-compopt'><span><code>compopt</code><a href='#index-compopt' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example"><code>compopt</code> [-o <var>option</var>] [-DEI] [+o <var>option</var>] [<var>name</var>]
</pre></div>
<p>Modify completion options for each <var>name</var> according to the
</dl>
<hr>
-<span id="A-Programmable-Completion-Example"></span><div class="header">
+</div>
+<div class="section" id="A-Programmable-Completion-Example">
+<div class="header">
<p>
Previous: <a href="#Programmable-Completion-Builtins" accesskey="p" rel="prev">Programmable Completion Builtins</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
The <samp>-o nospace</samp> option tells Readline to not append a space
character to the directory name, in case we want to append to it.
The <samp>-o bashdefault</samp> option brings in the rest of the "Bash default"
-completions – possible completion that Bash adds to the default Readline
+completions – possible completions that Bash adds to the default Readline
set. These include things like command name completion, variable completion
for words beginning with ‘<samp>$</samp>’ or ‘<samp>${</samp>’, completions containing pathname
expansion patterns (see <a href="#Filename-Expansion">Filename Expansion</a>), and so on.
<span id="index-History_002c-how-to-use"></span>
<hr>
-<span id="Using-History-Interactively"></span><div class="header">
+</div>
+</div>
+<div class="chapter" id="Using-History-Interactively">
+<div class="header">
<p>
-Next: <a href="#Installing-Bash" accesskey="n" rel="next">Installing Bash</a>, Previous: <a href="#Command-Line-Editing" accesskey="p" rel="prev">Command Line Editing</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Installing-Bash" accesskey="n" rel="next">Installing Bash</a>, Previous: <a href="#Command-Line-Editing" accesskey="p" rel="prev">Command Line Editing</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Using-History-Interactively-1"></span><h2 class="chapter">9 Using History Interactively</h2>
For information on using the <small>GNU</small> History Library in other programs,
see the <small>GNU</small> Readline Library Manual.
</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Bash-History-Facilities" accesskey="1">Bash History Facilities</a></td><td> </td><td align="left" valign="top">How Bash lets you manipulate your command
- history.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Bash-History-Builtins" accesskey="2">Bash History Builtins</a></td><td> </td><td align="left" valign="top">The Bash builtin commands that manipulate
- the command history.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#History-Interaction" accesskey="3">History Interaction</a></td><td> </td><td align="left" valign="top">What it feels like using History as a user.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Bash-History-Facilities" accesskey="1">Bash History Facilities</a></li>
+<li><a href="#Bash-History-Builtins" accesskey="2">Bash History Builtins</a></li>
+<li><a href="#History-Interaction" accesskey="3">History Expansion</a></li>
+</ul>
<hr>
-<span id="Bash-History-Facilities"></span><div class="header">
+<div class="section" id="Bash-History-Facilities">
+<div class="header">
<p>
Next: <a href="#Bash-History-Builtins" accesskey="n" rel="next">Bash History Builtins</a>, Up: <a href="#Using-History-Interactively" accesskey="u" rel="up">Using History Interactively</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
When a shell with history enabled exits, the last
<code>$HISTSIZE</code> lines are copied from the history list to the file
named by <code>$HISTFILE</code>.
-If the <code>histappend</code> shell option is set (see <a href="#Bash-Builtins">Bash Builtins</a>),
+If the <code>histappend</code> shell option is set (see <a href="#Bash-Builtins">Bash Builtin Commands</a>),
the lines are appended to the history file,
otherwise the history file is overwritten.
If <code>HISTFILE</code>
list and manipulate the history file.
When using command-line editing, search commands
are available in each editing mode that provide access to the
-history list (see <a href="#Commands-For-History">Commands For History</a>).
+history list (see <a href="#Commands-For-History">Commands For Manipulating The History</a>).
</p>
<p>The shell allows control over which commands are saved on the history
list. The <code>HISTCONTROL</code> and <code>HISTIGNORE</code>
See <a href="#The-Shopt-Builtin">The Shopt Builtin</a>, for a description of <code>shopt</code>.
</p>
<hr>
-<span id="Bash-History-Builtins"></span><div class="header">
+</div>
+<div class="section" id="Bash-History-Builtins">
+<div class="header">
<p>
-Next: <a href="#History-Interaction" accesskey="n" rel="next">History Interaction</a>, Previous: <a href="#Bash-History-Facilities" accesskey="p" rel="prev">Bash History Facilities</a>, Up: <a href="#Using-History-Interactively" accesskey="u" rel="up">Using History Interactively</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#History-Interaction" accesskey="n" rel="next">History Expansion</a>, Previous: <a href="#Bash-History-Facilities" accesskey="p" rel="prev">Bash History Facilities</a>, Up: <a href="#Using-History-Interactively" accesskey="u" rel="up">Using History Interactively</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Bash-History-Builtins-1"></span><h3 class="section">9.2 Bash History Builtins</h3>
<span id="index-history-builtins"></span>
history list and history file.
</p>
<dl compact="compact">
-<dt><code>fc</code></dt>
-<dd><span id="index-fc"></span>
-<div class="example">
+<dt id='index-fc'><span><code>fc</code><a href='#index-fc' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example"><code>fc [-e <var>ename</var>] [-lnr] [<var>first</var>] [<var>last</var>]</code>
<code>fc -s [<var>pat</var>=<var>rep</var>] [<var>command</var>]</code>
</pre></div>
and typing ‘<samp>r</samp>’ re-executes the last command (see <a href="#Aliases">Aliases</a>).
</p>
</dd>
-<dt><code>history</code></dt>
-<dd><span id="index-history"></span>
-<div class="example">
+<dt id='index-history'><span><code>history</code><a href='#index-history' class='copiable-anchor'> ¶</a></span></dt>
+<dd><div class="example">
<pre class="example">history [<var>n</var>]
history -c
history -d <var>offset</var>
<p>Options, if supplied, have the following meanings:
</p>
<dl compact="compact">
-<dt><code>-c</code></dt>
+<dt><span><code>-c</code></span></dt>
<dd><p>Clear the history list. This may be combined
with the other options to replace the history list completely.
</p>
</dd>
-<dt><code>-d <var>offset</var></code></dt>
+<dt><span><code>-d <var>offset</var></code></span></dt>
<dd><p>Delete the history entry at position <var>offset</var>.
If <var>offset</var> is positive, it should be specified as it appears when
the history is displayed.
<code>history -d</code> command.
</p>
</dd>
-<dt><code>-d <var>start</var>-<var>end</var></code></dt>
-<dd><p>Delete the history entries between positions <var>start</var> and <var>end</var>,
-inclusive. Positive and negative values for <var>start</var> and <var>end</var>
+<dt><span><code>-d <var>start</var>-<var>end</var></code></span></dt>
+<dd><p>Delete the range of history entries between positions <var>start</var> and
+<var>end</var>, inclusive.
+Positive and negative values for <var>start</var> and <var>end</var>
are interpreted as described above.
</p>
</dd>
-<dt><code>-a</code></dt>
+<dt><span><code>-a</code></span></dt>
<dd><p>Append the new history lines to the history file.
These are history lines entered since the beginning of the current
Bash session, but not already appended to the history file.
</p>
</dd>
-<dt><code>-n</code></dt>
+<dt><span><code>-n</code></span></dt>
<dd><p>Append the history lines not already read from the history file
to the current history list. These are lines appended to the history
file since the beginning of the current Bash session.
</p>
</dd>
-<dt><code>-r</code></dt>
+<dt><span><code>-r</code></span></dt>
<dd><p>Read the history file and append its contents to
the history list.
</p>
</dd>
-<dt><code>-w</code></dt>
+<dt><span><code>-w</code></span></dt>
<dd><p>Write out the current history list to the history file.
</p>
</dd>
-<dt><code>-p</code></dt>
+<dt><span><code>-p</code></span></dt>
<dd><p>Perform history substitution on the <var>arg</var>s and display the result
on the standard output, without storing the results in the history list.
</p>
</dd>
-<dt><code>-s</code></dt>
+<dt><span><code>-s</code></span></dt>
<dd><p>The <var>arg</var>s are added to the end of
the history list as a single entry.
</p>
</dd>
</dl>
-<p>When any of the <samp>-w</samp>, <samp>-r</samp>, <samp>-a</samp>, or <samp>-n</samp> options is
-used, if <var>filename</var>
-is given, then it is used as the history file. If not, then
-the value of the <code>HISTFILE</code> variable is used.
+<p>If a <var>filename</var> argument is supplied
+when any of the <samp>-w</samp>, <samp>-r</samp>, <samp>-a</samp>, or <samp>-n</samp> options
+is used, Bash uses <var>filename</var> as the history file.
+If not, then the value of the <code>HISTFILE</code> variable is used.
+</p>
+<p>The return value is 0 unless an invalid option is encountered, an
+error occurs while reading or writing the history file, an invalid
+<var>offset</var> or range is supplied as an argument to <samp>-d</samp>, or the
+history expansion supplied as an argument to <samp>-p</samp> fails.
</p>
</dd>
</dl>
<hr>
-<span id="History-Interaction"></span><div class="header">
+</div>
+<div class="section" id="History-Interaction">
+<div class="header">
<p>
Previous: <a href="#Bash-History-Builtins" accesskey="p" rel="prev">Bash History Builtins</a>, Up: <a href="#Using-History-Interactively" accesskey="u" rel="up">Using History Interactively</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
the history comment character to mark history timestamps when
writing the history file.
</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Event-Designators" accesskey="1">Event Designators</a></td><td> </td><td align="left" valign="top">How to specify which history line to use.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Word-Designators" accesskey="2">Word Designators</a></td><td> </td><td align="left" valign="top">Specifying which words are of interest.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Modifiers" accesskey="3">Modifiers</a></td><td> </td><td align="left" valign="top">Modifying the results of substitution.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Event-Designators" accesskey="1">Event Designators</a></li>
+<li><a href="#Word-Designators" accesskey="2">Word Designators</a></li>
+<li><a href="#Modifiers" accesskey="3">Modifiers</a></li>
+</ul>
<hr>
-<span id="Event-Designators"></span><div class="header">
+<div class="subsection" id="Event-Designators">
+<div class="header">
<p>
-Next: <a href="#Word-Designators" accesskey="n" rel="next">Word Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Interaction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Word-Designators" accesskey="n" rel="next">Word Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Expansion</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Event-Designators-1"></span><h4 class="subsection">9.3.1 Event Designators</h4>
<span id="index-event-designators"></span>
<span id="index-history-events"></span>
</p>
<dl compact="compact">
-<dt><code>!</code></dt>
+<dt><span><code>!</code></span></dt>
<dd><p>Start a history substitution, except when followed by a space, tab,
the end of the line, ‘<samp>=</samp>’ or ‘<samp>(</samp>’ (when the
<code>extglob</code> shell option is enabled using the <code>shopt</code> builtin).
</p>
</dd>
-<dt><code>!<var>n</var></code></dt>
+<dt><span><code>!<var>n</var></code></span></dt>
<dd><p>Refer to command line <var>n</var>.
</p>
</dd>
-<dt><code>!-<var>n</var></code></dt>
+<dt><span><code>!-<var>n</var></code></span></dt>
<dd><p>Refer to the command <var>n</var> lines back.
</p>
</dd>
-<dt><code>!!</code></dt>
+<dt><span><code>!!</code></span></dt>
<dd><p>Refer to the previous command. This is a synonym for ‘<samp>!-1</samp>’.
</p>
</dd>
-<dt><code>!<var>string</var></code></dt>
+<dt><span><code>!<var>string</var></code></span></dt>
<dd><p>Refer to the most recent command
preceding the current position in the history list
starting with <var>string</var>.
</p>
</dd>
-<dt><code>!?<var>string</var>[?]</code></dt>
+<dt><span><code>!?<var>string</var>[?]</code></span></dt>
<dd><p>Refer to the most recent command
preceding the current position in the history list
containing <var>string</var>.
it is an error if there is no previous search string.
</p>
</dd>
-<dt><code>^<var>string1</var>^<var>string2</var>^</code></dt>
+<dt><span><code>^<var>string1</var>^<var>string2</var>^</code></span></dt>
<dd><p>Quick Substitution. Repeat the last command, replacing <var>string1</var>
with <var>string2</var>. Equivalent to
<code>!!:s^<var>string1</var>^<var>string2</var>^</code>.
</p>
</dd>
-<dt><code>!#</code></dt>
+<dt><span><code>!#</code></span></dt>
<dd><p>The entire command line typed so far.
</p>
</dd>
</dl>
<hr>
-<span id="Word-Designators"></span><div class="header">
+</div>
+<div class="subsection" id="Word-Designators">
+<div class="header">
<p>
-Next: <a href="#Modifiers" accesskey="n" rel="next">Modifiers</a>, Previous: <a href="#Event-Designators" accesskey="p" rel="prev">Event Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Interaction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Modifiers" accesskey="n" rel="next">Modifiers</a>, Previous: <a href="#Event-Designators" accesskey="p" rel="prev">Event Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Expansion</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Word-Designators-1"></span><h4 class="subsection">9.3.2 Word Designators</h4>
<p>For example,
</p>
<dl compact="compact">
-<dt><code>!!</code></dt>
+<dt><span><code>!!</code></span></dt>
<dd><p>designates the preceding command. When you type this, the preceding
command is repeated in toto.
</p>
</dd>
-<dt><code>!!:$</code></dt>
+<dt><span><code>!!:$</code></span></dt>
<dd><p>designates the last argument of the preceding command. This may be
shortened to <code>!$</code>.
</p>
</dd>
-<dt><code>!fi:2</code></dt>
+<dt><span><code>!fi:2</code></span></dt>
<dd><p>designates the second argument of the most recent command starting with
the letters <code>fi</code>.
</p></dd>
<p>Here are the word designators:
</p>
<dl compact="compact">
-<dt><code>0 (zero)</code></dt>
+<dt><span><code>0 (zero)</code></span></dt>
<dd><p>The <code>0</code>th word. For many applications, this is the command word.
</p>
</dd>
-<dt><code><var>n</var></code></dt>
+<dt><span><code><var>n</var></code></span></dt>
<dd><p>The <var>n</var>th word.
</p>
</dd>
-<dt><code>^</code></dt>
+<dt><span><code>^</code></span></dt>
<dd><p>The first argument; that is, word 1.
</p>
</dd>
-<dt><code>$</code></dt>
+<dt><span><code>$</code></span></dt>
<dd><p>The last argument.
</p>
</dd>
-<dt><code>%</code></dt>
+<dt><span><code>%</code></span></dt>
<dd><p>The first word matched by the most recent ‘<samp>?<var>string</var>?</samp>’ search,
if the search string begins with a character that is part of a word.
</p>
</dd>
-<dt><code><var>x</var>-<var>y</var></code></dt>
+<dt><span><code><var>x</var>-<var>y</var></code></span></dt>
<dd><p>A range of words; ‘<samp>-<var>y</var></samp>’ abbreviates ‘<samp>0-<var>y</var></samp>’.
</p>
</dd>
-<dt><code>*</code></dt>
+<dt><span><code>*</code></span></dt>
<dd><p>All of the words, except the <code>0</code>th. This is a synonym for ‘<samp>1-$</samp>’.
It is not an error to use ‘<samp>*</samp>’ if there is just one word in the event;
the empty string is returned in that case.
</p>
</dd>
-<dt><code><var>x</var>*</code></dt>
+<dt><span><code><var>x</var>*</code></span></dt>
<dd><p>Abbreviates ‘<samp><var>x</var>-$</samp>’
</p>
</dd>
-<dt><code><var>x</var>-</code></dt>
+<dt><span><code><var>x</var>-</code></span></dt>
<dd><p>Abbreviates ‘<samp><var>x</var>-$</samp>’ like ‘<samp><var>x</var>*</samp>’, but omits the last word.
If ‘<samp>x</samp>’ is missing, it defaults to 0.
</p>
previous command is used as the event.
</p>
<hr>
-<span id="Modifiers"></span><div class="header">
+</div>
+<div class="subsection" id="Modifiers">
+<div class="header">
<p>
-Previous: <a href="#Word-Designators" accesskey="p" rel="prev">Word Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Interaction</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Previous: <a href="#Word-Designators" accesskey="p" rel="prev">Word Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Expansion</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Modifiers-1"></span><h4 class="subsection">9.3.3 Modifiers</h4>
These modify, or edit, the word or words selected from the history event.
</p>
<dl compact="compact">
-<dt><code>h</code></dt>
+<dt><span><code>h</code></span></dt>
<dd><p>Remove a trailing pathname component, leaving only the head.
</p>
</dd>
-<dt><code>t</code></dt>
+<dt><span><code>t</code></span></dt>
<dd><p>Remove all leading pathname components, leaving the tail.
</p>
</dd>
-<dt><code>r</code></dt>
+<dt><span><code>r</code></span></dt>
<dd><p>Remove a trailing suffix of the form ‘<samp>.<var>suffix</var></samp>’, leaving
the basename.
</p>
</dd>
-<dt><code>e</code></dt>
+<dt><span><code>e</code></span></dt>
<dd><p>Remove all but the trailing suffix.
</p>
</dd>
-<dt><code>p</code></dt>
+<dt><span><code>p</code></span></dt>
<dd><p>Print the new command but do not execute it.
</p>
</dd>
-<dt><code>q</code></dt>
+<dt><span><code>q</code></span></dt>
<dd><p>Quote the substituted words, escaping further substitutions.
</p>
</dd>
-<dt><code>x</code></dt>
+<dt><span><code>x</code></span></dt>
<dd><p>Quote the substituted words as with ‘<samp>q</samp>’,
but break into words at spaces, tabs, and newlines.
The ‘<samp>q</samp>’ and ‘<samp>x</samp>’ modifiers are mutually exclusive; the last one
supplied is used.
</p>
</dd>
-<dt><code>s/<var>old</var>/<var>new</var>/</code></dt>
+<dt><span><code>s/<var>old</var>/<var>new</var>/</code></span></dt>
<dd><p>Substitute <var>new</var> for the first occurrence of <var>old</var> in the
event line.
Any character may be used as the delimiter in place of ‘<samp>/</samp>’.
the last <var>string</var>
in a !?<var>string</var><code>[?]</code>
search.
-If <var>new</var> is is null, each matching <var>old</var> is deleted.
+If <var>new</var> is null, each matching <var>old</var> is deleted.
The final delimiter is optional if it is the last
character on the input line.
</p>
</dd>
-<dt><code>&</code></dt>
+<dt><span><code>&</code></span></dt>
<dd><p>Repeat the previous substitution.
</p>
</dd>
-<dt><code>g</code></dt>
-<dt><code>a</code></dt>
+<dt><span><code>g</code></span></dt>
+<dt><span><code>a</code></span></dt>
<dd><p>Cause changes to be applied over the entire event line. Used in
conjunction with ‘<samp>s</samp>’, as in <code>gs/<var>old</var>/<var>new</var>/</code>,
or with ‘<samp>&</samp>’.
</p>
</dd>
-<dt><code>G</code></dt>
+<dt><span><code>G</code></span></dt>
<dd><p>Apply the following ‘<samp>s</samp>’ or ‘<samp>&</samp>’ modifier once to each word
in the event.
</p>
</dl>
<hr>
-<span id="Installing-Bash"></span><div class="header">
+</div>
+</div>
+</div>
+<div class="chapter" id="Installing-Bash">
+<div class="header">
<p>
-Next: <a href="#Reporting-Bugs" accesskey="n" rel="next">Reporting Bugs</a>, Previous: <a href="#Using-History-Interactively" accesskey="p" rel="prev">Using History Interactively</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Reporting-Bugs" accesskey="n" rel="next">Reporting Bugs</a>, Previous: <a href="#Using-History-Interactively" accesskey="p" rel="prev">Using History Interactively</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Installing-Bash-1"></span><h2 class="chapter">10 Installing Bash</h2>
Other independent ports exist for
<small>MS-DOS</small>, <small>OS/2</small>, and Windows platforms.
</p>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Basic-Installation" accesskey="1">Basic Installation</a></td><td> </td><td align="left" valign="top">Installation instructions.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Compilers-and-Options" accesskey="2">Compilers and Options</a></td><td> </td><td align="left" valign="top">How to set special options for various
- systems.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Compiling-For-Multiple-Architectures" accesskey="3">Compiling For Multiple Architectures</a></td><td> </td><td align="left" valign="top">How to compile Bash for more
- than one kind of system from
- the same source tree.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Installation-Names" accesskey="4">Installation Names</a></td><td> </td><td align="left" valign="top">How to set the various paths used by the installation.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Specifying-the-System-Type" accesskey="5">Specifying the System Type</a></td><td> </td><td align="left" valign="top">How to configure Bash for a particular system.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Sharing-Defaults" accesskey="6">Sharing Defaults</a></td><td> </td><td align="left" valign="top">How to share default configuration values among GNU
- programs.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Operation-Controls" accesskey="7">Operation Controls</a></td><td> </td><td align="left" valign="top">Options recognized by the configuration program.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Optional-Features" accesskey="8">Optional Features</a></td><td> </td><td align="left" valign="top">How to enable and disable optional features when
- building Bash.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Basic-Installation" accesskey="1">Basic Installation</a></li>
+<li><a href="#Compilers-and-Options" accesskey="2">Compilers and Options</a></li>
+<li><a href="#Compiling-For-Multiple-Architectures" accesskey="3">Compiling For Multiple Architectures</a></li>
+<li><a href="#Installation-Names" accesskey="4">Installation Names</a></li>
+<li><a href="#Specifying-the-System-Type" accesskey="5">Specifying the System Type</a></li>
+<li><a href="#Sharing-Defaults" accesskey="6">Sharing Defaults</a></li>
+<li><a href="#Operation-Controls" accesskey="7">Operation Controls</a></li>
+<li><a href="#Optional-Features" accesskey="8">Optional Features</a></li>
+</ul>
<hr>
-<span id="Basic-Installation"></span><div class="header">
+<div class="section" id="Basic-Installation">
+<div class="header">
<p>
Next: <a href="#Compilers-and-Options" accesskey="n" rel="next">Compilers and Options</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
</li><li> Optionally, type ‘<samp>make tests</samp>’ to run the Bash test suite.
</li><li> Type ‘<samp>make install</samp>’ to install <code>bash</code> and <code>bashbug</code>.
-This will also install the manual pages and Info file.
+This will also install the manual pages and Info file, message translation
+files, some supplemental documentation, a number of example loadable
+builtin commands, and a set of header files for developing loadable
+builtins.
+You may need additional privileges to install <code>bash</code> to your
+desired destination, so ‘<samp>sudo make install</samp>’ might be required.
+More information about controlling the locations where <code>bash</code> and
+other files are installed is below (see <a href="#Installation-Names">Installation Names</a>).
</li></ol>
values for various system-dependent variables used during
compilation. It uses those values to create a <samp>Makefile</samp> in
each directory of the package (the top directory, the
-<samp>builtins</samp>, <samp>doc</samp>, and <samp>support</samp> directories,
+<samp>builtins</samp>, <samp>doc</samp>, <samp>po</samp>, and <samp>support</samp> directories,
each directory under <samp>lib</samp>, and several others). It also creates a
<samp>config.h</samp> file containing system-dependent definitions.
Finally, it creates a shell script named <code>config.status</code> that you
considered for the next release.
</p>
<p>The file <samp>configure.ac</samp> is used to create <code>configure</code>
-by a program called Autoconf. You only need
-<samp>configure.ac</samp> if you want to change it or regenerate
-<code>configure</code> using a newer version of Autoconf. If
-you do this, make sure you are using Autoconf version 2.50 or
+by a program called Autoconf.
+You only need <samp>configure.ac</samp> if you want to change it or regenerate
+<code>configure</code> using a newer version of Autoconf.
+If you do this, make sure you are using Autoconf version 2.69 or
newer.
</p>
<p>You can remove the program binaries and object files from the
a different kind of computer), type ‘<samp>make distclean</samp>’.
</p>
<hr>
-<span id="Compilers-and-Options"></span><div class="header">
+</div>
+<div class="section" id="Compilers-and-Options">
+<div class="header">
<p>
Next: <a href="#Compiling-For-Multiple-Architectures" accesskey="n" rel="next">Compiling For Multiple Architectures</a>, Previous: <a href="#Basic-Installation" accesskey="p" rel="prev">Basic Installation</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
is available.
</p>
<hr>
-<span id="Compiling-For-Multiple-Architectures"></span><div class="header">
+</div>
+<div class="section" id="Compiling-For-Multiple-Architectures">
+<div class="header">
<p>
Next: <a href="#Installation-Names" accesskey="n" rel="next">Installation Names</a>, Previous: <a href="#Compilers-and-Options" accesskey="p" rel="prev">Compilers and Options</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
source files are. <code>configure</code> automatically checks for the
source code in the directory that <code>configure</code> is in and in ‘..’.
</p>
-<p>If you have to use a <code>make</code> that does not supports the <code>VPATH</code>
+<p>If you have to use a <code>make</code> that does not support the <code>VPATH</code>
variable, you can compile Bash for one architecture at a
time in the source code directory. After you have installed
Bash for one architecture, use ‘<samp>make distclean</samp>’ before
directories for other architectures.
</p>
<hr>
-<span id="Installation-Names"></span><div class="header">
+</div>
+<div class="section" id="Installation-Names">
+<div class="header">
<p>
Next: <a href="#Specifying-the-System-Type" accesskey="n" rel="next">Specifying the System Type</a>, Previous: <a href="#Compiling-For-Multiple-Architectures" accesskey="p" rel="prev">Compiling For Multiple Architectures</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Installation-Names-1"></span><h3 class="section">10.4 Installation Names</h3>
<p>By default, ‘<samp>make install</samp>’ will install into
-<samp>/usr/local/bin</samp>, <samp>/usr/local/man</samp>, etc. You can
-specify an installation prefix other than <samp>/usr/local</samp> by
+<samp>/usr/local/bin</samp>, <samp>/usr/local/man</samp>, etc.;
+that is, the <em>installation prefix</em> defaults to <samp>/usr/local</samp>.
+You can specify an installation prefix other than <samp>/usr/local</samp> by
giving <code>configure</code> the option <samp>--prefix=<var>PATH</var></samp>,
-or by specifying a value for the <code>DESTDIR</code> ‘<samp>make</samp>’
-variable when running ‘<samp>make install</samp>’.
+or by specifying a value for the <code>prefix</code> ‘<samp>make</samp>’
+variable when running ‘<samp>make install</samp>’
+(e.g., ‘<samp>make install prefix=<var>PATH</var></samp>’).
+The <code>prefix</code> variable provides a default for <code>exec_prefix</code> and
+other variables used when installing bash.
</p>
<p>You can specify separate installation prefixes for
architecture-specific files and architecture-independent files.
If you give <code>configure</code> the option
<samp>--exec-prefix=<var>PATH</var></samp>, ‘<samp>make install</samp>’ will use
<var>PATH</var> as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
+Documentation and other data files will still use the regular prefix.
+</p>
+<p>If you would like to change the installation locations for a single run,
+you can specify these variables as arguments to <code>make</code>:
+‘<samp>make install exec_prefix=/</samp>’ will install <code>bash</code> and
+<code>bashbug</code> into <samp>/bin</samp> instead of the default <samp>/usr/local/bin</samp>.
+</p>
+<p>If you want to see the files bash will install and where it will install
+them without changing anything on your system, specify the variable
+<code>DESTDIR</code> as an argument to <code>make</code>. Its value should be the
+absolute directory path you’d like to use as the root of your sample
+installation tree. For example,
+</p>
+<div class="example">
+<pre class="example">mkdir /fs1/bash-install
+make install DESTDIR=/fs1/bash-install
+</pre></div>
+
+<p>will install <code>bash</code> into <samp>/fs1/bash-install/usr/local/bin/bash</samp>,
+the documentation into directories within
+<samp>/fs1/bash-install/usr/local/share</samp>, the example loadable builtins into
+<samp>/fs1/bash-install/usr/local/lib/bash</samp>, and so on.
+You can use the usual <code>exec_prefix</code> and <code>prefix</code> variables to alter
+the directory paths beneath the value of <code>DESTDIR</code>.
+</p>
+<p>The GNU Makefile standards provide a more complete description of these
+variables and their effects.
</p>
<hr>
-<span id="Specifying-the-System-Type"></span><div class="header">
+</div>
+<div class="section" id="Specifying-the-System-Type">
+<div class="header">
<p>
Next: <a href="#Sharing-Defaults" accesskey="n" rel="next">Sharing Defaults</a>, Previous: <a href="#Installation-Names" accesskey="p" rel="prev">Installation Names</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Specifying-the-System-Type-1"></span><h3 class="section">10.5 Specifying the System Type</h3>
<p>There may be some features <code>configure</code> can not figure out
-automatically, but need to determine by the type of host Bash
+automatically, but needs to determine by the type of host Bash
will run on. Usually <code>configure</code> can figure that
out, but if it prints a message saying it can not guess the host
type, give it the <samp>--host=TYPE</samp> option. ‘<samp>TYPE</samp>’ can
values of each field.
</p>
<hr>
-<span id="Sharing-Defaults"></span><div class="header">
+</div>
+<div class="section" id="Sharing-Defaults">
+<div class="header">
<p>
Next: <a href="#Operation-Controls" accesskey="n" rel="next">Operation Controls</a>, Previous: <a href="#Specifying-the-System-Type" accesskey="p" rel="prev">Specifying the System Type</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
but not all <code>configure</code> scripts do.
</p>
<hr>
-<span id="Operation-Controls"></span><div class="header">
+</div>
+<div class="section" id="Operation-Controls">
+<div class="header">
<p>
Next: <a href="#Optional-Features" accesskey="n" rel="next">Optional Features</a>, Previous: <a href="#Sharing-Defaults" accesskey="p" rel="prev">Sharing Defaults</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
operates.
</p>
<dl compact="compact">
-<dt><code>--cache-file=<var>file</var></code></dt>
+<dt><span><code>--cache-file=<var>file</var></code></span></dt>
<dd><p>Use and save the results of the tests in
<var>file</var> instead of <samp>./config.cache</samp>. Set <var>file</var> to
<samp>/dev/null</samp> to disable caching, for debugging
<code>configure</code>.
</p>
</dd>
-<dt><code>--help</code></dt>
+<dt><span><code>--help</code></span></dt>
<dd><p>Print a summary of the options to <code>configure</code>, and exit.
</p>
</dd>
-<dt><code>--quiet</code></dt>
-<dt><code>--silent</code></dt>
-<dt><code>-q</code></dt>
+<dt><span><code>--quiet</code></span></dt>
+<dt><span><code>--silent</code></span></dt>
+<dt><span><code>-q</code></span></dt>
<dd><p>Do not print messages saying which checks are being made.
</p>
</dd>
-<dt><code>--srcdir=<var>dir</var></code></dt>
+<dt><span><code>--srcdir=<var>dir</var></code></span></dt>
<dd><p>Look for the Bash source code in directory <var>dir</var>. Usually
<code>configure</code> can determine that directory automatically.
</p>
</dd>
-<dt><code>--version</code></dt>
+<dt><span><code>--version</code></span></dt>
<dd><p>Print the version of Autoconf used to generate the <code>configure</code>
script, and exit.
</p></dd>
options. ‘<samp>configure --help</samp>’ prints the complete list.
</p>
<hr>
-<span id="Optional-Features"></span><div class="header">
+</div>
+<div class="section" id="Optional-Features">
+<div class="header">
<p>
Previous: <a href="#Operation-Controls" accesskey="p" rel="prev">Operation Controls</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<samp>--with-</samp> options that the Bash <code>configure</code> recognizes.
</p>
<dl compact="compact">
-<dt><code>--with-afs</code></dt>
+<dt><span><code>--with-afs</code></span></dt>
<dd><p>Define if you are using the Andrew File System from Transarc.
</p>
</dd>
-<dt><code>--with-bash-malloc</code></dt>
+<dt><span><code>--with-bash-malloc</code></span></dt>
<dd><p>Use the Bash version of
<code>malloc</code> in the directory <samp>lib/malloc</samp>. This is not the same
<code>malloc</code> that appears in <small>GNU</small> libc, but an older version
option automatically for a number of systems.
</p>
</dd>
-<dt><code>--with-curses</code></dt>
+<dt><span><code>--with-curses</code></span></dt>
<dd><p>Use the curses library instead of the termcap library. This should
be supplied if your system has an inadequate or incomplete termcap
database.
</p>
</dd>
-<dt><code>--with-gnu-malloc</code></dt>
+<dt><span><code>--with-gnu-malloc</code></span></dt>
<dd><p>A synonym for <code>--with-bash-malloc</code>.
</p>
</dd>
-<dt><code>--with-installed-readline[=<var>PREFIX</var>]</code></dt>
+<dt><span><code>--with-installed-readline[=<var>PREFIX</var>]</code></span></dt>
<dd><p>Define this to make Bash link with a locally-installed version of Readline
rather than the version in <samp>lib/readline</samp>. This works only with
Readline 5.0 and later versions. If <var>PREFIX</var> is <code>yes</code> or not
<var>PREFIX</var>/<code>lib</code>).
</p>
</dd>
-<dt><code>--with-purify</code></dt>
-<dd><p>Define this to use the Purify memory allocation checker from Rational
-Software.
+<dt><span><code>--with-libintl-prefix[=<var>PREFIX</var>]</code></span></dt>
+<dd><p>Define this to make Bash link with a locally-installed version of the
+libintl library instead of the version in <samp>lib/intl</samp>.
+</p>
+</dd>
+<dt><span><code>--with-libiconv-prefix[=<var>PREFIX</var>]</code></span></dt>
+<dd><p>Define this to make Bash look for libiconv in <var>PREFIX</var> instead of the
+standard system locations. There is no version included with Bash.
</p>
</dd>
-<dt><code>--enable-minimal-config</code></dt>
+<dt><span><code>--enable-minimal-config</code></span></dt>
<dd><p>This produces a shell with minimal features, close to the historical
Bourne shell.
</p></dd>
</dl>
<p>There are several <samp>--enable-</samp> options that alter how Bash is
-compiled and linked, rather than changing run-time features.
+compiled, linked, and installed, rather than changing run-time features.
</p>
<dl compact="compact">
-<dt><code>--enable-largefile</code></dt>
+<dt><span><code>--enable-largefile</code></span></dt>
<dd><p>Enable support for <a href="http://www.unix.org/version2/whatsnew/lfs20mar.html">large files</a> if the operating system requires special compiler options
to build programs which can access large files. This is enabled by
default, if the operating system provides large file support.
</p>
</dd>
-<dt><code>--enable-profiling</code></dt>
+<dt><span><code>--enable-profiling</code></span></dt>
<dd><p>This builds a Bash binary that produces profiling information to be
processed by <code>gprof</code> each time it is executed.
</p>
</dd>
-<dt><code>--enable-static-link</code></dt>
+<dt><span><code>--enable-separate-helpfiles</code></span></dt>
+<dd><p>Use external files for the documentation displayed by the <code>help</code> builtin
+instead of storing the text internally.
+</p>
+</dd>
+<dt><span><code>--enable-static-link</code></span></dt>
<dd><p>This causes Bash to be linked statically, if <code>gcc</code> is being used.
This could be used to build a version to use as root’s shell.
-</p></dd>
+</p>
+</dd>
</dl>
<p>The ‘<samp>minimal-config</samp>’ option can be used to disable all of
the following options, but it is processed first, so individual
options may be enabled using ‘<samp>enable-<var>feature</var></samp>’.
</p>
-<p>All of the following options except for ‘<samp>disabled-builtins</samp>’,
-‘<samp>direxpand-default</samp>’, and
+<p>All of the following options except for
+‘<samp>alt-array-implementation</samp>’,
+‘<samp>disabled-builtins</samp>’,
+‘<samp>direxpand-default</samp>’,
+‘<samp>strict-posix-default</samp>’,
+and
‘<samp>xpg-echo-default</samp>’ are
enabled by default, unless the operating system does not provide the
necessary support.
</p>
<dl compact="compact">
-<dt><code>--enable-alias</code></dt>
+<dt><span><code>--enable-alias</code></span></dt>
<dd><p>Allow alias expansion and include the <code>alias</code> and <code>unalias</code>
builtins (see <a href="#Aliases">Aliases</a>).
</p>
</dd>
-<dt><code>--enable-arith-for-command</code></dt>
+<dt><span><code>--enable-alt-array-implementation</code></span></dt>
+<dd><p>This builds bash using an alternate implementation of arrays
+(see <a href="#Arrays">Arrays</a>) that provides faster access at the expense of using
+more memory (sometimes many times more, depending on how sparse an array is).
+</p>
+</dd>
+<dt><span><code>--enable-arith-for-command</code></span></dt>
<dd><p>Include support for the alternate form of the <code>for</code> command
that behaves like the C language <code>for</code> statement
(see <a href="#Looping-Constructs">Looping Constructs</a>).
</p>
</dd>
-<dt><code>--enable-array-variables</code></dt>
+<dt><span><code>--enable-array-variables</code></span></dt>
<dd><p>Include support for one-dimensional array shell variables
(see <a href="#Arrays">Arrays</a>).
</p>
</dd>
-<dt><code>--enable-bang-history</code></dt>
+<dt><span><code>--enable-bang-history</code></span></dt>
<dd><p>Include support for <code>csh</code>-like history substitution
-(see <a href="#History-Interaction">History Interaction</a>).
+(see <a href="#History-Interaction">History Expansion</a>).
</p>
</dd>
-<dt><code>--enable-brace-expansion</code></dt>
+<dt><span><code>--enable-brace-expansion</code></span></dt>
<dd><p>Include <code>csh</code>-like brace expansion
( <code>b{a,b}c</code> → <code>bac bbc</code> ).
See <a href="#Brace-Expansion">Brace Expansion</a>, for a complete description.
</p>
</dd>
-<dt><code>--enable-casemod-attributes</code></dt>
+<dt><span><code>--enable-casemod-attributes</code></span></dt>
<dd><p>Include support for case-modifying attributes in the <code>declare</code> builtin
-and assignment statements. Variables with the <var>uppercase</var> attribute,
+and assignment statements. Variables with the <code>uppercase</code> attribute,
for example, will have their values converted to uppercase upon assignment.
</p>
</dd>
-<dt><code>--enable-casemod-expansion</code></dt>
+<dt><span><code>--enable-casemod-expansion</code></span></dt>
<dd><p>Include support for case-modifying word expansions.
</p>
</dd>
-<dt><code>--enable-command-timing</code></dt>
+<dt><span><code>--enable-command-timing</code></span></dt>
<dd><p>Include support for recognizing <code>time</code> as a reserved word and for
displaying timing statistics for the pipeline following <code>time</code>
(see <a href="#Pipelines">Pipelines</a>).
This allows pipelines as well as shell builtins and functions to be timed.
</p>
</dd>
-<dt><code>--enable-cond-command</code></dt>
+<dt><span><code>--enable-cond-command</code></span></dt>
<dd><p>Include support for the <code>[[</code> conditional command.
(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
</p>
</dd>
-<dt><code>--enable-cond-regexp</code></dt>
+<dt><span><code>--enable-cond-regexp</code></span></dt>
<dd><p>Include support for matching <small>POSIX</small> regular expressions using the
‘<samp>=~</samp>’ binary operator in the <code>[[</code> conditional command.
(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
</p>
</dd>
-<dt><code>--enable-coprocesses</code></dt>
+<dt><span><code>--enable-coprocesses</code></span></dt>
<dd><p>Include support for coprocesses and the <code>coproc</code> reserved word
(see <a href="#Pipelines">Pipelines</a>).
</p>
</dd>
-<dt><code>--enable-debugger</code></dt>
+<dt><span><code>--enable-debugger</code></span></dt>
<dd><p>Include support for the bash debugger (distributed separately).
</p>
</dd>
-<dt><code>--enable-dev-fd-stat-broken</code></dt>
+<dt><span><code>--enable-dev-fd-stat-broken</code></span></dt>
<dd><p>If calling <code>stat</code> on /dev/fd/<var>N</var> returns different results than
calling <code>fstat</code> on file descriptor <var>N</var>, supply this option to
enable a workaround.
This has implications for conditional commands that test file attributes.
</p>
</dd>
-<dt><code>--enable-direxpand-default</code></dt>
+<dt><span><code>--enable-direxpand-default</code></span></dt>
<dd><p>Cause the <code>direxpand</code> shell option (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
to be enabled by default when the shell starts.
It is normally disabled by default.
</p>
</dd>
-<dt><code>--enable-directory-stack</code></dt>
+<dt><span><code>--enable-directory-stack</code></span></dt>
<dd><p>Include support for a <code>csh</code>-like directory stack and the
<code>pushd</code>, <code>popd</code>, and <code>dirs</code> builtins
(see <a href="#The-Directory-Stack">The Directory Stack</a>).
</p>
</dd>
-<dt><code>--enable-disabled-builtins</code></dt>
+<dt><span><code>--enable-disabled-builtins</code></span></dt>
<dd><p>Allow builtin commands to be invoked via ‘<samp>builtin xxx</samp>’
even after <code>xxx</code> has been disabled using ‘<samp>enable -n xxx</samp>’.
-See <a href="#Bash-Builtins">Bash Builtins</a>, for details of the <code>builtin</code> and
+See <a href="#Bash-Builtins">Bash Builtin Commands</a>, for details of the <code>builtin</code> and
<code>enable</code> builtin commands.
</p>
</dd>
-<dt><code>--enable-dparen-arithmetic</code></dt>
+<dt><span><code>--enable-dparen-arithmetic</code></span></dt>
<dd><p>Include support for the <code>((…))</code> command
(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
</p>
</dd>
-<dt><code>--enable-extended-glob</code></dt>
+<dt><span><code>--enable-extended-glob</code></span></dt>
<dd><p>Include support for the extended pattern matching features described
above under <a href="#Pattern-Matching">Pattern Matching</a>.
</p>
</dd>
-<dt><code>--enable-extended-glob-default</code></dt>
-<dd><p>Set the default value of the <var>extglob</var> shell option described
+<dt><span><code>--enable-extended-glob-default</code></span></dt>
+<dd><p>Set the default value of the <code>extglob</code> shell option described
above under <a href="#The-Shopt-Builtin">The Shopt Builtin</a> to be enabled.
</p>
</dd>
-<dt><code>--enable-function-import</code></dt>
+<dt><span><code>--enable-function-import</code></span></dt>
<dd><p>Include support for importing function definitions exported by another
instance of the shell from the environment. This option is enabled by
default.
</p>
</dd>
-<dt><code>--enable-glob-asciirange-default</code></dt>
-<dd><p>Set the default value of the <var>globasciiranges</var> shell option described
+<dt><span><code>--enable-glob-asciirange-default</code></span></dt>
+<dd><p>Set the default value of the <code>globasciiranges</code> shell option described
above under <a href="#The-Shopt-Builtin">The Shopt Builtin</a> to be enabled.
This controls the behavior of character ranges when used in pattern matching
bracket expressions.
</p>
</dd>
-<dt><code>--enable-help-builtin</code></dt>
+<dt><span><code>--enable-help-builtin</code></span></dt>
<dd><p>Include the <code>help</code> builtin, which displays help on shell builtins and
-variables (see <a href="#Bash-Builtins">Bash Builtins</a>).
+variables (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</p>
</dd>
-<dt><code>--enable-history</code></dt>
+<dt><span><code>--enable-history</code></span></dt>
<dd><p>Include command history and the <code>fc</code> and <code>history</code>
builtin commands (see <a href="#Bash-History-Facilities">Bash History Facilities</a>).
</p>
</dd>
-<dt><code>--enable-job-control</code></dt>
+<dt><span><code>--enable-job-control</code></span></dt>
<dd><p>This enables the job control features (see <a href="#Job-Control">Job Control</a>),
if the operating system supports them.
</p>
</dd>
-<dt><code>--enable-multibyte</code></dt>
+<dt><span><code>--enable-multibyte</code></span></dt>
<dd><p>This enables support for multibyte characters if the operating
system provides the necessary support.
</p>
</dd>
-<dt><code>--enable-net-redirections</code></dt>
+<dt><span><code>--enable-net-redirections</code></span></dt>
<dd><p>This enables the special handling of filenames of the form
<code>/dev/tcp/<var>host</var>/<var>port</var></code> and
<code>/dev/udp/<var>host</var>/<var>port</var></code>
when used in redirections (see <a href="#Redirections">Redirections</a>).
</p>
</dd>
-<dt><code>--enable-process-substitution</code></dt>
+<dt><span><code>--enable-process-substitution</code></span></dt>
<dd><p>This enables process substitution (see <a href="#Process-Substitution">Process Substitution</a>) if
the operating system provides the necessary support.
</p>
</dd>
-<dt><code>--enable-progcomp</code></dt>
+<dt><span><code>--enable-progcomp</code></span></dt>
<dd><p>Enable the programmable completion facilities
(see <a href="#Programmable-Completion">Programmable Completion</a>).
If Readline is not enabled, this option has no effect.
</p>
</dd>
-<dt><code>--enable-prompt-string-decoding</code></dt>
+<dt><span><code>--enable-prompt-string-decoding</code></span></dt>
<dd><p>Turn on the interpretation of a number of backslash-escaped characters
in the <code>$PS0</code>, <code>$PS1</code>, <code>$PS2</code>, and <code>$PS4</code> prompt
strings. See <a href="#Controlling-the-Prompt">Controlling the Prompt</a>, for a complete list of prompt
string escape sequences.
</p>
</dd>
-<dt><code>--enable-readline</code></dt>
+<dt><span><code>--enable-readline</code></span></dt>
<dd><p>Include support for command-line editing and history with the Bash
version of the Readline library (see <a href="#Command-Line-Editing">Command Line Editing</a>).
</p>
</dd>
-<dt><code>--enable-restricted</code></dt>
+<dt><span><code>--enable-restricted</code></span></dt>
<dd><p>Include support for a <em>restricted shell</em>. If this is enabled, Bash,
when called as <code>rbash</code>, enters a restricted mode. See
<a href="#The-Restricted-Shell">The Restricted Shell</a>, for a description of restricted mode.
</p>
</dd>
-<dt><code>--enable-select</code></dt>
+<dt><span><code>--enable-select</code></span></dt>
<dd><p>Include the <code>select</code> compound command, which allows the generation of
simple menus (see <a href="#Conditional-Constructs">Conditional Constructs</a>).
</p>
</dd>
-<dt><code>--enable-separate-helpfiles</code></dt>
-<dd><p>Use external files for the documentation displayed by the <code>help</code> builtin
-instead of storing the text internally.
-</p>
-</dd>
-<dt><code>--enable-single-help-strings</code></dt>
+<dt><span><code>--enable-single-help-strings</code></span></dt>
<dd><p>Store the text displayed by the <code>help</code> builtin as a single string for
each help topic. This aids in translating the text to different languages.
You may need to disable this if your compiler cannot handle very long string
literals.
</p>
</dd>
-<dt><code>--enable-strict-posix-default</code></dt>
+<dt><span><code>--enable-strict-posix-default</code></span></dt>
<dd><p>Make Bash <small>POSIX</small>-conformant by default (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
</p>
</dd>
-<dt><code>--enable-usg-echo-default</code></dt>
+<dt><span><code>--enable-translatable-strings</code></span></dt>
+<dd><p>Enable support for <code>$"<var>string</var>"</code> translatable strings
+(see <a href="#Locale-Translation">Locale-Specific Translation</a>).
+</p>
+</dd>
+<dt><span><code>--enable-usg-echo-default</code></span></dt>
<dd><p>A synonym for <code>--enable-xpg-echo-default</code>.
</p>
</dd>
-<dt><code>--enable-xpg-echo-default</code></dt>
+<dt><span><code>--enable-xpg-echo-default</code></span></dt>
<dd><p>Make the <code>echo</code> builtin expand backslash-escaped characters by default,
without requiring the <samp>-e</samp> option.
This sets the default value of the <code>xpg_echo</code> shell option to <code>on</code>,
which makes the Bash <code>echo</code> behave more like the version specified in
the Single Unix Specification, version 3.
-See <a href="#Bash-Builtins">Bash Builtins</a>, for a description of the escape sequences that
+See <a href="#Bash-Builtins">Bash Builtin Commands</a>, for a description of the escape sequences that
<code>echo</code> recognizes.
</p></dd>
</dl>
information about its effect.
</p>
<hr>
-<span id="Reporting-Bugs"></span><div class="header">
+</div>
+</div>
+<div class="appendix" id="Reporting-Bugs">
+<div class="header">
<p>
-Next: <a href="#Major-Differences-From-The-Bourne-Shell" accesskey="n" rel="next">Major Differences From The Bourne Shell</a>, Previous: <a href="#Installing-Bash" accesskey="p" rel="prev">Installing Bash</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Major-Differences-From-The-Bourne-Shell" accesskey="n" rel="next">Major Differences From The Bourne Shell</a>, Previous: <a href="#Installing-Bash" accesskey="p" rel="prev">Installing Bash</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Reporting-Bugs-1"></span><h2 class="appendix">Appendix A Reporting Bugs</h2>
make sure that it really is a bug, and that it appears in the latest
version of Bash.
The latest version of Bash is always available for FTP from
-<a href="ftp://ftp.gnu.org/pub/gnu/bash/">ftp://ftp.gnu.org/pub/gnu/bash/</a>.
+<a href="ftp://ftp.gnu.org/pub/gnu/bash/">ftp://ftp.gnu.org/pub/gnu/bash/</a> and from
+<a href="http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz">http://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-master.tar.gz</a>.
</p>
<p>Once you have determined that a bug actually exists, use the
<code>bashbug</code> command to submit a bug report.
<a href="mailto:bug-bash@gnu.org">bug-bash@gnu.org</a>.
</p>
<hr>
-<span id="Major-Differences-From-The-Bourne-Shell"></span><div class="header">
+</div>
+<div class="appendix" id="Major-Differences-From-The-Bourne-Shell">
+<div class="header">
<p>
-Next: <a href="#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="#Reporting-Bugs" accesskey="p" rel="prev">Reporting Bugs</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="#Reporting-Bugs" accesskey="p" rel="prev">Reporting Bugs</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Major-Differences-From-The-Bourne-Shell-1"></span><h2 class="appendix">Appendix B Major Differences From The Bourne Shell</h2>
value of the <code>HISTTIMEFORMAT</code> variable to display it.
</li><li> Bash implements <code>csh</code>-like history expansion
-(see <a href="#History-Interaction">History Interaction</a>).
+(see <a href="#History-Interaction">History Expansion</a>).
</li><li> Bash has one-dimensional array variables (see <a href="#Arrays">Arrays</a>), and the
appropriate variable expansions and assignment syntax to use them.
locale-specific translation of the characters between the double
quotes. The <samp>-D</samp>, <samp>--dump-strings</samp>, and <samp>--dump-po-strings</samp>
invocation options list the translatable strings found in a script
-(see <a href="#Locale-Translation">Locale Translation</a>).
+(see <a href="#Locale-Translation">Locale-Specific Translation</a>).
</li><li> Bash implements the <code>!</code> keyword to negate the return value of
a pipeline (see <a href="#Pipelines">Pipelines</a>).
(see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
</li><li> The expansion
-<code>${var/[/]</code><var>pattern</var><code>[/</code><var>replacement</var><code>]}</code>,
+<code>${<var>var</var>/[/]</code><var>pattern</var><code>[/</code><var>replacement</var><code>]}</code>,
which matches <var>pattern</var> and replaces it with <var>replacement</var> in
-the value of <code>var</code>, is available (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
+the value of <var>var</var>, is available (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
</li><li> The expansion <code>${!<var>prefix</var>*}</code> expansion, which expands to
the names of all shell variables whose names begin with <var>prefix</var>,
is available (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
-</li><li> Bash has <var>indirect</var> variable expansion using <code>${!word}</code>
+</li><li> Bash has indirect variable expansion using <code>${!word}</code>
(see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
</li><li> Bash can expand positional parameters beyond <code>$9</code> using
The Bourne shell uses only ‘<samp>!</samp>’.
</li><li> Bash implements the full set of <small>POSIX</small> filename expansion operators,
-including <var>character classes</var>, <var>equivalence classes</var>, and
-<var>collating symbols</var> (see <a href="#Filename-Expansion">Filename Expansion</a>).
+including character classes, equivalence classes, and
+collating symbols (see <a href="#Filename-Expansion">Filename Expansion</a>).
</li><li> Bash implements extended pattern matching features when the <code>extglob</code>
shell option is enabled (see <a href="#Pattern-Matching">Pattern Matching</a>).
</li><li> Bash functions are permitted to have local variables using the
<code>local</code> builtin, and thus useful recursive functions may be written
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
+(see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> Variable assignments preceding commands affect only that command, even
builtins and functions (see <a href="#Environment">Environment</a>).
</li><li> Bash allows a function to override a builtin with the same name, and provides
access to that builtin’s functionality within the function via the
-<code>builtin</code> and <code>command</code> builtins (see <a href="#Bash-Builtins">Bash Builtins</a>).
+<code>builtin</code> and <code>command</code> builtins (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> The <code>command</code> builtin allows selective disabling of functions
-when command lookup is performed (see <a href="#Bash-Builtins">Bash Builtins</a>).
+when command lookup is performed (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> Individual builtins may be enabled or disabled using the <code>enable</code>
-builtin (see <a href="#Bash-Builtins">Bash Builtins</a>).
+builtin (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> The Bash <code>exec</code> builtin takes additional options that allow users
to control the contents of the environment passed to the executed
(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
</li><li> Bash includes a <code>help</code> builtin for quick reference to shell
-facilities (see <a href="#Bash-Builtins">Bash Builtins</a>).
+facilities (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> The <code>printf</code> builtin is available to display formatted output
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
+(see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
-</li><li> The Bash <code>read</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>)
+</li><li> The Bash <code>read</code> builtin (see <a href="#Bash-Builtins">Bash Builtin Commands</a>)
will read a line ending in ‘<samp>\</samp>’ with
the <samp>-r</samp> option, and will use the <code>REPLY</code> variable as a
default if no non-option arguments are supplied.
</li><li> Bash includes the <code>caller</code> builtin, which displays the context of
any active subroutine call (a shell function or a script executed with
-the <code>.</code> or <code>source</code> builtins). This supports the bash
+the <code>.</code> or <code>source</code> builtins). This supports the Bash
debugger.
</li><li> The <code>trap</code> builtin (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>) allows a
<p>The <code>trap</code> builtin (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>) allows a
<code>RETURN</code> pseudo-signal specification, similar to
<code>EXIT</code> and <code>DEBUG</code>.
-Commands specified with an <code>RETURN</code> trap are executed before
+Commands specified with a <code>RETURN</code> trap are executed before
execution resumes after a shell function or a shell script executed with
<code>.</code> or <code>source</code> returns.
The <code>RETURN</code> trap is not inherited by shell functions unless the
<code>functrace</code> option has been enabled using the <code>shopt</code> builtin.
</p>
</li><li> The Bash <code>type</code> builtin is more extensive and gives more information
-about the names it finds (see <a href="#Bash-Builtins">Bash Builtins</a>).
+about the names it finds (see <a href="#Bash-Builtins">Bash Builtin Commands</a>).
</li><li> The Bash <code>umask</code> builtin permits a <samp>-p</samp> option to cause
the output to be displayed in the form of a <code>umask</code> command
<p>More features unique to Bash may be found in <a href="#Bash-Features">Bash Features</a>.
</p>
-<span id="Implementation-Differences-From-The-SVR4_002e2-Shell"></span><h3 class="appendixsec">B.1 Implementation Differences From The SVR4.2 Shell</h3>
+<ul class="section-toc">
+<li><a href="#Implementation-Differences-From-The-SVR4_002e2-Shell" accesskey="1">Implementation Differences From The SVR4.2 Shell</a></li>
+</ul>
+<div class="appendixsec" id="Implementation-Differences-From-The-SVR4_002e2-Shell">
+<h3 class="appendixsec">B.1 Implementation Differences From The SVR4.2 Shell</h3>
<p>Since Bash is a completely new implementation, it does not suffer from
many of the limitations of the SVR4.2 shell. For instance:
</li></ul>
<hr>
-<span id="GNU-Free-Documentation-License"></span><div class="header">
+</div>
+</div>
+<div class="appendix" id="GNU-Free-Documentation-License">
+<div class="header">
<p>
-Next: <a href="#Indexes" accesskey="n" rel="next">Indexes</a>, Previous: <a href="#Major-Differences-From-The-Bourne-Shell" accesskey="p" rel="prev">Major Differences From The Bourne Shell</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Indexes" accesskey="n" rel="next">Indexes</a>, Previous: <a href="#Major-Differences-From-The-Bourne-Shell" accesskey="p" rel="prev">Major Differences From The Bourne Shell</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="GNU-Free-Documentation-License-1"></span><h2 class="appendix">Appendix C GNU Free Documentation License</h2>
<hr>
-<span id="Indexes"></span><div class="header">
+</div>
+<div class="appendix" id="Indexes">
+<div class="header">
<p>
-Previous: <a href="#GNU-Free-Documentation-License" accesskey="p" rel="prev">GNU Free Documentation License</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Previous: <a href="#GNU-Free-Documentation-License" accesskey="p" rel="prev">GNU Free Documentation License</a>, Up: <a href="#Top" accesskey="u" rel="up">Bash Features</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Indexes-1"></span><h2 class="appendix">Appendix D Indexes</h2>
-<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">• <a href="#Builtin-Index" rel="index" accesskey="1">Builtin Index</a></td><td> </td><td align="left" valign="top">Index of Bash builtin commands.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Reserved-Word-Index" rel="index" accesskey="2">Reserved Word Index</a></td><td> </td><td align="left" valign="top">Index of Bash reserved words.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Variable-Index" rel="index" accesskey="3">Variable Index</a></td><td> </td><td align="left" valign="top">Quick reference helps you find the
- variable you want.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Function-Index" rel="index" accesskey="4">Function Index</a></td><td> </td><td align="left" valign="top">Index of bindable Readline functions.
-</td></tr>
-<tr><td align="left" valign="top">• <a href="#Concept-Index" rel="index" accesskey="5">Concept Index</a></td><td> </td><td align="left" valign="top">General index for concepts described in
- this manual.
-</td></tr>
-</table>
+<ul class="section-toc">
+<li><a href="#Builtin-Index" accesskey="1">Index of Shell Builtin Commands</a></li>
+<li><a href="#Reserved-Word-Index" accesskey="2">Index of Shell Reserved Words</a></li>
+<li><a href="#Variable-Index" accesskey="3">Parameter and Variable Index</a></li>
+<li><a href="#Function-Index" accesskey="4">Function Index</a></li>
+<li><a href="#Concept-Index" accesskey="5">Concept Index</a></li>
+</ul>
<hr>
-<span id="Builtin-Index"></span><div class="header">
+<div class="appendixsec" id="Builtin-Index">
+<div class="header">
<p>
-Next: <a href="#Reserved-Word-Index" accesskey="n" rel="next">Reserved Word Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Reserved-Word-Index" accesskey="n" rel="next">Index of Shell Reserved Words</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Index-of-Shell-Builtin-Commands"></span><h3 class="appendixsec">D.1 Index of Shell Builtin Commands</h3>
<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Builtin-Index_bt_symbol-1"><b>.</b></a>
</td></tr></table>
<hr>
-<span id="Reserved-Word-Index"></span><div class="header">
+</div>
+<div class="appendixsec" id="Reserved-Word-Index">
+<div class="header">
<p>
-Next: <a href="#Variable-Index" accesskey="n" rel="next">Variable Index</a>, Previous: <a href="#Builtin-Index" accesskey="p" rel="prev">Builtin Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Variable-Index" accesskey="n" rel="next">Parameter and Variable Index</a>, Previous: <a href="#Builtin-Index" accesskey="p" rel="prev">Index of Shell Builtin Commands</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Index-of-Shell-Reserved-Words"></span><h3 class="appendixsec">D.2 Index of Shell Reserved Words</h3>
<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Reserved-Word-Index_rw_symbol-1"><b>!</b></a>
</td></tr></table>
<hr>
-<span id="Variable-Index"></span><div class="header">
+</div>
+<div class="appendixsec" id="Variable-Index">
+<div class="header">
<p>
-Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Previous: <a href="#Reserved-Word-Index" accesskey="p" rel="prev">Reserved Word Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Previous: <a href="#Reserved-Word-Index" accesskey="p" rel="prev">Index of Shell Reserved Words</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Parameter-and-Variable-Index"></span><h3 class="appendixsec">D.3 Parameter and Variable Index</h3>
<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Variable-Index_vr_symbol-1"><b>!</b></a>
<tr><td></td><td valign="top"><a href="#index-_005f"><code>_</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Variable-Index_vr_letter-A">A</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-active_002dregion_002dend_002dcolor"><code>active-region-end-color</code></a>:</td><td> </td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-active_002dregion_002dstart_002dcolor"><code>active-region-start-color</code></a>:</td><td> </td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-auto_005fresume"><code>auto_resume</code></a>:</td><td> </td><td valign="top"><a href="#Job-Control-Variables">Job Control Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Variable-Index_vr_letter-B">B</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-editing_002dmode"><code>editing-mode</code></a>:</td><td> </td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-EMACS"><code>EMACS</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-emacs_002dmode_002dstring"><code>emacs-mode-string</code></a>:</td><td> </td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-enable_002dactive_002dregion"><code>enable-active-region</code></a>:</td><td> </td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-enable_002dbracketed_002dpaste"><code>enable-bracketed-paste</code></a>:</td><td> </td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-enable_002dkeypad"><code>enable-keypad</code></a>:</td><td> </td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-ENV"><code>ENV</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-keymap"><code>keymap</code></a>:</td><td> </td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Variable-Index_vr_letter-L">L</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-LANG"><code>LANG</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-LANG"><code>LANG</code></a>:</td><td> </td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-LANG-1"><code>LANG</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-LC_005fALL"><code>LC_ALL</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-LC_005fCOLLATE"><code>LC_COLLATE</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-LC_005fCTYPE"><code>LC_CTYPE</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-LC_005fMESSAGES"><code>LC_MESSAGES</code></a>:</td><td> </td><td valign="top"><a href="#Locale-Translation">Locale Translation</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-LC_005fMESSAGES"><code>LC_MESSAGES</code></a>:</td><td> </td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-LC_005fMESSAGES-1"><code>LC_MESSAGES</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-LC_005fNUMERIC"><code>LC_NUMERIC</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-LC_005fTIME"><code>LC_TIME</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Variable-Index_vr_letter-R">R</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-RANDOM"><code>RANDOM</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-READLINE_005fARGUMENT"><code>READLINE_ARGUMENT</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-READLINE_005fLINE"><code>READLINE_LINE</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-READLINE_005fMARK"><code>READLINE_MARK</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-READLINE_005fPOINT"><code>READLINE_POINT</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-SRANDOM"><code>SRANDOM</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Variable-Index_vr_letter-T">T</th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-TEXTDOMAIN"><code>TEXTDOMAIN</code></a>:</td><td> </td><td valign="top"><a href="#Locale-Translation">Locale Translation</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-TEXTDOMAINDIR"><code>TEXTDOMAINDIR</code></a>:</td><td> </td><td valign="top"><a href="#Locale-Translation">Locale Translation</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-TEXTDOMAIN"><code>TEXTDOMAIN</code></a>:</td><td> </td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-TEXTDOMAINDIR"><code>TEXTDOMAINDIR</code></a>:</td><td> </td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-TIMEFORMAT"><code>TIMEFORMAT</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-TMOUT"><code>TMOUT</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-TMPDIR"><code>TMPDIR</code></a>:</td><td> </td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
</td></tr></table>
<hr>
-<span id="Function-Index"></span><div class="header">
+</div>
+<div class="appendixsec" id="Function-Index">
+<div class="header">
<p>
-Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#Variable-Index" accesskey="p" rel="prev">Variable Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#Variable-Index" accesskey="p" rel="prev">Parameter and Variable Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<span id="Function-Index-1"></span><h3 class="appendixsec">D.4 Function Index</h3>
<table><tr><th valign="top">Jump to: </th><td><a class="summary-letter" href="#Function-Index_fn_letter-A"><b>A</b></a>
<tr><td></td><td valign="top"><a href="#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"><code>exchange-point-and-mark (C-x C-x)</code></a>:</td><td> </td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Function-Index_fn_letter-F">F</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-fetch_002dhistory-_0028_0029"><code>fetch-history ()</code></a>:</td><td> </td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-forward_002dbackward_002ddelete_002dchar-_0028_0029"><code>forward-backward-delete-char ()</code></a>:</td><td> </td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-forward_002dchar-_0028C_002df_0029"><code>forward-char (C-f)</code></a>:</td><td> </td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-forward_002dsearch_002dhistory-_0028C_002ds_0029"><code>forward-search-history (C-s)</code></a>:</td><td> </td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell_002dkill_002dword-_0028M_002dC_002dd_0029"><code>shell-kill-word (M-C-d)</code></a>:</td><td> </td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029"><code>shell-transpose-words (M-C-t)</code></a>:</td><td> </td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-skip_002dcsi_002dsequence-_0028_0029"><code>skip-csi-sequence ()</code></a>:</td><td> </td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-spell_002dcorrect_002dword-_0028C_002dx-s_0029"><code>spell-correct-word (C-x s)</code></a>:</td><td> </td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"><code>start-kbd-macro (C-x ()</code></a>:</td><td> </td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Function-Index_fn_letter-T">T</th><td></td><td></td></tr>
</td></tr></table>
<hr>
-<span id="Concept-Index"></span><div class="header">
+</div>
+<div class="appendixsec" id="Concept-Index">
+<div class="header">
<p>
Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
<tr><td></td><td valign="top"><a href="#index-interactive-shell">interactive shell</a>:</td><td> </td><td valign="top"><a href="#Invoking-Bash">Invoking Bash</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-interactive-shell-1">interactive shell</a>:</td><td> </td><td valign="top"><a href="#Interactive-Shells">Interactive Shells</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-internationalization">internationalization</a>:</td><td> </td><td valign="top"><a href="#Locale-Translation">Locale Translation</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-internationalized-scripts">internationalized scripts</a>:</td><td> </td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Concept-Index_cp_letter-J">J</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-job">job</a>:</td><td> </td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-special-builtin">special builtin</a>:</td><td> </td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-special-builtin-1">special builtin</a>:</td><td> </td><td valign="top"><a href="#Special-Builtins">Special Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-startup-files">startup files</a>:</td><td> </td><td valign="top"><a href="#Bash-Startup-Files">Bash Startup Files</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-string-translations">string translations</a>:</td><td> </td><td valign="top"><a href="#Creating-Internationalized-Scripts">Creating Internationalized Scripts</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-suspending-jobs">suspending jobs</a>:</td><td> </td><td valign="top"><a href="#Job-Control-Basics">Job Control Basics</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Concept-Index_cp_letter-T">T</th><td></td><td></td></tr>
</td></tr></table>
-<hr>
+</div>
+</div>
+</div>