| <HTML> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <!-- Created on February, 24 2014 by texi2html 1.64 --> |
| <!-- |
| Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author) |
| Karl Berry <karl@freefriends.org> |
| Olaf Bachmann <obachman@mathematik.uni-kl.de> |
| and many others. |
| Maintained by: Olaf Bachmann <obachman@mathematik.uni-kl.de> |
| Send bugs and suggestions to <texi2html@mathematik.uni-kl.de> |
| |
| --> |
| <HEAD> |
| <TITLE>Bash Reference Manual: </TITLE> |
| |
| <META NAME="description" CONTENT="Bash Reference Manual: "> |
| <META NAME="keywords" CONTENT="Bash Reference Manual: "> |
| <META NAME="resource-type" CONTENT="document"> |
| <META NAME="distribution" CONTENT="global"> |
| <META NAME="Generator" CONTENT="texi2html 1.64"> |
| |
| </HEAD> |
| |
| <BODY LANG="" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#800080" ALINK="#FF0000"> |
| |
| <A NAME="SEC_Top"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1>Bash Reference Manual</H1></P><P> |
| |
| This text is a brief description of the features that are present in |
| the Bash shell (version 4.3, 2 February 2014). |
| 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 4.3, last updated 2 February 2014, |
| of <CITE>The GNU Bash Reference Manual</CITE>, |
| for <CODE>Bash</CODE>, Version 4.3. |
| </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 (<TT>`sh'</TT>), the Korn Shell |
| (<TT>`ksh'</TT>), and the C-shell (<TT>`csh'</TT> and its successor, |
| <TT>`tcsh'</TT>). 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><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC1">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="bashref.html#SEC4">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="bashref.html#SEC5">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="bashref.html#SEC59">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="bashref.html#SEC66">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="bashref.html#SEC69">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="bashref.html#SEC92">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="bashref.html#SEC96">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="bashref.html#SEC121">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="bashref.html#SEC128">10. 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="bashref.html#SEC137">A. 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="bashref.html#SEC138">B. 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="bashref.html#SEC140">C. 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="bashref.html#SEC142">D. Indexes</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Various indexes for this manual.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <HR SIZE=1> |
| <A NAME="SEC1"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC2"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC4"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <A NAME="Introduction"></A> |
| <H1> 1. Introduction </H1> |
| <!--docid::SEC1::--> |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC2">1.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="bashref.html#SEC3">1.2 What is a shell?</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">A brief introduction to shells.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="What is Bash?"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC2"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC1"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC3"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC1"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC4"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 1.1 What is Bash? </H2> |
| <!--docid::SEC2::--> |
| <P> |
| |
| Bash is the shell, or command language interpreter, |
| for the GNU operating system. |
| The name is an acronym for the <SAMP>`Bourne-Again SHell'</SAMP>, |
| a pun on Stephen Bourne, the author of the direct ancestor of |
| the current Unix shell <CODE>sh</CODE>, |
| which appeared in the Seventh Edition Bell Labs Research version |
| of Unix. |
| </P><P> |
| |
| Bash is largely compatible with <CODE>sh</CODE> and incorporates useful |
| features from the Korn shell <CODE>ksh</CODE> and the C shell <CODE>csh</CODE>. |
| It is intended to be a conformant implementation of the IEEE |
| POSIX Shell and Tools portion of the IEEE POSIX |
| specification (IEEE Standard 1003.1). |
| It offers functional improvements over <CODE>sh</CODE> for both interactive and |
| programming use. |
| </P><P> |
| |
| While the GNU operating system provides other shells, including |
| a version of <CODE>csh</CODE>, Bash is the default shell. |
| Like other GNU software, Bash is quite portable. It currently runs |
| on nearly every version of Unix and a few other operating systems - |
| independently-supported ports exist for MS-DOS, OS/2, |
| and Windows platforms. |
| </P><P> |
| |
| <A NAME="What is a shell?"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC3"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC2"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC4"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC1"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC4"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 1.2 What is a shell? </H2> |
| <!--docid::SEC3::--> |
| <P> |
| |
| At its base, a shell is simply a macro processor that executes |
| commands. The term macro processor means functionality where text |
| and symbols are expanded to create larger expressions. |
| </P><P> |
| |
| A Unix shell is both a command interpreter and a programming |
| language. As a command interpreter, the shell provides the user |
| interface to the rich set of GNU utilities. The programming |
| language features allow these utilities to be combined. |
| Files containing commands can be created, and become |
| commands themselves. These new commands have the same status as |
| system commands in directories such as <TT>`/bin'</TT>, allowing users |
| or groups to establish custom environments to automate their common |
| tasks. |
| </P><P> |
| |
| Shells may be used interactively or non-interactively. In |
| interactive mode, they accept input typed from the keyboard. |
| When executing non-interactively, shells execute commands read |
| from a file. |
| </P><P> |
| |
| A shell allows execution of GNU commands, both synchronously and |
| asynchronously. |
| The shell waits for synchronous commands to complete before accepting |
| more input; asynchronous commands continue to execute in parallel |
| with the shell while it reads and executes additional commands. |
| The <EM>redirection</EM> constructs permit |
| fine-grained control of the input and output of those commands. |
| Moreover, the shell allows control over the contents of commands' |
| environments. |
| </P><P> |
| |
| Shells also provide a small set of built-in |
| commands (<EM>builtins</EM>) implementing functionality impossible |
| or inconvenient to obtain via separate utilities. |
| For example, <CODE>cd</CODE>, <CODE>break</CODE>, <CODE>continue</CODE>, and |
| <CODE>exec</CODE> cannot be implemented outside of the shell because |
| they directly manipulate the shell itself. |
| The <CODE>history</CODE>, <CODE>getopts</CODE>, <CODE>kill</CODE>, or <CODE>pwd</CODE> |
| builtins, among others, could be implemented in separate utilities, |
| but they are more convenient to use as builtin commands. |
| All of the shell builtins are described in |
| subsequent sections. |
| </P><P> |
| |
| While executing commands is essential, most of the power (and |
| complexity) of shells is due to their embedded programming |
| languages. Like any high-level language, the shell provides |
| variables, flow control constructs, quoting, and functions. |
| </P><P> |
| |
| Shells offer features geared specifically for |
| interactive use rather than to augment the programming language. |
| These interactive features include job control, command line |
| editing, command history and aliases. Each of these features is |
| described in this manual. |
| </P><P> |
| |
| <A NAME="Definitions"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC4"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC3"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> 2. Definitions </H1> |
| <!--docid::SEC4::--> |
| These definitions are used throughout the remainder of this manual. |
| <P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>POSIX</CODE> |
| <DD><A NAME="IDX1"></A> |
| A family of open system standards based on Unix. Bash |
| is primarily concerned with the Shell and Utilities portion of the |
| POSIX 1003.1 standard. |
| <P> |
| |
| <DT><CODE>blank</CODE> |
| <DD>A space or tab character. |
| <P> |
| |
| <DT><CODE>builtin</CODE> |
| <DD><A NAME="IDX2"></A> |
| A command that is implemented internally by the shell itself, rather |
| than by an executable program somewhere in the file system. |
| <P> |
| |
| <DT><CODE>control operator</CODE> |
| <DD><A NAME="IDX3"></A> |
| 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>, or <SAMP>`)'</SAMP>. |
| <P> |
| |
| <DT><CODE>exit status</CODE> |
| <DD><A NAME="IDX4"></A> |
| The value returned by a command to its caller. The value is restricted |
| to eight bits, so the maximum value is 255. |
| <P> |
| |
| <DT><CODE>field</CODE> |
| <DD><A NAME="IDX5"></A> |
| 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> |
| |
| <DT><CODE>filename</CODE> |
| <DD><A NAME="IDX6"></A> |
| A string of characters used to identify a file. |
| <P> |
| |
| <DT><CODE>job</CODE> |
| <DD><A NAME="IDX7"></A> |
| A set of processes comprising a pipeline, and any processes descended |
| from it, that are all in the same process group. |
| <P> |
| |
| <DT><CODE>job control</CODE> |
| <DD><A NAME="IDX8"></A> |
| A mechanism by which users can selectively stop (suspend) and restart |
| (resume) execution of processes. |
| <P> |
| |
| <DT><CODE>metacharacter</CODE> |
| <DD><A NAME="IDX9"></A> |
| A character that, when unquoted, separates words. A metacharacter is |
| a <CODE>blank</CODE> or one of the following characters: |
| <SAMP>`|'</SAMP>, <SAMP>`&'</SAMP>, <SAMP>`;'</SAMP>, <SAMP>`('</SAMP>, <SAMP>`)'</SAMP>, <SAMP>`<'</SAMP>, or |
| <SAMP>`>'</SAMP>. |
| <P> |
| |
| <DT><CODE>name</CODE> |
| <DD><A NAME="IDX10"></A> |
| <A NAME="IDX11"></A> |
| 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> |
| |
| <DT><CODE>operator</CODE> |
| <DD><A NAME="IDX12"></A> |
| A <CODE>control operator</CODE> or a <CODE>redirection operator</CODE>. |
| See section <A HREF="bashref.html#SEC40">3.6 Redirections</A>, for a list of redirection operators. |
| Operators contain at least one unquoted <CODE>metacharacter</CODE>. |
| <P> |
| |
| <DT><CODE>process group</CODE> |
| <DD><A NAME="IDX13"></A> |
| A collection of related processes each having the same process |
| group ID. |
| <P> |
| |
| <DT><CODE>process group ID</CODE> |
| <DD><A NAME="IDX14"></A> |
| A unique identifier that represents a <CODE>process group</CODE> |
| during its lifetime. |
| <P> |
| |
| <DT><CODE>reserved word</CODE> |
| <DD><A NAME="IDX15"></A> |
| 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> |
| |
| <DT><CODE>return status</CODE> |
| <DD><A NAME="IDX16"></A> |
| A synonym for <CODE>exit status</CODE>. |
| <P> |
| |
| <DT><CODE>signal</CODE> |
| <DD><A NAME="IDX17"></A> |
| A mechanism by which a process may be notified by the kernel |
| of an event occurring in the system. |
| <P> |
| |
| <DT><CODE>special builtin</CODE> |
| <DD><A NAME="IDX18"></A> |
| A shell builtin command that has been classified as special by the |
| POSIX standard. |
| <P> |
| |
| <DT><CODE>token</CODE> |
| <DD><A NAME="IDX19"></A> |
| A sequence of characters considered a single unit by the shell. |
| It is either a <CODE>word</CODE> or an <CODE>operator</CODE>. |
| <P> |
| |
| <DT><CODE>word</CODE> |
| <DD><A NAME="IDX20"></A> |
| A sequence of characters treated as a unit by the shell. |
| Words may not include unquoted <CODE>metacharacters</CODE>. |
| </DL> |
| <P> |
| |
| <A NAME="Basic Shell Features"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC5"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC4"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC6"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> 3. Basic Shell Features </H1> |
| <!--docid::SEC5::--> |
| <P> |
| |
| Bash is an acronym for <SAMP>`Bourne-Again SHell'</SAMP>. |
| The Bourne shell is |
| the traditional Unix shell originally written by Stephen Bourne. |
| All of the Bourne shell builtin commands are available in Bash, |
| The rules for evaluation and quoting are taken from the POSIX |
| specification for the `standard' Unix shell. |
| </P><P> |
| |
| This chapter briefly summarizes the shell's `building blocks': |
| commands, control structures, shell functions, shell <I>parameters</I>, |
| shell expansions, |
| <I>redirections</I>, which are a way to direct input and output from |
| and to named files, and how the shell executes commands. |
| </P><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC6">3.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="bashref.html#SEC15">3.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="bashref.html#SEC25">3.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="bashref.html#SEC26">3.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="bashref.html#SEC29">3.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="bashref.html#SEC40">3.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="bashref.html#SEC51">3.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="bashref.html#SEC58">3.8 Shell Scripts</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Executing files of shell commands.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Shell Syntax"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC6"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC7"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 3.1 Shell Syntax </H2> |
| <!--docid::SEC6::--> |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC7">3.1.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="bashref.html#SEC8">3.1.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="bashref.html#SEC14">3.1.3 Comments</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to specify comments.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| When the shell reads input, it proceeds through a |
| sequence of operations. If the input indicates the beginning of a |
| comment, the shell ignores the comment symbol (<SAMP>`#'</SAMP>), and the rest |
| of that line. |
| |
| Otherwise, roughly speaking, the shell reads its input and |
| divides the input into words and operators, employing the quoting rules |
| to select which meanings to assign various words and characters. |
| </P><P> |
| |
| The shell then parses these tokens into commands and other constructs, |
| removes the special meaning of certain words or characters, expands |
| others, redirects input and output as needed, executes the specified |
| command, waits for the command's exit status, and makes that exit status |
| available for further inspection or processing. |
| </P><P> |
| |
| <A NAME="Shell Operation"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC7"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC6"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC8"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC6"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.1.1 Shell Operation </H3> |
| <!--docid::SEC7::--> |
| <P> |
| |
| The following is a brief description of the shell's operation when it |
| reads and executes a command. Basically, the shell does the |
| following: |
| </P><P> |
| |
| <OL> |
| <LI> |
| Reads its input from a file (see section <A HREF="bashref.html#SEC58">3.8 Shell Scripts</A>), from a string |
| supplied as an argument to the <SAMP>`-c'</SAMP> invocation option |
| (see section <A HREF="bashref.html#SEC70">6.1 Invoking Bash</A>), or from the user's terminal. |
| <P> |
| |
| <LI> |
| Breaks the input into words and operators, obeying the quoting rules |
| described in <A HREF="bashref.html#SEC8">3.1.2 Quoting</A>. These tokens are separated by |
| <CODE>metacharacters</CODE>. Alias expansion is performed by this step |
| (see section <A HREF="bashref.html#SEC85">6.6 Aliases</A>). |
| <P> |
| |
| <LI> |
| Parses the tokens into simple and compound commands |
| (see section <A HREF="bashref.html#SEC15">3.2 Shell Commands</A>). |
| <P> |
| |
| <LI> |
| Performs the various shell expansions (see section <A HREF="bashref.html#SEC29">3.5 Shell Expansions</A>), breaking |
| the expanded tokens into lists of filenames (see section <A HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A>) |
| and commands and arguments. |
| <P> |
| |
| <LI> |
| Performs any necessary redirections (see section <A HREF="bashref.html#SEC40">3.6 Redirections</A>) and removes |
| the redirection operators and their operands from the argument list. |
| <P> |
| |
| <LI> |
| Executes the command (see section <A HREF="bashref.html#SEC51">3.7 Executing Commands</A>). |
| <P> |
| |
| <LI> |
| Optionally waits for the command to complete and collects its exit |
| status (see section <A HREF="bashref.html#SEC56">3.7.5 Exit Status</A>). |
| <P> |
| |
| </OL> |
| <P> |
| |
| <A NAME="Quoting"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC8"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC7"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC9"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC6"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.1.2 Quoting </H3> |
| <!--docid::SEC8::--> |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC9">3.1.2.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="bashref.html#SEC10">3.1.2.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="bashref.html#SEC11">3.1.2.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="bashref.html#SEC12">3.1.2.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="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to translate strings into different languages.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| Quoting is used to remove the special meaning of certain |
| characters or words to the shell. Quoting can be used to |
| disable special treatment for special characters, to prevent |
| reserved words from being recognized as such, and to prevent |
| parameter expansion. |
| </P><P> |
| |
| Each of the shell metacharacters (see section <A HREF="bashref.html#SEC4">2. Definitions</A>) |
| 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 section <A HREF="bashref.html#SEC124">9.3 History Expansion</A>), the |
| <VAR>history expansion</VAR> character, usually <SAMP>`!'</SAMP>, must be quoted |
| to prevent history expansion. See section <A HREF="bashref.html#SEC122">9.1 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><P> |
| |
| <A NAME="Escape Character"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC9"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC8"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC10"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC8"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H4> 3.1.2.1 Escape Character </H4> |
| <!--docid::SEC9::--> |
| A non-quoted backslash <SAMP>`\'</SAMP> is the Bash escape character. |
| It preserves the literal value of the next character that follows, |
| with the exception of <CODE>newline</CODE>. If a <CODE>\newline</CODE> pair |
| appears, and the backslash itself is not quoted, the <CODE>\newline</CODE> |
| is treated as a line continuation (that is, it is removed from |
| the input stream and effectively ignored). |
| <P> |
| |
| <A NAME="Single Quotes"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC10"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC9"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC11"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC11"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC8"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H4> 3.1.2.2 Single Quotes </H4> |
| <!--docid::SEC10::--> |
| <P> |
| |
| Enclosing characters in single quotes (<SAMP>`''</SAMP>) preserves the literal value |
| of each character within the quotes. A single quote may not occur |
| between single quotes, even when preceded by a backslash. |
| </P><P> |
| |
| <A NAME="Double Quotes"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC11"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC10"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC12"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC12"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC8"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H4> 3.1.2.3 Double Quotes </H4> |
| <!--docid::SEC11::--> |
| <P> |
| |
| Enclosing characters in double quotes (<SAMP>`"'</SAMP>) preserves the literal value |
| of all characters within the quotes, with the exception of |
| <SAMP>`$'</SAMP>, <SAMP>``'</SAMP>, <SAMP>`\'</SAMP>, |
| and, when history expansion is enabled, <SAMP>`!'</SAMP>. |
| The characters <SAMP>`$'</SAMP> and <SAMP>``'</SAMP> |
| retain their special meaning within double quotes (see section <A HREF="bashref.html#SEC29">3.5 Shell Expansions</A>). |
| The backslash retains its special meaning only when followed by one of |
| the following characters: |
| <SAMP>`$'</SAMP>, <SAMP>``'</SAMP>, <SAMP>`"'</SAMP>, <SAMP>`\'</SAMP>, or <CODE>newline</CODE>. |
| Within double quotes, backslashes that are followed by one of these |
| characters are removed. Backslashes preceding characters without a |
| special meaning are left unmodified. |
| A double quote may be quoted within double quotes by preceding it with |
| a backslash. |
| If enabled, history expansion will be performed unless an <SAMP>`!'</SAMP> |
| appearing in double quotes is escaped using a backslash. |
| The backslash preceding the <SAMP>`!'</SAMP> is not removed. |
| </P><P> |
| |
| The special parameters <SAMP>`*'</SAMP> and <SAMP>`@'</SAMP> have special meaning |
| when in double quotes (see section <A HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A>). |
| </P><P> |
| |
| <A NAME="ANSI-C Quoting"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC12"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC11"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC13"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC13"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC8"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H4> 3.1.2.4 ANSI-C Quoting </H4> |
| <!--docid::SEC12::--> |
| <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><P> |
| |
| <DL COMPACT> |
| <DT><CODE>\a</CODE> |
| <DD>alert (bell) |
| <DT><CODE>\b</CODE> |
| <DD>backspace |
| <DT><CODE>\e</CODE> |
| <DD><DT><CODE>\E</CODE> |
| <DD>an escape character (not ANSI C) |
| <DT><CODE>\f</CODE> |
| <DD>form feed |
| <DT><CODE>\n</CODE> |
| <DD>newline |
| <DT><CODE>\r</CODE> |
| <DD>carriage return |
| <DT><CODE>\t</CODE> |
| <DD>horizontal tab |
| <DT><CODE>\v</CODE> |
| <DD>vertical tab |
| <DT><CODE>\\</CODE> |
| <DD>backslash |
| <DT><CODE>\'</CODE> |
| <DD>single quote |
| <DT><CODE>\"</CODE> |
| <DD>double quote |
| <DT><CODE>\<VAR>nnn</VAR></CODE> |
| <DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR> |
| (one to three digits) |
| <DT><CODE>\x<VAR>HH</VAR></CODE> |
| <DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR> |
| (one or two hex digits) |
| <DT><CODE>\u<VAR>HHHH</VAR></CODE> |
| <DD>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value |
| <VAR>HHHH</VAR> (one to four hex digits) |
| <DT><CODE>\U<VAR>HHHHHHHH</VAR></CODE> |
| <DD>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value |
| <VAR>HHHHHHHH</VAR> (one to eight hex digits) |
| <DT><CODE>\c<VAR>x</VAR></CODE> |
| <DD>a control-<VAR>x</VAR> character |
| </DL> |
| <P> |
| |
| The expanded result is single-quoted, as if the dollar sign had not |
| been present. |
| </P><P> |
| |
| <A NAME="Locale Translation"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC13"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC12"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC8"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H4> 3.1.2.5 Locale-Specific Translation </H4> |
| <!--docid::SEC13::--> |
| <P> |
| |
| A double-quoted string preceded by a dollar sign (<SAMP>`$'</SAMP>) will cause |
| the string to be translated according to the current locale. |
| If the current locale is <CODE>C</CODE> or <CODE>POSIX</CODE>, the dollar sign |
| is ignored. |
| If the string is translated and replaced, the replacement is |
| double-quoted. |
| </P><P> |
| |
| <A NAME="IDX21"></A> |
| <A NAME="IDX22"></A> |
| <A NAME="IDX23"></A> |
| 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><P> |
| |
| <A NAME="Comments"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC14"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC13"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC6"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.1.3 Comments </H3> |
| <!--docid::SEC14::--> |
| <P> |
| |
| In a non-interactive shell, or an interactive shell in which the |
| <CODE>interactive_comments</CODE> option to the <CODE>shopt</CODE> |
| builtin is enabled (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>), |
| a word beginning with <SAMP>`#'</SAMP> |
| causes that word and all remaining characters on that line to |
| be ignored. An interactive shell without the <CODE>interactive_comments</CODE> |
| option enabled does not allow comments. The <CODE>interactive_comments</CODE> |
| option is on by default in interactive shells. |
| See section <A HREF="bashref.html#SEC79">6.3 Interactive Shells</A>, for a description of what makes |
| a shell interactive. |
| </P><P> |
| |
| <A NAME="Shell Commands"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC15"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC14"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC16"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 3.2 Shell Commands </H2> |
| <!--docid::SEC15::--> |
| <P> |
| |
| A simple shell command such as <CODE>echo a b c</CODE> consists of the command |
| itself followed by arguments, separated by spaces. |
| </P><P> |
| |
| More complex shell commands are composed of simple commands arranged together |
| in a variety of ways: in a pipeline in which the output of one command |
| becomes the input of a second, in a loop or conditional construct, or in |
| some other grouping. |
| </P><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC16">3.2.1 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="bashref.html#SEC17">3.2.2 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="bashref.html#SEC18">3.2.3 Lists of Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How to execute commands sequentially.</TD></TR> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC19">3.2.4 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="bashref.html#SEC23">3.2.5 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="bashref.html#SEC24">3.2.6 GNU Parallel</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Running commands in parallel.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Simple Commands"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC16"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC17"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.2.1 Simple Commands </H3> |
| <!--docid::SEC16::--> |
| <P> |
| |
| A simple command is the kind of command encountered most often. |
| It's just a sequence of words separated by <CODE>blank</CODE>s, terminated |
| by one of the shell's control operators (see section <A HREF="bashref.html#SEC4">2. Definitions</A>). The |
| first word generally specifies a command to be executed, with the |
| rest of the words being that command's arguments. |
| </P><P> |
| |
| The return status (see section <A HREF="bashref.html#SEC56">3.7.5 Exit Status</A>) of a simple command is |
| its exit status as provided |
| by the POSIX 1003.1 <CODE>waitpid</CODE> function, or 128+<VAR>n</VAR> if |
| the command was terminated by signal <VAR>n</VAR>. |
| </P><P> |
| |
| <A NAME="Pipelines"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC17"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC16"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC18"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC18"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.2.2 Pipelines </H3> |
| <!--docid::SEC17::--> |
| <P> |
| |
| A <CODE>pipeline</CODE> is a sequence of simple commands separated by one of |
| the control operators <SAMP>`|'</SAMP> or <SAMP>`|&'</SAMP>. |
| </P><P> |
| |
| <A NAME="IDX24"></A> |
| <A NAME="IDX25"></A> |
| <A NAME="IDX26"></A> |
| The format for a pipeline is |
| <TABLE><tr><td> </td><td class=example><pre>[time [-p]] [!] <VAR>command1</VAR> [ | or |& <VAR>command2</VAR> ] <small>...</small> |
| </pre></td></tr></table></P><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. |
| </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. |
| </P><P> |
| |
| The reserved word <CODE>time</CODE> causes timing statistics |
| to be printed for the pipeline once it finishes. |
| The statistics currently consist of elapsed (wall-clock) time and |
| user and system time consumed by the command's execution. |
| The <SAMP>`-p'</SAMP> option changes the output format to that specified |
| by POSIX. |
| When the shell is in POSIX mode (see section <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>), |
| it does not recognize <CODE>time</CODE> as a reserved word if the next |
| token begins with a <SAMP>`-'</SAMP>. |
| The <CODE>TIMEFORMAT</CODE> variable may be set to a format string that |
| specifies how the timing information should be displayed. |
| See section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>, for a description of the available formats. |
| The use of <CODE>time</CODE> as a reserved word permits the timing of |
| shell builtins, shell functions, and pipelines. An external |
| <CODE>time</CODE> command cannot time these easily. |
| </P><P> |
| |
| When the shell is in POSIX mode (see section <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>), <CODE>time</CODE> |
| may be followed by a newline. In this case, the shell displays the |
| total user and system time consumed by the shell and its children. |
| 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 section <A HREF="bashref.html#SEC18">3.2.3 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 |
| (see section <A HREF="bashref.html#SEC54">3.7.3 Command Execution Environment</A>). The exit |
| status of a pipeline is the exit status of the last command in the |
| pipeline, unless the <CODE>pipefail</CODE> option is enabled |
| (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| If <CODE>pipefail</CODE> is enabled, the pipeline's return status is the |
| value of the last (rightmost) command to exit with a non-zero status, |
| or zero if all commands exit successfully. |
| If the reserved word <SAMP>`!'</SAMP> precedes the pipeline, the |
| exit status is the logical negation of the exit status as described |
| above. |
| The shell waits for all commands in the pipeline to terminate before |
| returning a value. |
| </P><P> |
| |
| <A NAME="Lists"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC18"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC17"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC19"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC19"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.2.3 Lists of Commands </H3> |
| <!--docid::SEC18::--> |
| <P> |
| |
| A <CODE>list</CODE> is a sequence of one or more pipelines separated by one |
| of the operators <SAMP>`;'</SAMP>, <SAMP>`&'</SAMP>, <SAMP>`&&'</SAMP>, or <SAMP>`||'</SAMP>, |
| and optionally terminated by one of <SAMP>`;'</SAMP>, <SAMP>`&'</SAMP>, or a |
| <CODE>newline</CODE>. |
| </P><P> |
| |
| Of these list operators, <SAMP>`&&'</SAMP> and <SAMP>`||'</SAMP> |
| have equal precedence, followed by <SAMP>`;'</SAMP> and <SAMP>`&'</SAMP>, |
| which have equal precedence. |
| </P><P> |
| |
| A sequence of one or more newlines may appear in a <CODE>list</CODE> |
| to delimit commands, equivalent to a semicolon. |
| </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>. |
| The shell does not wait for the command to finish, and the return |
| status is 0 (true). |
| When job control is not active (see section <A HREF="bashref.html#SEC92">7. Job Control</A>), |
| the standard input for asynchronous commands, in the absence of any |
| explicit redirections, is redirected from <CODE>/dev/null</CODE>. |
| </P><P> |
| |
| Commands separated by a <SAMP>`;'</SAMP> are executed sequentially; the shell |
| waits for each command to terminate in turn. The return status is the |
| exit status of the last command executed. |
| </P><P> |
| |
| AND and OR lists are sequences of one or more pipelines |
| separated by the control operators <SAMP>`&&'</SAMP> and <SAMP>`||'</SAMP>, |
| respectively. AND and OR lists are executed with left |
| associativity. |
| </P><P> |
| |
| An AND list has the form |
| <TABLE><tr><td> </td><td class=example><pre><VAR>command1</VAR> && <VAR>command2</VAR> |
| </pre></td></tr></table></P><P> |
| |
| <VAR>command2</VAR> is executed if, and only if, <VAR>command1</VAR> |
| returns an exit status of zero. |
| </P><P> |
| |
| An OR list has the form |
| <TABLE><tr><td> </td><td class=example><pre><VAR>command1</VAR> || <VAR>command2</VAR> |
| </pre></td></tr></table></P><P> |
| |
| <VAR>command2</VAR> is executed if, and only if, <VAR>command1</VAR> |
| returns a non-zero exit status. |
| </P><P> |
| |
| The return status of |
| AND and OR lists is the exit status of the last command |
| executed in the list. |
| </P><P> |
| |
| <A NAME="Compound Commands"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC19"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC18"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC20"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC23"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC23"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.2.4 Compound Commands </H3> |
| <!--docid::SEC19::--> |
| <P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC20">3.2.4.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="bashref.html#SEC21">3.2.4.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="bashref.html#SEC22">3.2.4.3 Grouping Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Ways to group commands.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| Compound commands are the shell programming constructs. |
| Each construct begins with a reserved word or control operator and is |
| terminated by a corresponding reserved word or operator. |
| Any redirections (see section <A HREF="bashref.html#SEC40">3.6 Redirections</A>) associated with a compound command |
| apply to all commands within that compound command unless explicitly overridden. |
| </P><P> |
| |
| In most cases a list of commands in a compound command's description may be |
| separated from the rest of the command by one or more newlines, and may be |
| followed by a newline in place of a semicolon. |
| </P><P> |
| |
| Bash provides looping constructs, conditional commands, and mechanisms |
| to group commands and execute them as a unit. |
| </P><P> |
| |
| <A NAME="Looping Constructs"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC20"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC19"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC21"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC23"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC19"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC23"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H4> 3.2.4.1 Looping Constructs </H4> |
| <!--docid::SEC20::--> |
| <P> |
| |
| Bash supports the following looping constructs. |
| </P><P> |
| |
| Note that wherever a <SAMP>`;'</SAMP> appears in the description of a |
| command's syntax, it may be replaced with one or more newlines. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>until</CODE> |
| <DD><A NAME="IDX27"></A> |
| <A NAME="IDX28"></A> |
| <A NAME="IDX29"></A> |
| The syntax of the <CODE>until</CODE> command is: |
| <P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>until <VAR>test-commands</VAR>; do <VAR>consequent-commands</VAR>; done |
| </pre></td></tr></table></P><P> |
| |
| Execute <VAR>consequent-commands</VAR> as long as |
| <VAR>test-commands</VAR> has an exit status which is not zero. |
| The return status is the exit status of the last command executed |
| in <VAR>consequent-commands</VAR>, or zero if none was executed. |
| </P><P> |
| |
| <DT><CODE>while</CODE> |
| <DD><A NAME="IDX30"></A> |
| The syntax of the <CODE>while</CODE> command is: |
| <P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>while <VAR>test-commands</VAR>; do <VAR>consequent-commands</VAR>; done |
| </pre></td></tr></table></P><P> |
| |
| Execute <VAR>consequent-commands</VAR> as long as |
| <VAR>test-commands</VAR> has an exit status of zero. |
| The return status is the exit status of the last command executed |
| in <VAR>consequent-commands</VAR>, or zero if none was executed. |
| </P><P> |
| |
| <DT><CODE>for</CODE> |
| <DD><A NAME="IDX31"></A> |
| The syntax of the <CODE>for</CODE> command is: |
| <P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>for <VAR>name</VAR> [ [in [<VAR>words</VAR> <small>...</small>] ] ; ] do <VAR>commands</VAR>; done |
| </pre></td></tr></table></P><P> |
| |
| Expand <VAR>words</VAR>, and execute <VAR>commands</VAR> once for each member |
| in the resultant list, with <VAR>name</VAR> bound to the current member. |
| If <SAMP>`in <VAR>words</VAR>'</SAMP> is not present, the <CODE>for</CODE> command |
| executes the <VAR>commands</VAR> once for each positional parameter that is |
| set, as if <SAMP>`in "$@"'</SAMP> had been specified |
| (see section <A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A>). |
| The return status is the exit status of the last command that executes. |
| If there are no items in the expansion of <VAR>words</VAR>, no commands are |
| executed, and the return status is zero. |
| </P><P> |
| |
| An alternate form of the <CODE>for</CODE> command is also supported: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>for (( <VAR>expr1</VAR> ; <VAR>expr2</VAR> ; <VAR>expr3</VAR> )) ; do <VAR>commands</VAR> ; done |
| </pre></td></tr></table></P><P> |
| |
| First, the arithmetic expression <VAR>expr1</VAR> is evaluated according |
| to the rules described below (see section <A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A>). |
| The arithmetic expression <VAR>expr2</VAR> is then evaluated repeatedly |
| until it evaluates to zero. |
| Each time <VAR>expr2</VAR> evaluates to a non-zero value, <VAR>commands</VAR> are |
| executed and the arithmetic expression <VAR>expr3</VAR> is evaluated. |
| If any expression is omitted, it behaves as if it evaluates to 1. |
| The return value is the exit status of the last command in <VAR>commands</VAR> |
| that is executed, or false if any of the expressions is invalid. |
| </DL> |
| <P> |
| |
| The <CODE>break</CODE> and <CODE>continue</CODE> builtins (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>) |
| may be used to control loop execution. |
| </P><P> |
| |
| <A NAME="Conditional Constructs"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC21"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC20"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC22"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC22"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC19"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC23"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H4> 3.2.4.2 Conditional Constructs </H4> |
| <!--docid::SEC21::--> |
| <P> |
| |
| <DL COMPACT> |
| <DT><CODE>if</CODE> |
| <DD><A NAME="IDX32"></A> |
| <A NAME="IDX33"></A> |
| <A NAME="IDX34"></A> |
| <A NAME="IDX35"></A> |
| <A NAME="IDX36"></A> |
| The syntax of the <CODE>if</CODE> command is: |
| <P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>if <VAR>test-commands</VAR>; then |
| <VAR>consequent-commands</VAR>; |
| [elif <VAR>more-test-commands</VAR>; then |
| <VAR>more-consequents</VAR>;] |
| [else <VAR>alternate-consequents</VAR>;] |
| fi |
| </pre></td></tr></table></P><P> |
| |
| The <VAR>test-commands</VAR> list is executed, and if its return status is zero, |
| the <VAR>consequent-commands</VAR> list is executed. |
| If <VAR>test-commands</VAR> returns a non-zero status, each <CODE>elif</CODE> list |
| is executed in turn, and if its exit status is zero, |
| the corresponding <VAR>more-consequents</VAR> is executed and the |
| command completes. |
| If <SAMP>`else <VAR>alternate-consequents</VAR>'</SAMP> is present, and |
| the final command in the final <CODE>if</CODE> or <CODE>elif</CODE> clause |
| has a non-zero exit status, then <VAR>alternate-consequents</VAR> is executed. |
| The return status is the exit status of the last command executed, or |
| zero if no condition tested true. |
| </P><P> |
| |
| <DT><CODE>case</CODE> |
| <DD><A NAME="IDX37"></A> |
| <A NAME="IDX38"></A> |
| <A NAME="IDX39"></A> |
| The syntax of the <CODE>case</CODE> command is: |
| <P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>case <VAR>word</VAR> in [ [(] <VAR>pattern</VAR> [| <VAR>pattern</VAR>]<small>...</small>) <VAR>command-list</VAR> ;;]<small>...</small> esac |
| </pre></td></tr></table></P><P> |
| |
| <CODE>case</CODE> will selectively execute the <VAR>command-list</VAR> corresponding to |
| the first <VAR>pattern</VAR> that matches <VAR>word</VAR>. |
| If the shell option <CODE>nocasematch</CODE> |
| (see the description of <CODE>shopt</CODE> in <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>) |
| is enabled, the match is performed without regard to the case |
| of alphabetic characters. |
| The <SAMP>`|'</SAMP> is used to separate multiple patterns, and the <SAMP>`)'</SAMP> |
| operator terminates a pattern list. |
| A list of patterns and an associated command-list is known |
| as a <VAR>clause</VAR>. |
| </P><P> |
| |
| Each clause must be terminated with <SAMP>`;;'</SAMP>, <SAMP>`;&'</SAMP>, or <SAMP>`;;&'</SAMP>. |
| The <VAR>word</VAR> undergoes tilde expansion, parameter expansion, command |
| substitution, arithmetic expansion, and quote removal before matching is |
| attempted. Each <VAR>pattern</VAR> undergoes tilde expansion, parameter |
| expansion, command substitution, and arithmetic expansion. |
| </P><P> |
| |
| There may be an arbitrary number of <CODE>case</CODE> clauses, each terminated |
| by a <SAMP>`;;'</SAMP>, <SAMP>`;&'</SAMP>, or <SAMP>`;;&'</SAMP>. |
| The first pattern that matches determines the |
| command-list that is executed. |
| It's a common idiom to use <SAMP>`*'</SAMP> as the final pattern to define the |
| default case, since that pattern will always match. |
| </P><P> |
| |
| Here is an example using <CODE>case</CODE> in a script that could be used to |
| describe one interesting feature of an animal: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>echo -n "Enter the name of an animal: " |
| read ANIMAL |
| echo -n "The $ANIMAL has " |
| case $ANIMAL in |
| horse | dog | cat) echo -n "four";; |
| man | kangaroo ) echo -n "two";; |
| *) echo -n "an unknown number of";; |
| esac |
| echo " legs." |
| </pre></td></tr></table></P><P> |
| |
| </P><P> |
| |
| If the <SAMP>`;;'</SAMP> operator is used, no subsequent matches are attempted after |
| the first pattern match. |
| Using <SAMP>`;&'</SAMP> in place of <SAMP>`;;'</SAMP> causes execution to continue with |
| the <VAR>command-list</VAR> associated with the next clause, if any. |
| Using <SAMP>`;;&'</SAMP> in place of <SAMP>`;;'</SAMP> causes the shell to test the patterns |
| in the next clause, if any, and execute any associated <VAR>command-list</VAR> |
| on a successful match. |
| </P><P> |
| |
| The return status is zero if no <VAR>pattern</VAR> is matched. Otherwise, the |
| return status is the exit status of the <VAR>command-list</VAR> executed. |
| </P><P> |
| |
| <DT><CODE>select</CODE> |
| <DD><A NAME="IDX40"></A> |
| <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><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>select <VAR>name</VAR> [in <VAR>words</VAR> <small>...</small>]; do <VAR>commands</VAR>; done |
| </pre></td></tr></table></P><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 |
| 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. |
| 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. |
| 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><P> |
| |
| The <VAR>commands</VAR> are executed after each selection until a |
| <CODE>break</CODE> command is executed, at which |
| point the <CODE>select</CODE> command completes. |
| </P><P> |
| |
| Here is an example that allows the user to pick a filename from the |
| current directory, and displays the name and index of the file |
| selected. |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>select fname in *; |
| do |
| echo you picked $fname \($REPLY\) |
| break; |
| done |
| </pre></td></tr></table></P><P> |
| |
| <DT><CODE>((<small>...</small>))</CODE> |
| <DD><TABLE><tr><td> </td><td class=example><pre>(( <VAR>expression</VAR> )) |
| </pre></td></tr></table><P> |
| |
| The arithmetic <VAR>expression</VAR> is evaluated according to the rules |
| described below (see section <A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A>). |
| 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 |
| <TABLE><tr><td> </td><td class=example><pre>let "<VAR>expression</VAR>" |
| </pre></td></tr></table>See section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>, for a full description of the <CODE>let</CODE> builtin. |
| </P><P> |
| |
| <DT><CODE>[[<small>...</small>]]</CODE> |
| <DD><A NAME="IDX41"></A> |
| <A NAME="IDX42"></A> |
| <TABLE><tr><td> </td><td class=example><pre>[[ <VAR>expression</VAR> ]] |
| </pre></td></tr></table><P> |
| |
| Return a status of 0 or 1 depending on the evaluation of |
| the conditional expression <VAR>expression</VAR>. |
| Expressions are composed of the primaries described below in |
| <A HREF="bashref.html#SEC83">6.4 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 |
| variable expansion, arithmetic expansion, command substitution, process |
| substitution, and quote removal are performed. |
| Conditional operators such as <SAMP>`-f'</SAMP> must be unquoted to be recognized |
| as primaries. |
| </P><P> |
| |
| When used with <CODE>[[</CODE>, the <SAMP>`<'</SAMP> and <SAMP>`>'</SAMP> operators sort |
| lexicographically using the current locale. |
| </P><P> |
| |
| When the <SAMP>`=='</SAMP> and <SAMP>`!='</SAMP> operators are used, the string to the |
| right of the operator is considered a pattern and matched according |
| to the rules described below in <A HREF="bashref.html#SEC38">3.5.8.1 Pattern Matching</A>, |
| as if the <CODE>extglob</CODE> shell option were enabled. |
| The <SAMP>`='</SAMP> operator is identical to <SAMP>`=='</SAMP>. |
| If the shell option <CODE>nocasematch</CODE> |
| (see the description of <CODE>shopt</CODE> in <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>) |
| is enabled, the match is performed without regard to the case |
| 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> |
| |
| 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 |
| an extended regular expression and matched accordingly (as in <I>regex</I>3)). |
| The return value is 0 if the string matches |
| the pattern, and 1 otherwise. |
| If the regular expression is syntactically incorrect, the conditional |
| expression's return value is 2. |
| If the shell option <CODE>nocasematch</CODE> |
| (see the description of <CODE>shopt</CODE> in <A HREF="bashref.html#SEC64">4.3.2 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. |
| If the pattern is stored in a shell variable, quoting the variable |
| expansion forces the entire pattern to be matched as a string. |
| Substrings matched by parenthesized subexpressions within the regular |
| expression are saved in the array variable <CODE>BASH_REMATCH</CODE>. |
| The element of <CODE>BASH_REMATCH</CODE> with index 0 is the portion of the string |
| matching the entire regular expression. |
| 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> |
| |
| For example, the following will match a line |
| (stored in the shell variable <VAR>line</VAR>) |
| if there is a sequence of characters in the value consisting of |
| any number, including zero, of |
| space characters, zero or one instances of <SAMP>`a'</SAMP>, then a <SAMP>`b'</SAMP>: |
| <TABLE><tr><td> </td><td class=example><pre>[[ $line =~ [[:space:]]*(a)?b ]] |
| </pre></td></tr></table></P><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><P> |
| |
| 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: |
| <TABLE><tr><td> </td><td class=example><pre>pattern='[[:space:]]*(a)?b' |
| [[ $line =~ $pattern ]] |
| </pre></td></tr></table></P><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: |
| <TABLE><tr><td> </td><td class=example><pre>pattern='\.' |
| |
| [[ . =~ $pattern ]] |
| [[ . =~ \. ]] |
| |
| [[ . =~ "$pattern" ]] |
| [[ . =~ '\.' ]] |
| </pre></td></tr></table></P><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 |
| <SAMP>`.'</SAMP>, so the literal <SAMP>`.'</SAMP> matches. |
| 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> |
| |
| Expressions may be combined using the following operators, listed |
| in decreasing order of precedence: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>( <VAR>expression</VAR> )</CODE> |
| <DD>Returns the value of <VAR>expression</VAR>. |
| This may be used to override the normal precedence of operators. |
| <P> |
| |
| <DT><CODE>! <VAR>expression</VAR></CODE> |
| <DD>True if <VAR>expression</VAR> is false. |
| <P> |
| |
| <DT><CODE><VAR>expression1</VAR> && <VAR>expression2</VAR></CODE> |
| <DD>True if both <VAR>expression1</VAR> and <VAR>expression2</VAR> are true. |
| <P> |
| |
| <DT><CODE><VAR>expression1</VAR> || <VAR>expression2</VAR></CODE> |
| <DD>True if either <VAR>expression1</VAR> or <VAR>expression2</VAR> is true. |
| </DL> |
| <P> |
| |
| The <CODE>&&</CODE> and <CODE>||</CODE> operators do not evaluate <VAR>expression2</VAR> if the |
| value of <VAR>expression1</VAR> is sufficient to determine the return |
| value of the entire conditional expression. |
| </DL> |
| <P> |
| |
| <A NAME="Command Grouping"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC22"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC21"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC23"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC23"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC19"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC23"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H4> 3.2.4.3 Grouping Commands </H4> |
| <!--docid::SEC22::--> |
| <P> |
| |
| Bash provides two ways to group a list of commands to be executed |
| as a unit. When commands are grouped, redirections may be applied |
| to the entire command list. For example, the output of all the |
| commands in the list may be redirected to a single stream. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>()</CODE> |
| <DD><TABLE><tr><td> </td><td class=example><pre>( <VAR>list</VAR> ) |
| </pre></td></tr></table><P> |
| |
| Placing a list of commands between parentheses causes a subshell |
| environment to be created (see section <A HREF="bashref.html#SEC54">3.7.3 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><P> |
| |
| <DT><CODE>{}</CODE> |
| <DD><A NAME="IDX43"></A> |
| <A NAME="IDX44"></A> |
| <TABLE><tr><td> </td><td class=example><pre>{ <VAR>list</VAR>; } |
| </pre></td></tr></table><P> |
| |
| Placing a list of commands between curly braces causes the list to |
| be executed in the current shell context. No subshell is created. |
| The semicolon (or newline) following <VAR>list</VAR> is required. |
| </DL> |
| <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> |
| by <CODE>blank</CODE>s or other shell metacharacters. |
| The parentheses are <CODE>operators</CODE>, and are |
| recognized as separate tokens by the shell even if they are not separated |
| from the <VAR>list</VAR> by whitespace. |
| </P><P> |
| |
| The exit status of both of these constructs is the exit status of |
| <VAR>list</VAR>. |
| </P><P> |
| |
| <A NAME="Coprocesses"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC23"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC22"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC24"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC24"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.2.5 Coprocesses </H3> |
| <!--docid::SEC23::--> |
| <P> |
| |
| A <CODE>coprocess</CODE> is a shell command preceded by the <CODE>coproc</CODE> |
| reserved word. |
| A coprocess is executed asynchronously in a subshell, as if the command |
| 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: |
| <TABLE><tr><td> </td><td class=example><pre>coproc [<VAR>NAME</VAR>] <VAR>command</VAR> [<VAR>redirections</VAR>] |
| </pre></td></tr></table></P><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 section <A HREF="bashref.html#SEC16">3.2.1 Simple Commands</A>); otherwise, it is interpreted as |
| the first word of the simple command. |
| </P><P> |
| |
| When the coprocess is executed, the shell creates an array variable |
| (see section <A HREF="bashref.html#SEC86">6.7 Arrays</A>) |
| named <CODE>NAME</CODE> 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]. |
| 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]. |
| This pipe is established before any redirections specified by the |
| command (see section <A HREF="bashref.html#SEC40">3.6 Redirections</A>). |
| The file descriptors can be utilized as arguments to shell commands |
| and redirections using standard word expansions. |
| 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. |
| The <CODE>wait</CODE> |
| builtin command may be used to wait for the coprocess to terminate. |
| </P><P> |
| |
| Since the coprocess is created as an asynchronous command, |
| the <CODE>coproc</CODE> command always returns success. |
| The return status of a coprocess is the exit status of <VAR>command</VAR>. |
| </P><P> |
| |
| <A NAME="GNU Parallel"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC24"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC23"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC15"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.2.6 GNU Parallel </H3> |
| <!--docid::SEC24::--> |
| <P> |
| |
| There are ways to run commands in parallel that are not built into Bash. |
| GNU Parallel is a tool to do just that. |
| </P><P> |
| |
| GNU Parallel, as its name suggests, can be used to build and run commands |
| in parallel. You may run the same command with different arguments, whether |
| they are filenames, usernames, hostnames, or lines read from files. GNU |
| Parallel provides shorthand references to many of the most common operations |
| (input lines, various portions of the input line, different ways to specify |
| 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: |
| <TABLE><tr><td> </td><td class=example><pre>find . -type f -name '*.html' -print | parallel gzip |
| </pre></td></tr></table>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: |
| <TABLE><tr><td> </td><td class=example><pre>ls | parallel mv {} destdir |
| </pre></td></tr></table></P><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. |
| If you need to accommodate special characters in filenames, you can use |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>find . -depth 1 \! -name '.*' -print0 | parallel -0 mv {} destdir |
| </pre></td></tr></table></P><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: |
| <TABLE><tr><td> </td><td class=example><pre>find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv {} destdir |
| </pre></td></tr></table></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): |
| <TABLE><tr><td> </td><td class=example><pre> while IFS= read -r x; do |
| do-something1 "$x" "config-$x" |
| do-something2 < "$x" |
| done < file | process-output |
| </pre></td></tr></table></P><P> |
| |
| with a more compact syntax reminiscent of lambdas: |
| <TABLE><tr><td> </td><td class=example><pre>cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output |
| </pre></td></tr></table></P><P> |
| |
| Parallel provides a built-in mechanism to remove filename extensions, which |
| lends itself to batch file transformations or renaming: |
| <TABLE><tr><td> </td><td class=example><pre>ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}" |
| </pre></td></tr></table>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><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz |
| </pre></td></tr></table></P><P> |
| |
| If a command generates output, you may want to preserve the input order in |
| the output. For instance, the following command |
| <TABLE><tr><td> </td><td class=example><pre>{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute |
| </pre></td></tr></table>will display as output the traceroute invocation that finishes first. |
| Adding the <SAMP>`-k'</SAMP> option |
| <TABLE><tr><td> </td><td class=example><pre>{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute |
| </pre></td></tr></table>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 commnds to a shell. |
| Parallel can speed this up. Assuming that <TT>`file'</TT> contains a list of |
| shell commands, one per line, |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>parallel -j 10 < file |
| </pre></td></tr></table></P><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><P> |
| |
| <A NAME="Shell Functions"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC25"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC24"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC26"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC26"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 3.3 Shell Functions </H2> |
| <!--docid::SEC25::--> |
| <P> |
| |
| Shell functions are a way to group commands for later execution |
| using a single name for the group. They are executed just like |
| a "regular" command. |
| When the name of a shell function is used as a simple command name, |
| the list of commands associated with that function name is executed. |
| Shell functions are executed in the current |
| shell context; no new process is created to interpret them. |
| </P><P> |
| |
| Functions are declared using this syntax: |
| <A NAME="IDX45"></A> |
| <TABLE><tr><td> </td><td class=example><pre><VAR>name</VAR> () <VAR>compound-command</VAR> [ <VAR>redirections</VAR> ] |
| </pre></td></tr></table></P><P> |
| |
| or |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>function <VAR>name</VAR> [()] <VAR>compound-command</VAR> [ <VAR>redirections</VAR> ] |
| </pre></td></tr></table></P><P> |
| |
| This defines a shell function named <VAR>name</VAR>. The reserved |
| 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 |
| <VAR>compound-command</VAR> (see section <A HREF="bashref.html#SEC19">3.2.4 Compound Commands</A>). |
| That command is usually a <VAR>list</VAR> enclosed between { and }, but |
| may be any compound command listed above. |
| <VAR>compound-command</VAR> is executed whenever <VAR>name</VAR> is specified as the |
| name of a command. |
| When the shell is in POSIX mode (see section <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>), |
| <VAR>name</VAR> may not be the same as one of the special builtins |
| (see section <A HREF="bashref.html#SEC65">4.4 Special Builtins</A>). |
| Any redirections (see section <A HREF="bashref.html#SEC40">3.6 Redirections</A>) associated with the shell function |
| are performed when the function is executed. |
| </P><P> |
| |
| A function definition may be deleted using the <SAMP>`-f'</SAMP> option to the |
| <CODE>unset</CODE> builtin (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| </P><P> |
| |
| The exit status of a function definition is zero unless a syntax error |
| occurs or a readonly function with the same name already exists. |
| When executed, the exit status of a function is the exit status of the |
| last command executed in the body. |
| </P><P> |
| |
| Note that for historical reasons, in the most common usage the curly braces |
| that surround the body of the function must be separated from the body by |
| <CODE>blank</CODE>s or newlines. |
| This is because the braces are reserved words and are only recognized |
| as such when they are separated from the command list |
| by whitespace or another shell metacharacter. |
| Also, when using the braces, the <VAR>list</VAR> must be terminated by a semicolon, |
| a <SAMP>`&'</SAMP>, or a newline. |
| </P><P> |
| |
| When a function is executed, the arguments to the |
| function become the positional parameters |
| during its execution (see section <A HREF="bashref.html#SEC27">3.4.1 Positional Parameters</A>). |
| The special parameter <SAMP>`#'</SAMP> that expands to the number of |
| positional parameters is updated to reflect the change. |
| Special parameter <CODE>0</CODE> is unchanged. |
| The first element of the <CODE>FUNCNAME</CODE> variable is set to the |
| name of the function while the function is executing. |
| </P><P> |
| |
| All other aspects of the shell execution |
| environment are identical between a function and its caller |
| with these exceptions: |
| the <CODE>DEBUG</CODE> and <CODE>RETURN</CODE> traps |
| are not inherited unless the function has been given the |
| <CODE>trace</CODE> attribute using the <CODE>declare</CODE> builtin or |
| the <CODE>-o functrace</CODE> option has been enabled with |
| the <CODE>set</CODE> builtin, |
| (in which case all functions inherit the <CODE>DEBUG</CODE> and <CODE>RETURN</CODE> traps), |
| and the <CODE>ERR</CODE> trap is not inherited unless the <CODE>-o errtrace</CODE> |
| shell option has been enabled. |
| See section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>, for the description of the |
| <CODE>trap</CODE> builtin. |
| </P><P> |
| |
| The <CODE>FUNCNEST</CODE> variable, if set to a numeric value greater |
| than 0, defines a maximum function nesting level. Function |
| invocations that exceed the limit cause the entire command to |
| abort. |
| </P><P> |
| |
| If the builtin command <CODE>return</CODE> |
| is executed in a function, the function completes and |
| execution resumes with the next command after the function |
| call. |
| Any command associated with the <CODE>RETURN</CODE> trap is executed |
| before execution resumes. |
| When a function completes, the values of the |
| positional parameters and the special parameter <SAMP>`#'</SAMP> |
| are restored to the values they had prior to the function's |
| execution. If a numeric argument is given to <CODE>return</CODE>, |
| that is the function's return status; otherwise the function's |
| return status is the exit status of the last command executed |
| 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 |
| the function and the commands it invokes. |
| </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 section <A HREF="bashref.html#SEC61">4.2 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 |
| automatically have them defined with the |
| <SAMP>`-f'</SAMP> option to the <CODE>export</CODE> builtin |
| (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| Note that shell functions and variables with the same name may result |
| in multiple identically-named entries in the environment passed to the |
| shell's children. |
| Care should be taken in cases where this may cause a problem. |
| </P><P> |
| |
| Functions may be recursive. |
| The <CODE>FUNCNEST</CODE> variable may be used to limit the depth of the |
| function call stack and restrict the number of function invocations. |
| By default, no limit is placed on the number of recursive calls. |
| </P><P> |
| |
| <A NAME="Shell Parameters"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC26"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC27"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 3.4 Shell Parameters </H2> |
| <!--docid::SEC26::--> |
| <P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC27">3.4.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="bashref.html#SEC28">3.4.2 Special Parameters</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Parameters denoted by special characters.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| A <VAR>parameter</VAR> 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>. |
| Attributes are assigned using the <CODE>declare</CODE> builtin command |
| (see the description of the <CODE>declare</CODE> builtin in <A HREF="bashref.html#SEC61">4.2 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 |
| the <CODE>unset</CODE> builtin command. |
| </P><P> |
| |
| A variable may be assigned to by a statement of the form |
| <TABLE><tr><td> </td><td class=example><pre><VAR>name</VAR>=[<VAR>value</VAR>] |
| </pre></td></tr></table>If <VAR>value</VAR> |
| 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> |
| attribute set, then <VAR>value</VAR> |
| is evaluated as an arithmetic expression even if the <CODE>$((<small>...</small>))</CODE> |
| expansion is not used (see section <A HREF="bashref.html#SEC34">3.5.5 Arithmetic Expansion</A>). |
| Word splitting is not performed, with the exception |
| of <CODE>"$@"</CODE> as explained below. |
| Filename expansion is 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. |
| When in POSIX mode (see section <A HREF="bashref.html#SEC91">6.11 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. |
| </P><P> |
| |
| In the context where an assignment statement is assigning a value |
| to a shell variable or array index (see section <A HREF="bashref.html#SEC86">6.7 Arrays</A>), the <SAMP>`+='</SAMP> |
| operator can be used to |
| append to or add to the variable's previous value. |
| When <SAMP>`+='</SAMP> is applied to a variable for which the <VAR>integer</VAR> 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 |
| (see section <A HREF="bashref.html#SEC86">6.7 Arrays</A>), the |
| variable's value is not unset (as it is when using <SAMP>`='</SAMP>), and new |
| values are appended to the array beginning at one greater than the array's |
| maximum index (for indexed arrays), or added as additional key-value pairs |
| in an associative array. |
| 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 |
| <SAMP>`-n'</SAMP> option to the \fBdeclare\fP or \fBlocal\fP builtin commands |
| (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>) |
| to create a <VAR>nameref</VAR>, or a reference to another variable. |
| This allows variables to be manipulated indirectly. |
| Whenever the nameref variable is referenced or assigned to, the operation |
| is actually performed on the variable specified by the nameref variable's |
| value. |
| A nameref is commonly used within shell functions to refer to a variable |
| whose name is passed as an argument to the function. |
| For instance, if a variable name is passed to a shell function as its first |
| argument, running |
| <TABLE><tr><td> </td><td class=example><pre>declare -n ref=$1 |
| </pre></td></tr></table>inside the function creates a nameref variable <VAR>ref</VAR> whose value is |
| the variable name passed as the first argument. |
| References and assignments to <VAR>ref</VAR> are treated as references and |
| assignments to the variable whose name was passed as <CODE>$1</CODE>. |
| </P><P> |
| |
| If the control variable in a <CODE>for</CODE> loop has the nameref attribute, |
| the list of words can be a list of shell variables, and a name reference |
| will be established for each word in the list, in turn, when the loop is |
| executed. |
| Array variables cannot be given the <SAMP>`-n'</SAMP> attribute. |
| However, nameref variables can reference array variables and subscripted |
| array variables. |
| Namerefs can be unset using the <SAMP>`-n'</SAMP> option to the <CODE>unset</CODE> builtin |
| (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| 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><P> |
| |
| <A NAME="Positional Parameters"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC27"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC26"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC28"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC26"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.4.1 Positional Parameters </H3> |
| <!--docid::SEC27::--> |
| <P> |
| |
| A <VAR>positional parameter</VAR> 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. |
| Positional parameter <CODE>N</CODE> may be referenced as <CODE>${N}</CODE>, or |
| as <CODE>$N</CODE> when <CODE>N</CODE> consists of a single digit. |
| Positional parameters may not be assigned to with assignment statements. |
| The <CODE>set</CODE> and <CODE>shift</CODE> builtins are used to set and |
| unset them (see section <A HREF="bashref.html#SEC59">4. Shell Builtin Commands</A>). |
| The positional parameters are |
| temporarily replaced when a shell function is executed |
| (see section <A HREF="bashref.html#SEC25">3.3 Shell Functions</A>). |
| </P><P> |
| |
| When a positional parameter consisting of more than a single |
| digit is expanded, it must be enclosed in braces. |
| </P><P> |
| |
| <A NAME="Special Parameters"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC28"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC27"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC26"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.4.2 Special Parameters </H3> |
| <!--docid::SEC28::--> |
| <P> |
| |
| The shell treats several parameters specially. These parameters may |
| only be referenced; assignment to them is not allowed. |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <A NAME="IDX46"></A> |
| <DT><CODE>*</CODE> |
| <DD><A NAME="IDX47"></A> |
| <A NAME="IDX48"></A> |
| ($*) Expands to the positional parameters, starting from one. |
| When the expansion is not within double quotes, each positional parameter |
| expands to a separate word. |
| In contexts where it is performed, those words |
| are subject to further word splitting and pathname expansion. |
| When the expansion occurs within double quotes, it expands to a single word |
| with the value of each parameter separated by the first character |
| of the <CODE>IFS</CODE> |
| special variable. That is, <CODE>"$*"</CODE> is equivalent |
| to <CODE>"$1<VAR>c</VAR>$2<VAR>c</VAR><small>...</small>"</CODE>, where <VAR>c</VAR> |
| is the first character of the value of the <CODE>IFS</CODE> |
| variable. |
| If <CODE>IFS</CODE> is unset, the parameters are separated by spaces. |
| If <CODE>IFS</CODE> is null, the parameters are joined without intervening |
| separators. |
| <P> |
| |
| <A NAME="IDX49"></A> |
| <DT><CODE>@</CODE> |
| <DD><A NAME="IDX50"></A> |
| <A NAME="IDX51"></A> |
| ($@) Expands to the positional parameters, starting from one. When the |
| expansion occurs within double quotes, each parameter expands to a |
| separate word. That is, <CODE>"$@"</CODE> is equivalent to |
| <CODE>"$1" "$2" <small>...</small></CODE>. |
| If the double-quoted expansion occurs within a word, the expansion of |
| the first parameter is joined with the beginning part of the original |
| word, and the expansion of the last parameter is joined with the last |
| part of the original word. |
| When there are no positional parameters, <CODE>"$@"</CODE> and |
| <CODE>$@</CODE> |
| expand to nothing (i.e., they are removed). |
| <P> |
| |
| <A NAME="IDX52"></A> |
| <DT><CODE>#</CODE> |
| <DD><A NAME="IDX53"></A> |
| <A NAME="IDX54"></A> |
| ($#) Expands to the number of positional parameters in decimal. |
| <P> |
| |
| <A NAME="IDX55"></A> |
| <DT><CODE>?</CODE> |
| <DD><A NAME="IDX56"></A> |
| <A NAME="IDX57"></A> |
| ($?) Expands to the exit status of the most recently executed foreground |
| pipeline. |
| <P> |
| |
| <A NAME="IDX58"></A> |
| <DT><CODE>-</CODE> |
| <DD><A NAME="IDX59"></A> |
| <A NAME="IDX60"></A> |
| ($-, a hyphen.) Expands to the current option flags as specified upon |
| invocation, by the <CODE>set</CODE> |
| builtin command, or those set by the shell itself |
| (such as the <SAMP>`-i'</SAMP> option). |
| <P> |
| |
| <A NAME="IDX61"></A> |
| <DT><CODE>$</CODE> |
| <DD><A NAME="IDX62"></A> |
| <A NAME="IDX63"></A> |
| ($$) Expands to the process ID of the shell. In a <CODE>()</CODE> subshell, it |
| expands to the process ID of the invoking shell, not the subshell. |
| <P> |
| |
| <A NAME="IDX64"></A> |
| <DT><CODE>!</CODE> |
| <DD><A NAME="IDX65"></A> |
| <A NAME="IDX66"></A> |
| ($!) Expands to the process ID of the job most recently placed into the |
| background, whether executed as an asynchronous command or using |
| the <CODE>bg</CODE> builtin (see section <A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A>). |
| <P> |
| |
| <A NAME="IDX67"></A> |
| <DT><CODE>0</CODE> |
| <DD><A NAME="IDX68"></A> |
| <A NAME="IDX69"></A> |
| ($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 |
| (see section <A HREF="bashref.html#SEC58">3.8 Shell Scripts</A>), <CODE>$0</CODE> is set to the name of that file. |
| If Bash is started with the <SAMP>`-c'</SAMP> option (see section <A HREF="bashref.html#SEC70">6.1 Invoking Bash</A>), |
| then <CODE>$0</CODE> is set to the first argument after the string to be |
| executed, if one is present. Otherwise, it is set |
| to the filename used to invoke Bash, as given by argument zero. |
| <P> |
| |
| <A NAME="IDX70"></A> |
| <DT><CODE>_</CODE> |
| <DD><A NAME="IDX71"></A> |
| <A NAME="IDX72"></A> |
| ($_, an underscore.) |
| At shell startup, set to the absolute pathname used to invoke the |
| shell or shell script being executed as passed in the environment |
| or argument list. |
| Subsequently, expands to the last argument to the previous command, |
| after expansion. |
| Also set to the full pathname used to invoke each command executed |
| and placed in the environment exported to that command. |
| When checking mail, this parameter holds the name of the mail file. |
| </DL> |
| <P> |
| |
| <A NAME="Shell Expansions"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC29"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC28"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC30"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 3.5 Shell Expansions </H2> |
| <!--docid::SEC29::--> |
| <P> |
| |
| Expansion is performed on the command line after it has been split into |
| <CODE>token</CODE>s. There are seven kinds of expansion performed: |
| </P><P> |
| |
| <UL> |
| <LI>brace expansion |
| <LI>tilde expansion |
| <LI>parameter and variable expansion |
| <LI>command substitution |
| <LI>arithmetic expansion |
| <LI>word splitting |
| <LI>filename expansion |
| </UL> |
| <P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC30">3.5.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="bashref.html#SEC31">3.5.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="bashref.html#SEC32">3.5.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="bashref.html#SEC33">3.5.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="bashref.html#SEC34">3.5.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="bashref.html#SEC35">3.5.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="bashref.html#SEC36">3.5.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="bashref.html#SEC37">3.5.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="bashref.html#SEC39">3.5.9 Quote Removal</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How and when quote characters are removed from |
| words.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| The order of expansions is: |
| brace expansion; |
| tilde expansion, parameter and variable expansion, arithmetic expansion, |
| and command substitution (done in a left-to-right fashion); |
| word splitting; |
| and filename expansion. |
| </P><P> |
| |
| On systems that can support it, there is an additional expansion |
| available: <VAR>process substitution</VAR>. |
| This is performed at the |
| same time as tilde, parameter, variable, and arithmetic expansion and |
| command substitution. |
| </P><P> |
| |
| Only brace expansion, word splitting, and filename expansion |
| can change the number of words of the expansion; other expansions |
| expand a single word to a single word. |
| The only exceptions to this are the expansions of |
| <CODE>"$@"</CODE> (see section <A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A>) and <CODE>"${<VAR>name</VAR>[@]}"</CODE> |
| (see section <A HREF="bashref.html#SEC86">6.7 Arrays</A>). |
| </P><P> |
| |
| After all expansions, <CODE>quote removal</CODE> (see section <A HREF="bashref.html#SEC39">3.5.9 Quote Removal</A>) |
| is performed. |
| </P><P> |
| |
| <A NAME="Brace Expansion"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC30"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC31"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.5.1 Brace Expansion </H3> |
| <!--docid::SEC30::--> |
| <P> |
| |
| Brace expansion is a mechanism by which arbitrary strings may be generated. |
| This mechanism is similar to |
| <VAR>filename expansion</VAR> (see section <A HREF="bashref.html#SEC37">3.5.8 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 |
| between a pair of braces, |
| followed by an optional <VAR>postscript</VAR>. |
| The preamble is prefixed to each string contained within the braces, and |
| the postscript is then appended to each resulting string, expanding left |
| to right. |
| </P><P> |
| |
| Brace expansions may be nested. |
| The results of each expanded string are not sorted; left to right order |
| is preserved. |
| For example, |
| <TABLE><tr><td> </td><td class=example><pre>bash$ echo a{d,c,b}e |
| ade ace abe |
| </pre></td></tr></table></P><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, |
| 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. |
| Supplied integers may be prefixed with <SAMP>`0'</SAMP> to force each term to have the |
| same width. |
| 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 |
| 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. |
| When the increment is supplied, it is used as the difference between |
| each term. The default increment is 1 or -1 as appropriate. |
| </P><P> |
| |
| Brace expansion is performed before any other expansions, |
| and any characters special to other expansions are preserved |
| in the result. It is strictly textual. Bash |
| does not apply any syntactic interpretation to the context of the |
| expansion or the text between the braces. |
| To avoid conflicts with parameter expansion, the string <SAMP>`${'</SAMP> |
| is not considered eligible for brace expansion. |
| </P><P> |
| |
| A correctly-formed brace expansion must contain unquoted opening |
| and closing braces, and at least one unquoted comma or a valid |
| sequence expression. |
| Any incorrectly formed brace expansion is left unchanged. |
| </P><P> |
| |
| A { or <SAMP>`,'</SAMP> may be quoted with a backslash to prevent its |
| being considered part of a brace expression. |
| To avoid conflicts with parameter expansion, the string <SAMP>`${'</SAMP> |
| is not considered eligible for brace expansion. |
| </P><P> |
| |
| This construct is typically used as shorthand when the common |
| prefix of the strings to be generated is longer than in the |
| above example: |
| <TABLE><tr><td> </td><td class=example><pre>mkdir /usr/local/src/bash/{old,new,dist,bugs} |
| </pre></td></tr></table>or |
| <TABLE><tr><td> </td><td class=example><pre>chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} |
| </pre></td></tr></table></P><P> |
| |
| <A NAME="Tilde Expansion"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC31"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC30"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC32"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC32"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.5.2 Tilde Expansion </H3> |
| <!--docid::SEC31::--> |
| <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 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>. |
| 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 |
| shell is substituted instead. |
| Otherwise, the tilde-prefix is replaced with the home directory |
| associated with the specified login name. |
| </P><P> |
| |
| If the tilde-prefix is <SAMP>`~+'</SAMP>, the value of |
| the shell variable <CODE>PWD</CODE> replaces the tilde-prefix. |
| If the tilde-prefix is <SAMP>`~-'</SAMP>, the value of the shell variable |
| <CODE>OLDPWD</CODE>, if it is set, is substituted. |
| </P><P> |
| |
| If the characters following the tilde in the tilde-prefix consist of a |
| number <VAR>N</VAR>, optionally prefixed by a <SAMP>`+'</SAMP> or a <SAMP>`-'</SAMP>, |
| the tilde-prefix is replaced with the |
| corresponding element from the directory stack, as it would be displayed |
| by the <CODE>dirs</CODE> builtin invoked with the characters following tilde |
| in the tilde-prefix as an argument (see section <A HREF="bashref.html#SEC87">6.8 The Directory Stack</A>). |
| If the tilde-prefix, sans the tilde, consists of a number without a |
| leading <SAMP>`+'</SAMP> or <SAMP>`-'</SAMP>, <SAMP>`+'</SAMP> is assumed. |
| </P><P> |
| |
| If the login name is invalid, or the tilde expansion fails, the word is |
| left unchanged. |
| </P><P> |
| |
| Each variable assignment is checked for unquoted tilde-prefixes immediately |
| following a <SAMP>`:'</SAMP> or the first <SAMP>`='</SAMP>. |
| In these cases, tilde expansion is also performed. |
| Consequently, one may use filenames with tildes in assignments to |
| <CODE>PATH</CODE>, <CODE>MAILPATH</CODE>, and <CODE>CDPATH</CODE>, |
| and the shell assigns the expanded value. |
| </P><P> |
| |
| The following table shows how Bash treats unquoted tilde-prefixes: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>~</CODE> |
| <DD>The value of <CODE>$HOME</CODE> |
| <DT><CODE>~/foo</CODE> |
| <DD><TT>`$HOME/foo'</TT> |
| <P> |
| |
| <DT><CODE>~fred/foo</CODE> |
| <DD>The subdirectory <CODE>foo</CODE> of the home directory of the user |
| <CODE>fred</CODE> |
| <P> |
| |
| <DT><CODE>~+/foo</CODE> |
| <DD><TT>`$PWD/foo'</TT> |
| <P> |
| |
| <DT><CODE>~-/foo</CODE> |
| <DD><TT>`${OLDPWD-'~-'}/foo'</TT> |
| <P> |
| |
| <DT><CODE>~<VAR>N</VAR></CODE> |
| <DD>The string that would be displayed by <SAMP>`dirs +<VAR>N</VAR>'</SAMP> |
| <P> |
| |
| <DT><CODE>~+<VAR>N</VAR></CODE> |
| <DD>The string that would be displayed by <SAMP>`dirs +<VAR>N</VAR>'</SAMP> |
| <P> |
| |
| <DT><CODE>~-<VAR>N</VAR></CODE> |
| <DD>The string that would be displayed by <SAMP>`dirs -<VAR>N</VAR>'</SAMP> |
| </DL> |
| <P> |
| |
| <A NAME="Shell Parameter Expansion"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC32"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC31"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC33"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC33"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.5.3 Shell Parameter Expansion </H3> |
| <!--docid::SEC32::--> |
| <P> |
| |
| The <SAMP>`$'</SAMP> character introduces parameter expansion, |
| command substitution, or arithmetic expansion. The parameter name |
| or symbol to be expanded may be enclosed in braces, which |
| are optional but serve to protect the variable to be expanded from |
| characters immediately following it which could be |
| interpreted as part of the name. |
| </P><P> |
| |
| When braces are used, the matching ending brace is the first <SAMP>`}'</SAMP> |
| not escaped by a backslash or within a quoted string, and not within an |
| embedded arithmetic expansion, command substitution, or parameter |
| expansion. |
| </P><P> |
| |
| The basic form of parameter expansion is ${<VAR>parameter</VAR>}. |
| The value of <VAR>parameter</VAR> is substituted. |
| The <VAR>parameter</VAR> is a shell parameter as described above |
| (see section <A HREF="bashref.html#SEC26">3.4 Shell Parameters</A>) or an array reference (see section <A HREF="bashref.html#SEC86">6.7 Arrays</A>). |
| The braces are required when <VAR>parameter</VAR> |
| is a positional parameter with more than one digit, |
| or when <VAR>parameter</VAR> is followed by a character that is not to be |
| interpreted as part of its name. |
| </P><P> |
| |
| If the first character of <VAR>parameter</VAR> is an exclamation point (!), |
| it introduces a level of variable indirection. |
| Bash uses the value of the variable formed from the rest of |
| <VAR>parameter</VAR> as the name of the variable; this variable is then |
| expanded and that value is used in the rest of the substitution, rather |
| than the value of <VAR>parameter</VAR> itself. |
| This is known as <CODE>indirect expansion</CODE>. |
| The exceptions to this are the expansions of ${!<VAR>prefix</VAR>*} |
| and ${!<VAR>name</VAR>[@]} |
| described below. |
| The exclamation point must immediately follow the left brace in order to |
| introduce indirection. |
| </P><P> |
| |
| In each of the cases below, <VAR>word</VAR> is subject to tilde expansion, |
| parameter expansion, command substitution, and arithmetic expansion. |
| </P><P> |
| |
| When not performing substring expansion, using the form described |
| below (e.g., <SAMP>`:-'</SAMP>), Bash tests for a parameter that is unset or null. |
| Omitting the colon results in a test only for a parameter that is unset. |
| Put another way, if the colon is included, |
| the operator tests for both <VAR>parameter</VAR>'s existence and that its value |
| is not null; if the colon is omitted, the operator tests only for existence. |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>${<VAR>parameter</VAR>:-<VAR>word</VAR>}</CODE> |
| <DD>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> |
| |
| <DT><CODE>${<VAR>parameter</VAR>:=<VAR>word</VAR>}</CODE> |
| <DD>If <VAR>parameter</VAR> |
| is unset or null, the expansion of <VAR>word</VAR> |
| is assigned to <VAR>parameter</VAR>. |
| The value of <VAR>parameter</VAR> is then substituted. |
| Positional parameters and special parameters may not be assigned to |
| in this way. |
| <P> |
| |
| <DT><CODE>${<VAR>parameter</VAR>:?<VAR>word</VAR>}</CODE> |
| <DD>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 present) is written to the standard error and the shell, if it |
| is not interactive, exits. Otherwise, the value of <VAR>parameter</VAR> is |
| substituted. |
| <P> |
| |
| <DT><CODE>${<VAR>parameter</VAR>:+<VAR>word</VAR>}</CODE> |
| <DD>If <VAR>parameter</VAR> |
| is null or unset, nothing is substituted, otherwise the expansion of |
| <VAR>word</VAR> is substituted. |
| <P> |
| |
| <DT><CODE>${<VAR>parameter</VAR>:<VAR>offset</VAR>}</CODE> |
| <DD><DT><CODE>${<VAR>parameter</VAR>:<VAR>offset</VAR>:<VAR>length</VAR>}</CODE> |
| <DD>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 |
| <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 |
| <VAR>parameter</VAR> starting at the character specified by <VAR>offset</VAR> |
| and extending to the end of the value. |
| <VAR>length</VAR> and <VAR>offset</VAR> are arithmetic expressions |
| (see section <A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A>). |
| <P> |
| |
| If <VAR>offset</VAR> evaluates to a number less than zero, the value |
| is used as an offset in characters |
| from the end of the value of <VAR>parameter</VAR>. |
| If <VAR>length</VAR> evaluates to a number less than zero, |
| it is interpreted as an offset in characters |
| from the end of the value of <VAR>parameter</VAR> rather than |
| a number of characters, and the expansion is the characters between |
| <VAR>offset</VAR> and that result. |
| Note that a negative offset must be separated from the colon by at least |
| one space to avoid being confused with the <SAMP>`:-'</SAMP> expansion. |
| </P><P> |
| |
| Here are some examples illustrating substring expansion on parameters and |
| subscripted arrays: |
| </P><P> |
| |
| @verbatim |
| $ string=01234567890abcdefgh |
| $ echo ${string:7} |
| 7890abcdefgh |
| $ echo ${string:7:0} |
| </P><P> |
| |
| $ echo ${string:7:2} |
| 78 |
| $ echo ${string:7:-2} |
| 7890abcdef |
| $ echo ${string: -7} |
| bcdefgh |
| $ echo ${string: -7:0} |
| </P><P> |
| |
| $ echo ${string: -7:2} |
| bc |
| $ echo ${string: -7:-2} |
| bcdef |
| $ set -- 01234567890abcdefgh |
| $ echo ${1:7} |
| 7890abcdefgh |
| $ echo ${1:7:0} |
| </P><P> |
| |
| $ echo ${1:7:2} |
| 78 |
| $ echo ${1:7:-2} |
| 7890abcdef |
| $ echo ${1: -7} |
| bcdefgh |
| $ echo ${1: -7:0} |
| </P><P> |
| |
| $ echo ${1: -7:2} |
| bc |
| $ echo ${1: -7:-2} |
| bcdef |
| $ array[0]=01234567890abcdefgh |
| $ echo ${array[0]:7} |
| 7890abcdefgh |
| $ echo ${array[0]:7:0} |
| </P><P> |
| |
| $ echo ${array[0]:7:2} |
| 78 |
| $ echo ${array[0]:7:-2} |
| 7890abcdef |
| $ echo ${array[0]: -7} |
| bcdefgh |
| $ echo ${array[0]: -7:0} |
| </P><P> |
| |
| $ echo ${array[0]: -7:2} |
| bc |
| $ echo ${array[0]: -7:-2} |
| bcdef |
| </P><P> |
| |
| If <VAR>parameter</VAR> is <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. |
| It is an expansion error if <VAR>length</VAR> evaluates to a number less than zero. |
| </P><P> |
| |
| The following examples illustrate substring expansion using positional |
| parameters: |
| </P><P> |
| |
| @verbatim |
| $ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h |
| $ echo ${7} |
| 7 8 9 0 a b c d e f g h |
| $ echo ${7:0} |
| </P><P> |
| |
| $ echo ${7:2} |
| 7 8 |
| $ echo ${7:-2} |
| bash: -2: substring expression < 0 |
| $ echo ${ -7:2} |
| b c |
| $ echo ${0} |
| ./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h |
| $ echo ${0:2} |
| ./bash 1 |
| $ echo ${ -7:0} |
| </P><P> |
| |
| If <VAR>parameter</VAR> is an indexed array name subscripted |
| by <SAMP>`@'</SAMP> or <SAMP>`*'</SAMP>, the result is the <VAR>length</VAR> |
| members of the array beginning with <CODE>${<VAR>parameter</VAR>[<VAR>offset</VAR>]}</CODE>. |
| A negative <VAR>offset</VAR> is taken relative to one greater than the maximum |
| index of the specified array. |
| It is an expansion error if <VAR>length</VAR> evaluates to a number less than zero. |
| </P><P> |
| |
| These examples show how you can use substring expansion with indexed |
| arrays: |
| </P><P> |
| |
| @verbatim |
| $ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h) |
| $ echo ${array[@]:7} |
| 7 8 9 0 a b c d e f g h |
| $ echo ${array[@]:7:2} |
| 7 8 |
| $ echo ${array[@]: -7:2} |
| b c |
| $ echo ${array[@]: -7:-2} |
| bash: -2: substring expression < 0 |
| $ echo ${array[@]:0} |
| 0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h |
| $ echo ${array[@]:0:2} |
| 0 1 |
| $ echo ${array[@]: -7:0} |
| </P><P> |
| |
| Substring expansion applied to an associative array produces undefined |
| results. |
| </P><P> |
| |
| Substring indexing is zero-based unless the positional parameters |
| are used, in which case the indexing starts at 1 by default. |
| If <VAR>offset</VAR> is 0, and the positional parameters are used, <CODE>$@</CODE> is |
| prefixed to the list. |
| </P><P> |
| |
| <DT><CODE>${!<VAR>prefix</VAR>*}</CODE> |
| <DD><DT><CODE>${!<VAR>prefix</VAR>@}</CODE> |
| <DD>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> |
| |
| <DT><CODE>${!<VAR>name</VAR>[@]}</CODE> |
| <DD><DT><CODE>${!<VAR>name</VAR>[*]}</CODE> |
| <DD>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 |
| otherwise. |
| When <SAMP>`@'</SAMP> is used and the expansion appears within double quotes, each |
| key expands to a separate word. |
| <P> |
| |
| <DT><CODE>${#<VAR>parameter</VAR>}</CODE> |
| <DD>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 |
| is the number of positional parameters. |
| If <VAR>parameter</VAR> is an array name subscripted by <SAMP>`*'</SAMP> or <SAMP>`@'</SAMP>, |
| the value substituted is the number of elements in the array. |
| If <VAR>parameter</VAR> |
| is an indexed array name subscripted by a negative number, that number is |
| interpreted as relative to one greater than the maximum index of |
| <VAR>parameter</VAR>, so negative indices count back from the end of the |
| array, and an index of -1 references the last element. |
| <P> |
| |
| <DT><CODE>${<VAR>parameter</VAR>#<VAR>word</VAR>}</CODE> |
| <DD><DT><CODE>${<VAR>parameter</VAR>##<VAR>word</VAR>}</CODE> |
| <DD>The <VAR>word</VAR> |
| is expanded to produce a pattern just as in filename |
| expansion (see section <A HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A>). If the pattern matches |
| the beginning of the expanded value of <VAR>parameter</VAR>, |
| then the result of the expansion is the expanded value of <VAR>parameter</VAR> |
| with the shortest matching pattern (the <SAMP>`#'</SAMP> case) or the |
| longest matching pattern (the <SAMP>`##'</SAMP> case) deleted. |
| If <VAR>parameter</VAR> is <SAMP>`@'</SAMP> or <SAMP>`*'</SAMP>, |
| the pattern removal operation is applied to each positional |
| parameter in turn, and the expansion is the resultant list. |
| If <VAR>parameter</VAR> is an array variable subscripted with |
| <SAMP>`@'</SAMP> or <SAMP>`*'</SAMP>, |
| the pattern removal operation is applied to each member of the |
| array in turn, and the expansion is the resultant list. |
| <P> |
| |
| <DT><CODE>${<VAR>parameter</VAR>%<VAR>word</VAR>}</CODE> |
| <DD><DT><CODE>${<VAR>parameter</VAR>%%<VAR>word</VAR>}</CODE> |
| <DD>The <VAR>word</VAR> is expanded to produce a pattern just as in |
| filename expansion. |
| If the pattern matches a trailing portion of the expanded value of |
| <VAR>parameter</VAR>, then the result of the expansion is the value of |
| <VAR>parameter</VAR> with the shortest matching pattern (the <SAMP>`%'</SAMP> case) |
| or the longest matching pattern (the <SAMP>`%%'</SAMP> case) deleted. |
| If <VAR>parameter</VAR> is <SAMP>`@'</SAMP> or <SAMP>`*'</SAMP>, |
| the pattern removal operation is applied to each positional |
| parameter in turn, and the expansion is the resultant list. |
| If <VAR>parameter</VAR> |
| is an array variable subscripted with <SAMP>`@'</SAMP> or <SAMP>`*'</SAMP>, |
| the pattern removal operation is applied to each member of the |
| array in turn, and the expansion is the resultant list. |
| <P> |
| |
| <DT><CODE>${<VAR>parameter</VAR>/<VAR>pattern</VAR>/<VAR>string</VAR>}</CODE> |
| <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>. |
| 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 <VAR>parameter</VAR> is <SAMP>`@'</SAMP> or <SAMP>`*'</SAMP>, |
| the substitution operation is applied to each positional |
| parameter in turn, and the expansion is the resultant list. |
| If <VAR>parameter</VAR> |
| is an array variable subscripted with <SAMP>`@'</SAMP> or <SAMP>`*'</SAMP>, |
| the substitution operation is applied to each member of the |
| array in turn, and the expansion is the resultant list. |
| </P><P> |
| |
| <DT><CODE>${<VAR>parameter</VAR>^<VAR>pattern</VAR>}</CODE> |
| <DD><DT><CODE>${<VAR>parameter</VAR>^^<VAR>pattern</VAR>}</CODE> |
| <DD><DT><CODE>${<VAR>parameter</VAR>,<VAR>pattern</VAR>}</CODE> |
| <DD><DT><CODE>${<VAR>parameter</VAR>,,<VAR>pattern</VAR>}</CODE> |
| <DD>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> |
| 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 |
| expanded value; the <SAMP>`^'</SAMP> and <SAMP>`,'</SAMP> expansions match and convert only |
| 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>, |
| the case modification operation is applied to each positional |
| parameter in turn, and the expansion is the resultant list. |
| If <VAR>parameter</VAR> |
| is an array variable subscripted with <SAMP>`@'</SAMP> or <SAMP>`*'</SAMP>, |
| the case modification operation is applied to each member of the |
| array in turn, and the expansion is the resultant list. |
| </DL> |
| <P> |
| |
| <A NAME="Command Substitution"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC33"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC32"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC34"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC34"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.5.4 Command Substitution </H3> |
| <!--docid::SEC33::--> |
| <P> |
| |
| Command substitution allows the output of a command to replace |
| the command itself. |
| Command substitution occurs when a command is enclosed as follows: |
| <TABLE><tr><td> </td><td class=example><pre>$(<VAR>command</VAR>) |
| </pre></td></tr></table>or |
| <TABLE><tr><td> </td><td class=example><pre>`<VAR>command</VAR>` |
| </pre></td></tr></table></P><P> |
| |
| Bash performs the expansion by executing <VAR>command</VAR> and |
| replacing the command substitution with the standard output of the |
| command, with any trailing newlines deleted. |
| Embedded newlines are not deleted, but they may be removed during |
| word splitting. |
| The command substitution <CODE>$(cat <VAR>file</VAR>)</CODE> can be |
| replaced by the equivalent but faster <CODE>$(< <VAR>file</VAR>)</CODE>. |
| </P><P> |
| |
| When the old-style backquote form of substitution is used, |
| backslash retains its literal meaning except when followed by |
| <SAMP>`$'</SAMP>, <SAMP>``'</SAMP>, or <SAMP>`\'</SAMP>. |
| The first backquote not preceded by a backslash terminates the |
| command substitution. |
| When using the <CODE>$(<VAR>command</VAR>)</CODE> form, all characters between |
| the parentheses make up the command; none are treated specially. |
| </P><P> |
| |
| Command substitutions may be nested. To nest when using the backquoted |
| form, escape the inner backquotes with backslashes. |
| </P><P> |
| |
| If the substitution appears within double quotes, word splitting and |
| filename expansion are not performed on the results. |
| </P><P> |
| |
| <A NAME="Arithmetic Expansion"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC34"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC33"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC35"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC35"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.5.5 Arithmetic Expansion </H3> |
| <!--docid::SEC34::--> |
| <P> |
| |
| Arithmetic expansion allows the evaluation of an arithmetic expression |
| and the substitution of the result. The format for arithmetic expansion is: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>$(( <VAR>expression</VAR> )) |
| </pre></td></tr></table></P><P> |
| |
| The expression is treated as if it were within double quotes, but |
| a double quote inside the parentheses is not treated specially. |
| 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. |
| Arithmetic expansions may be nested. |
| </P><P> |
| |
| The evaluation is performed according to the rules listed below |
| (see section <A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A>). |
| If the expression is invalid, Bash prints a message indicating |
| failure to the standard error and no substitution occurs. |
| </P><P> |
| |
| <A NAME="Process Substitution"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC35"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC34"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC36"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC36"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.5.6 Process Substitution </H3> |
| <!--docid::SEC35::--> |
| <P> |
| |
| Process substitution is supported on systems that support named |
| pipes (FIFOs) or the <TT>`/dev/fd'</TT> method of naming open files. |
| It takes the form of |
| <TABLE><tr><td> </td><td class=example><pre><(<VAR>list</VAR>) |
| </pre></td></tr></table>or |
| <TABLE><tr><td> </td><td class=example><pre>>(<VAR>list</VAR>) |
| </pre></td></tr></table>The process <VAR>list</VAR> is run with its input or output connected to a |
| FIFO or some file in <TT>`/dev/fd'</TT>. The name of this file is |
| passed as an argument to the current command as the result of the |
| expansion. If the <CODE>>(<VAR>list</VAR>)</CODE> form is used, writing to |
| the file will provide input for <VAR>list</VAR>. If the |
| <CODE><(<VAR>list</VAR>)</CODE> form is used, the file passed as an |
| argument should be read to obtain the output of <VAR>list</VAR>. |
| Note that no space may appear between the <CODE><</CODE> or <CODE>></CODE> |
| and the left parenthesis, otherwise the construct would be interpreted |
| as a redirection. |
| </P><P> |
| |
| When available, process substitution is performed simultaneously with |
| parameter and variable expansion, command substitution, and arithmetic |
| expansion. |
| </P><P> |
| |
| <A NAME="Word Splitting"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC36"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC35"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC37"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC37"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.5.7 Word Splitting </H3> |
| <!--docid::SEC36::--> |
| <P> |
| |
| The shell scans the results of parameter expansion, command substitution, |
| and arithmetic expansion that did not occur within double quotes for |
| word splitting. |
| </P><P> |
| |
| The shell treats each character of <CODE>$IFS</CODE> as a delimiter, and splits |
| the results of the other expansions into words using these characters |
| as field terminators. |
| If <CODE>IFS</CODE> is unset, or its value is exactly <CODE><space><tab><newline></CODE>, |
| the default, then sequences of |
| <CODE> <space></CODE>, <CODE><tab></CODE>, and <CODE><newline></CODE> |
| at the beginning and end of the results of the previous |
| expansions are ignored, and any sequence of <CODE>IFS</CODE> |
| characters not at the beginning or end serves to delimit words. |
| If <CODE>IFS</CODE> has a value other than the default, then sequences of |
| the whitespace characters <CODE>space</CODE> and <CODE>tab</CODE> |
| are ignored at the beginning and end of the |
| word, as long as the whitespace character is in the |
| value of <CODE>IFS</CODE> (an <CODE>IFS</CODE> whitespace character). |
| Any character in <CODE>IFS</CODE> that is not <CODE>IFS</CODE> |
| whitespace, along with any adjacent <CODE>IFS</CODE> |
| whitespace characters, delimits a field. A sequence of <CODE>IFS</CODE> |
| whitespace characters is also treated as a delimiter. |
| If the value of <CODE>IFS</CODE> is null, no word splitting occurs. |
| </P><P> |
| |
| Explicit null arguments (<CODE>""</CODE> or <CODE>"</CODE>) are retained. |
| Unquoted implicit null arguments, resulting from the expansion of |
| parameters that have no values, are removed. |
| If a parameter with no value is expanded within double quotes, a |
| null argument results and is retained. |
| </P><P> |
| |
| Note that if no expansion occurs, no splitting |
| is performed. |
| </P><P> |
| |
| <A NAME="Filename Expansion"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC37"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC36"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC38"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC39"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC39"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.5.8 Filename Expansion </H3> |
| <!--docid::SEC37::--> |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC38">3.5.8.1 Pattern Matching</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">How the shell matches patterns.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <A NAME="IDX73"></A> |
| <A NAME="IDX74"></A> |
| <A NAME="IDX75"></A> |
| <A NAME="IDX76"></A> |
| <P> |
| |
| After word splitting, unless the <SAMP>`-f'</SAMP> option has been set |
| (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>), Bash scans each word for the characters |
| <SAMP>`*'</SAMP>, <SAMP>`?'</SAMP>, and <SAMP>`['</SAMP>. |
| If one of these characters appears, then the word is |
| regarded as a <VAR>pattern</VAR>, |
| and replaced with an alphabetically sorted list of |
| filenames matching the pattern (see section <A HREF="bashref.html#SEC38">3.5.8.1 Pattern Matching</A>). |
| If no matching filenames are found, |
| and the shell option <CODE>nullglob</CODE> is disabled, the word is left |
| unchanged. |
| If the <CODE>nullglob</CODE> option is set, and no matches are found, the word |
| is removed. |
| If the <CODE>failglob</CODE> shell option is set, and no matches are found, |
| an error message is printed and the command is not executed. |
| If the shell option <CODE>nocaseglob</CODE> is enabled, the match is performed |
| without regard to the case of alphabetic characters. |
| </P><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. |
| When matching a filename, the slash character must always be |
| matched explicitly. |
| In other cases, the <SAMP>`.'</SAMP> character is not treated specially. |
| </P><P> |
| |
| See the description of <CODE>shopt</CODE> in <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>, |
| for a description of the <CODE>nocaseglob</CODE>, <CODE>nullglob</CODE>, |
| <CODE>failglob</CODE>, and <CODE>dotglob</CODE> options. |
| </P><P> |
| |
| The <CODE>GLOBIGNORE</CODE> |
| shell variable may be used to restrict the set of filenames matching a |
| pattern. If <CODE>GLOBIGNORE</CODE> |
| is set, each matching filename that also matches one of the patterns in |
| <CODE>GLOBIGNORE</CODE> is removed from the list of matches. The filenames |
| <TT>`.'</TT> and <TT>`..'</TT> |
| are always ignored when <CODE>GLOBIGNORE</CODE> |
| is set and not null. |
| However, setting <CODE>GLOBIGNORE</CODE> to a non-null value has the effect of |
| enabling the <CODE>dotglob</CODE> |
| shell option, so all other filenames beginning with a |
| <SAMP>`.'</SAMP> will match. |
| To get the old behavior of ignoring filenames beginning with a |
| <SAMP>`.'</SAMP>, make <SAMP>`.*'</SAMP> one of the patterns in <CODE>GLOBIGNORE</CODE>. |
| The <CODE>dotglob</CODE> option is disabled when <CODE>GLOBIGNORE</CODE> |
| is unset. |
| </P><P> |
| |
| <A NAME="Pattern Matching"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC38"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC37"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC39"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC39"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC37"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC39"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H4> 3.5.8.1 Pattern Matching </H4> |
| <!--docid::SEC38::--> |
| <P> |
| |
| Any character that appears in a pattern, other than the special pattern |
| characters described below, matches itself. |
| The NUL character may not occur in a pattern. |
| A backslash escapes the following character; the |
| escaping backslash is discarded when matching. |
| The special pattern characters must be quoted if they are to be matched |
| literally. |
| </P><P> |
| |
| The special pattern characters have the following meanings: |
| <DL COMPACT> |
| <DT><CODE>*</CODE> |
| <DD>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 |
| pattern will match all files and zero or more directories and |
| subdirectories. |
| If followed by a <SAMP>`/'</SAMP>, two adjacent <SAMP>`*'</SAMP>s will match only |
| directories and subdirectories. |
| <DT><CODE>?</CODE> |
| <DD>Matches any single character. |
| <DT><CODE>[<small>...</small>]</CODE> |
| <DD>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, |
| using the current locale's collating sequence and character set, |
| is matched. If the first character following the |
| <SAMP>`['</SAMP> is a <SAMP>`!'</SAMP> or a <SAMP>`^'</SAMP> |
| then any character not enclosed is matched. A <SAMP>`-'</SAMP> |
| 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 current locale and the values of the |
| <CODE>LC_COLLATE</CODE> and <CODE>LC_ALL</CODE> shell variables, if set. |
| <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 |
| 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 |
| using the syntax |
| <CODE>[:</CODE><VAR>class</VAR><CODE>:]</CODE>, where <VAR>class</VAR> is one of the |
| following classes defined in the POSIX standard: |
| <TABLE><tr><td> </td><td class=example><pre>alnum alpha ascii blank cntrl digit graph lower |
| print punct space upper word xdigit |
| </pre></td></tr></table>A character class matches any character belonging to that class. |
| 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 |
| 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>. |
| </P><P> |
| |
| Within <SAMP>`['</SAMP> and <SAMP>`]'</SAMP>, the syntax <CODE>[.</CODE><VAR>symbol</VAR><CODE>.]</CODE> |
| matches the collating symbol <VAR>symbol</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. |
| In the following description, a <VAR>pattern-list</VAR> is a list of one |
| or more patterns separated by a <SAMP>`|'</SAMP>. |
| Composite patterns may be formed using one or more of the following |
| sub-patterns: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>?(<VAR>pattern-list</VAR>)</CODE> |
| <DD>Matches zero or one occurrence of the given patterns. |
| <P> |
| |
| <DT><CODE>*(<VAR>pattern-list</VAR>)</CODE> |
| <DD>Matches zero or more occurrences of the given patterns. |
| <P> |
| |
| <DT><CODE>+(<VAR>pattern-list</VAR>)</CODE> |
| <DD>Matches one or more occurrences of the given patterns. |
| <P> |
| |
| <DT><CODE>@(<VAR>pattern-list</VAR>)</CODE> |
| <DD>Matches one of the given patterns. |
| <P> |
| |
| <DT><CODE>!(<VAR>pattern-list</VAR>)</CODE> |
| <DD>Matches anything except one of the given patterns. |
| </DL> |
| <P> |
| |
| <A NAME="Quote Removal"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC39"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC38"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC29"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.5.9 Quote Removal </H3> |
| <!--docid::SEC39::--> |
| <P> |
| |
| After the preceding expansions, all unquoted occurrences of the |
| characters <SAMP>`\'</SAMP>, <SAMP>`''</SAMP>, and <SAMP>`"'</SAMP> that did not |
| result from one of the above expansions are removed. |
| </P><P> |
| |
| <A NAME="Redirections"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC40"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC39"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC41"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 3.6 Redirections </H2> |
| <!--docid::SEC40::--> |
| <P> |
| |
| Before a command is executed, its input and output |
| may be <VAR>redirected</VAR> |
| using a special notation interpreted by the shell. |
| Redirection 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. |
| Redirection may also be used to modify file handles in the |
| current shell execution environment. The following redirection |
| operators may precede or appear anywhere within a |
| simple command or may follow a command. |
| Redirections are processed in the order they appear, from |
| left to right. |
| </P><P> |
| |
| Each redirection that may be preceded by a file descriptor number |
| may instead be preceded by a word of the form {<VAR>varname</VAR>}. |
| In this case, for each redirection operator except |
| >&- and <&-, the shell will allocate a file descriptor greater |
| than 10 and assign it to {<VAR>varname</VAR>}. If >&- or <&- is preceded |
| by {<VAR>varname</VAR>}, the value of <VAR>varname</VAR> defines the file |
| descriptor to close. |
| </P><P> |
| |
| In the following descriptions, if the file descriptor number is |
| omitted, and the first character of the redirection operator is |
| <SAMP>`<'</SAMP>, the redirection refers to the standard input (file |
| descriptor 0). If the first character of the redirection operator |
| is <SAMP>`>'</SAMP>, the redirection refers to the standard output (file |
| descriptor 1). |
| </P><P> |
| |
| The word following the redirection operator in the following |
| descriptions, unless otherwise noted, is subjected to brace expansion, |
| tilde expansion, parameter expansion, command substitution, arithmetic |
| expansion, quote removal, filename expansion, and word splitting. |
| If it expands to more than one word, Bash reports an error. |
| </P><P> |
| |
| Note that the order of redirections is significant. For example, |
| the command |
| <TABLE><tr><td> </td><td class=example><pre>ls > <VAR>dirlist</VAR> 2>&1 |
| </pre></td></tr></table>directs both standard output (file descriptor 1) and standard error |
| (file descriptor 2) to the file <VAR>dirlist</VAR>, while the command |
| <TABLE><tr><td> </td><td class=example><pre>ls 2>&1 > <VAR>dirlist</VAR> |
| </pre></td></tr></table>directs only the standard output to file <VAR>dirlist</VAR>, |
| because the standard error was made a copy of the standard output |
| before the standard output was redirected to <VAR>dirlist</VAR>. |
| </P><P> |
| |
| Bash handles several filenames specially when they are used in |
| redirections, as described in the following table: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>/dev/fd/<VAR>fd</VAR></CODE> |
| <DD>If <VAR>fd</VAR> is a valid integer, file descriptor <VAR>fd</VAR> is duplicated. |
| <P> |
| |
| <DT><CODE>/dev/stdin</CODE> |
| <DD>File descriptor 0 is duplicated. |
| <P> |
| |
| <DT><CODE>/dev/stdout</CODE> |
| <DD>File descriptor 1 is duplicated. |
| <P> |
| |
| <DT><CODE>/dev/stderr</CODE> |
| <DD>File descriptor 2 is duplicated. |
| <P> |
| |
| <DT><CODE>/dev/tcp/<VAR>host</VAR>/<VAR>port</VAR></CODE> |
| <DD>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> |
| |
| <DT><CODE>/dev/udp/<VAR>host</VAR>/<VAR>port</VAR></CODE> |
| <DD>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. |
| </DL> |
| <P> |
| |
| A failure to open or create a file causes the redirection to fail. |
| </P><P> |
| |
| Redirections using file descriptors greater than 9 should be used with |
| care, as they may conflict with file descriptors the shell uses |
| internally. |
| </P><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC41"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC42"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.6.1 Redirecting Input </H3> |
| <!--docid::SEC41::--> |
| 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>, |
| or the standard input (file descriptor 0) if <CODE>n</CODE> |
| is not specified. |
| <P> |
| |
| The general format for redirecting input is: |
| <TABLE><tr><td> </td><td class=example><pre>[<VAR>n</VAR>]<<VAR>word</VAR> |
| </pre></td></tr></table></P><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC42"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC41"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC43"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC43"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.6.2 Redirecting Output </H3> |
| <!--docid::SEC42::--> |
| 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>, |
| or the standard output (file descriptor 1) if <VAR>n</VAR> |
| is not specified. If the file does not exist it is created; |
| if it does exist it is truncated to zero size. |
| <P> |
| |
| The general format for redirecting output is: |
| <TABLE><tr><td> </td><td class=example><pre>[<VAR>n</VAR>]>[|]<VAR>word</VAR> |
| </pre></td></tr></table></P><P> |
| |
| If the redirection operator is <SAMP>`>'</SAMP>, and the <CODE>noclobber</CODE> |
| option to the <CODE>set</CODE> builtin has been enabled, the redirection |
| will fail if the file whose name results from the expansion of |
| <VAR>word</VAR> exists and is a regular file. |
| If the redirection operator is <SAMP>`>|'</SAMP>, or the redirection operator is |
| <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><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC43"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC42"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC44"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC44"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.6.3 Appending Redirected Output </H3> |
| <!--docid::SEC43::--> |
| Redirection of output in this fashion |
| causes the file whose name results from |
| the expansion of <VAR>word</VAR> |
| to be opened for appending on file descriptor <VAR>n</VAR>, |
| or the standard output (file descriptor 1) if <VAR>n</VAR> |
| is not specified. If the file does not exist it is created. |
| <P> |
| |
| The general format for appending output is: |
| <TABLE><tr><td> </td><td class=example><pre>[<VAR>n</VAR>]>><VAR>word</VAR> |
| </pre></td></tr></table></P><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC44"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC43"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC45"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC45"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.6.4 Redirecting Standard Output and Standard Error </H3> |
| <!--docid::SEC44::--> |
| This construct allows both the |
| standard output (file descriptor 1) and |
| the standard error output (file descriptor 2) |
| to be redirected to the file whose name is the |
| expansion of <VAR>word</VAR>. |
| <P> |
| |
| There are two formats for redirecting standard output and |
| standard error: |
| <TABLE><tr><td> </td><td class=example><pre>&><VAR>word</VAR> |
| </pre></td></tr></table>and |
| <TABLE><tr><td> </td><td class=example><pre>>&<VAR>word</VAR> |
| </pre></td></tr></table>Of the two forms, the first is preferred. |
| This is semantically equivalent to |
| <TABLE><tr><td> </td><td class=example><pre>><VAR>word</VAR> 2>&1 |
| </pre></td></tr></table>When using the second form, <VAR>word</VAR> may not expand to a number or |
| <SAMP>`-'</SAMP>. If it does, other redirection operators apply |
| (see Duplicating File Descriptors below) for compatibility reasons. |
| </P><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC45"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC44"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC46"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC46"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.6.5 Appending Standard Output and Standard Error </H3> |
| <!--docid::SEC45::--> |
| This construct allows both the |
| standard output (file descriptor 1) and |
| the standard error output (file descriptor 2) |
| to be appended to the file whose name is the |
| expansion of <VAR>word</VAR>. |
| <P> |
| |
| The format for appending standard output and standard error is: |
| <TABLE><tr><td> </td><td class=example><pre>&>><VAR>word</VAR> |
| </pre></td></tr></table>This is semantically equivalent to |
| <TABLE><tr><td> </td><td class=example><pre>>><VAR>word</VAR> 2>&1 |
| </pre></td></tr></table>(see Duplicating File Descriptors below). |
| </P><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC46"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC45"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC47"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC47"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.6.6 Here Documents </H3> |
| <!--docid::SEC46::--> |
| 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 |
| the lines read up to that point are then used as the standard |
| input for a command. |
| <P> |
| |
| The format of here-documents is: |
| <TABLE><tr><td> </td><td class=example><pre><<[-]<VAR>word</VAR> |
| <VAR>here-document</VAR> |
| <VAR>delimiter</VAR> |
| </pre></td></tr></table></P><P> |
| |
| No parameter and variable expansion, command substitution, |
| arithmetic expansion, or filename expansion is performed on |
| <VAR>word</VAR>. If any characters in <VAR>word</VAR> are quoted, the |
| <VAR>delimiter</VAR> is the result of quote removal on <VAR>word</VAR>, |
| and the lines in the here-document are not expanded. |
| If <VAR>word</VAR> is unquoted, |
| all lines of the here-document are subjected to |
| parameter expansion, command substitution, and arithmetic expansion, |
| the character sequence <CODE>\newline</CODE> is ignored, and <SAMP>`\'</SAMP> |
| must be used to quote the characters |
| <SAMP>`\'</SAMP>, <SAMP>`$'</SAMP>, and <SAMP>``'</SAMP>. |
| </P><P> |
| |
| If the redirection operator is <SAMP>`<<-'</SAMP>, |
| then all leading tab characters are stripped from input lines and the |
| line containing <VAR>delimiter</VAR>. |
| This allows here-documents within shell scripts to be indented in a |
| natural fashion. |
| </P><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC47"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC46"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC48"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC48"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.6.7 Here Strings </H3> |
| <!--docid::SEC47::--> |
| A variant of here documents, the format is: |
| <TABLE><tr><td> </td><td class=example><pre><<< <VAR>word</VAR> |
| </pre></td></tr></table><P> |
| |
| The <VAR>word</VAR> undergoes |
| brace expansion, tilde expansion, parameter and variable expansion, |
| command substitution, arithmetic expansion, and quote removal. |
| Pathname expansion and word splitting are not performed. |
| The result is supplied as a single string to the command on its |
| standard input. |
| </P><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC48"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC47"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC49"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC49"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.6.8 Duplicating File Descriptors </H3> |
| <!--docid::SEC48::--> |
| The redirection operator |
| <TABLE><tr><td> </td><td class=example><pre>[<VAR>n</VAR>]<&<VAR>word</VAR> |
| </pre></td></tr></table>is used to duplicate input file descriptors. |
| If <VAR>word</VAR> |
| expands to one or more digits, the file descriptor denoted by <VAR>n</VAR> |
| is made to be a copy of that file descriptor. |
| If the digits in <VAR>word</VAR> do not specify a file descriptor open for |
| input, a redirection error occurs. |
| If <VAR>word</VAR> |
| evaluates to <SAMP>`-'</SAMP>, file descriptor <VAR>n</VAR> is closed. |
| If <VAR>n</VAR> is not specified, the standard input (file descriptor 0) is used. |
| <P> |
| |
| The operator |
| <TABLE><tr><td> </td><td class=example><pre>[<VAR>n</VAR>]>&<VAR>word</VAR> |
| </pre></td></tr></table>is used similarly to duplicate output file descriptors. If |
| <VAR>n</VAR> is not specified, the standard output (file descriptor 1) is used. |
| If the digits in <VAR>word</VAR> do not specify a file descriptor open for |
| output, a redirection error occurs. |
| If <VAR>word</VAR> |
| evaluates to <SAMP>`-'</SAMP>, file descriptor <VAR>n</VAR> is closed. |
| As a special case, if <VAR>n</VAR> is omitted, and <VAR>word</VAR> does not |
| expand to one or more digits or <SAMP>`-'</SAMP>, the standard output and standard |
| error are redirected as described previously. |
| </P><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC49"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC48"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.6.9 Moving File Descriptors </H3> |
| <!--docid::SEC49::--> |
| The redirection operator |
| <TABLE><tr><td> </td><td class=example><pre>[<VAR>n</VAR>]<&<VAR>digit</VAR>- |
| </pre></td></tr></table>moves the file descriptor <VAR>digit</VAR> to file descriptor <VAR>n</VAR>, |
| or the standard input (file descriptor 0) if <VAR>n</VAR> is not specified. |
| <VAR>digit</VAR> is closed after being duplicated to <VAR>n</VAR>. |
| <P> |
| |
| Similarly, the redirection operator |
| <TABLE><tr><td> </td><td class=example><pre>[<VAR>n</VAR>]>&<VAR>digit</VAR>- |
| </pre></td></tr></table>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><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC50"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC49"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC42"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC40"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.6.10 Opening File Descriptors for Reading and Writing </H3> |
| <!--docid::SEC50::--> |
| The redirection operator |
| <TABLE><tr><td> </td><td class=example><pre>[<VAR>n</VAR>]<><VAR>word</VAR> |
| </pre></td></tr></table>causes the file whose name is the expansion of <VAR>word</VAR> |
| to be opened for both reading and writing on file descriptor |
| <VAR>n</VAR>, or on file descriptor 0 if <VAR>n</VAR> |
| is not specified. If the file does not exist, it is created. |
| <P> |
| |
| <A NAME="Executing Commands"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC51"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC52"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 3.7 Executing Commands </H2> |
| <!--docid::SEC51::--> |
| <P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC52">3.7.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="bashref.html#SEC53">3.7.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="bashref.html#SEC54">3.7.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="bashref.html#SEC55">3.7.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="bashref.html#SEC56">3.7.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="bashref.html#SEC57">3.7.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></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Simple Command Expansion"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC52"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC53"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.7.1 Simple Command Expansion </H3> |
| <!--docid::SEC52::--> |
| <P> |
| |
| When a simple command is executed, the shell performs the following |
| expansions, assignments, and redirections, from left to right. |
| </P><P> |
| |
| <OL> |
| <LI> |
| The words that the parser has marked as variable assignments (those |
| preceding the command name) and redirections are saved for later |
| processing. |
| <P> |
| |
| <LI> |
| The words that are not variable assignments or redirections are |
| expanded (see section <A HREF="bashref.html#SEC29">3.5 Shell Expansions</A>). |
| If any words remain after expansion, the first word |
| is taken to be the name of the command and the remaining words are |
| the arguments. |
| <P> |
| |
| <LI> |
| Redirections are performed as described above (see section <A HREF="bashref.html#SEC40">3.6 Redirections</A>). |
| <P> |
| |
| <LI> |
| The text after the <SAMP>`='</SAMP> in each variable assignment undergoes tilde |
| expansion, parameter expansion, command substitution, arithmetic expansion, |
| and quote removal before being assigned to the variable. |
| </OL> |
| <P> |
| |
| If no command name results, the variable assignments affect the current |
| shell environment. 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. |
| </P><P> |
| |
| If no command name results, redirections are performed, but do not |
| affect the current shell environment. A redirection error causes the |
| command to exit with a non-zero status. |
| </P><P> |
| |
| If there is a command name left after expansion, execution proceeds as |
| described below. Otherwise, the command exits. If one of the expansions |
| contained a command substitution, the exit status of the command is |
| the exit status of the last command substitution performed. If there |
| were no command substitutions, the command exits with a status of zero. |
| </P><P> |
| |
| <A NAME="Command Search and Execution"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC53"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC52"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC54"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC54"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.7.2 Command Search and Execution </H3> |
| <!--docid::SEC53::--> |
| <P> |
| |
| After a command has been split into words, if it results in a |
| simple command and an optional list of arguments, the following |
| actions are taken. |
| </P><P> |
| |
| <OL> |
| <LI> |
| If the command name contains no slashes, the shell attempts to |
| locate it. If there exists a shell function by that name, that |
| function is invoked as described in <A HREF="bashref.html#SEC25">3.3 Shell Functions</A>. |
| <P> |
| |
| <LI> |
| If the name does not match a function, the shell searches for |
| it in the list of shell builtins. If a match is found, that |
| builtin is invoked. |
| <P> |
| |
| <LI> |
| If the name is neither a shell function nor a builtin, |
| and contains no slashes, Bash searches each element of |
| <CODE>$PATH</CODE> for a directory containing an executable file |
| by that name. Bash uses a hash table to remember the full |
| pathnames of executable files to avoid multiple <CODE>PATH</CODE> searches |
| (see the description of <CODE>hash</CODE> in <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| A full search of the directories in <CODE>$PATH</CODE> |
| is performed only if the command is not found in the hash table. |
| If the search is unsuccessful, the shell searches for a defined shell |
| function named <CODE>command_not_found_handle</CODE>. |
| If that function exists, it is invoked with the original command and |
| the original command's arguments as its arguments, and the function's |
| exit status becomes the exit status of the shell. |
| If that function is not defined, the shell prints an error |
| message and returns an exit status of 127. |
| <P> |
| |
| <LI> |
| If the search is successful, or if the command name contains |
| one or more slashes, the shell executes the named program in |
| a separate execution environment. |
| Argument 0 is set to the name given, and the remaining arguments |
| to the command are set to the arguments supplied, if any. |
| <P> |
| |
| <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 |
| <A HREF="bashref.html#SEC58">3.8 Shell Scripts</A>. |
| <P> |
| |
| <LI> |
| If the command was not begun asynchronously, the shell waits for |
| the command to complete and collects its exit status. |
| <P> |
| |
| </OL> |
| <P> |
| |
| <A NAME="Command Execution Environment"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC54"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC53"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC55"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC55"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.7.3 Command Execution Environment </H3> |
| <!--docid::SEC54::--> |
| <P> |
| |
| The shell has an <VAR>execution environment</VAR>, which consists of the |
| following: |
| </P><P> |
| |
| <UL> |
| <LI> |
| open files inherited by the shell at invocation, as modified by |
| redirections supplied to the <CODE>exec</CODE> builtin |
| <P> |
| |
| <LI> |
| the current working directory as set by <CODE>cd</CODE>, <CODE>pushd</CODE>, or |
| <CODE>popd</CODE>, or inherited by the shell at invocation |
| <P> |
| |
| <LI> |
| the file creation mode mask as set by <CODE>umask</CODE> or inherited from |
| the shell's parent |
| <P> |
| |
| <LI> |
| current traps set by <CODE>trap</CODE> |
| <P> |
| |
| <LI> |
| shell parameters that are set by variable assignment or with <CODE>set</CODE> |
| or inherited from the shell's parent in the environment |
| <P> |
| |
| <LI> |
| shell functions defined during execution or inherited from the shell's |
| parent in the environment |
| <P> |
| |
| <LI> |
| options enabled at invocation (either by default or with command-line |
| arguments) or by <CODE>set</CODE> |
| <P> |
| |
| <LI> |
| options enabled by <CODE>shopt</CODE> (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>) |
| <P> |
| |
| <LI> |
| shell aliases defined with <CODE>alias</CODE> (see section <A HREF="bashref.html#SEC85">6.6 Aliases</A>) |
| <P> |
| |
| <LI> |
| various process IDs, including those of background jobs |
| (see section <A HREF="bashref.html#SEC18">3.2.3 Lists of Commands</A>), the value of <CODE>$$</CODE>, and the value of |
| <CODE>$PPID</CODE> |
| <P> |
| |
| </UL> |
| <P> |
| |
| When a simple command other than a builtin or shell function |
| is to be executed, it |
| is invoked in a separate execution environment that consists of |
| the following. Unless otherwise noted, the values are inherited |
| from the shell. |
| </P><P> |
| |
| <UL> |
| <LI> |
| the shell's open files, plus any modifications and additions specified |
| by redirections to the command |
| <P> |
| |
| <LI> |
| the current working directory |
| <P> |
| |
| <LI> |
| the file creation mode mask |
| <P> |
| |
| <LI> |
| shell variables and functions marked for export, along with variables |
| exported for the command, passed in the environment (see section <A HREF="bashref.html#SEC55">3.7.4 Environment</A>) |
| <P> |
| |
| <LI> |
| traps caught by the shell are reset to the values inherited from the |
| shell's parent, and traps ignored by the shell are ignored |
| <P> |
| |
| </UL> |
| <P> |
| |
| A command invoked in this separate environment cannot affect the |
| shell's execution environment. |
| </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, |
| except that traps caught by the shell are reset to the values |
| that the shell inherited from its parent at invocation. Builtin |
| commands that are invoked as part of a pipeline are also executed |
| in a subshell environment. Changes made to the subshell environment |
| cannot affect the shell's execution environment. |
| </P><P> |
| |
| Subshells spawned to execute command substitutions inherit the value of |
| the <SAMP>`-e'</SAMP> option from the parent shell. When not in POSIX mode, |
| Bash clears the <SAMP>`-e'</SAMP> option in such subshells. |
| </P><P> |
| |
| If a command is followed by a <SAMP>`&'</SAMP> and job control is not active, the |
| default standard input for the command is the empty file <TT>`/dev/null'</TT>. |
| Otherwise, the invoked command inherits the file descriptors of the calling |
| shell as modified by redirections. |
| </P><P> |
| |
| <A NAME="Environment"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC55"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC54"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC56"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC56"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.7.4 Environment </H3> |
| <!--docid::SEC55::--> |
| <P> |
| |
| When a program is invoked it is given an array of strings |
| called the <VAR>environment</VAR>. |
| 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> |
| 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 |
| deleted from the environment. If the value of a parameter |
| in the environment is modified, the new value becomes part |
| of the environment, replacing the old. The environment |
| inherited by any executed command consists of the shell's |
| initial environment, whose values may be modified in the shell, |
| less any pairs removed by the <CODE>unset</CODE> and <SAMP>`export -n'</SAMP> |
| commands, plus any additions via the <CODE>export</CODE> and |
| <SAMP>`declare -x'</SAMP> commands. |
| </P><P> |
| |
| The environment for any simple command |
| or function may be augmented temporarily by prefixing it with |
| parameter assignments, as described in <A HREF="bashref.html#SEC26">3.4 Shell Parameters</A>. |
| These assignment statements affect only the environment seen |
| by that command. |
| </P><P> |
| |
| If the <SAMP>`-k'</SAMP> option is set (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>), then all |
| parameter assignments are placed in the environment for a command, |
| not just those that precede the command name. |
| </P><P> |
| |
| When Bash invokes an external command, the variable <SAMP>`$_'</SAMP> |
| is set to the full pathname of the command and passed to that |
| command in its environment. |
| </P><P> |
| |
| <A NAME="Exit Status"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC56"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC55"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC57"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC57"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.7.5 Exit Status </H3> |
| <!--docid::SEC56::--> |
| <P> |
| |
| The exit status of an executed command is the value returned by the |
| <VAR>waitpid</VAR> 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 |
| circumstances, the shell will use special values to indicate specific |
| failure modes. |
| </P><P> |
| |
| For the shell's purposes, a command which exits with a |
| zero exit status has succeeded. |
| A non-zero exit status indicates failure. |
| This seemingly counter-intuitive scheme is used so there |
| is one well-defined way to indicate success and a variety of |
| ways to indicate various failure modes. |
| When a command terminates on a fatal signal whose number is <VAR>N</VAR>, |
| Bash uses the value 128+<VAR>N</VAR> as the exit status. |
| </P><P> |
| |
| If a command is not found, the child process created to |
| execute it returns a status of 127. If a command is found |
| but is not executable, the return status is 126. |
| </P><P> |
| |
| If a command fails because of an error during expansion or redirection, |
| the exit status is greater than zero. |
| </P><P> |
| |
| The exit status is used by the Bash conditional commands |
| (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>) and some of the list |
| constructs (see section <A HREF="bashref.html#SEC18">3.2.3 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 |
| conditional and list constructs. |
| All builtins return an exit status of 2 to indicate incorrect usage. |
| </P><P> |
| |
| <A NAME="Signals"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC57"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC56"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC51"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 3.7.6 Signals </H3> |
| <!--docid::SEC57::--> |
| <P> |
| |
| When Bash is interactive, in the absence of any traps, it ignores |
| <CODE>SIGTERM</CODE> (so that <SAMP>`kill 0'</SAMP> does not kill an interactive shell), |
| and <CODE>SIGINT</CODE> |
| is caught and handled (so that the <CODE>wait</CODE> builtin is interruptible). |
| When Bash receives a <CODE>SIGINT</CODE>, it breaks out of any executing loops. |
| In all cases, Bash ignores <CODE>SIGQUIT</CODE>. |
| If job control is in effect (see section <A HREF="bashref.html#SEC92">7. Job Control</A>), Bash |
| ignores <CODE>SIGTTIN</CODE>, <CODE>SIGTTOU</CODE>, and <CODE>SIGTSTP</CODE>. |
| </P><P> |
| |
| Non-builtin commands started by Bash have signal handlers set to the |
| values inherited by the shell from its parent. |
| When job control is not in effect, asynchronous commands |
| ignore <CODE>SIGINT</CODE> and <CODE>SIGQUIT</CODE> in addition to these inherited |
| handlers. |
| Commands run as a result of |
| command substitution ignore the keyboard-generated job control signals |
| <CODE>SIGTTIN</CODE>, <CODE>SIGTTOU</CODE>, and <CODE>SIGTSTP</CODE>. |
| </P><P> |
| |
| The shell exits by default upon receipt of a <CODE>SIGHUP</CODE>. |
| Before exiting, an interactive shell resends the <CODE>SIGHUP</CODE> to |
| all jobs, running or stopped. |
| Stopped jobs are sent <CODE>SIGCONT</CODE> to ensure that they receive |
| the <CODE>SIGHUP</CODE>. |
| To prevent the shell from sending the <CODE>SIGHUP</CODE> signal to a |
| particular job, it should be removed |
| from the jobs table with the <CODE>disown</CODE> |
| builtin (see section <A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A>) or marked |
| to not receive <CODE>SIGHUP</CODE> using <CODE>disown -h</CODE>. |
| </P><P> |
| |
| If the <CODE>huponexit</CODE> shell option has been set with <CODE>shopt</CODE> |
| (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>), Bash sends a <CODE>SIGHUP</CODE> to all jobs when |
| an interactive login shell exits. |
| </P><P> |
| |
| If Bash is waiting for a command to complete and receives a signal |
| for which a trap has been set, the trap will not be executed until |
| the command completes. |
| When Bash is waiting for an asynchronous |
| command via the <CODE>wait</CODE> builtin, the reception of a signal for |
| which a trap has been set will cause the <CODE>wait</CODE> builtin to return |
| immediately with an exit status greater than 128, immediately after |
| which the trap is executed. |
| </P><P> |
| |
| <A NAME="Shell Scripts"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC58"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC57"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 3.8 Shell Scripts </H2> |
| <!--docid::SEC58::--> |
| <P> |
| |
| A shell script is a text file containing shell commands. When such |
| a file is used as the first non-option argument when invoking Bash, |
| and neither the <SAMP>`-c'</SAMP> nor <SAMP>`-s'</SAMP> option is supplied |
| (see section <A HREF="bashref.html#SEC70">6.1 Invoking Bash</A>), |
| Bash reads and executes commands from the file, then exits. This |
| mode of operation creates a non-interactive shell. The shell first |
| searches for the file in the current directory, and looks in the |
| directories in <CODE>$PATH</CODE> if not found there. |
| </P><P> |
| |
| When Bash runs |
| a shell script, it sets the special parameter <CODE>0</CODE> to the name |
| of the file, rather than the name of the shell, and the positional |
| parameters are set to the remaining arguments, if any are given. |
| If no additional arguments are supplied, the positional parameters |
| are unset. |
| </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 |
| <TABLE><tr><td> </td><td class=example><pre>filename <VAR>arguments</VAR> |
| </pre></td></tr></table>is equivalent to executing |
| <TABLE><tr><td> </td><td class=example><pre>bash filename <VAR>arguments</VAR> |
| </pre></td></tr></table></P><P> |
| |
| if <CODE>filename</CODE> is an executable shell script. |
| This subshell reinitializes itself, so that the effect is as if a |
| new shell had been invoked to interpret the script, with the |
| exception that the locations of commands remembered by the parent |
| (see the description of <CODE>hash</CODE> in <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>) |
| are retained by the child. |
| </P><P> |
| |
| Most versions of Unix make this a part of the operating system's command |
| execution mechanism. If the first line of a script begins with |
| the two characters <SAMP>`#!'</SAMP>, the remainder of the line specifies |
| an interpreter for the program. |
| Thus, you can specify Bash, <CODE>awk</CODE>, Perl, or some other |
| interpreter and write the rest of the script file in that language. |
| </P><P> |
| |
| The arguments to the interpreter |
| consist of a single optional argument following the interpreter |
| name on the first line of the script file, followed by the name of |
| the script file, followed by the rest of the arguments. Bash |
| will perform this action on operating systems that do not handle it |
| themselves. Note that some older versions of Unix limit the interpreter |
| name and argument to a maximum of 32 characters. |
| </P><P> |
| |
| Bash scripts often begin with <CODE>#! /bin/bash</CODE> (assuming that |
| Bash has been installed in <TT>`/bin'</TT>), since this ensures that |
| Bash will be used to interpret the script, even if it is executed |
| under another shell. |
| </P><P> |
| |
| <A NAME="Shell Builtin Commands"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC59"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC60"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> 4. Shell Builtin Commands </H1> |
| <!--docid::SEC59::--> |
| <P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC60">4.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="bashref.html#SEC61">4.2 Bash Builtin Commands</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="bashref.html#SEC62">4.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="bashref.html#SEC65">4.4 Special Builtins</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Builtin commands classified specially by |
| POSIX.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| Builtin commands are contained within the shell itself. |
| When the name of a builtin command is used as the first word of |
| a simple command (see section <A HREF="bashref.html#SEC16">3.2.1 Simple Commands</A>), the shell executes |
| the command directly, without invoking another program. |
| Builtin commands are necessary to implement functionality impossible |
| or inconvenient to obtain with separate utilities. |
| </P><P> |
| |
| This section briefly describes the builtins which Bash inherits from |
| the Bourne Shell, as well as the builtin commands which are unique |
| to or have been extended in Bash. |
| </P><P> |
| |
| Several builtin commands are described in other chapters: builtin |
| commands which provide the Bash interface to the job control |
| facilities (see section <A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A>), the directory stack |
| (see section <A HREF="bashref.html#SEC88">6.8.1 Directory Stack Builtins</A>), the command history |
| (see section <A HREF="bashref.html#SEC123">9.2 Bash History Builtins</A>), and the programmable completion |
| facilities (see section <A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A>). |
| </P><P> |
| |
| Many of the builtins have been extended by POSIX or Bash. |
| </P><P> |
| |
| Unless otherwise noted, each builtin command documented as accepting |
| options preceded by <SAMP>`-'</SAMP> accepts <SAMP>`--'</SAMP> |
| to signify the end of the options. |
| The <CODE>:</CODE>, <CODE>true</CODE>, <CODE>false</CODE>, and <CODE>test</CODE> |
| builtins do not accept options and do not treat <SAMP>`--'</SAMP> specially. |
| The <CODE>exit</CODE>, <CODE>logout</CODE>, <CODE>break</CODE>, <CODE>continue</CODE>, <CODE>let</CODE>, |
| and <CODE>shift</CODE> builtins accept and process arguments beginning |
| with <SAMP>`-'</SAMP> without requiring <SAMP>`--'</SAMP>. |
| Other builtins that accept arguments but are not specified as accepting |
| options interpret arguments beginning with <SAMP>`-'</SAMP> as invalid options and |
| require <SAMP>`--'</SAMP> to prevent this interpretation. |
| </P><P> |
| |
| <A NAME="Bourne Shell Builtins"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC60"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC61"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 4.1 Bourne Shell Builtins </H2> |
| <!--docid::SEC60::--> |
| <P> |
| |
| The following shell builtin commands are inherited from the Bourne Shell. |
| These commands are implemented as specified by the POSIX standard. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>: (a colon)</CODE> |
| <DD><A NAME="IDX77"></A> |
| <TABLE><tr><td> </td><td class=example><pre>: [<VAR>arguments</VAR>] |
| </pre></td></tr></table><P> |
| |
| Do nothing beyond expanding <VAR>arguments</VAR> and performing redirections. |
| The return status is zero. |
| </P><P> |
| |
| <DT><CODE>. (a period)</CODE> |
| <DD><A NAME="IDX78"></A> |
| <TABLE><tr><td> </td><td class=example><pre>. <VAR>filename</VAR> [<VAR>arguments</VAR>] |
| </pre></td></tr></table><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 POSIX mode, the current directory is searched |
| 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. |
| 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><P> |
| |
| <DT><CODE>break</CODE> |
| <DD><A NAME="IDX79"></A> |
| <TABLE><tr><td> </td><td class=example><pre>break [<VAR>n</VAR>] |
| </pre></td></tr></table><P> |
| |
| Exit from a <CODE>for</CODE>, <CODE>while</CODE>, <CODE>until</CODE>, or <CODE>select</CODE> loop. |
| If <VAR>n</VAR> is supplied, the <VAR>n</VAR>th enclosing loop is exited. |
| <VAR>n</VAR> must be greater than or equal to 1. |
| The return status is zero unless <VAR>n</VAR> is not greater than or equal to 1. |
| </P><P> |
| |
| <DT><CODE>cd</CODE> |
| <DD><A NAME="IDX80"></A> |
| <TABLE><tr><td> </td><td class=example><pre>cd [-L|[-P [-e]] [-@] [<VAR>directory</VAR>] |
| </pre></td></tr></table><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 |
| <VAR>directory</VAR>, with alternative directory names in <CODE>CDPATH</CODE> |
| separated by a colon (<SAMP>`:'</SAMP>). |
| If <VAR>directory</VAR> begins with a slash, <CODE>CDPATH</CODE> is not used. |
| </P><P> |
| |
| The <SAMP>`-P'</SAMP> option means to not follow symbolic links: symbolic links |
| are resolved while <CODE>cd</CODE> is traversing <VAR>directory</VAR> and before |
| processing an instance of <SAMP>`..'</SAMP> in <VAR>directory</VAR>. |
| </P><P> |
| |
| By default, or when the <SAMP>`-L'</SAMP> option is supplied, symbolic links |
| in <VAR>directory</VAR> are resolved after <CODE>cd</CODE> processes an instance |
| of <SAMP>`..'</SAMP> in <VAR>directory</VAR>. |
| </P><P> |
| |
| If <SAMP>`..'</SAMP> appears in <VAR>directory</VAR>, it is processed by removing the |
| immediately preceding pathname component, back to a slash or the beginning |
| of <VAR>directory</VAR>. |
| </P><P> |
| |
| If the <SAMP>`-e'</SAMP> option is supplied with <SAMP>`-P'</SAMP> |
| and the current working directory cannot be successfully determined |
| after a successful directory change, <CODE>cd</CODE> will return an unsuccessful |
| status. |
| </P><P> |
| |
| On systems that support it, the <SAMP>`-@'</SAMP> option presents the extended |
| attributes associated with a file as a directory. |
| </P><P> |
| |
| If <VAR>directory</VAR> is <SAMP>`-'</SAMP>, it is converted to <CODE>$OLDPWD</CODE> |
| before the directory change is attempted. |
| </P><P> |
| |
| If a non-empty directory name from <CODE>CDPATH</CODE> is used, or if |
| <SAMP>`-'</SAMP> is the first argument, and the directory change is |
| successful, the absolute pathname of the new working directory is |
| written to the standard output. |
| </P><P> |
| |
| The return status is zero if the directory is successfully changed, |
| non-zero otherwise. |
| </P><P> |
| |
| <DT><CODE>continue</CODE> |
| <DD><A NAME="IDX81"></A> |
| <TABLE><tr><td> </td><td class=example><pre>continue [<VAR>n</VAR>] |
| </pre></td></tr></table><P> |
| |
| Resume the next iteration of an enclosing <CODE>for</CODE>, <CODE>while</CODE>, |
| <CODE>until</CODE>, or <CODE>select</CODE> loop. |
| If <VAR>n</VAR> is supplied, the execution of the <VAR>n</VAR>th enclosing loop |
| is resumed. |
| <VAR>n</VAR> must be greater than or equal to 1. |
| The return status is zero unless <VAR>n</VAR> is not greater than or equal to 1. |
| </P><P> |
| |
| <DT><CODE>eval</CODE> |
| <DD><A NAME="IDX82"></A> |
| <TABLE><tr><td> </td><td class=example><pre>eval [<VAR>arguments</VAR>] |
| </pre></td></tr></table><P> |
| |
| The arguments are concatenated together into a single command, which is |
| then read and executed, and its exit status returned as the exit status |
| of <CODE>eval</CODE>. |
| If there are no arguments or only empty arguments, the return status is |
| zero. |
| </P><P> |
| |
| <DT><CODE>exec</CODE> |
| <DD><A NAME="IDX83"></A> |
| <TABLE><tr><td> </td><td class=example><pre>exec [-cl] [-a <VAR>name</VAR>] [<VAR>command</VAR> [<VAR>arguments</VAR>]] |
| </pre></td></tr></table><P> |
| |
| If <VAR>command</VAR> |
| is supplied, it replaces the shell without creating a new process. |
| If the <SAMP>`-l'</SAMP> option is supplied, the shell places a dash at the |
| beginning of the zeroth argument passed to <VAR>command</VAR>. |
| This is what the <CODE>login</CODE> program does. |
| The <SAMP>`-c'</SAMP> option causes <VAR>command</VAR> to be executed with an empty |
| environment. |
| If <SAMP>`-a'</SAMP> is supplied, the shell passes <VAR>name</VAR> as the zeroth |
| argument to <VAR>command</VAR>. |
| If <VAR>command</VAR> |
| cannot be executed for some reason, a non-interactive shell exits, |
| unless the <CODE>execfail</CODE> shell option |
| is enabled. In that case, it returns failure. |
| An interactive shell returns failure if the file cannot be executed. |
| If no <VAR>command</VAR> is specified, redirections may be used to affect |
| the current shell environment. If there are no redirection errors, the |
| return status is zero; otherwise the return status is non-zero. |
| </P><P> |
| |
| <DT><CODE>exit</CODE> |
| <DD><A NAME="IDX84"></A> |
| <TABLE><tr><td> </td><td class=example><pre>exit [<VAR>n</VAR>] |
| </pre></td></tr></table><P> |
| |
| Exit the shell, returning a status of <VAR>n</VAR> to the shell's parent. |
| If <VAR>n</VAR> is omitted, the exit status is that of the last command executed. |
| Any trap on <CODE>EXIT</CODE> is executed before the shell terminates. |
| </P><P> |
| |
| <DT><CODE>export</CODE> |
| <DD><A NAME="IDX85"></A> |
| <TABLE><tr><td> </td><td class=example><pre>export [-fn] [-p] [<VAR>name</VAR>[=<VAR>value</VAR>]] |
| </pre></td></tr></table><P> |
| |
| Mark each <VAR>name</VAR> to be passed to child processes |
| 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 |
| 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 |
| the variable is set to <VAR>value</VAR>. |
| </P><P> |
| |
| The return status is zero unless an invalid option is supplied, one of |
| the names is not a valid shell variable name, or <SAMP>`-f'</SAMP> is supplied |
| with a name that is not a shell function. |
| </P><P> |
| |
| <DT><CODE>getopts</CODE> |
| <DD><A NAME="IDX86"></A> |
| <TABLE><tr><td> </td><td class=example><pre>getopts <VAR>optstring</VAR> <VAR>name</VAR> [<VAR>args</VAR>] |
| </pre></td></tr></table><P> |
| |
| <CODE>getopts</CODE> is used by shell scripts to parse positional parameters. |
| <VAR>optstring</VAR> contains the option characters to be recognized; if a |
| character is followed by a colon, the option is expected to have an |
| argument, which should be separated from it by whitespace. |
| The colon (<SAMP>`:'</SAMP>) and question mark (<SAMP>`?'</SAMP>) may not be |
| used as option characters. |
| Each time it is invoked, <CODE>getopts</CODE> |
| places the next option in the shell variable <VAR>name</VAR>, initializing |
| <VAR>name</VAR> if it does not exist, |
| and the index of the next argument to be processed into the |
| variable <CODE>OPTIND</CODE>. |
| <CODE>OPTIND</CODE> is initialized to 1 each time the shell or a shell script |
| is invoked. |
| When an option requires an argument, |
| <CODE>getopts</CODE> places that argument into the variable <CODE>OPTARG</CODE>. |
| The shell does not reset <CODE>OPTIND</CODE> automatically; it must be manually |
| reset between multiple calls to <CODE>getopts</CODE> within the same shell |
| invocation if a new set of parameters is to be used. |
| </P><P> |
| |
| When the end of options is encountered, <CODE>getopts</CODE> exits with a |
| return value greater than zero. |
| <CODE>OPTIND</CODE> is set to the index of the first non-option argument, |
| and <VAR>name</VAR> is set to <SAMP>`?'</SAMP>. |
| </P><P> |
| |
| <CODE>getopts</CODE> |
| normally parses the positional parameters, but if more arguments are |
| given in <VAR>args</VAR>, <CODE>getopts</CODE> parses those instead. |
| </P><P> |
| |
| <CODE>getopts</CODE> can report errors in two ways. If the first character of |
| <VAR>optstring</VAR> is a colon, <VAR>silent</VAR> |
| error reporting is used. In normal operation, diagnostic messages |
| are printed when invalid options or missing option arguments are |
| encountered. |
| If the variable <CODE>OPTERR</CODE> |
| is set to 0, no error messages will be displayed, even if the first |
| character of <CODE>optstring</CODE> is not a colon. |
| </P><P> |
| |
| If an invalid option is seen, |
| <CODE>getopts</CODE> places <SAMP>`?'</SAMP> into <VAR>name</VAR> and, if not silent, |
| prints an error message and unsets <CODE>OPTARG</CODE>. |
| If <CODE>getopts</CODE> is silent, the option character found is placed in |
| <CODE>OPTARG</CODE> and no diagnostic message is printed. |
| </P><P> |
| |
| If a required argument is not found, and <CODE>getopts</CODE> |
| is not silent, a question mark (<SAMP>`?'</SAMP>) is placed in <VAR>name</VAR>, |
| <CODE>OPTARG</CODE> is unset, and a diagnostic message is printed. |
| If <CODE>getopts</CODE> is silent, then a colon (<SAMP>`:'</SAMP>) is placed in |
| <VAR>name</VAR> and <CODE>OPTARG</CODE> is set to the option character found. |
| </P><P> |
| |
| <DT><CODE>hash</CODE> |
| <DD><A NAME="IDX87"></A> |
| <TABLE><tr><td> </td><td class=example><pre>hash [-r] [-p <VAR>filename</VAR>] [-dt] [<VAR>name</VAR>] |
| </pre></td></tr></table><P> |
| |
| Each time <CODE>hash</CODE> is invoked, it remembers the full pathnames of the |
| commands specified as <VAR>name</VAR> arguments, |
| so they need not be searched for on subsequent invocations. |
| The commands are found by searching through the directories listed in |
| <CODE>$PATH</CODE>. |
| Any previously-remembered pathname is discarded. |
| The <SAMP>`-p'</SAMP> option inhibits the path search, and <VAR>filename</VAR> is |
| used as the location of <VAR>name</VAR>. |
| The <SAMP>`-r'</SAMP> option causes the shell to forget all remembered locations. |
| The <SAMP>`-d'</SAMP> option causes the shell to forget the remembered location |
| of each <VAR>name</VAR>. |
| If the <SAMP>`-t'</SAMP> option is supplied, the full pathname to which each |
| <VAR>name</VAR> corresponds is printed. If multiple <VAR>name</VAR> arguments are |
| supplied with <SAMP>`-t'</SAMP> the <VAR>name</VAR> is printed before the hashed |
| full pathname. |
| The <SAMP>`-l'</SAMP> option causes output to be displayed in a format |
| that may be reused as input. |
| If no arguments are given, or if only <SAMP>`-l'</SAMP> is supplied, |
| information about remembered commands is printed. |
| The return status is zero unless a <VAR>name</VAR> is not found or an invalid |
| option is supplied. |
| </P><P> |
| |
| <DT><CODE>pwd</CODE> |
| <DD><A NAME="IDX88"></A> |
| <TABLE><tr><td> </td><td class=example><pre>pwd [-LP] |
| </pre></td></tr></table><P> |
| |
| Print the absolute pathname of the current working directory. |
| If the <SAMP>`-P'</SAMP> option is supplied, the pathname printed will not |
| contain symbolic links. |
| If the <SAMP>`-L'</SAMP> option is supplied, the pathname printed may contain |
| symbolic links. |
| The return status is zero unless an error is encountered while |
| determining the name of the current directory or an invalid option |
| is supplied. |
| </P><P> |
| |
| <DT><CODE>readonly</CODE> |
| <DD><A NAME="IDX89"></A> |
| <TABLE><tr><td> </td><td class=example><pre>readonly [-aAf] [-p] [<VAR>name</VAR>[=<VAR>value</VAR>]] <small>...</small> |
| </pre></td></tr></table><P> |
| |
| Mark each <VAR>name</VAR> as readonly. |
| The values of these names may not be changed by subsequent assignment. |
| If the <SAMP>`-f'</SAMP> option is supplied, each <VAR>name</VAR> refers to a shell |
| function. |
| The <SAMP>`-a'</SAMP> option means each <VAR>name</VAR> refers to an indexed |
| array variable; the <SAMP>`-A'</SAMP> option means each <VAR>name</VAR> refers |
| to an associative array variable. |
| If both options are supplied, <SAMP>`-A'</SAMP> takes precedence. |
| If no <VAR>name</VAR> arguments are given, or if the <SAMP>`-p'</SAMP> |
| option is supplied, a list of all readonly names is printed. |
| The other options may be used to restrict the output to a subset of |
| the set of readonly names. |
| The <SAMP>`-p'</SAMP> option causes output to be displayed in a format that |
| may be reused as input. |
| If a variable name is followed by =<VAR>value</VAR>, the value of |
| the variable is set to <VAR>value</VAR>. |
| The return status is zero unless an invalid option is supplied, one of |
| the <VAR>name</VAR> arguments is not a valid shell variable or function name, |
| or the <SAMP>`-f'</SAMP> option is supplied with a name that is not a shell function. |
| </P><P> |
| |
| <DT><CODE>return</CODE> |
| <DD><A NAME="IDX90"></A> |
| <TABLE><tr><td> </td><td class=example><pre>return [<VAR>n</VAR>] |
| </pre></td></tr></table><P> |
| |
| Cause a shell function to stop executing and return the value <VAR>n</VAR> |
| to its caller. |
| If <VAR>n</VAR> is not supplied, the return value is the exit status of the |
| last command executed in the function. |
| <CODE>return</CODE> may also be used to terminate execution of a script |
| being executed with the <CODE>.</CODE> (<CODE>source</CODE>) builtin, |
| returning either <VAR>n</VAR> or |
| the exit status of the last command executed within the script as the exit |
| status of the script. |
| If <VAR>n</VAR> is supplied, the return value is its least significant |
| 8 bits. |
| Any command associated with the <CODE>RETURN</CODE> trap is executed |
| before execution resumes after the function or script. |
| The return status is non-zero if <CODE>return</CODE> is supplied a non-numeric |
| argument or is used outside a function |
| and not during the execution of a script by <CODE>.</CODE> or <CODE>source</CODE>. |
| </P><P> |
| |
| <DT><CODE>shift</CODE> |
| <DD><A NAME="IDX91"></A> |
| <TABLE><tr><td> </td><td class=example><pre>shift [<VAR>n</VAR>] |
| </pre></td></tr></table><P> |
| |
| Shift the positional parameters to the left by <VAR>n</VAR>. |
| The positional parameters from <VAR>n</VAR>+1 <small>...</small> <CODE>$#</CODE> are |
| renamed to <CODE>$1</CODE> <small>...</small> <CODE>$#</CODE>-<VAR>n</VAR>. |
| Parameters represented by the numbers <CODE>$#</CODE> to <CODE>$#</CODE>-<VAR>n</VAR>+1 |
| are unset. |
| <VAR>n</VAR> must be a non-negative number less than or equal to <CODE>$#</CODE>. |
| If <VAR>n</VAR> is zero or greater than <CODE>$#</CODE>, the positional parameters |
| are not changed. |
| If <VAR>n</VAR> is not supplied, it is assumed to be 1. |
| The return status is zero unless <VAR>n</VAR> is greater than <CODE>$#</CODE> or |
| less than zero, non-zero otherwise. |
| </P><P> |
| |
| <DT><CODE>test</CODE> |
| <DD><DT><CODE>[</CODE> |
| <DD><A NAME="IDX92"></A> |
| <A NAME="IDX93"></A> |
| <TABLE><tr><td> </td><td class=example><pre>test <VAR>expr</VAR> |
| </pre></td></tr></table><P> |
| |
| Evaluate a conditional express |
| ion <VAR>expr</VAR> and return a status of 0 |
| (true) or 1 (false). |
| Each operator and operand must be a separate argument. |
| Expressions are composed of the primaries described below in |
| <A HREF="bashref.html#SEC83">6.4 Bash Conditional Expressions</A>. |
| <CODE>test</CODE> does not accept any options, nor does it accept and ignore |
| an argument of <SAMP>`--'</SAMP> as signifying the end of options. |
| </P><P> |
| |
| When the <CODE>[</CODE> form is used, the last argument to the command must |
| be a <CODE>]</CODE>. |
| </P><P> |
| |
| Expressions may be combined using the following operators, listed in |
| decreasing order of precedence. |
| The evaluation depends on the number of arguments; see below. |
| Operator precedence is used when there are five or more arguments. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>! <VAR>expr</VAR></CODE> |
| <DD>True if <VAR>expr</VAR> is false. |
| <P> |
| |
| <DT><CODE>( <VAR>expr</VAR> )</CODE> |
| <DD>Returns the value of <VAR>expr</VAR>. |
| This may be used to override the normal precedence of operators. |
| <P> |
| |
| <DT><CODE><VAR>expr1</VAR> -a <VAR>expr2</VAR></CODE> |
| <DD>True if both <VAR>expr1</VAR> and <VAR>expr2</VAR> are true. |
| <P> |
| |
| <DT><CODE><VAR>expr1</VAR> -o <VAR>expr2</VAR></CODE> |
| <DD>True if either <VAR>expr1</VAR> or <VAR>expr2</VAR> is true. |
| </DL> |
| <P> |
| |
| The <CODE>test</CODE> and <CODE>[</CODE> builtins evaluate conditional |
| expressions using a set of rules based on the number of arguments. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT>0 arguments |
| <DD>The expression is false. |
| <P> |
| |
| <DT>1 argument |
| <DD>The expression is true if and only if the argument is not null. |
| <P> |
| |
| <DT>2 arguments |
| <DD>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 |
| (see section <A HREF="bashref.html#SEC83">6.4 Bash Conditional Expressions</A>), the expression |
| is true if the unary test is true. |
| If the first argument is not a valid unary operator, the expression is |
| false. |
| <P> |
| |
| <DT>3 arguments |
| <DD>The following conditions are applied in the order listed. |
| If the second argument is one of the binary conditional |
| operators (see section <A HREF="bashref.html#SEC83">6.4 Bash Conditional Expressions</A>), the |
| result of the expression is the result of the binary test using the |
| first and third arguments as operands. |
| The <SAMP>`-a'</SAMP> and <SAMP>`-o'</SAMP> operators are considered binary operators |
| when there are three arguments. |
| If the first argument is <SAMP>`!'</SAMP>, the value is the negation of |
| the two-argument test using the second and third arguments. |
| If the first argument is exactly <SAMP>`('</SAMP> and the third argument is |
| exactly <SAMP>`)'</SAMP>, the result is the one-argument test of the second |
| argument. |
| Otherwise, the expression is false. |
| <P> |
| |
| <DT>4 arguments |
| <DD>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 |
| precedence using the rules listed above. |
| <P> |
| |
| <DT>5 or more arguments |
| <DD>The expression is parsed and evaluated according to precedence |
| using the rules listed above. |
| </DL> |
| <P> |
| |
| When used with <CODE>test</CODE> or <SAMP>`['</SAMP>, the <SAMP>`<'</SAMP> and <SAMP>`>'</SAMP> |
| operators sort lexicographically using ASCII ordering. |
| </P><P> |
| |
| <DT><CODE>times</CODE> |
| <DD><A NAME="IDX94"></A> |
| <TABLE><tr><td> </td><td class=example><pre>times |
| </pre></td></tr></table><P> |
| |
| Print out the user and system times used by the shell and its children. |
| The return status is zero. |
| </P><P> |
| |
| <DT><CODE>trap</CODE> |
| <DD><A NAME="IDX95"></A> |
| <TABLE><tr><td> </td><td class=example><pre>trap [-lp] [<VAR>arg</VAR>] [<VAR>sigspec</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| The commands in <VAR>arg</VAR> are to be read and executed when the |
| shell receives signal <VAR>sigspec</VAR>. If <VAR>arg</VAR> is absent (and |
| there is a single <VAR>sigspec</VAR>) or |
| equal to <SAMP>`-'</SAMP>, each specified signal's disposition is reset |
| to the value it had when the shell was started. |
| If <VAR>arg</VAR> is the null string, then the signal specified by |
| each <VAR>sigspec</VAR> is ignored by the shell and commands it invokes. |
| If <VAR>arg</VAR> is not present and <SAMP>`-p'</SAMP> has been supplied, |
| the shell displays the trap commands associated with each <VAR>sigspec</VAR>. |
| If no arguments are supplied, or |
| only <SAMP>`-p'</SAMP> is given, <CODE>trap</CODE> prints the list of commands |
| associated with each signal number in a form that may be reused as |
| shell input. |
| The <SAMP>`-l'</SAMP> option causes the shell to print a list of signal names |
| and their corresponding numbers. |
| Each <VAR>sigspec</VAR> is either a signal name or a signal number. |
| Signal names are case insensitive and the <CODE>SIG</CODE> prefix is optional. |
| </P><P> |
| |
| If a <VAR>sigspec</VAR> |
| is <CODE>0</CODE> or <CODE>EXIT</CODE>, <VAR>arg</VAR> is executed when the shell exits. |
| If a <VAR>sigspec</VAR> is <CODE>DEBUG</CODE>, the command <VAR>arg</VAR> is executed |
| before every simple command, <CODE>for</CODE> command, <CODE>case</CODE> command, |
| <CODE>select</CODE> command, every arithmetic <CODE>for</CODE> command, and before |
| the first command executes in a shell function. |
| Refer to the description of the <CODE>extdebug</CODE> option to the |
| <CODE>shopt</CODE> builtin (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>) for details of its |
| effect on the <CODE>DEBUG</CODE> trap. |
| If a <VAR>sigspec</VAR> is <CODE>RETURN</CODE>, the command <VAR>arg</VAR> is executed |
| each time a shell function or a script executed with the <CODE>.</CODE> or |
| <CODE>source</CODE> builtins finishes executing. |
| </P><P> |
| |
| If a <VAR>sigspec</VAR> is <CODE>ERR</CODE>, the command <VAR>arg</VAR> |
| is executed whenever |
| a pipeline (which may consist of a single simple |
| command), a list, or a compound command returns a |
| non-zero exit status, |
| subject to the following conditions. |
| The <CODE>ERR</CODE> trap is not executed if the failed command is part of the |
| command list immediately following an <CODE>until</CODE> or <CODE>while</CODE> keyword, |
| part of the test following the <CODE>if</CODE> or <CODE>elif</CODE> reserved words, |
| part of a command executed in a <CODE>&&</CODE> or <CODE>||</CODE> list |
| except the command following the final <CODE>&&</CODE> or <CODE>||</CODE>, |
| any command in a pipeline but the last, |
| or if the command's return |
| status is being inverted using <CODE>!</CODE>. |
| These are the same conditions obeyed by the <CODE>errexit</CODE> (<SAMP>`-e'</SAMP>) |
| option. |
| </P><P> |
| |
| Signals ignored upon entry to the shell cannot be trapped or reset. |
| Trapped signals that are not being ignored are reset to their original |
| values in a subshell or subshell environment when one is created. |
| </P><P> |
| |
| The return status is zero unless a <VAR>sigspec</VAR> does not specify a |
| valid signal. |
| </P><P> |
| |
| <DT><CODE>umask</CODE> |
| <DD><A NAME="IDX96"></A> |
| <TABLE><tr><td> </td><td class=example><pre>umask [-p] [-S] [<VAR>mode</VAR>] |
| </pre></td></tr></table><P> |
| |
| Set the shell process's file creation mask to <VAR>mode</VAR>. If |
| <VAR>mode</VAR> begins with a digit, it is interpreted as an octal number; |
| if not, it is interpreted as a symbolic mode mask similar |
| to that accepted by the <CODE>chmod</CODE> command. If <VAR>mode</VAR> is |
| omitted, the current value of the mask is printed. If the <SAMP>`-S'</SAMP> |
| option is supplied without a <VAR>mode</VAR> argument, the mask is printed |
| in a symbolic format. |
| If the <SAMP>`-p'</SAMP> option is supplied, and <VAR>mode</VAR> |
| is omitted, the output is in a form that may be reused as input. |
| The return status is zero if the mode is successfully changed or if |
| no <VAR>mode</VAR> argument is supplied, and non-zero otherwise. |
| </P><P> |
| |
| Note that when the mode is interpreted as an octal number, each number |
| of the umask is subtracted from <CODE>7</CODE>. Thus, a umask of <CODE>022</CODE> |
| results in permissions of <CODE>755</CODE>. |
| </P><P> |
| |
| <DT><CODE>unset</CODE> |
| <DD><A NAME="IDX97"></A> |
| <TABLE><tr><td> </td><td class=example><pre>unset [-fnv] [<VAR>name</VAR>] |
| </pre></td></tr></table><P> |
| |
| Remove each variable or function <VAR>name</VAR>. |
| If the <SAMP>`-v'</SAMP> option is given, each |
| <VAR>name</VAR> refers to a shell variable and that variable is remvoved. |
| 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 |
| 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 |
| there is no variable by that name, any function with that name is |
| unset. |
| Readonly variables and functions may not be unset. |
| The return status is zero unless a <VAR>name</VAR> is readonly. |
| </DL> |
| <P> |
| |
| <A NAME="Bash Builtins"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC61"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC60"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC62"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC62"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 4.2 Bash Builtin Commands </H2> |
| <!--docid::SEC61::--> |
| <P> |
| |
| This section describes builtin commands which are unique to |
| or have been extended in Bash. |
| Some of these commands are specified in the POSIX standard. |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>alias</CODE> |
| <DD><A NAME="IDX98"></A> |
| <TABLE><tr><td> </td><td class=example><pre>alias [-p] [<VAR>name</VAR>[=<VAR>value</VAR>] <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| Without arguments or with the <SAMP>`-p'</SAMP> option, <CODE>alias</CODE> prints |
| the list of aliases on the standard output in a form that allows |
| them to be reused as input. |
| If arguments are supplied, an alias is defined for each <VAR>name</VAR> |
| whose <VAR>value</VAR> is given. If no <VAR>value</VAR> is given, the name |
| and value of the alias is printed. |
| Aliases are described in <A HREF="bashref.html#SEC85">6.6 Aliases</A>. |
| </P><P> |
| |
| <DT><CODE>bind</CODE> |
| <DD><A NAME="IDX99"></A> |
| <TABLE><tr><td> </td><td class=example><pre>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 <VAR>readline-command</VAR> |
| </pre></td></tr></table><P> |
| |
| Display current Readline (see section <A HREF="bashref.html#SEC96">8. Command Line Editing</A>) |
| key and function bindings, |
| bind a key sequence to a Readline function or macro, |
| or set a Readline variable. |
| Each non-option argument is a command as it would appear in a |
| Readline initialization file (see section <A HREF="bashref.html#SEC104">8.3 Readline Init File</A>), |
| but each binding or command must be passed as a separate argument; e.g., |
| <SAMP>`"\C-x\C-r":re-read-init-file'</SAMP>. |
| </P><P> |
| |
| Options, if supplied, have the following meanings: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-m <VAR>keymap</VAR></CODE> |
| <DD>Use <VAR>keymap</VAR> as the keymap to be affected by |
| the subsequent bindings. Acceptable <VAR>keymap</VAR> |
| names are |
| <CODE>emacs</CODE>, |
| <CODE>emacs-standard</CODE>, |
| <CODE>emacs-meta</CODE>, |
| <CODE>emacs-ctlx</CODE>, |
| <CODE>vi</CODE>, |
| <CODE>vi-move</CODE>, |
| <CODE>vi-command</CODE>, and |
| <CODE>vi-insert</CODE>. |
| <CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; |
| <CODE>emacs</CODE> is equivalent to <CODE>emacs-standard</CODE>. |
| <P> |
| |
| <DT><CODE>-l</CODE> |
| <DD>List the names of all Readline functions. |
| <P> |
| |
| <DT><CODE>-p</CODE> |
| <DD>Display Readline function names and bindings in such a way that they |
| can be used as input or in a Readline initialization file. |
| <P> |
| |
| <DT><CODE>-P</CODE> |
| <DD>List current Readline function names and bindings. |
| <P> |
| |
| <DT><CODE>-v</CODE> |
| <DD>Display Readline variable names and values in such a way that they |
| can be used as input or in a Readline initialization file. |
| <P> |
| |
| <DT><CODE>-V</CODE> |
| <DD>List current Readline variable names and values. |
| <P> |
| |
| <DT><CODE>-s</CODE> |
| <DD>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> |
| |
| <DT><CODE>-S</CODE> |
| <DD>Display Readline key sequences bound to macros and the strings they output. |
| <P> |
| |
| <DT><CODE>-f <VAR>filename</VAR></CODE> |
| <DD>Read key bindings from <VAR>filename</VAR>. |
| <P> |
| |
| <DT><CODE>-q <VAR>function</VAR></CODE> |
| <DD>Query about which keys invoke the named <VAR>function</VAR>. |
| <P> |
| |
| <DT><CODE>-u <VAR>function</VAR></CODE> |
| <DD>Unbind all keys bound to the named <VAR>function</VAR>. |
| <P> |
| |
| <DT><CODE>-r <VAR>keyseq</VAR></CODE> |
| <DD>Remove any current binding for <VAR>keyseq</VAR>. |
| <P> |
| |
| <DT><CODE>-x <VAR>keyseq:shell-command</VAR></CODE> |
| <DD>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 |
| <CODE>READLINE_LINE</CODE> variable to the contents of the Readline line |
| buffer and the <CODE>READLINE_POINT</CODE> variable to the current location |
| of the insertion point. |
| If the executed command changes the value of <CODE>READLINE_LINE</CODE> or |
| <CODE>READLINE_POINT</CODE>, those new values will be reflected in the |
| editing state. |
| <P> |
| |
| <DT><CODE>-X</CODE> |
| <DD>List all key sequences bound to shell commands and the associated commands |
| in a format that can be reused as input. |
| </DL> |
| <P> |
| |
| The return status is zero unless an invalid option is supplied or an |
| error occurs. |
| </P><P> |
| |
| <DT><CODE>builtin</CODE> |
| <DD><A NAME="IDX100"></A> |
| <TABLE><tr><td> </td><td class=example><pre>builtin [<VAR>shell-builtin</VAR> [<VAR>args</VAR>]] |
| </pre></td></tr></table><P> |
| |
| Run a shell builtin, passing it <VAR>args</VAR>, and return its exit status. |
| This is useful when defining a shell function with the same |
| name as a shell builtin, retaining the functionality of the builtin within |
| the function. |
| The return status is non-zero if <VAR>shell-builtin</VAR> is not a shell |
| builtin command. |
| </P><P> |
| |
| <DT><CODE>caller</CODE> |
| <DD><A NAME="IDX101"></A> |
| <TABLE><tr><td> </td><td class=example><pre>caller [<VAR>expr</VAR>] |
| </pre></td></tr></table><P> |
| |
| Returns the context of any active subroutine call (a shell function or |
| a script executed with the <CODE>.</CODE> or <CODE>source</CODE> builtins). |
| </P><P> |
| |
| Without <VAR>expr</VAR>, <CODE>caller</CODE> displays the line number and source |
| filename of the current subroutine call. |
| If a non-negative integer is supplied as <VAR>expr</VAR>, <CODE>caller</CODE> |
| displays the line number, subroutine name, and source file corresponding |
| to that position in the current execution call stack. This extra |
| information may be used, for example, to print a stack trace. The |
| current frame is frame 0. |
| </P><P> |
| |
| The return value is 0 unless the shell is not executing a subroutine |
| call or <VAR>expr</VAR> does not correspond to a valid position in the |
| call stack. |
| </P><P> |
| |
| <DT><CODE>command</CODE> |
| <DD><A NAME="IDX102"></A> |
| <TABLE><tr><td> </td><td class=example><pre>command [-pVv] <VAR>command</VAR> [<VAR>arguments</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| Runs <VAR>command</VAR> with <VAR>arguments</VAR> ignoring any shell function |
| named <VAR>command</VAR>. |
| Only shell builtin commands or commands found by searching the |
| <CODE>PATH</CODE> are executed. |
| If there is a shell function named <CODE>ls</CODE>, running <SAMP>`command ls'</SAMP> |
| within the function will execute the external command <CODE>ls</CODE> |
| instead of calling the function recursively. |
| The <SAMP>`-p'</SAMP> option means to use a default value for <CODE>PATH</CODE> |
| that is guaranteed to find all of the standard utilities. |
| The return status in this case is 127 if <VAR>command</VAR> cannot be |
| found or an error occurred, and the exit status of <VAR>command</VAR> |
| otherwise. |
| </P><P> |
| |
| If either the <SAMP>`-V'</SAMP> or <SAMP>`-v'</SAMP> option is supplied, a |
| description of <VAR>command</VAR> is printed. The <SAMP>`-v'</SAMP> option |
| causes a single word indicating the command or file name used to |
| invoke <VAR>command</VAR> to be displayed; the <SAMP>`-V'</SAMP> option produces |
| a more verbose description. In this case, the return status is |
| zero if <VAR>command</VAR> is found, and non-zero if not. |
| </P><P> |
| |
| <DT><CODE>declare</CODE> |
| <DD><A NAME="IDX103"></A> |
| <TABLE><tr><td> </td><td class=example><pre>declare [-aAfFgilnrtux] [-p] [<VAR>name</VAR>[=<VAR>value</VAR>] <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| Declare variables and give them attributes. If no <VAR>name</VAR>s |
| are given, then display the values of variables instead. |
| </P><P> |
| |
| The <SAMP>`-p'</SAMP> option will display the attributes and values of each |
| <VAR>name</VAR>. |
| When <SAMP>`-p'</SAMP> is used with <VAR>name</VAR> arguments, additional options, |
| other than <SAMP>`-f'</SAMP> and <SAMP>`-F'</SAMP>, are ignored. |
| </P><P> |
| |
| When <SAMP>`-p'</SAMP> is supplied without <VAR>name</VAR> arguments, <CODE>declare</CODE> |
| will display the attributes and values of all variables having the |
| attributes specified by the additional options. |
| If no other options are supplied with <SAMP>`-p'</SAMP>, <CODE>declare</CODE> will |
| display the attributes and values of all shell variables. The <SAMP>`-f'</SAMP> |
| option will restrict the display to shell functions. |
| </P><P> |
| |
| The <SAMP>`-F'</SAMP> option inhibits the display of function definitions; |
| only the function name and attributes are printed. |
| If the <CODE>extdebug</CODE> shell option is enabled using <CODE>shopt</CODE> |
| (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>), the source file name and line number where |
| the function is defined are displayed as well. |
| <SAMP>`-F'</SAMP> implies <SAMP>`-f'</SAMP>. |
| </P><P> |
| |
| The <SAMP>`-g'</SAMP> option forces variables to be created or modified at |
| the global scope, even when <CODE>declare</CODE> is executed in a shell function. |
| It is ignored in all other cases. |
| </P><P> |
| |
| The following options can be used to restrict output to variables with |
| the specified attributes or to give variables attributes: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-a</CODE> |
| <DD>Each <VAR>name</VAR> is an indexed array variable (see section <A HREF="bashref.html#SEC86">6.7 Arrays</A>). |
| <P> |
| |
| <DT><CODE>-A</CODE> |
| <DD>Each <VAR>name</VAR> is an associative array variable (see section <A HREF="bashref.html#SEC86">6.7 Arrays</A>). |
| <P> |
| |
| <DT><CODE>-f</CODE> |
| <DD>Use function names only. |
| <P> |
| |
| <DT><CODE>-i</CODE> |
| <DD>The variable is to be treated as |
| an integer; arithmetic evaluation (see section <A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A>) is |
| performed when the variable is assigned a value. |
| <P> |
| |
| <DT><CODE>-l</CODE> |
| <DD>When the variable is assigned a value, all upper-case characters are |
| converted to lower-case. |
| The upper-case attribute is disabled. |
| <P> |
| |
| <DT><CODE>-n</CODE> |
| <DD>Give each <VAR>name</VAR> the <VAR>nameref</VAR> attribute, making |
| it a name reference to another variable. |
| That other variable is defined by the value of <VAR>name</VAR>. |
| All references and assignments to <VAR>name</VAR>, except for changing the |
| <SAMP>`-n'</SAMP> attribute itself, are performed on the variable referenced by |
| <VAR>name</VAR>'s value. |
| The <SAMP>`-n'</SAMP> attribute cannot be applied to array variables. |
| <P> |
| |
| <DT><CODE>-r</CODE> |
| <DD>Make <VAR>name</VAR>s readonly. These names cannot then be assigned values |
| by subsequent assignment statements or unset. |
| <P> |
| |
| <DT><CODE>-t</CODE> |
| <DD>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> |
| |
| <DT><CODE>-u</CODE> |
| <DD>When the variable is assigned a value, all lower-case characters are |
| converted to upper-case. |
| The lower-case attribute is disabled. |
| <P> |
| |
| <DT><CODE>-x</CODE> |
| <DD>Mark each <VAR>name</VAR> for export to subsequent commands via |
| the environment. |
| </DL> |
| <P> |
| |
| Using <SAMP>`+'</SAMP> instead of <SAMP>`-'</SAMP> turns off the attribute instead, |
| with the exceptions that <SAMP>`+a'</SAMP> |
| may not be used to destroy an array variable and <SAMP>`+r'</SAMP> will not |
| remove the readonly attribute. |
| When used in a function, <CODE>declare</CODE> makes each <VAR>name</VAR> local, |
| as with the <CODE>local</CODE> command, unless the <SAMP>`-g'</SAMP> option is used. |
| If a variable name is followed by =<VAR>value</VAR>, the value of the variable |
| is set to <VAR>value</VAR>. |
| </P><P> |
| |
| When using <SAMP>`-a'</SAMP> or <SAMP>`-A'</SAMP> and the compound assignment syntax to |
| create array variables, additional attributes do not take effect until |
| subsequent assignments. |
| </P><P> |
| |
| The return status is zero unless an invalid option is encountered, |
| an attempt is made to define a function using <SAMP>`-f foo=bar'</SAMP>, |
| 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 section <A HREF="bashref.html#SEC86">6.7 Arrays</A>), |
| one of the <VAR>names</VAR> 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><P> |
| |
| <DT><CODE>echo</CODE> |
| <DD><A NAME="IDX104"></A> |
| <TABLE><tr><td> </td><td class=example><pre>echo [-neE] [<VAR>arg</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| Output the <VAR>arg</VAR>s, separated by spaces, terminated with a |
| newline. |
| The return status is 0 unless a write error occurs. |
| If <SAMP>`-n'</SAMP> is specified, the trailing newline is suppressed. |
| If the <SAMP>`-e'</SAMP> option is given, interpretation of the following |
| backslash-escaped characters is enabled. |
| The <SAMP>`-E'</SAMP> option disables the interpretation of these escape characters, |
| even on systems where they are interpreted by default. |
| The <CODE>xpg_echo</CODE> shell option may be used to |
| dynamically determine whether or not <CODE>echo</CODE> expands these |
| escape characters by default. |
| <CODE>echo</CODE> does not interpret <SAMP>`--'</SAMP> to mean the end of options. |
| </P><P> |
| |
| <CODE>echo</CODE> interprets the following escape sequences: |
| <DL COMPACT> |
| <DT><CODE>\a</CODE> |
| <DD>alert (bell) |
| <DT><CODE>\b</CODE> |
| <DD>backspace |
| <DT><CODE>\c</CODE> |
| <DD>suppress further output |
| <DT><CODE>\e</CODE> |
| <DD><DT><CODE>\E</CODE> |
| <DD>escape |
| <DT><CODE>\f</CODE> |
| <DD>form feed |
| <DT><CODE>\n</CODE> |
| <DD>new line |
| <DT><CODE>\r</CODE> |
| <DD>carriage return |
| <DT><CODE>\t</CODE> |
| <DD>horizontal tab |
| <DT><CODE>\v</CODE> |
| <DD>vertical tab |
| <DT><CODE>\\</CODE> |
| <DD>backslash |
| <DT><CODE>\0<VAR>nnn</VAR></CODE> |
| <DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR> |
| (zero to three octal digits) |
| <DT><CODE>\x<VAR>HH</VAR></CODE> |
| <DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR> |
| (one or two hex digits) |
| <DT><CODE>\u<VAR>HHHH</VAR></CODE> |
| <DD>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value |
| <VAR>HHHH</VAR> (one to four hex digits) |
| <DT><CODE>\U<VAR>HHHHHHHH</VAR></CODE> |
| <DD>the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value |
| <VAR>HHHHHHHH</VAR> (one to eight hex digits) |
| </DL> |
| <P> |
| |
| <DT><CODE>enable</CODE> |
| <DD><A NAME="IDX105"></A> |
| <TABLE><tr><td> </td><td class=example><pre>enable [-a] [-dnps] [-f <VAR>filename</VAR>] [<VAR>name</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| Enable and disable builtin shell commands. |
| Disabling a builtin allows a disk command which has the same name |
| as a shell builtin to be executed without specifying a full pathname, |
| even though the shell normally searches for builtins before disk commands. |
| If <SAMP>`-n'</SAMP> is used, the <VAR>name</VAR>s become disabled. Otherwise |
| <VAR>name</VAR>s are enabled. For example, to use the <CODE>test</CODE> binary |
| found via <CODE>$PATH</CODE> instead of the shell builtin version, type |
| <SAMP>`enable -n test'</SAMP>. |
| </P><P> |
| |
| If the <SAMP>`-p'</SAMP> option is supplied, or no <VAR>name</VAR> arguments appear, |
| a list of shell builtins is printed. With no other arguments, the list |
| consists of all enabled shell builtins. |
| The <SAMP>`-a'</SAMP> option means to list |
| each builtin with an indication of whether or not it is enabled. |
| </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. |
| 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. |
| The <SAMP>`-s'</SAMP> option restricts <CODE>enable</CODE> to the POSIX special |
| builtins. If <SAMP>`-s'</SAMP> is used with <SAMP>`-f'</SAMP>, the new builtin becomes |
| a special builtin (see section <A HREF="bashref.html#SEC65">4.4 Special Builtins</A>). |
| </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><P> |
| |
| <DT><CODE>help</CODE> |
| <DD><A NAME="IDX106"></A> |
| <TABLE><tr><td> </td><td class=example><pre>help [-dms] [<VAR>pattern</VAR>] |
| </pre></td></tr></table><P> |
| |
| Display helpful information about builtin commands. |
| If <VAR>pattern</VAR> is specified, <CODE>help</CODE> gives detailed help |
| on all commands matching <VAR>pattern</VAR>, otherwise a list of |
| the builtins is printed. |
| </P><P> |
| |
| Options, if supplied, have the following meanings: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-d</CODE> |
| <DD>Display a short description of each <VAR>pattern</VAR> |
| <DT><CODE>-m</CODE> |
| <DD>Display the description of each <VAR>pattern</VAR> in a manpage-like format |
| <DT><CODE>-s</CODE> |
| <DD>Display only a short usage synopsis for each <VAR>pattern</VAR> |
| </DL> |
| <P> |
| |
| The return status is zero unless no command matches <VAR>pattern</VAR>. |
| </P><P> |
| |
| <DT><CODE>let</CODE> |
| <DD><A NAME="IDX107"></A> |
| <TABLE><tr><td> </td><td class=example><pre>let <VAR>expression</VAR> [<VAR>expression</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| The <CODE>let</CODE> builtin allows arithmetic to be performed on shell |
| variables. Each <VAR>expression</VAR> is evaluated according to the |
| rules given below in <A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A>. If the |
| last <VAR>expression</VAR> evaluates to 0, <CODE>let</CODE> returns 1; |
| otherwise 0 is returned. |
| </P><P> |
| |
| <DT><CODE>local</CODE> |
| <DD><A NAME="IDX108"></A> |
| <TABLE><tr><td> </td><td class=example><pre>local [<VAR>option</VAR>] <VAR>name</VAR>[=<VAR>value</VAR>] <small>...</small> |
| </pre></td></tr></table><P> |
| |
| For each argument, a local variable named <VAR>name</VAR> is created, |
| and assigned <VAR>value</VAR>. |
| The <VAR>option</VAR> can be any of the options accepted by <CODE>declare</CODE>. |
| <CODE>local</CODE> can only be used within a function; it makes the variable |
| <VAR>name</VAR> have a visible scope restricted to that function and its |
| children. The return status is zero unless <CODE>local</CODE> is used outside |
| a function, an invalid <VAR>name</VAR> is supplied, or <VAR>name</VAR> is a |
| readonly variable. |
| </P><P> |
| |
| <DT><CODE>logout</CODE> |
| <DD><A NAME="IDX109"></A> |
| <TABLE><tr><td> </td><td class=example><pre>logout [<VAR>n</VAR>] |
| </pre></td></tr></table><P> |
| |
| Exit a login shell, returning a status of <VAR>n</VAR> to the shell's |
| parent. |
| </P><P> |
| |
| <DT><CODE>mapfile</CODE> |
| <DD><A NAME="IDX110"></A> |
| <TABLE><tr><td> </td><td class=example><pre>mapfile [-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></td></tr></table><P> |
| |
| Read lines from the standard input into the indexed array variable <VAR>array</VAR>, |
| or from file descriptor <VAR>fd</VAR> |
| if the <SAMP>`-u'</SAMP> option is supplied. |
| The variable <CODE>MAPFILE</CODE> is the default <VAR>array</VAR>. |
| Options, if supplied, have the following meanings: |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>-n</CODE> |
| <DD>Copy at most <VAR>count</VAR> lines. If <VAR>count</VAR> is 0, all lines are copied. |
| <DT><CODE>-O</CODE> |
| <DD>Begin assigning to <VAR>array</VAR> at index <VAR>origin</VAR>. |
| The default index is 0. |
| <DT><CODE>-s</CODE> |
| <DD>Discard the first <VAR>count</VAR> lines read. |
| <DT><CODE>-t</CODE> |
| <DD>Remove a trailing newline from each line read. |
| <DT><CODE>-u</CODE> |
| <DD>Read lines from file descriptor <VAR>fd</VAR> instead of the standard input. |
| <DT><CODE>-C</CODE> |
| <DD>Evaluate <VAR>callback</VAR> each time <VAR>quantum</VAR>P lines are read. |
| The <SAMP>`-c'</SAMP> option specifies <VAR>quantum</VAR>. |
| <DT><CODE>-c</CODE> |
| <DD>Specify the number of lines read between each call to <VAR>callback</VAR>. |
| </DL> |
| <P> |
| |
| If <SAMP>`-C'</SAMP> is specified without <SAMP>`-c'</SAMP>, |
| the default quantum is 5000. |
| When <VAR>callback</VAR> is evaluated, it is supplied the index of the next |
| array element to be assigned and the line to be assigned to that element |
| as additional arguments. |
| <VAR>callback</VAR> is evaluated after the line is read but before the |
| array element is assigned. |
| </P><P> |
| |
| If not supplied with an explicit origin, <CODE>mapfile</CODE> will clear <VAR>array</VAR> |
| before assigning to it. |
| </P><P> |
| |
| <CODE>mapfile</CODE> returns successfully unless an invalid option or option |
| argument is supplied, <VAR>array</VAR> is invalid or unassignable, or <VAR>array</VAR> |
| is not an indexed array. |
| </P><P> |
| |
| <DT><CODE>printf</CODE> |
| <DD><A NAME="IDX111"></A> |
| <TABLE><tr><td> </td><td class=example><pre>printf [-v <VAR>var</VAR>] <VAR>format</VAR> [<VAR>arguments</VAR>] |
| </pre></td></tr></table><P> |
| |
| Write the formatted <VAR>arguments</VAR> to the standard output under the |
| control of the <VAR>format</VAR>. |
| The <SAMP>`-v'</SAMP> option causes the output to be assigned to the variable |
| <VAR>var</VAR> rather than being printed to the standard output. |
| </P><P> |
| |
| The <VAR>format</VAR> is a character string which contains three types of objects: |
| plain characters, which are simply copied to standard output, character |
| escape sequences, which are converted and copied to the standard output, and |
| format specifications, each of which causes printing of the next successive |
| <VAR>argument</VAR>. |
| In addition to the standard <CODE>printf(1)</CODE> formats, <CODE>printf</CODE> |
| interprets the following extensions: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>%b</CODE> |
| <DD>Causes <CODE>printf</CODE> to expand backslash escape sequences in the |
| corresponding <VAR>argument</VAR>, |
| except that <SAMP>`\c'</SAMP> terminates output, backslashes in |
| <SAMP>`\''</SAMP>, <SAMP>`\"'</SAMP>, and <SAMP>`\?'</SAMP> are not removed, and octal escapes |
| beginning with <SAMP>`\0'</SAMP> may contain up to four digits. |
| <DT><CODE>%q</CODE> |
| <DD>Causes <CODE>printf</CODE> to output the |
| corresponding <VAR>argument</VAR> in a format that can be reused as shell input. |
| <DT><CODE>%(<VAR>datefmt</VAR>)T</CODE> |
| <DD>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 |
| seconds since the epoch. |
| Two special argument values may be used: -1 represents the current |
| time, and -2 represents the time the shell was invoked. |
| If no argument is specified, conversion behaves as if -1 had been given. |
| This is an exception to the usual <CODE>printf</CODE> behavior. |
| </DL> |
| <P> |
| |
| Arguments to non-string format specifiers are treated as C language constants, |
| except that a leading plus or minus sign is allowed, and if the leading |
| character is a single or double quote, the value is the ASCII value of |
| the following character. |
| </P><P> |
| |
| The <VAR>format</VAR> is reused as necessary to consume all of the <VAR>arguments</VAR>. |
| If the <VAR>format</VAR> requires more <VAR>arguments</VAR> than are supplied, the |
| extra format specifications behave as if a zero value or null string, as |
| appropriate, had been supplied. The return value is zero on success, |
| non-zero on failure. |
| </P><P> |
| |
| <DT><CODE>read</CODE> |
| <DD><A NAME="IDX112"></A> |
| <TABLE><tr><td> </td><td class=example><pre>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> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| One line is read from the standard input, or from the file descriptor |
| <VAR>fd</VAR> supplied as an argument to the <SAMP>`-u'</SAMP> option, and the first word |
| is assigned to the first <VAR>name</VAR>, the second word to the second <VAR>name</VAR>, |
| and so on, with leftover words and their intervening separators assigned |
| to the last <VAR>name</VAR>. |
| If there are fewer words read from the input stream than names, |
| the remaining names are assigned empty values. |
| The characters in the value of the <CODE>IFS</CODE> variable |
| are used to split the line into words using the same rules the shell |
| uses for expansion (described above in <A HREF="bashref.html#SEC36">3.5.7 Word Splitting</A>). |
| The backslash character <SAMP>`\'</SAMP> may be used to remove any special |
| meaning for the next character read and for line continuation. |
| If no names are supplied, the line read is assigned to the |
| variable <CODE>REPLY</CODE>. |
| The return code is zero, unless end-of-file is encountered, <CODE>read</CODE> |
| times out (in which case the return code is greater than 128), |
| a variable assignment error (such as assigning to a readonly variable) occurs, |
| or an invalid file descriptor is supplied as the argument to <SAMP>`-u'</SAMP>. |
| </P><P> |
| |
| Options, if supplied, have the following meanings: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-a <VAR>aname</VAR></CODE> |
| <DD>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> |
| |
| <DT><CODE>-d <VAR>delim</VAR></CODE> |
| <DD>The first character of <VAR>delim</VAR> is used to terminate the input line, |
| rather than newline. |
| <P> |
| |
| <DT><CODE>-e</CODE> |
| <DD>Readline (see section <A HREF="bashref.html#SEC96">8. 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. |
| <P> |
| |
| <DT><CODE>-i <VAR>text</VAR></CODE> |
| <DD>If Readline is being used to read the line, <VAR>text</VAR> is placed into |
| the editing buffer before editing begins. |
| <P> |
| |
| <DT><CODE>-n <VAR>nchars</VAR></CODE> |
| <DD><CODE>read</CODE> returns after reading <VAR>nchars</VAR> characters rather than |
| waiting for a complete line of input, but honor a delimiter if fewer |
| than <VAR>nchars</VAR> characters are read before the delimiter. |
| <P> |
| |
| <DT><CODE>-N <VAR>nchars</VAR></CODE> |
| <DD><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. |
| Delimiter characters encountered in the input are |
| not treated specially and do not cause <CODE>read</CODE> to return until |
| <VAR>nchars</VAR> characters are read. |
| <P> |
| |
| <DT><CODE>-p <VAR>prompt</VAR></CODE> |
| <DD>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> |
| |
| <DT><CODE>-r</CODE> |
| <DD>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 be used as a line |
| continuation. |
| <P> |
| |
| <DT><CODE>-s</CODE> |
| <DD>Silent mode. If input is coming from a terminal, characters are |
| not echoed. |
| <P> |
| |
| <DT><CODE>-t <VAR>timeout</VAR></CODE> |
| <DD>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. |
| <VAR>timeout</VAR> may be a decimal number with a fractional portion following |
| the decimal point. |
| This option is only effective if <CODE>read</CODE> is reading input from a |
| terminal, pipe, or other special file; it has no effect when reading |
| from regular files. |
| 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 and data. The exit status is 0 if input is available on |
| the specified file descriptor, non-zero otherwise. |
| The exit status is greater than 128 if the timeout is exceeded. |
| <P> |
| |
| <DT><CODE>-u <VAR>fd</VAR></CODE> |
| <DD>Read input from file descriptor <VAR>fd</VAR>. |
| </DL> |
| <P> |
| |
| <DT><CODE>readarray</CODE> |
| <DD><A NAME="IDX113"></A> |
| <TABLE><tr><td> </td><td class=example><pre>readarray [-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></td></tr></table><P> |
| |
| Read lines from the standard input into the indexed array variable <VAR>array</VAR>, |
| or from file descriptor <VAR>fd</VAR> |
| if the <SAMP>`-u'</SAMP> option is supplied. |
| </P><P> |
| |
| A synonym for <CODE>mapfile</CODE>. |
| </P><P> |
| |
| <DT><CODE>source</CODE> |
| <DD><A NAME="IDX114"></A> |
| <TABLE><tr><td> </td><td class=example><pre>source <VAR>filename</VAR> |
| </pre></td></tr></table><P> |
| |
| A synonym for <CODE>.</CODE> (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| </P><P> |
| |
| <DT><CODE>type</CODE> |
| <DD><A NAME="IDX115"></A> |
| <TABLE><tr><td> </td><td class=example><pre>type [-afptP] [<VAR>name</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| For each <VAR>name</VAR>, indicate how it would be interpreted if used as a |
| command name. |
| </P><P> |
| |
| If the <SAMP>`-t'</SAMP> option is used, <CODE>type</CODE> prints a single word |
| which is one of <SAMP>`alias'</SAMP>, <SAMP>`function'</SAMP>, <SAMP>`builtin'</SAMP>, |
| <SAMP>`file'</SAMP> or <SAMP>`keyword'</SAMP>, |
| if <VAR>name</VAR> is an alias, shell function, shell builtin, |
| disk file, or shell reserved word, respectively. |
| If the <VAR>name</VAR> is not found, then nothing is printed, and |
| <CODE>type</CODE> returns a failure status. |
| </P><P> |
| |
| If the <SAMP>`-p'</SAMP> option is used, <CODE>type</CODE> either returns the name |
| of the disk file that would be executed, or nothing if <SAMP>`-t'</SAMP> |
| would not return <SAMP>`file'</SAMP>. |
| </P><P> |
| |
| The <SAMP>`-P'</SAMP> option forces a path search for each <VAR>name</VAR>, even if |
| <SAMP>`-t'</SAMP> would not return <SAMP>`file'</SAMP>. |
| </P><P> |
| |
| If a command is hashed, <SAMP>`-p'</SAMP> and <SAMP>`-P'</SAMP> print the hashed value, |
| which is not necessarily the file that appears first in <CODE>$PATH</CODE>. |
| </P><P> |
| |
| If the <SAMP>`-a'</SAMP> option is used, <CODE>type</CODE> returns all of the places |
| that contain an executable named <VAR>file</VAR>. |
| This includes aliases and functions, if and only if the <SAMP>`-p'</SAMP> option |
| is not also used. |
| </P><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 |
| if any are not found. |
| </P><P> |
| |
| <DT><CODE>typeset</CODE> |
| <DD><A NAME="IDX116"></A> |
| <TABLE><tr><td> </td><td class=example><pre>typeset [-afFgrxilnrtux] [-p] [<VAR>name</VAR>[=<VAR>value</VAR>] <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| The <CODE>typeset</CODE> command is supplied for compatibility with the Korn |
| shell. |
| It is a synonym for the <CODE>declare</CODE> builtin command. |
| </P><P> |
| |
| <DT><CODE>ulimit</CODE> |
| <DD><A NAME="IDX117"></A> |
| <TABLE><tr><td> </td><td class=example><pre>ulimit [-abcdefilmnpqrstuvxHST] [<VAR>limit</VAR>] |
| </pre></td></tr></table><P> |
| |
| <CODE>ulimit</CODE> provides control over the resources available to processes |
| started by the shell, on systems that allow such control. If an |
| option is given, it is interpreted as follows: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-S</CODE> |
| <DD>Change and report the soft limit associated with a resource. |
| <P> |
| |
| <DT><CODE>-H</CODE> |
| <DD>Change and report the hard limit associated with a resource. |
| <P> |
| |
| <DT><CODE>-a</CODE> |
| <DD>All current limits are reported. |
| <P> |
| |
| <DT><CODE>-b</CODE> |
| <DD>The maximum socket buffer size. |
| <P> |
| |
| <DT><CODE>-c</CODE> |
| <DD>The maximum size of core files created. |
| <P> |
| |
| <DT><CODE>-d</CODE> |
| <DD>The maximum size of a process's data segment. |
| <P> |
| |
| <DT><CODE>-e</CODE> |
| <DD>The maximum scheduling priority ("nice"). |
| <P> |
| |
| <DT><CODE>-f</CODE> |
| <DD>The maximum size of files written by the shell and its children. |
| <P> |
| |
| <DT><CODE>-i</CODE> |
| <DD>The maximum number of pending signals. |
| <P> |
| |
| <DT><CODE>-l</CODE> |
| <DD>The maximum size that may be locked into memory. |
| <P> |
| |
| <DT><CODE>-m</CODE> |
| <DD>The maximum resident set size (many systems do not honor this limit). |
| <P> |
| |
| <DT><CODE>-n</CODE> |
| <DD>The maximum number of open file descriptors (most systems do not |
| allow this value to be set). |
| <P> |
| |
| <DT><CODE>-p</CODE> |
| <DD>The pipe buffer size. |
| <P> |
| |
| <DT><CODE>-q</CODE> |
| <DD>The maximum number of bytes in POSIX message queues. |
| <P> |
| |
| <DT><CODE>-r</CODE> |
| <DD>The maximum real-time scheduling priority. |
| <P> |
| |
| <DT><CODE>-s</CODE> |
| <DD>The maximum stack size. |
| <P> |
| |
| <DT><CODE>-t</CODE> |
| <DD>The maximum amount of cpu time in seconds. |
| <P> |
| |
| <DT><CODE>-u</CODE> |
| <DD>The maximum number of processes available to a single user. |
| <P> |
| |
| <DT><CODE>-v</CODE> |
| <DD>The maximum amount of virtual memory available to the shell, and, on |
| some systems, to its children. |
| <P> |
| |
| <DT><CODE>-x</CODE> |
| <DD>The maximum number of file locks. |
| <P> |
| |
| <DT><CODE>-T</CODE> |
| <DD>The maximum number of threads. |
| </DL> |
| <P> |
| |
| If <VAR>limit</VAR> is given, and the <SAMP>`-a'</SAMP> option is not used, |
| <VAR>limit</VAR> is the new value of the specified resource. |
| The special <VAR>limit</VAR> values <CODE>hard</CODE>, <CODE>soft</CODE>, and |
| <CODE>unlimited</CODE> stand for the current hard limit, the current soft limit, |
| and no limit, respectively. |
| A hard limit cannot be increased by a non-root user once it is set; |
| a soft limit may be increased up to the value of the hard limit. |
| Otherwise, the current value of the soft limit for the specified resource |
| is printed, unless the <SAMP>`-H'</SAMP> option is supplied. |
| When setting new limits, if neither <SAMP>`-H'</SAMP> nor <SAMP>`-S'</SAMP> is supplied, |
| both the hard and soft limits are set. |
| If no option is given, then <SAMP>`-f'</SAMP> is assumed. Values are in 1024-byte |
| increments, except for <SAMP>`-t'</SAMP>, which is in seconds; <SAMP>`-p'</SAMP>, |
| which is in units of 512-byte blocks; and <SAMP>`-T'</SAMP>, <SAMP>`-b'</SAMP>, |
| <SAMP>`-n'</SAMP> and <SAMP>`-u'</SAMP>, which are unscaled values. |
| </P><P> |
| |
| The return status is zero unless an invalid option or argument is supplied, |
| or an error occurs while setting a new limit. |
| </P><P> |
| |
| <DT><CODE>unalias</CODE> |
| <DD><A NAME="IDX118"></A> |
| <TABLE><tr><td> </td><td class=example><pre>unalias [-a] [<VAR>name</VAR> <small>...</small> ] |
| </pre></td></tr></table><P> |
| |
| Remove each <VAR>name</VAR> from the list of aliases. If <SAMP>`-a'</SAMP> is |
| supplied, all aliases are removed. |
| Aliases are described in <A HREF="bashref.html#SEC85">6.6 Aliases</A>. |
| </DL> |
| <P> |
| |
| <A NAME="Modifying Shell Behavior"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC62"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC61"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC63"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC65"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC65"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 4.3 Modifying Shell Behavior </H2> |
| <!--docid::SEC62::--> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC63">4.3.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="bashref.html#SEC64">4.3.2 The Shopt Builtin</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Modify shell optional behavior.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="The Set Builtin"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC63"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC62"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC64"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC65"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC62"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC65"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 4.3.1 The Set Builtin </H3> |
| <!--docid::SEC63::--> |
| <P> |
| |
| This builtin is so complicated that it deserves its own section. <CODE>set</CODE> |
| allows you to change the values of shell options and set the positional |
| parameters, or to display the names and values of shell variables. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>set</CODE> |
| <DD><A NAME="IDX119"></A> |
| <TABLE><tr><td> </td><td class=example><pre>set [--abefhkmnptuvxBCEHPT] [-o <VAR>option-name</VAR>] [<VAR>argument</VAR> <small>...</small>] |
| set [+abefhkmnptuvxBCEHPT] [+o <VAR>option-name</VAR>] [<VAR>argument</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| If no options or arguments are supplied, <CODE>set</CODE> displays the names |
| and values of all shell variables and functions, sorted according to the |
| current locale, in a format that may be reused as input |
| for setting or resetting the currently-set variables. |
| Read-only variables cannot be reset. |
| In POSIX mode, only shell variables are listed. |
| </P><P> |
| |
| When options are supplied, they set or unset shell attributes. |
| Options, if specified, have the following meanings: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-a</CODE> |
| <DD>Mark variables and function which are modified or created for export |
| to the environment of subsequent commands. |
| <P> |
| |
| <DT><CODE>-b</CODE> |
| <DD>Cause the status of terminated background jobs to be reported |
| immediately, rather than before printing the next primary prompt. |
| <P> |
| |
| <DT><CODE>-e</CODE> |
| <DD>Exit immediately if |
| a pipeline (see section <A HREF="bashref.html#SEC17">3.2.2 Pipelines</A>), which may consist of a single simple command |
| (see section <A HREF="bashref.html#SEC16">3.2.1 Simple Commands</A>), |
| a list (see section <A HREF="bashref.html#SEC18">3.2.3 Lists of Commands</A>), |
| or a compound command (see section <A HREF="bashref.html#SEC19">3.2.4 Compound Commands</A>) |
| returns a non-zero status. |
| The shell does not exit if the command that fails is part of the |
| command list immediately following a <CODE>while</CODE> or <CODE>until</CODE> keyword, |
| part of the test in an <CODE>if</CODE> statement, |
| part of any command executed in a <CODE>&&</CODE> or <CODE>||</CODE> list except |
| the command following the final <CODE>&&</CODE> or <CODE>||</CODE>, |
| any command in a pipeline but the last, |
| or if the command's return status is being inverted with <CODE>!</CODE>. |
| If a compound command other than a subshell |
| returns a non-zero status because a command failed |
| while <SAMP>`-e'</SAMP> was being ignored, the shell does not exit. |
| A trap on <CODE>ERR</CODE>, if set, is executed before the shell exits. |
| <P> |
| |
| This option applies to the shell environment and each subshell environment |
| separately (see section <A HREF="bashref.html#SEC54">3.7.3 Command Execution Environment</A>), and may cause |
| subshells to exit before executing all the commands in the subshell. |
| </P><P> |
| |
| If a compound command or shell function executes in a context where |
| <SAMP>`-e'</SAMP> is being ignored, |
| none of the commands executed within the compound command or function body |
| will be affected by the <SAMP>`-e'</SAMP> setting, even if <SAMP>`-e'</SAMP> is set |
| and a command returns a failure status. |
| If a compound command or shell function sets <SAMP>`-e'</SAMP> while executing in |
| a context where <SAMP>`-e'</SAMP> is ignored, that setting will not have any |
| effect until the compound command or the command containing the function |
| call completes. |
| </P><P> |
| |
| <DT><CODE>-f</CODE> |
| <DD>Disable filename expansion (globbing). |
| <P> |
| |
| <DT><CODE>-h</CODE> |
| <DD>Locate and remember (hash) commands as they are looked up for execution. |
| This option is enabled by default. |
| <P> |
| |
| <DT><CODE>-k</CODE> |
| <DD>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> |
| |
| <DT><CODE>-m</CODE> |
| <DD>Job control is enabled (see section <A HREF="bashref.html#SEC92">7. 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> |
| |
| <DT><CODE>-n</CODE> |
| <DD>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> |
| |
| <DT><CODE>-o <VAR>option-name</VAR></CODE> |
| <DD><P> |
| |
| Set the option corresponding to <VAR>option-name</VAR>: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>allexport</CODE> |
| <DD>Same as <CODE>-a</CODE>. |
| <P> |
| |
| <DT><CODE>braceexpand</CODE> |
| <DD>Same as <CODE>-B</CODE>. |
| <P> |
| |
| <DT><CODE>emacs</CODE> |
| <DD>Use an <CODE>emacs</CODE>-style line editing interface (see section <A HREF="bashref.html#SEC96">8. Command Line Editing</A>). |
| This also affects the editing interface used for <CODE>read -e</CODE>. |
| <P> |
| |
| <DT><CODE>errexit</CODE> |
| <DD>Same as <CODE>-e</CODE>. |
| <P> |
| |
| <DT><CODE>errtrace</CODE> |
| <DD>Same as <CODE>-E</CODE>. |
| <P> |
| |
| <DT><CODE>functrace</CODE> |
| <DD>Same as <CODE>-T</CODE>. |
| <P> |
| |
| <DT><CODE>hashall</CODE> |
| <DD>Same as <CODE>-h</CODE>. |
| <P> |
| |
| <DT><CODE>histexpand</CODE> |
| <DD>Same as <CODE>-H</CODE>. |
| <P> |
| |
| <DT><CODE>history</CODE> |
| <DD>Enable command history, as described in <A HREF="bashref.html#SEC122">9.1 Bash History Facilities</A>. |
| This option is on by default in interactive shells. |
| <P> |
| |
| <DT><CODE>ignoreeof</CODE> |
| <DD>An interactive shell will not exit upon reading EOF. |
| <P> |
| |
| <DT><CODE>keyword</CODE> |
| <DD>Same as <CODE>-k</CODE>. |
| <P> |
| |
| <DT><CODE>monitor</CODE> |
| <DD>Same as <CODE>-m</CODE>. |
| <P> |
| |
| <DT><CODE>noclobber</CODE> |
| <DD>Same as <CODE>-C</CODE>. |
| <P> |
| |
| <DT><CODE>noexec</CODE> |
| <DD>Same as <CODE>-n</CODE>. |
| <P> |
| |
| <DT><CODE>noglob</CODE> |
| <DD>Same as <CODE>-f</CODE>. |
| <P> |
| |
| <DT><CODE>nolog</CODE> |
| <DD>Currently ignored. |
| <P> |
| |
| <DT><CODE>notify</CODE> |
| <DD>Same as <CODE>-b</CODE>. |
| <P> |
| |
| <DT><CODE>nounset</CODE> |
| <DD>Same as <CODE>-u</CODE>. |
| <P> |
| |
| <DT><CODE>onecmd</CODE> |
| <DD>Same as <CODE>-t</CODE>. |
| <P> |
| |
| <DT><CODE>physical</CODE> |
| <DD>Same as <CODE>-P</CODE>. |
| <P> |
| |
| <DT><CODE>pipefail</CODE> |
| <DD>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> |
| |
| <DT><CODE>posix</CODE> |
| <DD>Change the behavior of Bash where the default operation differs |
| from the POSIX standard to match the standard |
| (see section <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>). |
| This is intended to make Bash behave as a strict superset of that |
| standard. |
| <P> |
| |
| <DT><CODE>privileged</CODE> |
| <DD>Same as <CODE>-p</CODE>. |
| <P> |
| |
| <DT><CODE>verbose</CODE> |
| <DD>Same as <CODE>-v</CODE>. |
| <P> |
| |
| <DT><CODE>vi</CODE> |
| <DD>Use a <CODE>vi</CODE>-style line editing interface. |
| This also affects the editing interface used for <CODE>read -e</CODE>. |
| <P> |
| |
| <DT><CODE>xtrace</CODE> |
| <DD>Same as <CODE>-x</CODE>. |
| </DL> |
| <P> |
| |
| <DT><CODE>-p</CODE> |
| <DD>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 the <CODE>SHELLOPTS</CODE>, <CODE>BASHOPTS</CODE>, <CODE>CDPATH</CODE> and <CODE>GLOBIGNORE</CODE> |
| variables, if they appear in the environment, are ignored. |
| If the shell is started with the effective user (group) id not equal to the |
| real user (group) id, and the <SAMP>`-p'</SAMP> option is not supplied, these actions |
| are taken and the effective user id is set to the real user id. |
| If the <SAMP>`-p'</SAMP> option is supplied at startup, the effective user id is |
| not reset. |
| Turning this option off causes the effective user |
| and group ids to be set to the real user and group ids. |
| <P> |
| |
| <DT><CODE>-t</CODE> |
| <DD>Exit after reading and executing one command. |
| <P> |
| |
| <DT><CODE>-u</CODE> |
| <DD>Treat unset variables and parameters other than the special parameters |
| <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> |
| |
| <DT><CODE>-v</CODE> |
| <DD>Print shell input lines as they are read. |
| <P> |
| |
| <DT><CODE>-x</CODE> |
| <DD>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 |
| expanded and before they are executed. The value of the <CODE>PS4</CODE> |
| variable is expanded and the resultant value is printed before |
| the command and its expanded arguments. |
| <P> |
| |
| <DT><CODE>-B</CODE> |
| <DD>The shell will perform brace expansion (see section <A HREF="bashref.html#SEC30">3.5.1 Brace Expansion</A>). |
| This option is on by default. |
| <P> |
| |
| <DT><CODE>-C</CODE> |
| <DD>Prevent output redirection using <SAMP>`>'</SAMP>, <SAMP>`>&'</SAMP>, and <SAMP>`<>'</SAMP> |
| from overwriting existing files. |
| <P> |
| |
| <DT><CODE>-E</CODE> |
| <DD>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> |
| |
| <DT><CODE>-H</CODE> |
| <DD>Enable <SAMP>`!'</SAMP> style history substitution (see section <A HREF="bashref.html#SEC124">9.3 History Expansion</A>). |
| This option is on by default for interactive shells. |
| <P> |
| |
| <DT><CODE>-P</CODE> |
| <DD>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 |
| the logical chain of directories when performing commands |
| which change the current directory. |
| <P> |
| |
| For example, if <TT>`/usr/sys'</TT> is a symbolic link to <TT>`/usr/local/sys'</TT> |
| then: |
| <TABLE><tr><td> </td><td class=example><pre>$ cd /usr/sys; echo $PWD |
| /usr/sys |
| $ cd ..; pwd |
| /usr |
| </pre></td></tr></table></P><P> |
| |
| If <CODE>set -P</CODE> is on, then: |
| <TABLE><tr><td> </td><td class=example><pre>$ cd /usr/sys; echo $PWD |
| /usr/local/sys |
| $ cd ..; pwd |
| /usr/local |
| </pre></td></tr></table></P><P> |
| |
| <DT><CODE>-T</CODE> |
| <DD>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. |
| The <CODE>DEBUG</CODE> and <CODE>RETURN</CODE> traps are normally not inherited |
| in such cases. |
| <P> |
| |
| <DT><CODE>--</CODE> |
| <DD>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> |
| |
| <DT><CODE>-</CODE> |
| <DD>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. |
| If there are no arguments, the positional parameters remain unchanged. |
| </DL> |
| <P> |
| |
| Using <SAMP>`+'</SAMP> rather than <SAMP>`-'</SAMP> causes these options to be |
| turned off. The options can also be used upon invocation of the |
| shell. The current set of options may be found in <CODE>$-</CODE>. |
| </P><P> |
| |
| The remaining N <VAR>arguments</VAR> are positional parameters and are |
| assigned, in order, to <CODE>$1</CODE>, <CODE>$2</CODE>, <small>...</small> <CODE>$N</CODE>. |
| The special parameter <CODE>#</CODE> is set to N. |
| </P><P> |
| |
| The return status is always zero unless an invalid option is supplied. |
| </DL> |
| <P> |
| |
| <A NAME="The Shopt Builtin"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC64"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC63"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC65"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC65"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC62"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC65"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 4.3.2 The Shopt Builtin </H3> |
| <!--docid::SEC64::--> |
| <P> |
| |
| This builtin allows you to change additional shell optional behavior. |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>shopt</CODE> |
| <DD><A NAME="IDX120"></A> |
| <TABLE><tr><td> </td><td class=example><pre>shopt [-pqsu] [-o] [<VAR>optname</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| Toggle the values of settings controlling optional shell behavior. |
| The settings can be either those listed below, or, if the |
| <SAMP>`-o'</SAMP> option is used, those available with the <SAMP>`-o'</SAMP> |
| option to the <CODE>set</CODE> builtin command (see section <A HREF="bashref.html#SEC63">4.3.1 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. |
| 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><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-s</CODE> |
| <DD>Enable (set) each <VAR>optname</VAR>. |
| <P> |
| |
| <DT><CODE>-u</CODE> |
| <DD>Disable (unset) each <VAR>optname</VAR>. |
| <P> |
| |
| <DT><CODE>-q</CODE> |
| <DD>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; |
| non-zero otherwise. |
| <P> |
| |
| <DT><CODE>-o</CODE> |
| <DD>Restricts the values of |
| <VAR>optname</VAR> to be those defined for the <SAMP>`-o'</SAMP> option to the |
| <CODE>set</CODE> builtin (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| </DL> |
| <P> |
| |
| If either <SAMP>`-s'</SAMP> or <SAMP>`-u'</SAMP> |
| is used with no <VAR>optname</VAR> arguments, <CODE>shopt</CODE> shows only |
| those options which are set or unset, respectively. |
| </P><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> |
| 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: |
| <DL COMPACT> |
| |
| <DT><CODE>autocd</CODE> |
| <DD>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> |
| |
| <DT><CODE>cdable_vars</CODE> |
| <DD>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> |
| |
| <DT><CODE>cdspell</CODE> |
| <DD>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, |
| a missing character, and a character too many. |
| If a correction is found, the corrected path is printed, |
| and the command proceeds. |
| This option is only used by interactive shells. |
| <P> |
| |
| <DT><CODE>checkhash</CODE> |
| <DD>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> |
| |
| <DT><CODE>checkjobs</CODE> |
| <DD>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 |
| intervening command (see section <A HREF="bashref.html#SEC92">7. Job Control</A>). |
| The shell always postpones exiting if any jobs are stopped. |
| <P> |
| |
| <DT><CODE>checkwinsize</CODE> |
| <DD>If set, Bash checks the window size after each command |
| and, if necessary, updates the values of |
| <CODE>LINES</CODE> and <CODE>COLUMNS</CODE>. |
| <P> |
| |
| <DT><CODE>cmdhist</CODE> |
| <DD>If set, Bash |
| attempts to save all lines of a multiple-line |
| command in the same history entry. This allows |
| easy re-editing of multi-line commands. |
| <P> |
| |
| <DT><CODE>compat31</CODE> |
| <DD>If set, Bash |
| changes its behavior to that of version 3.1 with respect to quoted |
| arguments to the conditional command's <SAMP>`=~'</SAMP> operator |
| and with respect to locale-specific |
| string comparison when using the <CODE>[[</CODE> |
| conditional command's <SAMP>`<'</SAMP> and <SAMP>`>'</SAMP> operators. |
| Bash versions prior to bash-4.1 use ASCII collation and strcmp(3); |
| bash-4.1 and later use the current locale's collation sequence and strcoll(3). |
| <P> |
| |
| <DT><CODE>compat32</CODE> |
| <DD>If set, Bash |
| changes its behavior to that of version 3.2 with respect to locale-specific |
| string comparison when using the <CODE>[[</CODE> |
| conditional command's <SAMP>`<'</SAMP> and <SAMP>`>'</SAMP> operators (see previous item). |
| <P> |
| |
| <DT><CODE>compat40</CODE> |
| <DD>If set, Bash |
| changes its behavior to that of version 4.0 with respect to locale-specific |
| string comparison when using the <CODE>[[</CODE> |
| conditional command's <SAMP>`<'</SAMP> and <SAMP>`>'</SAMP> operators (see description |
| of <CODE>compat31</CODE>) |
| and the effect of interrupting a command list. |
| Bash versions 4.0 and later interrupt the list as if the shell received the |
| interrupt; previous versions continue with the next command in the list. |
| <P> |
| |
| <DT><CODE>compat41</CODE> |
| <DD>If set, Bash, when in POSIX mode, treats a single quote in a double-quoted |
| parameter expansion as a special character. The single quotes must match |
| (an even number) and the characters between the single quotes are considered |
| quoted. This is the behavior of POSIX mode through version 4.1. |
| The default Bash behavior remains as in previous versions. |
| <P> |
| |
| <DT><CODE>compat42</CODE> |
| <DD>If set, Bash |
| does not process the replacement string in the pattern substitution word |
| expansion using quote removal. |
| <P> |
| |
| <DT><CODE>complete_fullquote</CODE> |
| <DD>If set, Bash |
| quotes all shell metacharacters in filenames and directory names when |
| performing completion. |
| If not set, Bash |
| removes metacharacters such as the dollar sign from the set of |
| characters that will be quoted in completed filenames |
| when these metacharacters appear in shell variable references in words to be |
| completed. |
| This means that dollar signs in variable names that expand to directories |
| will not be quoted; |
| however, any dollar signs appearing in filenames will not be quoted, either. |
| This is active only when bash is using backslashes to quote completed |
| filenames. |
| This variable is set by default, which is the default Bash behavior in |
| versions through 4.2. |
| <P> |
| |
| <DT><CODE>direxpand</CODE> |
| <DD>If set, Bash |
| replaces directory names with the results of word expansion when performing |
| filename completion. This changes the contents of the readline editing |
| buffer. |
| If not set, Bash attempts to preserve what the user typed. |
| <P> |
| |
| <DT><CODE>dirspell</CODE> |
| <DD>If set, Bash |
| attempts spelling correction on directory names during word completion |
| if the directory name initially supplied does not exist. |
| <P> |
| |
| <DT><CODE>dotglob</CODE> |
| <DD>If set, Bash includes filenames beginning with a `.' in |
| the results of filename expansion. |
| <P> |
| |
| <DT><CODE>execfail</CODE> |
| <DD>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> |
| |
| <DT><CODE>expand_aliases</CODE> |
| <DD>If set, aliases are expanded as described below under Aliases, |
| <A HREF="bashref.html#SEC85">6.6 Aliases</A>. |
| This option is enabled by default for interactive shells. |
| <P> |
| |
| <DT><CODE>extdebug</CODE> |
| <DD>If set, behavior intended for use by debuggers is enabled: |
| <P> |
| |
| <OL> |
| <LI> |
| The <SAMP>`-F'</SAMP> option to the <CODE>declare</CODE> builtin (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>) |
| displays the source file name and line number corresponding to each function |
| name supplied as an argument. |
| <P> |
| |
| <LI> |
| If the command run by the <CODE>DEBUG</CODE> trap returns a non-zero value, the |
| next command is skipped and not executed. |
| <P> |
| |
| <LI> |
| If the command run by the <CODE>DEBUG</CODE> trap returns a value of 2, and the |
| shell is executing in a subroutine (a shell function or a shell script |
| executed by the <CODE>.</CODE> or <CODE>source</CODE> builtins), a call to |
| <CODE>return</CODE> is simulated. |
| <P> |
| |
| <LI> |
| <CODE>BASH_ARGC</CODE> and <CODE>BASH_ARGV</CODE> are updated as described in their |
| descriptions (see section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>). |
| <P> |
| |
| <LI> |
| Function tracing is enabled: command substitution, shell functions, and |
| subshells invoked with <CODE>( <VAR>command</VAR> )</CODE> inherit the |
| <CODE>DEBUG</CODE> and <CODE>RETURN</CODE> traps. |
| <P> |
| |
| <LI> |
| Error tracing is enabled: command substitution, shell functions, and |
| subshells invoked with <CODE>( <VAR>command</VAR> )</CODE> inherit the |
| <CODE>ERR</CODE> trap. |
| </OL> |
| <P> |
| |
| <DT><CODE>extglob</CODE> |
| <DD>If set, the extended pattern matching features described above |
| (see section <A HREF="bashref.html#SEC38">3.5.8.1 Pattern Matching</A>) are enabled. |
| <P> |
| |
| <DT><CODE>extquote</CODE> |
| <DD>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> |
| |
| <DT><CODE>failglob</CODE> |
| <DD>If set, patterns which fail to match filenames during filename expansion |
| result in an expansion error. |
| <P> |
| |
| <DT><CODE>force_fignore</CODE> |
| <DD>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. |
| See section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>, for a description of <CODE>FIGNORE</CODE>. |
| This option is enabled by default. |
| <P> |
| |
| <DT><CODE>globasciiranges</CODE> |
| <DD>If set, range expressions used in pattern matching bracket expressions |
| (see section <A HREF="bashref.html#SEC38">3.5.8.1 Pattern Matching</A>) |
| behave as if in the traditional C locale when performing |
| comparisons. That is, the current locale's collating sequence |
| is not taken into account, so |
| <SAMP>`b'</SAMP> will not collate between <SAMP>`A'</SAMP> and <SAMP>`B'</SAMP>, |
| and upper-case and lower-case ASCII characters will collate together. |
| <P> |
| |
| <DT><CODE>globstar</CODE> |
| <DD>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> |
| |
| <DT><CODE>gnu_errfmt</CODE> |
| <DD>If set, shell error messages are written in the standard GNU error |
| message format. |
| <P> |
| |
| <DT><CODE>histappend</CODE> |
| <DD>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> |
| |
| <DT><CODE>histreedit</CODE> |
| <DD>If set, and Readline |
| is being used, a user is given the opportunity to re-edit a |
| failed history substitution. |
| <P> |
| |
| <DT><CODE>histverify</CODE> |
| <DD>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> |
| |
| <DT><CODE>hostcomplete</CODE> |
| <DD>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 section <A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A>). This option is enabled |
| by default. |
| <P> |
| |
| <DT><CODE>huponexit</CODE> |
| <DD>If set, Bash will send <CODE>SIGHUP</CODE> to all jobs when an interactive |
| login shell exits (see section <A HREF="bashref.html#SEC57">3.7.6 Signals</A>). |
| <P> |
| |
| <DT><CODE>interactive_comments</CODE> |
| <DD>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> |
| |
| <DT><CODE>lastpipe</CODE> |
| <DD>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> |
| |
| <DT><CODE>lithist</CODE> |
| <DD>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> |
| |
| <DT><CODE>login_shell</CODE> |
| <DD>The shell sets this option if it is started as a login shell |
| (see section <A HREF="bashref.html#SEC70">6.1 Invoking Bash</A>). |
| The value may not be changed. |
| <P> |
| |
| <DT><CODE>mailwarn</CODE> |
| <DD>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> |
| |
| <DT><CODE>no_empty_cmd_completion</CODE> |
| <DD>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> |
| |
| <DT><CODE>nocaseglob</CODE> |
| <DD>If set, Bash matches filenames in a case-insensitive fashion when |
| performing filename expansion. |
| <P> |
| |
| <DT><CODE>nocasematch</CODE> |
| <DD>If set, Bash matches patterns in a case-insensitive fashion when |
| performing matching while executing <CODE>case</CODE> or <CODE>[[</CODE> |
| conditional commands. |
| <P> |
| |
| <DT><CODE>nullglob</CODE> |
| <DD>If set, Bash allows filename patterns which match no |
| files to expand to a null string, rather than themselves. |
| <P> |
| |
| <DT><CODE>progcomp</CODE> |
| <DD>If set, the programmable completion facilities |
| (see section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>) are enabled. |
| This option is enabled by default. |
| <P> |
| |
| <DT><CODE>promptvars</CODE> |
| <DD>If set, prompt strings undergo |
| parameter expansion, command substitution, arithmetic |
| expansion, and quote removal after being expanded |
| as described below (see section <A HREF="bashref.html#SEC89">6.9 Controlling the Prompt</A>). |
| This option is enabled by default. |
| <P> |
| |
| <DT><CODE>restricted_shell</CODE> |
| <DD>The shell sets this option if it is started in restricted mode |
| (see section <A HREF="bashref.html#SEC90">6.10 The Restricted Shell</A>). |
| The value may not be changed. |
| This is not reset when the startup files are executed, allowing |
| the startup files to discover whether or not a shell is restricted. |
| <P> |
| |
| <DT><CODE>shift_verbose</CODE> |
| <DD>If this is set, the <CODE>shift</CODE> |
| builtin prints an error message when the shift count exceeds the |
| number of positional parameters. |
| <P> |
| |
| <DT><CODE>sourcepath</CODE> |
| <DD>If set, the <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> |
| |
| <DT><CODE>xpg_echo</CODE> |
| <DD>If set, the <CODE>echo</CODE> builtin expands backslash-escape sequences |
| by default. |
| <P> |
| |
| </DL> |
| <P> |
| |
| The return status when listing options is zero if all <VAR>optnames</VAR> |
| 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. |
| </DL> |
| <P> |
| |
| <A NAME="Special Builtins"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC65"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC64"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC59"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 4.4 Special Builtins </H2> |
| <!--docid::SEC65::--> |
| <P> |
| |
| For historical reasons, the POSIX standard has classified |
| several builtin commands as <EM>special</EM>. |
| When Bash is executing in POSIX mode, the special builtins |
| differ from other builtin commands in three respects: |
| </P><P> |
| |
| <OL> |
| <LI> |
| Special builtins are found before shell functions during command lookup. |
| <P> |
| |
| <LI> |
| If a special builtin returns an error status, a non-interactive shell exits. |
| <P> |
| |
| <LI> |
| Assignment statements preceding the command stay in effect in the shell |
| environment after the command completes. |
| </OL> |
| <P> |
| |
| When Bash is not executing in POSIX mode, these builtins behave no |
| differently than the rest of the Bash builtin commands. |
| The Bash POSIX mode is described in <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>. |
| </P><P> |
| |
| These are the POSIX special builtins: |
| <TABLE><tr><td> </td><td class=example><pre>break : . continue eval exec exit export readonly return set |
| shift trap unset |
| </pre></td></tr></table></P><P> |
| |
| <A NAME="Shell Variables"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC66"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC65"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC67"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> 5. Shell Variables </H1> |
| <!--docid::SEC66::--> |
| <P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC67">5.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="bashref.html#SEC68">5.2 Bash Variables</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">List of variables that exist in Bash.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| This chapter describes the shell variables that Bash uses. |
| Bash automatically assigns default values to a number of variables. |
| </P><P> |
| |
| <A NAME="Bourne Shell Variables"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC67"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 5.1 Bourne Shell Variables </H2> |
| <!--docid::SEC67::--> |
| <P> |
| |
| Bash uses certain shell variables in the same way as the Bourne shell. |
| In some cases, Bash assigns a default value to the variable. |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <A NAME="IDX121"></A> |
| <DT><CODE>CDPATH</CODE> |
| <DD><A NAME="IDX122"></A> |
| A colon-separated list of directories used as a search path for |
| the <CODE>cd</CODE> builtin command. |
| <P> |
| |
| <A NAME="IDX123"></A> |
| <DT><CODE>HOME</CODE> |
| <DD><A NAME="IDX124"></A> |
| 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 section <A HREF="bashref.html#SEC31">3.5.2 Tilde Expansion</A>). |
| <P> |
| |
| <A NAME="IDX125"></A> |
| <DT><CODE>IFS</CODE> |
| <DD><A NAME="IDX126"></A> |
| A list of characters that separate fields; used when the shell splits |
| words as part of expansion. |
| <P> |
| |
| <A NAME="IDX127"></A> |
| <DT><CODE>MAIL</CODE> |
| <DD><A NAME="IDX128"></A> |
| 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> |
| |
| <A NAME="IDX129"></A> |
| <DT><CODE>MAILPATH</CODE> |
| <DD><A NAME="IDX130"></A> |
| 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 |
| arrives in the mail file by separating the filename from the message with |
| a <SAMP>`?'</SAMP>. |
| When used in the text of the message, <CODE>$_</CODE> expands to the name of |
| the current mail file. |
| <P> |
| |
| <A NAME="IDX131"></A> |
| <DT><CODE>OPTARG</CODE> |
| <DD><A NAME="IDX132"></A> |
| The value of the last option argument processed by the <CODE>getopts</CODE> builtin. |
| <P> |
| |
| <A NAME="IDX133"></A> |
| <DT><CODE>OPTIND</CODE> |
| <DD><A NAME="IDX134"></A> |
| The index of the last option argument processed by the <CODE>getopts</CODE> builtin. |
| <P> |
| |
| <A NAME="IDX135"></A> |
| <DT><CODE>PATH</CODE> |
| <DD><A NAME="IDX136"></A> |
| 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 |
| current directory. |
| A null directory name may appear as two adjacent colons, or as an initial |
| or trailing colon. |
| <P> |
| |
| <A NAME="IDX137"></A> |
| <DT><CODE>PS1</CODE> |
| <DD><A NAME="IDX138"></A> |
| The primary prompt string. The default value is <SAMP>`\s-\v\$ '</SAMP>. |
| See section <A HREF="bashref.html#SEC89">6.9 Controlling the Prompt</A>, for the complete list of escape |
| sequences that are expanded before <CODE>PS1</CODE> is displayed. |
| <P> |
| |
| <A NAME="IDX139"></A> |
| <DT><CODE>PS2</CODE> |
| <DD><A NAME="IDX140"></A> |
| The secondary prompt string. The default value is <SAMP>`> '</SAMP>. |
| <P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Bash Variables"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC68"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC67"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC66"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 5.2 Bash Variables </H2> |
| <!--docid::SEC68::--> |
| <P> |
| |
| These variables are set or used by Bash, but other shells |
| do not normally treat them specially. |
| </P><P> |
| |
| A few variables used by Bash are described in different chapters: |
| variables for controlling the job control facilities |
| (see section <A HREF="bashref.html#SEC95">7.3 Job Control Variables</A>). |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <A NAME="IDX141"></A> |
| <DT><CODE>BASH</CODE> |
| <DD><A NAME="IDX142"></A> |
| The full pathname used to execute the current instance of Bash. |
| <P> |
| |
| <A NAME="IDX143"></A> |
| <DT><CODE>BASHOPTS</CODE> |
| <DD><A NAME="IDX144"></A> |
| 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 section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>). |
| The options appearing in <CODE>BASHOPTS</CODE> are those reported |
| as <SAMP>`on'</SAMP> by <SAMP>`shopt'</SAMP>. |
| If this variable is in the environment when Bash |
| starts up, each shell option in the list will be enabled before |
| reading any startup files. This variable is readonly. |
| <P> |
| |
| <A NAME="IDX145"></A> |
| <DT><CODE>BASHPID</CODE> |
| <DD><A NAME="IDX146"></A> |
| 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. |
| <P> |
| |
| <A NAME="IDX147"></A> |
| <DT><CODE>BASH_ALIASES</CODE> |
| <DD><A NAME="IDX148"></A> |
| An associative array variable whose members correspond to the internal |
| list of aliases as maintained by the <CODE>alias</CODE> builtin. |
| (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| Elements added to this array appear in the alias list; unsetting array |
| elements cause aliases to be removed from the alias list. |
| <P> |
| |
| <A NAME="IDX149"></A> |
| <DT><CODE>BASH_ARGC</CODE> |
| <DD><A NAME="IDX150"></A> |
| 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 |
| with <CODE>.</CODE> or <CODE>source</CODE>) is at the top of the stack. When a |
| subroutine is executed, the number of parameters passed is pushed onto |
| <CODE>BASH_ARGC</CODE>. |
| The shell sets <CODE>BASH_ARGC</CODE> only when in extended debugging mode |
| (see <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A> |
| for a description of the <CODE>extdebug</CODE> option to the <CODE>shopt</CODE> |
| builtin). |
| <P> |
| |
| <A NAME="IDX151"></A> |
| <DT><CODE>BASH_ARGV</CODE> |
| <DD><A NAME="IDX152"></A> |
| 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 |
| at the bottom. When a subroutine is executed, the parameters supplied |
| are pushed onto <CODE>BASH_ARGV</CODE>. |
| The shell sets <CODE>BASH_ARGV</CODE> only when in extended debugging mode |
| (see <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A> |
| for a description of the <CODE>extdebug</CODE> option to the <CODE>shopt</CODE> |
| builtin). |
| <P> |
| |
| <A NAME="IDX153"></A> |
| <DT><CODE>BASH_CMDS</CODE> |
| <DD><A NAME="IDX154"></A> |
| An associative array variable whose members correspond to the internal |
| hash table of commands as maintained by the <CODE>hash</CODE> builtin |
| (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| Elements added to this array appear in the hash table; unsetting array |
| elements cause commands to be removed from the hash table. |
| <P> |
| |
| <A NAME="IDX155"></A> |
| <DT><CODE>BASH_COMMAND</CODE> |
| <DD><A NAME="IDX156"></A> |
| 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. |
| <P> |
| |
| <A NAME="IDX157"></A> |
| <DT><CODE>BASH_COMPAT</CODE> |
| <DD><A NAME="IDX158"></A> |
| The value is used to set the shell's compatibility level. |
| See section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>, for a description of the various compatibility |
| levels and their effects. |
| The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42) |
| corresponding to the desired compatibility level. |
| If <CODE>BASH_COMPAT</CODE> is unset or set to the empty string, the compatibility |
| level is set to the default for the current version. |
| If <CODE>BASH_COMPAT</CODE> is set to a value that is not one of the valid |
| compatibility levels, the shell prints an error message and sets the |
| compatibility level to the default for the current version. |
| The valid compatibility levels correspond to the compatibility options |
| accepted by the <CODE>shopt</CODE> builtin described above (for example, |
| <VAR>compat42</VAR> means that 4.2 and 42 are valid values). |
| The current version is also a valid value. |
| <P> |
| |
| <A NAME="IDX159"></A> |
| <DT><CODE>BASH_ENV</CODE> |
| <DD><A NAME="IDX160"></A> |
| 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 section <A HREF="bashref.html#SEC71">6.2 Bash Startup Files</A>. |
| <P> |
| |
| <A NAME="IDX161"></A> |
| <DT><CODE>BASH_EXECUTION_STRING</CODE> |
| <DD><A NAME="IDX162"></A> |
| The command argument to the <SAMP>`-c'</SAMP> invocation option. |
| <P> |
| |
| <A NAME="IDX163"></A> |
| <DT><CODE>BASH_LINENO</CODE> |
| <DD><A NAME="IDX164"></A> |
| An array variable whose members are the line numbers in source files |
| where each corresponding member of <VAR>FUNCNAME</VAR> 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 |
| referenced within another shell function). |
| Use <CODE>LINENO</CODE> to obtain the current line number. |
| <P> |
| |
| <A NAME="IDX165"></A> |
| <DT><CODE>BASH_REMATCH</CODE> |
| <DD><A NAME="IDX166"></A> |
| An array variable whose members are assigned by the <SAMP>`=~'</SAMP> binary |
| operator to the <CODE>[[</CODE> conditional command |
| (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>). |
| The element with index 0 is the portion of the string |
| matching the entire regular expression. |
| The element with index <VAR>n</VAR> is the portion of the |
| string matching the <VAR>n</VAR>th parenthesized subexpression. |
| This variable is read-only. |
| <P> |
| |
| <A NAME="IDX167"></A> |
| <DT><CODE>BASH_SOURCE</CODE> |
| <DD><A NAME="IDX168"></A> |
| An array variable whose members are the source filenames where the |
| corresponding shell function names in the <CODE>FUNCNAME</CODE> array |
| variable are defined. |
| The shell function <CODE>${FUNCNAME[$i]}</CODE> is defined in the file |
| <CODE>${BASH_SOURCE[$i]}</CODE> and called from <CODE>${BASH_SOURCE[$i+1]}</CODE> |
| <P> |
| |
| <A NAME="IDX169"></A> |
| <DT><CODE>BASH_SUBSHELL</CODE> |
| <DD><A NAME="IDX170"></A> |
| Incremented by one within each subshell or subshell environment when |
| the shell begins executing in that environment. |
| The initial value is 0. |
| <P> |
| |
| <A NAME="IDX171"></A> |
| <DT><CODE>BASH_VERSINFO</CODE> |
| <DD><A NAME="IDX172"></A> |
| A readonly array variable (see section <A HREF="bashref.html#SEC86">6.7 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> |
| |
| <DT><CODE>BASH_VERSINFO[0]</CODE> |
| <DD>The major version number (the <VAR>release</VAR>). |
| <P> |
| |
| <DT><CODE>BASH_VERSINFO[1]</CODE> |
| <DD>The minor version number (the <VAR>version</VAR>). |
| <P> |
| |
| <DT><CODE>BASH_VERSINFO[2]</CODE> |
| <DD>The patch level. |
| <P> |
| |
| <DT><CODE>BASH_VERSINFO[3]</CODE> |
| <DD>The build version. |
| <P> |
| |
| <DT><CODE>BASH_VERSINFO[4]</CODE> |
| <DD>The release status (e.g., <VAR>beta1</VAR>). |
| <P> |
| |
| <DT><CODE>BASH_VERSINFO[5]</CODE> |
| <DD>The value of <CODE>MACHTYPE</CODE>. |
| </DL> |
| <P> |
| |
| <A NAME="IDX173"></A> |
| <DT><CODE>BASH_VERSION</CODE> |
| <DD><A NAME="IDX174"></A> |
| The version number of the current instance of Bash. |
| <P> |
| |
| <A NAME="IDX175"></A> |
| <DT><CODE>BASH_XTRACEFD</CODE> |
| <DD><A NAME="IDX176"></A> |
| 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. |
| This allows tracing output to be separated from diagnostic and error |
| messages. |
| The file descriptor is closed when <CODE>BASH_XTRACEFD</CODE> is unset or assigned |
| a new value. |
| Unsetting <CODE>BASH_XTRACEFD</CODE> or assigning it the empty string causes the |
| trace output to be sent to the standard error. |
| Note that setting <CODE>BASH_XTRACEFD</CODE> to 2 (the standard error file |
| descriptor) and then unsetting it will result in the standard error |
| being closed. |
| <P> |
| |
| <A NAME="IDX177"></A> |
| <DT><CODE>CHILD_MAX</CODE> |
| <DD><A NAME="IDX178"></A> |
| Set the number of exited child status values for the shell to remember. |
| Bash will not allow this value to be decreased below a POSIX-mandated |
| minimum, and there is a maximum value (currently 8192) that this may |
| not exceed. |
| The minimum value is system-dependent. |
| <P> |
| |
| <A NAME="IDX179"></A> |
| <DT><CODE>COLUMNS</CODE> |
| <DD><A NAME="IDX180"></A> |
| 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 |
| (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>), or in an interactive shell upon receipt of a |
| <CODE>SIGWINCH</CODE>. |
| <P> |
| |
| <A NAME="IDX181"></A> |
| <DT><CODE>COMP_CWORD</CODE> |
| <DD><A NAME="IDX182"></A> |
| 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 section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>). |
| <P> |
| |
| <A NAME="IDX183"></A> |
| <DT><CODE>COMP_LINE</CODE> |
| <DD><A NAME="IDX184"></A> |
| The current command line. |
| This variable is available only in shell functions and external |
| commands invoked by the |
| programmable completion facilities (see section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>). |
| <P> |
| |
| <A NAME="IDX185"></A> |
| <DT><CODE>COMP_POINT</CODE> |
| <DD><A NAME="IDX186"></A> |
| 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, |
| the value of this variable is equal to <CODE>${#COMP_LINE}</CODE>. |
| This variable is available only in shell functions and external |
| commands invoked by the |
| programmable completion facilities (see section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>). |
| <P> |
| |
| <A NAME="IDX187"></A> |
| <DT><CODE>COMP_TYPE</CODE> |
| <DD><A NAME="IDX188"></A> |
| 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, |
| <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, |
| or |
| <SAMP>`%'</SAMP>, for menu completion. |
| This variable is available only in shell functions and external |
| commands invoked by the |
| programmable completion facilities (see section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>). |
| <P> |
| |
| <A NAME="IDX189"></A> |
| <DT><CODE>COMP_KEY</CODE> |
| <DD><A NAME="IDX190"></A> |
| The key (or final key of a key sequence) used to invoke the current |
| completion function. |
| <P> |
| |
| <A NAME="IDX191"></A> |
| <DT><CODE>COMP_WORDBREAKS</CODE> |
| <DD><A NAME="IDX192"></A> |
| The set of characters that the Readline library treats as word |
| separators when performing word completion. |
| If <CODE>COMP_WORDBREAKS</CODE> is unset, it loses its special properties, |
| even if it is subsequently reset. |
| <P> |
| |
| <A NAME="IDX193"></A> |
| <DT><CODE>COMP_WORDS</CODE> |
| <DD><A NAME="IDX194"></A> |
| 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 |
| <CODE>COMP_WORDBREAKS</CODE> as described above. |
| This variable is available only in shell functions invoked by the |
| programmable completion facilities (see section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>). |
| <P> |
| |
| <A NAME="IDX195"></A> |
| <DT><CODE>COMPREPLY</CODE> |
| <DD><A NAME="IDX196"></A> |
| An array variable from which Bash reads the possible completions |
| generated by a shell function invoked by the programmable completion |
| facility (see section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>). |
| Each array element contains one possible completion. |
| <P> |
| |
| <A NAME="IDX197"></A> |
| <DT><CODE>COPROC</CODE> |
| <DD><A NAME="IDX198"></A> |
| An array variable created to hold the file descriptors |
| for output from and input to an unnamed coprocess (see section <A HREF="bashref.html#SEC23">3.2.5 Coprocesses</A>). |
| <P> |
| |
| <A NAME="IDX199"></A> |
| <DT><CODE>DIRSTACK</CODE> |
| <DD><A NAME="IDX200"></A> |
| 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. |
| Assigning to members of this array variable may be used to modify |
| directories already in the stack, but the <CODE>pushd</CODE> and <CODE>popd</CODE> |
| builtins must be used to add and remove directories. |
| Assignment to this variable will not change the current directory. |
| If <CODE>DIRSTACK</CODE> is unset, it loses its special properties, even if |
| it is subsequently reset. |
| <P> |
| |
| <A NAME="IDX201"></A> |
| <DT><CODE>EMACS</CODE> |
| <DD><A NAME="IDX202"></A> |
| 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> |
| |
| <A NAME="IDX203"></A> |
| <DT><CODE>ENV</CODE> |
| <DD><A NAME="IDX204"></A> |
| Similar to <CODE>BASH_ENV</CODE>; used when the shell is invoked in |
| POSIX Mode (see section <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>). |
| <P> |
| |
| <A NAME="IDX205"></A> |
| <DT><CODE>EUID</CODE> |
| <DD><A NAME="IDX206"></A> |
| The numeric effective user id of the current user. This variable |
| is readonly. |
| <P> |
| |
| <A NAME="IDX207"></A> |
| <DT><CODE>FCEDIT</CODE> |
| <DD><A NAME="IDX208"></A> |
| The editor used as a default by the <SAMP>`-e'</SAMP> option to the <CODE>fc</CODE> |
| builtin command. |
| <P> |
| |
| <A NAME="IDX209"></A> |
| <DT><CODE>FIGNORE</CODE> |
| <DD><A NAME="IDX210"></A> |
| A colon-separated list of suffixes to ignore when performing |
| filename completion. |
| A filename whose suffix matches one of the entries in |
| <CODE>FIGNORE</CODE> |
| is excluded from the list of matched filenames. A sample |
| value is <SAMP>`.o:~'</SAMP> |
| <P> |
| |
| <A NAME="IDX211"></A> |
| <DT><CODE>FUNCNAME</CODE> |
| <DD><A NAME="IDX212"></A> |
| 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 |
| shell function. |
| The bottom-most element (the one with the highest index) |
| is <CODE>"main"</CODE>. |
| This variable exists only when a shell function is executing. |
| Assignments to <CODE>FUNCNAME</CODE> have no effect and return an error status. |
| If <CODE>FUNCNAME</CODE> is unset, it loses its special properties, even if |
| it is subsequently reset. |
| <P> |
| |
| This variable can be used with <CODE>BASH_LINENO</CODE> and <CODE>BASH_SOURCE</CODE>. |
| Each element of <CODE>FUNCNAME</CODE> has corresponding elements in |
| <CODE>BASH_LINENO</CODE> and <CODE>BASH_SOURCE</CODE> to describe the call stack. |
| For instance, <CODE>${FUNCNAME[$i]}</CODE> was called from the file |
| <CODE>${BASH_SOURCE[$i+1]}</CODE> at line number <CODE>${BASH_LINENO[$i]}</CODE>. |
| The <CODE>caller</CODE> builtin displays the current call stack using this |
| information. |
| </P><P> |
| |
| <A NAME="IDX213"></A> |
| <DT><CODE>FUNCNEST</CODE> |
| <DD><A NAME="IDX214"></A> |
| 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> |
| |
| <A NAME="IDX215"></A> |
| <DT><CODE>GLOBIGNORE</CODE> |
| <DD><A NAME="IDX216"></A> |
| A colon-separated list of patterns defining the set of filenames to |
| be ignored by filename expansion. |
| If a filename matched by a filename expansion pattern also matches one |
| of the patterns in <CODE>GLOBIGNORE</CODE>, it is removed from the list |
| of matches. |
| <P> |
| |
| <A NAME="IDX217"></A> |
| <DT><CODE>GROUPS</CODE> |
| <DD><A NAME="IDX218"></A> |
| An array variable containing the list of groups of which the current |
| user is a member. |
| Assignments to <CODE>GROUPS</CODE> have no effect and return an error status. |
| If <CODE>GROUPS</CODE> is unset, it loses its special properties, even if it is |
| subsequently reset. |
| <P> |
| |
| <A NAME="IDX219"></A> |
| <DT><CODE>histchars</CODE> |
| <DD><A NAME="IDX220"></A> |
| Up to three characters which control history expansion, quick |
| substitution, and tokenization (see section <A HREF="bashref.html#SEC124">9.3 History Expansion</A>). |
| The first character is the |
| <VAR>history expansion</VAR> 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 |
| character which indicates that the remainder of the line is a comment when |
| found as the first character of a word, usually <SAMP>`#'</SAMP>. The history |
| comment character causes history substitution to be skipped for the |
| remaining words on the line. It does not necessarily cause the shell |
| parser to treat the rest of the line as a comment. |
| <P> |
| |
| <A NAME="IDX221"></A> |
| <DT><CODE>HISTCMD</CODE> |
| <DD><A NAME="IDX222"></A> |
| The history number, or index in the history list, of the current |
| command. If <CODE>HISTCMD</CODE> is unset, it loses its special properties, |
| even if it is subsequently reset. |
| <P> |
| |
| <A NAME="IDX223"></A> |
| <DT><CODE>HISTCONTROL</CODE> |
| <DD><A NAME="IDX224"></A> |
| 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 |
| with a space character are not saved in the history list. |
| A value of <SAMP>`ignoredups'</SAMP> causes lines which match the previous |
| history entry to not be saved. |
| A value of <SAMP>`ignoreboth'</SAMP> is shorthand for |
| <SAMP>`ignorespace'</SAMP> and <SAMP>`ignoredups'</SAMP>. |
| A value of <SAMP>`erasedups'</SAMP> causes all previous lines matching the |
| current line to be removed from the history list before that line |
| is saved. |
| Any value not in the above list is ignored. |
| If <CODE>HISTCONTROL</CODE> is unset, or does not include a valid value, |
| all lines read by the shell parser are saved on the history list, |
| subject to the value of <CODE>HISTIGNORE</CODE>. |
| The second and subsequent lines of a multi-line compound command are |
| not tested, and are added to the history regardless of the value of |
| <CODE>HISTCONTROL</CODE>. |
| <P> |
| |
| <A NAME="IDX225"></A> |
| <DT><CODE>HISTFILE</CODE> |
| <DD><A NAME="IDX226"></A> |
| The name of the file to which the command history is saved. The |
| default value is <TT>`~/.bash_history'</TT>. |
| <P> |
| |
| <A NAME="IDX227"></A> |
| <DT><CODE>HISTFILESIZE</CODE> |
| <DD><A NAME="IDX228"></A> |
| 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 |
| by removing the oldest entries. |
| The history file is also truncated to this size after |
| writing it when a shell exits. |
| If the value is 0, the history file is truncated to zero size. |
| Non-numeric values and numeric values less than zero inhibit truncation. |
| The shell sets the default value to the value of <CODE>HISTSIZE</CODE> |
| after reading any startup files. |
| <P> |
| |
| <A NAME="IDX229"></A> |
| <DT><CODE>HISTIGNORE</CODE> |
| <DD><A NAME="IDX230"></A> |
| 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 |
| line (no implicit <SAMP>`*'</SAMP> is appended). Each pattern is tested |
| against the line after the checks specified by <CODE>HISTCONTROL</CODE> |
| are applied. In addition to the normal shell pattern matching |
| characters, <SAMP>`&'</SAMP> matches the previous history line. <SAMP>`&'</SAMP> |
| may be escaped using a backslash; the backslash is removed |
| before attempting a match. |
| The second and subsequent lines of a multi-line compound command are |
| not tested, and are added to the history regardless of the value of |
| <CODE>HISTIGNORE</CODE>. |
| <P> |
| |
| <CODE>HISTIGNORE</CODE> subsumes the function of <CODE>HISTCONTROL</CODE>. A |
| pattern of <SAMP>`&'</SAMP> is identical to <CODE>ignoredups</CODE>, and a |
| pattern of <SAMP>`[ ]*'</SAMP> is identical to <CODE>ignorespace</CODE>. |
| Combining these two patterns, separating them with a colon, |
| provides the functionality of <CODE>ignoreboth</CODE>. |
| </P><P> |
| |
| <A NAME="IDX231"></A> |
| <DT><CODE>HISTSIZE</CODE> |
| <DD><A NAME="IDX232"></A> |
| 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 |
| on the history list (there is no limit). |
| The shell sets the default value to 500 after reading any startup files. |
| <P> |
| |
| <A NAME="IDX233"></A> |
| <DT><CODE>HISTTIMEFORMAT</CODE> |
| <DD><A NAME="IDX234"></A> |
| 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 |
| 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. |
| This uses the history comment character to distinguish timestamps from |
| other history lines. |
| <P> |
| |
| <A NAME="IDX235"></A> |
| <DT><CODE>HOSTFILE</CODE> |
| <DD><A NAME="IDX236"></A> |
| Contains the name of a file in the same format as <TT>`/etc/hosts'</TT> that |
| should be read when the shell needs to complete a hostname. |
| The list of possible hostname completions may be changed while the shell |
| is running; |
| the next time hostname completion is attempted after the |
| value is changed, Bash adds the contents of the new file to the |
| existing list. |
| If <CODE>HOSTFILE</CODE> is set, but has no value, or does not name a readable file, |
| Bash attempts to read |
| <TT>`/etc/hosts'</TT> to obtain the list of possible hostname completions. |
| When <CODE>HOSTFILE</CODE> is unset, the hostname list is cleared. |
| <P> |
| |
| <A NAME="IDX237"></A> |
| <DT><CODE>HOSTNAME</CODE> |
| <DD><A NAME="IDX238"></A> |
| The name of the current host. |
| <P> |
| |
| <A NAME="IDX239"></A> |
| <DT><CODE>HOSTTYPE</CODE> |
| <DD><A NAME="IDX240"></A> |
| A string describing the machine Bash is running on. |
| <P> |
| |
| <A NAME="IDX241"></A> |
| <DT><CODE>IGNOREEOF</CODE> |
| <DD><A NAME="IDX242"></A> |
| 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 |
| first character on an input line |
| before the shell will exit. If the variable exists but does not |
| have a numeric value (or has no value) then the default is 10. |
| If the variable does not exist, then <CODE>EOF</CODE> signifies the end of |
| input to the shell. This is only in effect for interactive shells. |
| <P> |
| |
| <A NAME="IDX243"></A> |
| <DT><CODE>INPUTRC</CODE> |
| <DD><A NAME="IDX244"></A> |
| The name of the Readline initialization file, overriding the default |
| of <TT>`~/.inputrc'</TT>. |
| <P> |
| |
| <A NAME="IDX245"></A> |
| <DT><CODE>LANG</CODE> |
| <DD><A NAME="IDX246"></A> |
| Used to determine the locale category for any category not specifically |
| selected with a variable starting with <CODE>LC_</CODE>. |
| <P> |
| |
| <A NAME="IDX247"></A> |
| <DT><CODE>LC_ALL</CODE> |
| <DD><A NAME="IDX248"></A> |
| This variable overrides the value of <CODE>LANG</CODE> and any other |
| <CODE>LC_</CODE> variable specifying a locale category. |
| <P> |
| |
| <A NAME="IDX249"></A> |
| <DT><CODE>LC_COLLATE</CODE> |
| <DD><A NAME="IDX250"></A> |
| This variable determines the collation order used when sorting the |
| results of filename expansion, and |
| determines the behavior of range expressions, equivalence classes, |
| and collating sequences within filename expansion and pattern matching |
| (see section <A HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A>). |
| <P> |
| |
| <A NAME="IDX251"></A> |
| <DT><CODE>LC_CTYPE</CODE> |
| <DD><A NAME="IDX252"></A> |
| This variable determines the interpretation of characters and the |
| behavior of character classes within filename expansion and pattern |
| matching (see section <A HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A>). |
| <P> |
| |
| <A NAME="IDX253"></A> |
| <DT><CODE>LC_MESSAGES</CODE> |
| <DD><A NAME="IDX254"></A> |
| This variable determines the locale used to translate double-quoted |
| strings preceded by a <SAMP>`$'</SAMP> (see section <A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A>). |
| <P> |
| |
| <A NAME="IDX255"></A> |
| <DT><CODE>LC_NUMERIC</CODE> |
| <DD><A NAME="IDX256"></A> |
| This variable determines the locale category used for number formatting. |
| <P> |
| |
| <A NAME="IDX257"></A> |
| <DT><CODE>LINENO</CODE> |
| <DD><A NAME="IDX258"></A> |
| The line number in the script or shell function currently executing. |
| <P> |
| |
| <A NAME="IDX259"></A> |
| <DT><CODE>LINES</CODE> |
| <DD><A NAME="IDX260"></A> |
| 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 |
| (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>), or in an interactive shell upon receipt of a |
| <CODE>SIGWINCH</CODE>. |
| <P> |
| |
| <A NAME="IDX261"></A> |
| <DT><CODE>MACHTYPE</CODE> |
| <DD><A NAME="IDX262"></A> |
| A string that fully describes the system type on which Bash |
| is executing, in the standard GNU <VAR>cpu-company-system</VAR> format. |
| <P> |
| |
| <A NAME="IDX263"></A> |
| <DT><CODE>MAILCHECK</CODE> |
| <DD><A NAME="IDX264"></A> |
| 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 |
| for mail, the shell does so before displaying the primary prompt. |
| If this variable is unset, or set to a value that is not a number |
| greater than or equal to zero, the shell disables mail checking. |
| <P> |
| |
| <A NAME="IDX265"></A> |
| <DT><CODE>MAPFILE</CODE> |
| <DD><A NAME="IDX266"></A> |
| An array variable created to hold the text read by the |
| <CODE>mapfile</CODE> builtin when no variable name is supplied. |
| <P> |
| |
| <A NAME="IDX267"></A> |
| <DT><CODE>OLDPWD</CODE> |
| <DD><A NAME="IDX268"></A> |
| The previous working directory as set by the <CODE>cd</CODE> builtin. |
| <P> |
| |
| <A NAME="IDX269"></A> |
| <DT><CODE>OPTERR</CODE> |
| <DD><A NAME="IDX270"></A> |
| If set to the value 1, Bash displays error messages |
| generated by the <CODE>getopts</CODE> builtin command. |
| <P> |
| |
| <A NAME="IDX271"></A> |
| <DT><CODE>OSTYPE</CODE> |
| <DD><A NAME="IDX272"></A> |
| A string describing the operating system Bash is running on. |
| <P> |
| |
| <A NAME="IDX273"></A> |
| <DT><CODE>PIPESTATUS</CODE> |
| <DD><A NAME="IDX274"></A> |
| An array variable (see section <A HREF="bashref.html#SEC86">6.7 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> |
| |
| <A NAME="IDX275"></A> |
| <DT><CODE>POSIXLY_CORRECT</CODE> |
| <DD><A NAME="IDX276"></A> |
| If this variable is in the environment when Bash starts, the shell |
| enters POSIX mode (see section <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>) before reading the |
| startup files, as if the <SAMP>`--posix'</SAMP> invocation option had been supplied. |
| If it is set while the shell is running, Bash enables POSIX mode, |
| as if the command |
| <TABLE><tr><td> </td><td class=example><pre><CODE>set -o posix</CODE> |
| </pre></td></tr></table>had been executed. |
| <P> |
| |
| <A NAME="IDX277"></A> |
| <DT><CODE>PPID</CODE> |
| <DD><A NAME="IDX278"></A> |
| The process ID of the shell's parent process. This variable |
| is readonly. |
| <P> |
| |
| <A NAME="IDX279"></A> |
| <DT><CODE>PROMPT_COMMAND</CODE> |
| <DD><A NAME="IDX280"></A> |
| If set, the value is interpreted as a command to execute |
| before the printing of each primary prompt (<CODE>$PS1</CODE>). |
| <P> |
| |
| <A NAME="IDX281"></A> |
| <DT><CODE>PROMPT_DIRTRIM</CODE> |
| <DD><A NAME="IDX282"></A> |
| 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 section <A HREF="bashref.html#SEC89">6.9 Controlling the Prompt</A>). |
| Characters removed are replaced with an ellipsis. |
| <P> |
| |
| <A NAME="IDX283"></A> |
| <DT><CODE>PS3</CODE> |
| <DD><A NAME="IDX284"></A> |
| 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> |
| |
| <A NAME="IDX285"></A> |
| <DT><CODE>PS4</CODE> |
| <DD><A NAME="IDX286"></A> |
| The value is the prompt printed before the command line is echoed |
| when the <SAMP>`-x'</SAMP> option is set (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| The first character of <CODE>PS4</CODE> is replicated multiple times, as |
| necessary, to indicate multiple levels of indirection. |
| The default is <SAMP>`+ '</SAMP>. |
| <P> |
| |
| <A NAME="IDX287"></A> |
| <DT><CODE>PWD</CODE> |
| <DD><A NAME="IDX288"></A> |
| The current working directory as set by the <CODE>cd</CODE> builtin. |
| <P> |
| |
| <A NAME="IDX289"></A> |
| <DT><CODE>RANDOM</CODE> |
| <DD><A NAME="IDX290"></A> |
| Each time this parameter is referenced, a random integer |
| between 0 and 32767 is generated. Assigning a value to this |
| variable seeds the random number generator. |
| <P> |
| |
| <A NAME="IDX291"></A> |
| <DT><CODE>READLINE_LINE</CODE> |
| <DD><A NAME="IDX292"></A> |
| The contents of the Readline line buffer, for use |
| with <SAMP>`bind -x'</SAMP> (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <A NAME="IDX293"></A> |
| <DT><CODE>READLINE_POINT</CODE> |
| <DD><A NAME="IDX294"></A> |
| The position of the insertion point in the Readline line buffer, for use |
| with <SAMP>`bind -x'</SAMP> (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <A NAME="IDX295"></A> |
| <DT><CODE>REPLY</CODE> |
| <DD><A NAME="IDX296"></A> |
| The default variable for the <CODE>read</CODE> builtin. |
| <P> |
| |
| <A NAME="IDX297"></A> |
| <DT><CODE>SECONDS</CODE> |
| <DD><A NAME="IDX298"></A> |
| 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. |
| <P> |
| |
| <A NAME="IDX299"></A> |
| <DT><CODE>SHELL</CODE> |
| <DD><A NAME="IDX300"></A> |
| The full pathname to the shell is kept in this environment variable. |
| If it is not set when the shell starts, |
| Bash assigns to it the full pathname of the current user's login shell. |
| <P> |
| |
| <A NAME="IDX301"></A> |
| <DT><CODE>SHELLOPTS</CODE> |
| <DD><A NAME="IDX302"></A> |
| 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 section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| The options appearing in <CODE>SHELLOPTS</CODE> are those reported |
| as <SAMP>`on'</SAMP> by <SAMP>`set -o'</SAMP>. |
| If this variable is in the environment when Bash |
| starts up, each shell option in the list will be enabled before |
| reading any startup files. This variable is readonly. |
| <P> |
| |
| <A NAME="IDX303"></A> |
| <DT><CODE>SHLVL</CODE> |
| <DD><A NAME="IDX304"></A> |
| 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> |
| |
| <A NAME="IDX305"></A> |
| <DT><CODE>TIMEFORMAT</CODE> |
| <DD><A NAME="IDX306"></A> |
| 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. |
| The <SAMP>`%'</SAMP> character introduces an |
| escape sequence that is expanded to a time value or other |
| information. |
| The escape sequences and their meanings are as |
| follows; the braces denote optional portions. |
| <P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>%%</CODE> |
| <DD>A literal <SAMP>`%'</SAMP>. |
| <P> |
| |
| <DT><CODE>%[<VAR>p</VAR>][l]R</CODE> |
| <DD>The elapsed time in seconds. |
| <P> |
| |
| <DT><CODE>%[<VAR>p</VAR>][l]U</CODE> |
| <DD>The number of CPU seconds spent in user mode. |
| <P> |
| |
| <DT><CODE>%[<VAR>p</VAR>][l]S</CODE> |
| <DD>The number of CPU seconds spent in system mode. |
| <P> |
| |
| <DT><CODE>%P</CODE> |
| <DD>The CPU percentage, computed as (%U + %S) / %R. |
| </DL> |
| <P> |
| |
| The optional <VAR>p</VAR> is a digit specifying the precision, the number of |
| fractional digits after a decimal point. |
| A value of 0 causes no decimal point or fraction to be output. |
| At most three places after the decimal point may be specified; values |
| of <VAR>p</VAR> greater than 3 are changed to 3. |
| If <VAR>p</VAR> is not specified, the value 3 is used. |
| </P><P> |
| |
| The optional <CODE>l</CODE> specifies a longer format, including minutes, of |
| the form <VAR>MM</VAR>m<VAR>SS</VAR>.<VAR>FF</VAR>s. |
| The value of <VAR>p</VAR> determines whether or not the fraction is included. |
| </P><P> |
| |
| If this variable is not set, Bash acts as if it had the value |
| <TABLE><tr><td> </td><td class=example><pre><CODE>$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'</CODE> |
| </pre></td></tr></table>If the value is null, no timing information is displayed. |
| A trailing newline is added when the format string is displayed. |
| </P><P> |
| |
| <A NAME="IDX307"></A> |
| <DT><CODE>TMOUT</CODE> |
| <DD><A NAME="IDX308"></A> |
| If set to a value greater than zero, <CODE>TMOUT</CODE> is treated as the |
| default timeout for the <CODE>read</CODE> builtin (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| The <CODE>select</CODE> command (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>) terminates |
| if input does not arrive after <CODE>TMOUT</CODE> seconds when input is coming |
| from a terminal. |
| <P> |
| |
| In an interactive shell, the value is interpreted as |
| the number of seconds to wait for a line of input after issuing |
| the primary prompt. |
| Bash |
| terminates after waiting for that number of seconds if a complete |
| line of input does not arrive. |
| </P><P> |
| |
| <A NAME="IDX309"></A> |
| <DT><CODE>TMPDIR</CODE> |
| <DD><A NAME="IDX310"></A> |
| If set, Bash uses its value as the name of a directory in which |
| Bash creates temporary files for the shell's use. |
| <P> |
| |
| <A NAME="IDX311"></A> |
| <DT><CODE>UID</CODE> |
| <DD><A NAME="IDX312"></A> |
| The numeric real user id of the current user. This variable is readonly. |
| <P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Bash Features"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC69"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC70"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> 6. Bash Features </H1> |
| <!--docid::SEC69::--> |
| <P> |
| |
| This chapter describes features unique to Bash. |
| </P><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC70">6.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="bashref.html#SEC71">6.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="bashref.html#SEC79">6.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="bashref.html#SEC83">6.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="bashref.html#SEC84">6.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="bashref.html#SEC85">6.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="bashref.html#SEC86">6.7 Arrays</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Array Variables.</TD></TR> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC87">6.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="bashref.html#SEC89">6.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="bashref.html#SEC90">6.10 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="bashref.html#SEC91">6.11 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> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Invoking Bash"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC70"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC71"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.1 Invoking Bash </H2> |
| <!--docid::SEC70::--> |
| <P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o <VAR>option</VAR>] [-O <VAR>shopt_option</VAR>] [<VAR>argument</VAR> <small>...</small>] |
| bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o <VAR>option</VAR>] [-O <VAR>shopt_option</VAR>] -c <VAR>string</VAR> [<VAR>argument</VAR> <small>...</small>] |
| bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o <VAR>option</VAR>] [-O <VAR>shopt_option</VAR>] [<VAR>argument</VAR> <small>...</small>] |
| </pre></td></tr></table></P><P> |
| |
| All of the single-character options used with the <CODE>set</CODE> builtin |
| (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>) can be used as options when the shell is invoked. |
| In addition, there are several multi-character |
| options that you can use. These options must appear on the command |
| line before the single-character options to be recognized. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>--debugger</CODE> |
| <DD>Arrange for the debugger profile to be executed before the shell |
| starts. Turns on extended debugging mode (see <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A> |
| for a description of the <CODE>extdebug</CODE> option to the <CODE>shopt</CODE> |
| builtin). |
| <P> |
| |
| <DT><CODE>--dump-po-strings</CODE> |
| <DD>A list of all double-quoted strings preceded by <SAMP>`$'</SAMP> |
| is printed on the standard output |
| in the GNU <CODE>gettext</CODE> PO (portable object) file format. |
| Equivalent to <SAMP>`-D'</SAMP> except for the output format. |
| <P> |
| |
| <DT><CODE>--dump-strings</CODE> |
| <DD>Equivalent to <SAMP>`-D'</SAMP>. |
| <P> |
| |
| <DT><CODE>--help</CODE> |
| <DD>Display a usage message on standard output and exit successfully. |
| <P> |
| |
| <DT><CODE>--init-file <VAR>filename</VAR></CODE> |
| <DD><DT><CODE>--rcfile <VAR>filename</VAR></CODE> |
| <DD>Execute commands from <VAR>filename</VAR> (instead of <TT>`~/.bashrc'</TT>) |
| in an interactive shell. |
| <P> |
| |
| <DT><CODE>--login</CODE> |
| <DD>Equivalent to <SAMP>`-l'</SAMP>. |
| <P> |
| |
| <DT><CODE>--noediting</CODE> |
| <DD>Do not use the GNU Readline library (see section <A HREF="bashref.html#SEC96">8. Command Line Editing</A>) |
| to read command lines when the shell is interactive. |
| <P> |
| |
| <DT><CODE>--noprofile</CODE> |
| <DD>Don't load the system-wide startup file <TT>`/etc/profile'</TT> |
| or any of the personal initialization files |
| <TT>`~/.bash_profile'</TT>, <TT>`~/.bash_login'</TT>, or <TT>`~/.profile'</TT> |
| when Bash is invoked as a login shell. |
| <P> |
| |
| <DT><CODE>--norc</CODE> |
| <DD>Don't read the <TT>`~/.bashrc'</TT> initialization file in an |
| interactive shell. This is on by default if the shell is |
| invoked as <CODE>sh</CODE>. |
| <P> |
| |
| <DT><CODE>--posix</CODE> |
| <DD>Change the behavior of Bash where the default operation differs |
| from the POSIX standard to match the standard. This |
| is intended to make Bash behave as a strict superset of that |
| standard. See section <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>, for a description of the Bash |
| POSIX mode. |
| <P> |
| |
| <DT><CODE>--restricted</CODE> |
| <DD>Make the shell a restricted shell (see section <A HREF="bashref.html#SEC90">6.10 The Restricted Shell</A>). |
| <P> |
| |
| <DT><CODE>--verbose</CODE> |
| <DD>Equivalent to <SAMP>`-v'</SAMP>. Print shell input lines as they're read. |
| <P> |
| |
| <DT><CODE>--version</CODE> |
| <DD>Show version information for this instance of |
| Bash on the standard output and exit successfully. |
| </DL> |
| <P> |
| |
| There are several single-character options that may be supplied at |
| invocation which are not available with the <CODE>set</CODE> builtin. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-c</CODE> |
| <DD>Read and execute commands from the first non-option <VAR>argument</VAR> |
| after processing the options, then exit. |
| Any remaining arguments are assigned to the |
| positional parameters, starting with <CODE>$0</CODE>. |
| <P> |
| |
| <DT><CODE>-i</CODE> |
| <DD>Force the shell to run interactively. Interactive shells are |
| described in <A HREF="bashref.html#SEC79">6.3 Interactive Shells</A>. |
| <P> |
| |
| <DT><CODE>-l</CODE> |
| <DD>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>. |
| When the shell is not interactive, the login shell startup files will |
| be executed. |
| <SAMP>`exec bash -l'</SAMP> or <SAMP>`exec bash --login'</SAMP> |
| will replace the current shell with a Bash login shell. |
| See section <A HREF="bashref.html#SEC71">6.2 Bash Startup Files</A>, for a description of the special behavior |
| of a login shell. |
| <P> |
| |
| <DT><CODE>-r</CODE> |
| <DD>Make the shell a restricted shell (see section <A HREF="bashref.html#SEC90">6.10 The Restricted Shell</A>). |
| <P> |
| |
| <DT><CODE>-s</CODE> |
| <DD>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 |
| when invoking an interactive shell. |
| <P> |
| |
| <DT><CODE>-D</CODE> |
| <DD>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 section <A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A>). |
| This implies the <SAMP>`-n'</SAMP> option; no commands will be executed. |
| <P> |
| |
| <DT><CODE>[-+]O [<VAR>shopt_option</VAR>]</CODE> |
| <DD><VAR>shopt_option</VAR> is one of the shell options accepted by the |
| <CODE>shopt</CODE> builtin (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>). |
| If <VAR>shopt_option</VAR> is present, <SAMP>`-O'</SAMP> sets the value of that option; |
| <SAMP>`+O'</SAMP> unsets it. |
| If <VAR>shopt_option</VAR> is not supplied, the names and values of the shell |
| options accepted by <CODE>shopt</CODE> are printed on the standard output. |
| If the invocation option is <SAMP>`+O'</SAMP>, the output is displayed in a format |
| that may be reused as input. |
| <P> |
| |
| <DT><CODE>--</CODE> |
| <DD>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. |
| </DL> |
| <P> |
| |
| <A NAME="IDX313"></A> |
| A <EM>login</EM> shell is one whose first character of argument zero is |
| <SAMP>`-'</SAMP>, or one invoked with the <SAMP>`--login'</SAMP> option. |
| </P><P> |
| |
| <A NAME="IDX314"></A> |
| An <EM>interactive</EM> shell is one started without non-option arguments, |
| unless <SAMP>`-s'</SAMP> is specified, |
| without specifying the <SAMP>`-c'</SAMP> option, and whose input and output are both |
| connected to terminals (as determined by <CODE>isatty(3)</CODE>), or one |
| started with the <SAMP>`-i'</SAMP> option. See section <A HREF="bashref.html#SEC79">6.3 Interactive Shells</A>, for more |
| information. |
| </P><P> |
| |
| If arguments remain after option processing, and neither the |
| <SAMP>`-c'</SAMP> nor the <SAMP>`-s'</SAMP> |
| option has been supplied, the first argument is assumed to |
| be the name of a file containing shell commands (see section <A HREF="bashref.html#SEC58">3.8 Shell Scripts</A>). |
| When Bash is invoked in this fashion, <CODE>$0</CODE> |
| is set to the name of the file, and the positional parameters |
| are set to the remaining arguments. |
| Bash reads and executes commands from this file, then exits. |
| Bash's exit status is the exit status of the last command executed |
| in the script. If no commands are executed, the exit status is 0. |
| </P><P> |
| |
| <A NAME="Bash Startup Files"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC71"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC70"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC79"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC79"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.2 Bash Startup Files </H2> |
| <!--docid::SEC71::--> |
| <P> |
| |
| This section describes how Bash executes its startup files. |
| If any of the files exist but cannot be read, Bash reports an error. |
| Tildes are expanded in filenames as described above under |
| Tilde Expansion (see section <A HREF="bashref.html#SEC31">3.5.2 Tilde Expansion</A>). |
| </P><P> |
| |
| Interactive shells are described in <A HREF="bashref.html#SEC79">6.3 Interactive Shells</A>. |
| </P><P> |
| |
| <A NAME="SEC72"></A> |
| <H4> Invoked as an interactive login shell, or with <SAMP>`--login'</SAMP> </H4> |
| <!--docid::SEC72::--> |
| <P> |
| |
| When Bash is invoked as an interactive login shell, or as a |
| non-interactive shell with the <SAMP>`--login'</SAMP> option, it first reads and |
| executes commands from the file <TT>`/etc/profile'</TT>, if that file exists. |
| After reading that file, it looks for <TT>`~/.bash_profile'</TT>, |
| <TT>`~/.bash_login'</TT>, and <TT>`~/.profile'</TT>, in that order, and reads |
| and executes commands from the first one that exists and is readable. |
| The <SAMP>`--noprofile'</SAMP> option may be used when the shell is started to |
| inhibit this behavior. |
| </P><P> |
| |
| When a login shell exits, Bash reads and executes commands from |
| the file <TT>`~/.bash_logout'</TT>, if it exists. |
| </P><P> |
| |
| <A NAME="SEC73"></A> |
| <H4> Invoked as an interactive non-login shell </H4> |
| <!--docid::SEC73::--> |
| <P> |
| |
| When an interactive shell that is not a login shell is started, Bash |
| reads and executes commands from <TT>`~/.bashrc'</TT>, if that file exists. |
| This may be inhibited by using the <SAMP>`--norc'</SAMP> option. |
| The <SAMP>`--rcfile <VAR>file</VAR>'</SAMP> option will force Bash to read and |
| execute commands from <VAR>file</VAR> instead of <TT>`~/.bashrc'</TT>. |
| </P><P> |
| |
| So, typically, your <TT>`~/.bash_profile'</TT> contains the line |
| <TABLE><tr><td> </td><td class=example><pre><CODE>if [ -f ~/.bashrc ]; then . ~/.bashrc; fi</CODE> |
| </pre></td></tr></table>after (or before) any login-specific initializations. |
| </P><P> |
| |
| <A NAME="SEC74"></A> |
| <H4> Invoked non-interactively </H4> |
| <!--docid::SEC74::--> |
| <P> |
| |
| When Bash is started non-interactively, to run a shell script, |
| for example, it looks for the variable <CODE>BASH_ENV</CODE> in the environment, |
| expands its value if it appears there, and uses the expanded value as |
| the name of a file to read and execute. Bash behaves as if the |
| following command were executed: |
| <TABLE><tr><td> </td><td class=example><pre><CODE>if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi</CODE> |
| </pre></td></tr></table>but the value of the <CODE>PATH</CODE> variable is not used to search for the |
| filename. |
| </P><P> |
| |
| As noted above, if a non-interactive shell is invoked with the |
| <SAMP>`--login'</SAMP> option, Bash attempts to read and execute commands from the |
| login shell startup files. |
| </P><P> |
| |
| <A NAME="SEC75"></A> |
| <H4> Invoked with name <CODE>sh</CODE> </H4> |
| <!--docid::SEC75::--> |
| <P> |
| |
| If Bash is invoked with the name <CODE>sh</CODE>, it tries to mimic the |
| startup behavior of historical versions of <CODE>sh</CODE> as closely as |
| possible, while conforming to the POSIX standard as well. |
| </P><P> |
| |
| When invoked as an interactive login shell, or as a non-interactive |
| shell with the <SAMP>`--login'</SAMP> option, it first attempts to read |
| and execute commands from <TT>`/etc/profile'</TT> and <TT>`~/.profile'</TT>, in |
| that order. |
| The <SAMP>`--noprofile'</SAMP> option may be used to inhibit this behavior. |
| When invoked as an interactive shell with the name <CODE>sh</CODE>, Bash |
| looks for the variable <CODE>ENV</CODE>, expands its value if it is defined, |
| and uses the expanded value as the name of a file to read and execute. |
| Since a shell invoked as <CODE>sh</CODE> does not attempt to read and execute |
| commands from any other startup files, the <SAMP>`--rcfile'</SAMP> option has |
| no effect. |
| A non-interactive shell invoked with the name <CODE>sh</CODE> does not attempt |
| to read any other startup files. |
| </P><P> |
| |
| When invoked as <CODE>sh</CODE>, Bash enters POSIX mode after |
| the startup files are read. |
| </P><P> |
| |
| <A NAME="SEC76"></A> |
| <H4> Invoked in POSIX mode </H4> |
| <!--docid::SEC76::--> |
| <P> |
| |
| When Bash is started in POSIX mode, as with the |
| <SAMP>`--posix'</SAMP> command line option, it follows the POSIX standard |
| for startup files. |
| In this mode, interactive shells expand the <CODE>ENV</CODE> variable |
| and commands are read and executed from the file whose name is the |
| expanded value. |
| No other startup files are read. |
| </P><P> |
| |
| <A NAME="SEC77"></A> |
| <H4> Invoked by remote shell daemon </H4> |
| <!--docid::SEC77::--> |
| <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 <TT>`~/.bashrc'</TT>, 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 |
| <SAMP>`--rcfile'</SAMP> option may be used to force another file to be read, but |
| neither <CODE>rshd</CODE> nor <CODE>sshd</CODE> generally invoke the shell with those |
| options or allow them to be specified. |
| </P><P> |
| |
| <A NAME="SEC78"></A> |
| <H4> Invoked with unequal effective and real UID/GIDs </H4> |
| <!--docid::SEC78::--> |
| <P> |
| |
| If Bash is started with the effective user (group) id not equal to the |
| real user (group) id, and the <SAMP>`-p'</SAMP> option is not supplied, no startup |
| files are read, shell functions are not inherited from the environment, |
| the <CODE>SHELLOPTS</CODE>, <CODE>BASHOPTS</CODE>, <CODE>CDPATH</CODE>, and <CODE>GLOBIGNORE</CODE> |
| variables, if they appear in the environment, are ignored, and the effective |
| user id is set to the real user id. |
| If the <SAMP>`-p'</SAMP> option is supplied at invocation, the startup behavior is |
| the same, but the effective user id is not reset. |
| </P><P> |
| |
| <A NAME="Interactive Shells"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC79"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC71"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC80"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC83"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC83"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.3 Interactive Shells </H2> |
| <!--docid::SEC79::--> |
| <P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC80">6.3.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="bashref.html#SEC81">6.3.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="bashref.html#SEC82">6.3.3 Interactive Shell Behavior</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">What changes in a interactive shell?</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="What is an Interactive Shell?"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC80"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC79"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC81"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC83"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC79"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC83"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 6.3.1 What is an Interactive Shell? </H3> |
| <!--docid::SEC80::--> |
| <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 |
| 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. |
| </P><P> |
| |
| An interactive shell generally reads from and writes to a user's |
| terminal. |
| </P><P> |
| |
| The <SAMP>`-s'</SAMP> invocation option may be used to set the positional parameters |
| when an interactive shell is started. |
| </P><P> |
| |
| <A NAME="Is this Shell Interactive?"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC81"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC80"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC82"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC82"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC79"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC83"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 6.3.2 Is this Shell Interactive? </H3> |
| <!--docid::SEC81::--> |
| <P> |
| |
| To determine within a startup script whether or not Bash is |
| running interactively, |
| test the value of the <SAMP>`-'</SAMP> special parameter. |
| It contains <CODE>i</CODE> when the shell is interactive. For example: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>case "$-" in |
| *i*) echo This shell is interactive ;; |
| *) echo This shell is not interactive ;; |
| esac |
| </pre></td></tr></table></P><P> |
| |
| Alternatively, startup scripts may examine the variable |
| <CODE>PS1</CODE>; it is unset in non-interactive shells, and set in |
| interactive shells. Thus: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>if [ -z "$PS1" ]; then |
| echo This shell is not interactive |
| else |
| echo This shell is interactive |
| fi |
| </pre></td></tr></table></P><P> |
| |
| <A NAME="Interactive Shell Behavior"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC82"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC81"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC83"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC83"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC79"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC83"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 6.3.3 Interactive Shell Behavior </H3> |
| <!--docid::SEC82::--> |
| <P> |
| |
| When the shell is running interactively, it changes its behavior in |
| several ways. |
| </P><P> |
| |
| <OL> |
| <LI> |
| Startup files are read and executed as described in <A HREF="bashref.html#SEC71">6.2 Bash Startup Files</A>. |
| <P> |
| |
| <LI> |
| Job Control (see section <A HREF="bashref.html#SEC92">7. Job Control</A>) is enabled by default. When job |
| control is in effect, Bash ignores the keyboard-generated job control |
| signals <CODE>SIGTTIN</CODE>, <CODE>SIGTTOU</CODE>, and <CODE>SIGTSTP</CODE>. |
| <P> |
| |
| <LI> |
| Bash expands and displays <CODE>PS1</CODE> before reading the first line |
| of a command, and expands and displays <CODE>PS2</CODE> before reading the |
| second and subsequent lines of a multi-line command. |
| <P> |
| |
| <LI> |
| Bash executes the value of the <CODE>PROMPT_COMMAND</CODE> variable as a command |
| before printing the primary prompt, <CODE>$PS1</CODE> |
| (see section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>). |
| <P> |
| |
| <LI> |
| Readline (see section <A HREF="bashref.html#SEC96">8. Command Line Editing</A>) is used to read commands from |
| the user's terminal. |
| <P> |
| |
| <LI> |
| Bash inspects the value of the <CODE>ignoreeof</CODE> option to <CODE>set -o</CODE> |
| instead of exiting immediately when it receives an <CODE>EOF</CODE> on its |
| standard input when reading a command (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| <P> |
| |
| <LI> |
| Command history (see section <A HREF="bashref.html#SEC122">9.1 Bash History Facilities</A>) |
| and history expansion (see section <A HREF="bashref.html#SEC124">9.3 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. |
| <P> |
| |
| <LI> |
| Alias expansion (see section <A HREF="bashref.html#SEC85">6.6 Aliases</A>) is performed by default. |
| <P> |
| |
| <LI> |
| In the absence of any traps, Bash ignores <CODE>SIGTERM</CODE> |
| (see section <A HREF="bashref.html#SEC57">3.7.6 Signals</A>). |
| <P> |
| |
| <LI> |
| In the absence of any traps, <CODE>SIGINT</CODE> is caught and handled |
| ((see section <A HREF="bashref.html#SEC57">3.7.6 Signals</A>). |
| <CODE>SIGINT</CODE> will interrupt some shell builtins. |
| <P> |
| |
| <LI> |
| An interactive login shell sends a <CODE>SIGHUP</CODE> to all jobs on exit |
| if the <CODE>huponexit</CODE> shell option has been enabled (see section <A HREF="bashref.html#SEC57">3.7.6 Signals</A>). |
| <P> |
| |
| <LI> |
| The <SAMP>`-n'</SAMP> invocation option is ignored, and <SAMP>`set -n'</SAMP> has |
| no effect (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| <P> |
| |
| <LI> |
| Bash will check for mail periodically, depending on the values of the |
| <CODE>MAIL</CODE>, <CODE>MAILPATH</CODE>, and <CODE>MAILCHECK</CODE> shell variables |
| (see section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>). |
| <P> |
| |
| <LI> |
| Expansion errors due to references to unbound shell variables after |
| <SAMP>`set -u'</SAMP> has been enabled will not cause the shell to exit |
| (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| <P> |
| |
| <LI> |
| The shell will not exit on expansion errors caused by <VAR>var</VAR> being unset |
| or null in <CODE>${<VAR>var</VAR>:?<VAR>word</VAR>}</CODE> expansions |
| (see section <A HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A>). |
| <P> |
| |
| <LI> |
| Redirection errors encountered by shell builtins will not cause the |
| shell to exit. |
| <P> |
| |
| <LI> |
| When running in POSIX mode, a special builtin returning an error |
| status will not cause the shell to exit (see section <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>). |
| <P> |
| |
| <LI> |
| A failed <CODE>exec</CODE> will not cause the shell to exit |
| (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| <P> |
| |
| <LI> |
| Parser syntax errors will not cause the shell to exit. |
| <P> |
| |
| <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> |
| option to the <CODE>shopt</CODE> builtin in <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>). |
| <P> |
| |
| <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 |
| printing <CODE>$PS1</CODE> (see section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>). |
| <P> |
| |
| </OL> |
| <P> |
| |
| <A NAME="Bash Conditional Expressions"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC83"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC82"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC84"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC84"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.4 Bash Conditional Expressions </H2> |
| <!--docid::SEC83::--> |
| <P> |
| |
| Conditional expressions are used by the <CODE>[[</CODE> compound command |
| and the <CODE>test</CODE> and <CODE>[</CODE> builtin commands. |
| </P><P> |
| |
| Expressions may be unary or binary. |
| Unary expressions are often used to examine the status of a file. |
| There are string operators and numeric comparison operators as well. |
| If the <VAR>file</VAR> argument to one of the primaries is of the form |
| <TT>`/dev/fd/<VAR>N</VAR>'</TT>, then file descriptor <VAR>N</VAR> is checked. |
| If the <VAR>file</VAR> argument to one of the primaries is one of |
| <TT>`/dev/stdin'</TT>, <TT>`/dev/stdout'</TT>, or <TT>`/dev/stderr'</TT>, file |
| descriptor 0, 1, or 2, respectively, is checked. |
| </P><P> |
| |
| When used with <CODE>[[</CODE>, the <SAMP>`<'</SAMP> and <SAMP>`>'</SAMP> operators sort |
| lexicographically using the current locale. |
| The <CODE>test</CODE> command uses ASCII ordering. |
| </P><P> |
| |
| Unless otherwise specified, primaries that operate on files follow symbolic |
| links and operate on the target of the link, rather than the link itself. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-a <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists. |
| <P> |
| |
| <DT><CODE>-b <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is a block special file. |
| <P> |
| |
| <DT><CODE>-c <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is a character special file. |
| <P> |
| |
| <DT><CODE>-d <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is a directory. |
| <P> |
| |
| <DT><CODE>-e <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists. |
| <P> |
| |
| <DT><CODE>-f <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is a regular file. |
| <P> |
| |
| <DT><CODE>-g <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and its set-group-id bit is set. |
| <P> |
| |
| <DT><CODE>-h <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is a symbolic link. |
| <P> |
| |
| <DT><CODE>-k <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and its "sticky" bit is set. |
| <P> |
| |
| <DT><CODE>-p <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is a named pipe (FIFO). |
| <P> |
| |
| <DT><CODE>-r <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is readable. |
| <P> |
| |
| <DT><CODE>-s <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and has a size greater than zero. |
| <P> |
| |
| <DT><CODE>-t <VAR>fd</VAR></CODE> |
| <DD>True if file descriptor <VAR>fd</VAR> is open and refers to a terminal. |
| <P> |
| |
| <DT><CODE>-u <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and its set-user-id bit is set. |
| <P> |
| |
| <DT><CODE>-w <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is writable. |
| <P> |
| |
| <DT><CODE>-x <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is executable. |
| <P> |
| |
| <DT><CODE>-G <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is owned by the effective group id. |
| <P> |
| |
| <DT><CODE>-L <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is a symbolic link. |
| <P> |
| |
| <DT><CODE>-N <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and has been modified since it was last read. |
| <P> |
| |
| <DT><CODE>-O <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is owned by the effective user id. |
| <P> |
| |
| <DT><CODE>-S <VAR>file</VAR></CODE> |
| <DD>True if <VAR>file</VAR> exists and is a socket. |
| <P> |
| |
| <DT><CODE><VAR>file1</VAR> -ef <VAR>file2</VAR></CODE> |
| <DD>True if <VAR>file1</VAR> and <VAR>file2</VAR> refer to the same device and |
| inode numbers. |
| <P> |
| |
| <DT><CODE><VAR>file1</VAR> -nt <VAR>file2</VAR></CODE> |
| <DD>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> |
| |
| <DT><CODE><VAR>file1</VAR> -ot <VAR>file2</VAR></CODE> |
| <DD>True if <VAR>file1</VAR> is older than <VAR>file2</VAR>, |
| or if <VAR>file2</VAR> exists and <VAR>file1</VAR> does not. |
| <P> |
| |
| <DT><CODE>-o <VAR>optname</VAR></CODE> |
| <DD>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 section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| <P> |
| |
| <DT><CODE>-v <VAR>varname</VAR></CODE> |
| <DD>True if the shell variable <VAR>varname</VAR> is set (has been assigned a value). |
| <P> |
| |
| <DT><CODE>-R <VAR>varname</VAR></CODE> |
| <DD>True if the shell variable <VAR>varname</VAR> is set and is a name reference. |
| <P> |
| |
| <DT><CODE>-z <VAR>string</VAR></CODE> |
| <DD>True if the length of <VAR>string</VAR> is zero. |
| <P> |
| |
| <DT><CODE>-n <VAR>string</VAR></CODE> |
| <DD><DT><CODE><VAR>string</VAR></CODE> |
| <DD>True if the length of <VAR>string</VAR> is non-zero. |
| <P> |
| |
| <DT><CODE><VAR>string1</VAR> == <VAR>string2</VAR></CODE> |
| <DD><DT><CODE><VAR>string1</VAR> = <VAR>string2</VAR></CODE> |
| <DD>True if the strings are equal. |
| When used with the <CODE>[[</CODE> command, this performs pattern matching as |
| described above (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>). |
| <P> |
| |
| <SAMP>`='</SAMP> should be used with the <CODE>test</CODE> command for POSIX conformance. |
| </P><P> |
| |
| <DT><CODE><VAR>string1</VAR> != <VAR>string2</VAR></CODE> |
| <DD>True if the strings are not equal. |
| <P> |
| |
| <DT><CODE><VAR>string1</VAR> < <VAR>string2</VAR></CODE> |
| <DD>True if <VAR>string1</VAR> sorts before <VAR>string2</VAR> lexicographically. |
| <P> |
| |
| <DT><CODE><VAR>string1</VAR> > <VAR>string2</VAR></CODE> |
| <DD>True if <VAR>string1</VAR> sorts after <VAR>string2</VAR> lexicographically. |
| <P> |
| |
| <DT><CODE><VAR>arg1</VAR> OP <VAR>arg2</VAR></CODE> |
| <DD><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> |
| is equal to, not equal to, less than, less than or equal to, |
| greater than, or greater than or equal to <VAR>arg2</VAR>, |
| respectively. <VAR>Arg1</VAR> and <VAR>arg2</VAR> |
| may be positive or negative integers. |
| </DL> |
| <P> |
| |
| <A NAME="Shell Arithmetic"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC84"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC83"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC85"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC85"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.5 Shell Arithmetic </H2> |
| <!--docid::SEC84::--> |
| <P> |
| |
| The shell allows arithmetic expressions to be evaluated, as one of |
| the shell expansions or by the <CODE>let</CODE> and the <SAMP>`-i'</SAMP> option |
| to the <CODE>declare</CODE> builtins. |
| </P><P> |
| |
| Evaluation is done in fixed-width integers with no check for overflow, |
| though division by 0 is trapped and flagged as an error. |
| The operators and their precedence, associativity, and values |
| are the same as in the C language. |
| The following list of operators is grouped into levels of |
| equal-precedence operators. |
| The levels are listed in order of decreasing precedence. |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE><VAR>id</VAR>++ <VAR>id</VAR>--</CODE> |
| <DD>variable post-increment and post-decrement |
| <P> |
| |
| <DT><CODE>++<VAR>id</VAR> --<VAR>id</VAR></CODE> |
| <DD>variable pre-increment and pre-decrement |
| <P> |
| |
| <DT><CODE>- +</CODE> |
| <DD>unary minus and plus |
| <P> |
| |
| <DT><CODE>! ~</CODE> |
| <DD>logical and bitwise negation |
| <P> |
| |
| <DT><CODE>**</CODE> |
| <DD>exponentiation |
| <P> |
| |
| <DT><CODE>* / %</CODE> |
| <DD>multiplication, division, remainder |
| <P> |
| |
| <DT><CODE>+ -</CODE> |
| <DD>addition, subtraction |
| <P> |
| |
| <DT><CODE><< >></CODE> |
| <DD>left and right bitwise shifts |
| <P> |
| |
| <DT><CODE><= >= < ></CODE> |
| <DD>comparison |
| <P> |
| |
| <DT><CODE>== !=</CODE> |
| <DD>equality and inequality |
| <P> |
| |
| <DT><CODE>&</CODE> |
| <DD>bitwise AND |
| <P> |
| |
| <DT><CODE>^</CODE> |
| <DD>bitwise exclusive OR |
| <P> |
| |
| <DT><CODE>|</CODE> |
| <DD>bitwise OR |
| <P> |
| |
| <DT><CODE>&&</CODE> |
| <DD>logical AND |
| <P> |
| |
| <DT><CODE>||</CODE> |
| <DD>logical OR |
| <P> |
| |
| <DT><CODE>expr ? expr : expr</CODE> |
| <DD>conditional operator |
| <P> |
| |
| <DT><CODE>= *= /= %= += -= <<= >>= &= ^= |=</CODE> |
| <DD>assignment |
| <P> |
| |
| <DT><CODE>expr1 , expr2</CODE> |
| <DD>comma |
| </DL> |
| <P> |
| |
| Shell variables are allowed as operands; parameter expansion is |
| performed before the expression is evaluated. |
| Within an expression, shell variables may also be referenced by name |
| without using the parameter expansion syntax. |
| A shell variable that is null or unset evaluates to 0 when referenced |
| 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. |
| A null value evaluates to 0. |
| A shell variable need not have its <VAR>integer</VAR> attribute turned on |
| to be used in an expression. |
| </P><P> |
| |
| Constants with a leading 0 are interpreted as octal numbers. |
| A leading <SAMP>`0x'</SAMP> or <SAMP>`0X'</SAMP> denotes hexadecimal. Otherwise, |
| numbers take the form [<VAR>base</VAR><CODE>#</CODE>]<VAR>n</VAR>, where the optional <VAR>base</VAR> |
| is a decimal number between 2 and 64 representing the arithmetic |
| base, and <VAR>n</VAR> is a number in that base. |
| If <VAR>base</VAR><CODE>#</CODE> is omitted, then base 10 is used. |
| When specifying <VAR>n</VAR>, |
| he digits greater than 9 are represented by the lowercase letters, |
| the uppercase letters, <SAMP>`@'</SAMP>, and <SAMP>`_'</SAMP>, in that order. |
| If <VAR>base</VAR> is less than or equal to 36, lowercase and uppercase |
| letters may be used interchangeably to represent numbers between 10 |
| and 35. |
| </P><P> |
| |
| Operators are evaluated in order of precedence. Sub-expressions in |
| parentheses are evaluated first and may override the precedence |
| rules above. |
| </P><P> |
| |
| <A NAME="Aliases"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC85"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC84"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC86"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC86"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.6 Aliases </H2> |
| <!--docid::SEC85::--> |
| <P> |
| |
| <VAR>Aliases</VAR> 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. |
| </P><P> |
| |
| The first word of each simple command, if unquoted, is checked to see |
| if it has an alias. |
| If so, that word is replaced by the text of the alias. |
| The characters <SAMP>`/'</SAMP>, <SAMP>`$'</SAMP>, <SAMP>``'</SAMP>, <SAMP>`='</SAMP> and any of the |
| shell metacharacters or quoting characters listed above may not appear |
| in an alias name. |
| The replacement text may contain any valid |
| shell input, including shell metacharacters. |
| The first word of the replacement text is tested for |
| aliases, but a word that is identical to an alias being expanded |
| is not expanded a second time. |
| This means that one may alias <CODE>ls</CODE> to <CODE>"ls -F"</CODE>, |
| 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 |
| alias is also checked for alias expansion. |
| </P><P> |
| |
| Aliases are created and listed with the <CODE>alias</CODE> |
| command, and removed with the <CODE>unalias</CODE> command. |
| </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 |
| (see section <A HREF="bashref.html#SEC25">3.3 Shell Functions</A>). |
| </P><P> |
| |
| Aliases are not expanded when the shell is not interactive, |
| unless the <CODE>expand_aliases</CODE> shell option is set using |
| <CODE>shopt</CODE> (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>). |
| </P><P> |
| |
| The rules concerning the definition and use of aliases are |
| somewhat confusing. Bash |
| always reads at least one complete line |
| of input before executing any |
| of the commands on that line. Aliases are expanded when a |
| command is read, not when it is executed. Therefore, an |
| alias definition appearing on the same line as another |
| command does not take effect until the next line of input is read. |
| The commands following the alias definition |
| on that line are not affected by the new alias. |
| This behavior is also an issue when functions are executed. |
| Aliases are expanded when a function definition is read, |
| not when the function is executed, because a function definition |
| is itself a compound command. As a consequence, aliases |
| defined in a function are not available until after that |
| function is executed. To be safe, always put |
| alias definitions on a separate line, and do not use <CODE>alias</CODE> |
| in compound commands. |
| </P><P> |
| |
| For almost every purpose, shell functions are preferred over aliases. |
| </P><P> |
| |
| <A NAME="Arrays"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC86"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC85"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC87"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC87"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.7 Arrays </H2> |
| <!--docid::SEC86::--> |
| <P> |
| |
| Bash provides one-dimensional indexed and associative array variables. |
| Any variable may be used as an indexed array; |
| the <CODE>declare</CODE> builtin will explicitly declare an array. |
| There is no maximum |
| limit on the size of an array, nor any requirement that members |
| be indexed or assigned contiguously. |
| Indexed arrays are referenced using integers (including arithmetic |
| expressions (see section <A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A>)) and are zero-based; |
| associative arrays use arbitrary strings. |
| Unless otherwise noted, indexed array indices must be non-negative integers. |
| </P><P> |
| |
| An indexed array is created automatically if any variable is assigned to |
| using the syntax |
| <TABLE><tr><td> </td><td class=example><pre><VAR>name</VAR>[<VAR>subscript</VAR>]=<VAR>value</VAR> |
| </pre></td></tr></table></P><P> |
| |
| The <VAR>subscript</VAR> |
| is treated as an arithmetic expression that must evaluate to a number. |
| To explicitly declare an array, use |
| <TABLE><tr><td> </td><td class=example><pre>declare -a <VAR>name</VAR> |
| </pre></td></tr></table>The syntax |
| <TABLE><tr><td> </td><td class=example><pre>declare -a <VAR>name</VAR>[<VAR>subscript</VAR>] |
| </pre></td></tr></table>is also accepted; the <VAR>subscript</VAR> is ignored. |
| </P><P> |
| |
| Associative arrays are created using |
| <TABLE><tr><td> </td><td class=example><pre>declare -A <VAR>name</VAR>. |
| </pre></td></tr></table></P><P> |
| |
| Attributes may be |
| specified for an array variable using the <CODE>declare</CODE> and |
| <CODE>readonly</CODE> builtins. Each attribute applies to all members of |
| an array. |
| </P><P> |
| |
| Arrays are assigned to using compound assignments of the form |
| <TABLE><tr><td> </td><td class=example><pre><VAR>name</VAR>=(<VAR>value1</VAR> <VAR>value2</VAR> <small>...</small> ) |
| </pre></td></tr></table>where each |
| <VAR>value</VAR> is of the form <CODE>[<VAR>subscript</VAR>]=</CODE><VAR>string</VAR>. |
| Indexed array assignments do not require anything but <VAR>string</VAR>. |
| When assigning to indexed arrays, if |
| the optional subscript is supplied, that index is assigned to; |
| otherwise the index of the element assigned is the last index assigned |
| to by the statement plus one. Indexing starts at zero. |
| </P><P> |
| |
| When assigning to an associative array, the subscript is required. |
| </P><P> |
| |
| This syntax is also accepted by the <CODE>declare</CODE> |
| builtin. Individual array elements may be assigned to using the |
| <CODE><VAR>name</VAR>[<VAR>subscript</VAR>]=<VAR>value</VAR></CODE> syntax introduced above. |
| </P><P> |
| |
| When assigning to an indexed array, if <VAR>name</VAR> |
| is subscripted by a negative number, that number is |
| interpreted as relative to one greater than the maximum index of |
| <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> |
| |
| Any element of an array may be referenced using |
| <CODE>${<VAR>name</VAR>[<VAR>subscript</VAR>]}</CODE>. |
| The braces are required to avoid |
| conflicts with the shell's filename expansion operators. If the |
| <VAR>subscript</VAR> is <SAMP>`@'</SAMP> or <SAMP>`*'</SAMP>, the word expands to all members |
| of the array <VAR>name</VAR>. These subscripts differ only when the word |
| appears within double quotes. |
| If the word is double-quoted, |
| <CODE>${<VAR>name</VAR>[*]}</CODE> expands to a single word with |
| the value of each array member separated by the first character of the |
| <CODE>IFS</CODE> variable, and <CODE>${<VAR>name</VAR>[@]}</CODE> expands each element of |
| <VAR>name</VAR> to a separate word. When there are no array members, |
| <CODE>${<VAR>name</VAR>[@]}</CODE> expands to nothing. |
| If the double-quoted expansion occurs within a word, the expansion of |
| the first parameter is joined with the beginning part of the original |
| word, and the expansion of the last parameter is joined with the last |
| part of the original word. |
| This is analogous to the |
| expansion of the special parameters <SAMP>`@'</SAMP> and <SAMP>`*'</SAMP>. |
| <CODE>${#<VAR>name</VAR>[<VAR>subscript</VAR>]}</CODE> expands to the length of |
| <CODE>${<VAR>name</VAR>[<VAR>subscript</VAR>]}</CODE>. |
| If <VAR>subscript</VAR> is <SAMP>`@'</SAMP> or |
| <SAMP>`*'</SAMP>, the expansion is the number of elements in the array. |
| Referencing an array variable without a subscript is equivalent to |
| referencing with a subscript of 0. |
| If the <VAR>subscript</VAR> |
| used to reference an element of an indexed array |
| evaluates to a number less than zero, it is |
| interpreted as relative to one greater than the maximum index of the array, |
| so negative indices count back from the end of the array, |
| and an index of -1 refers to the last element. |
| </P><P> |
| |
| An array variable is considered set if a subscript has been assigned a |
| value. The null string is a valid value. |
| </P><P> |
| |
| It is possible to obtain the keys (indices) of an array as well as the values. |
| ${!<VAR>name</VAR>[@]} and ${!<VAR>name</VAR>[*]} expand to the indices |
| assigned in array variable <VAR>name</VAR>. |
| The treatment when in double quotes is similar to the expansion of the |
| special parameters <SAMP>`@'</SAMP> and <SAMP>`*'</SAMP> within double quotes. |
| </P><P> |
| |
| The <CODE>unset</CODE> builtin is used to destroy arrays. |
| <CODE>unset <VAR>name</VAR>[<VAR>subscript</VAR>]</CODE> |
| destroys the array element at index <VAR>subscript</VAR>. |
| Negative subscripts to indexed arrays are interpreted as described above. |
| Care must be taken to avoid unwanted side effects caused by filename |
| expansion. |
| <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. |
| </P><P> |
| |
| The <CODE>declare</CODE>, <CODE>local</CODE>, and <CODE>readonly</CODE> |
| builtins each accept a <SAMP>`-a'</SAMP> option to specify an indexed |
| array and a <SAMP>`-A'</SAMP> option to specify an associative array. |
| If both options are supplied, <SAMP>`-A'</SAMP> takes precedence. |
| The <CODE>read</CODE> builtin accepts a <SAMP>`-a'</SAMP> |
| option to assign a list of words read from the standard input |
| to an array, and can read values from the standard input into |
| individual array elements. The <CODE>set</CODE> and <CODE>declare</CODE> |
| builtins display array values in a way that allows them to be |
| reused as input. |
| </P><P> |
| |
| <A NAME="The Directory Stack"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC87"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC86"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC88"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC89"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC89"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.8 The Directory Stack </H2> |
| <!--docid::SEC87::--> |
| <P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC88">6.8.1 Directory Stack Builtins</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Bash builtin commands to manipulate |
| the directory stack.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| The directory stack is a list of recently-visited directories. The |
| <CODE>pushd</CODE> builtin adds directories to the stack as it changes |
| the current directory, and the <CODE>popd</CODE> builtin removes specified |
| directories from the stack and changes the current directory to |
| the directory removed. The <CODE>dirs</CODE> builtin displays the contents |
| of the directory stack. |
| </P><P> |
| |
| The contents of the directory stack are also visible |
| as the value of the <CODE>DIRSTACK</CODE> shell variable. |
| </P><P> |
| |
| <A NAME="Directory Stack Builtins"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC88"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC87"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC89"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC89"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC87"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC89"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 6.8.1 Directory Stack Builtins </H3> |
| <!--docid::SEC88::--> |
| <P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>dirs</CODE> |
| <DD><A NAME="IDX315"></A> |
| <TABLE><tr><td> </td><td class=example><pre>dirs [-clpv] [+<VAR>N</VAR> | -<VAR>N</VAR>] |
| </pre></td></tr></table><P> |
| |
| Display the list of currently remembered directories. Directories |
| are added to the list with the <CODE>pushd</CODE> command; the |
| <CODE>popd</CODE> command removes directories from the list. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-c</CODE> |
| <DD>Clears the directory stack by deleting all of the elements. |
| <DT><CODE>-l</CODE> |
| <DD>Produces a listing using full pathnames; |
| the default listing format uses a tilde to denote the home directory. |
| <DT><CODE>-p</CODE> |
| <DD>Causes <CODE>dirs</CODE> to print the directory stack with one entry per |
| line. |
| <DT><CODE>-v</CODE> |
| <DD>Causes <CODE>dirs</CODE> to print the directory stack with one entry per |
| line, prefixing each entry with its index in the stack. |
| <DT><CODE>+<VAR>N</VAR></CODE> |
| <DD>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. |
| <DT><CODE>-<VAR>N</VAR></CODE> |
| <DD>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> |
| <P> |
| |
| <DT><CODE>popd</CODE> |
| <DD><A NAME="IDX316"></A> |
| <TABLE><tr><td> </td><td class=example><pre>popd [-n] [+<VAR>N</VAR> | -<VAR>N</VAR>] |
| </pre></td></tr></table><P> |
| |
| Remove the top entry from the directory stack, and <CODE>cd</CODE> |
| to the new top directory. |
| 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. 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>. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-n</CODE> |
| <DD>Suppresses the normal change of directory when removing directories |
| from the stack, so that only the stack is manipulated. |
| <DT><CODE>+<VAR>N</VAR></CODE> |
| <DD>Removes the <VAR>N</VAR>th directory (counting from the left of the |
| list printed by <CODE>dirs</CODE>), starting with zero. |
| <DT><CODE>-<VAR>N</VAR></CODE> |
| <DD>Removes the <VAR>N</VAR>th directory (counting from the right of the |
| list printed by <CODE>dirs</CODE>), starting with zero. |
| </DL> |
| <P> |
| |
| <A NAME="IDX317"></A> |
| <DT><CODE>pushd</CODE> |
| <DD><TABLE><tr><td> </td><td class=example><pre>pushd [-n] [<VAR>+N</VAR> | <VAR>-N</VAR> | <VAR>dir</VAR>] |
| </pre></td></tr></table><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. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-n</CODE> |
| <DD>Suppresses the normal change of directory when adding directories |
| to the stack, so that only the stack is manipulated. |
| <DT><CODE>+<VAR>N</VAR></CODE> |
| <DD>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. |
| <DT><CODE>-<VAR>N</VAR></CODE> |
| <DD>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. |
| <DT><CODE><VAR>dir</VAR></CODE> |
| <DD>Makes the current working directory 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. |
| </DL> |
| </DL> |
| <P> |
| |
| <A NAME="Controlling the Prompt"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC89"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC88"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC90"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.9 Controlling the Prompt </H2> |
| <!--docid::SEC89::--> |
| <P> |
| |
| The value of the variable <CODE>PROMPT_COMMAND</CODE> is examined just before |
| Bash prints each primary prompt. If <CODE>PROMPT_COMMAND</CODE> is set and |
| has a non-null value, then the |
| value is executed just as if it had been typed on the command line. |
| </P><P> |
| |
| In addition, the following table describes the special characters which |
| can appear in the prompt variables <CODE>PS1</CODE> to <CODE>PS4</CODE>: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>\a</CODE> |
| <DD>A bell character. |
| <DT><CODE>\d</CODE> |
| <DD>The date, in "Weekday Month Date" format (e.g., "Tue May 26"). |
| <DT><CODE>\D{<VAR>format</VAR>}</CODE> |
| <DD>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. |
| <DT><CODE>\e</CODE> |
| <DD>An escape character. |
| <DT><CODE>\h</CODE> |
| <DD>The hostname, up to the first `.'. |
| <DT><CODE>\H</CODE> |
| <DD>The hostname. |
| <DT><CODE>\j</CODE> |
| <DD>The number of jobs currently managed by the shell. |
| <DT><CODE>\l</CODE> |
| <DD>The basename of the shell's terminal device name. |
| <DT><CODE>\n</CODE> |
| <DD>A newline. |
| <DT><CODE>\r</CODE> |
| <DD>A carriage return. |
| <DT><CODE>\s</CODE> |
| <DD>The name of the shell, the basename of <CODE>$0</CODE> (the portion |
| following the final slash). |
| <DT><CODE>\t</CODE> |
| <DD>The time, in 24-hour HH:MM:SS format. |
| <DT><CODE>\T</CODE> |
| <DD>The time, in 12-hour HH:MM:SS format. |
| <DT><CODE>\@</CODE> |
| <DD>The time, in 12-hour am/pm format. |
| <DT><CODE>\A</CODE> |
| <DD>The time, in 24-hour HH:MM format. |
| <DT><CODE>\u</CODE> |
| <DD>The username of the current user. |
| <DT><CODE>\v</CODE> |
| <DD>The version of Bash (e.g., 2.00) |
| <DT><CODE>\V</CODE> |
| <DD>The release of Bash, version + patchlevel (e.g., 2.00.0) |
| <DT><CODE>\w</CODE> |
| <DD>The current working directory, with <CODE>$HOME</CODE> abbreviated with a tilde |
| (uses the <CODE>$PROMPT_DIRTRIM</CODE> variable). |
| <DT><CODE>\W</CODE> |
| <DD>The basename of <CODE>$PWD</CODE>, with <CODE>$HOME</CODE> abbreviated with a tilde. |
| <DT><CODE>\!</CODE> |
| <DD>The history number of this command. |
| <DT><CODE>\#</CODE> |
| <DD>The command number of this command. |
| <DT><CODE>\$</CODE> |
| <DD>If the effective uid is 0, <CODE>#</CODE>, otherwise <CODE>$</CODE>. |
| <DT><CODE>\<VAR>nnn</VAR></CODE> |
| <DD>The character whose ASCII code is the octal value <VAR>nnn</VAR>. |
| <DT><CODE>\\</CODE> |
| <DD>A backslash. |
| <DT><CODE>\[</CODE> |
| <DD>Begin a sequence of non-printing characters. This could be used to |
| embed a terminal control sequence into the prompt. |
| <DT><CODE>\]</CODE> |
| <DD>End a sequence of non-printing characters. |
| </DL> |
| <P> |
| |
| The command number and the history number are usually different: |
| the history number of a command is its position in the history |
| list, which may include commands restored from the history file |
| (see section <A HREF="bashref.html#SEC122">9.1 Bash History Facilities</A>), while the command number is |
| the position in the sequence of commands executed during the current |
| shell session. |
| </P><P> |
| |
| After the string is decoded, it is expanded via |
| parameter expansion, command substitution, arithmetic |
| expansion, and quote removal, subject to the value of the |
| <CODE>promptvars</CODE> shell option (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| </P><P> |
| |
| <A NAME="The Restricted Shell"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC90"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC89"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC71"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.10 The Restricted Shell </H2> |
| <!--docid::SEC90::--> |
| <P> |
| |
| If Bash is started with the name <CODE>rbash</CODE>, or the |
| <SAMP>`--restricted'</SAMP> |
| or |
| <SAMP>`-r'</SAMP> |
| option is supplied at invocation, the shell becomes restricted. |
| A restricted shell is used to |
| set up an environment more controlled than the standard shell. |
| A restricted shell behaves identically to <CODE>bash</CODE> |
| with the exception that the following are disallowed or not performed: |
| </P><P> |
| |
| <UL> |
| <LI> |
| Changing directories with the <CODE>cd</CODE> builtin. |
| <LI> |
| Setting or unsetting the values of the <CODE>SHELL</CODE>, <CODE>PATH</CODE>, |
| <CODE>ENV</CODE>, or <CODE>BASH_ENV</CODE> variables. |
| <LI> |
| Specifying command names containing slashes. |
| <LI> |
| Specifying a filename containing a slash as an argument to the <CODE>.</CODE> |
| builtin command. |
| <LI> |
| Specifying a filename containing a slash as an argument to the <SAMP>`-p'</SAMP> |
| option to the <CODE>hash</CODE> builtin command. |
| <LI> |
| Importing function definitions from the shell environment at startup. |
| <LI> |
| Parsing the value of <CODE>SHELLOPTS</CODE> from the shell environment at startup. |
| <LI> |
| Redirecting output using the <SAMP>`>'</SAMP>, <SAMP>`>|'</SAMP>, <SAMP>`<>'</SAMP>, <SAMP>`>&'</SAMP>, |
| <SAMP>`&>'</SAMP>, and <SAMP>`>>'</SAMP> redirection operators. |
| <LI> |
| Using the <CODE>exec</CODE> builtin to replace the shell with another command. |
| <LI> |
| Adding or deleting builtin commands with the |
| <SAMP>`-f'</SAMP> and <SAMP>`-d'</SAMP> options to the <CODE>enable</CODE> builtin. |
| <LI> |
| Using the <CODE>enable</CODE> builtin command to enable disabled shell builtins. |
| <LI> |
| Specifying the <SAMP>`-p'</SAMP> option to the <CODE>command</CODE> builtin. |
| <LI> |
| Turning off restricted mode with <SAMP>`set +r'</SAMP> or <SAMP>`set +o restricted'</SAMP>. |
| </UL> |
| <P> |
| |
| These restrictions are enforced after any startup files are read. |
| </P><P> |
| |
| When a command that is found to be a shell script is executed |
| (see section <A HREF="bashref.html#SEC58">3.8 Shell Scripts</A>), <CODE>rbash</CODE> turns off any restrictions in |
| the shell spawned to execute the script. |
| </P><P> |
| |
| <A NAME="Bash POSIX Mode"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC91"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC90"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC71"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC69"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 6.11 Bash POSIX Mode </H2> |
| <!--docid::SEC91::--> |
| <P> |
| |
| Starting Bash with the <SAMP>`--posix'</SAMP> command-line option or executing |
| <SAMP>`set -o posix'</SAMP> while Bash is running will cause Bash to conform more |
| closely to the POSIX standard by changing the behavior to |
| match that specified by POSIX in areas where the Bash default differs. |
| </P><P> |
| |
| When invoked as <CODE>sh</CODE>, Bash enters POSIX mode after reading the |
| startup files. |
| </P><P> |
| |
| The following list is what's changed when `POSIX mode' is in effect: |
| </P><P> |
| |
| <OL> |
| <LI> |
| When a command in the hash table no longer exists, Bash will re-search |
| <CODE>$PATH</CODE> to find the new location. This is also available with |
| <SAMP>`shopt -s checkhash'</SAMP>. |
| <P> |
| |
| <LI> |
| The message printed by the job control code and builtins when a job |
| exits with a non-zero status is `Done(status)'. |
| <P> |
| |
| <LI> |
| The message printed by the job control code and builtins when a job |
| is stopped is `Stopped(<VAR>signame</VAR>)', where <VAR>signame</VAR> is, for |
| example, <CODE>SIGTSTP</CODE>. |
| <P> |
| |
| <LI> |
| The <CODE>bg</CODE> builtin uses the required format to describe each job placed |
| in the background, which does not include an indication of whether the job |
| is the current or previous job. |
| <P> |
| |
| <LI> |
| Reserved words appearing in a context where reserved words are recognized |
| do not undergo alias expansion. |
| <P> |
| |
| <LI> |
| The POSIX <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 |
| <CODE>PS2</CODE> regardless of the setting of the <CODE>promptvars</CODE> option. |
| <P> |
| |
| <LI> |
| The POSIX startup files are executed (<CODE>$ENV</CODE>) rather than |
| the normal Bash files. |
| <P> |
| |
| <LI> |
| Tilde expansion is only performed on assignments preceding a command |
| name, rather than on all assignment statements on the line. |
| <P> |
| |
| <LI> |
| The <CODE>command</CODE> builtin does not prevent builtins that take assignment |
| statements as arguments from expanding them as assignment statements; |
| when not in POSIX mode, assignment builtins lose their assignment |
| statement expansion properties when preceded by <CODE>command</CODE>. |
| <P> |
| |
| <LI> |
| The default history file is <TT>`~/.sh_history'</TT> (this is the |
| default value of <CODE>$HISTFILE</CODE>). |
| <P> |
| |
| <LI> |
| The output of <SAMP>`kill -l'</SAMP> prints all the signal names on a single line, |
| separated by spaces, without the <SAMP>`SIG'</SAMP> prefix. |
| <P> |
| |
| <LI> |
| The <CODE>kill</CODE> builtin does not accept signal names with a <SAMP>`SIG'</SAMP> |
| prefix. |
| <P> |
| |
| <LI> |
| Non-interactive shells exit if <VAR>filename</VAR> in <CODE>.</CODE> <VAR>filename</VAR> |
| is not found. |
| <P> |
| |
| <LI> |
| Non-interactive shells exit if a syntax error in an arithmetic expansion |
| results in an invalid expression. |
| <P> |
| |
| <LI> |
| Non-interactive shells exit if there is a syntax error in a script read |
| with the <CODE>.</CODE> or <CODE>source</CODE> builtins, or in a string processed by |
| the <CODE>eval</CODE> builtin. |
| <P> |
| |
| <LI> |
| Redirection operators do not perform filename expansion on the word |
| in the redirection unless the shell is interactive. |
| <P> |
| |
| <LI> |
| Redirection operators do not perform word splitting on the word in the |
| redirection. |
| <P> |
| |
| <LI> |
| Function names must be valid shell <CODE>name</CODE>s. That is, they may not |
| contain characters other than letters, digits, and underscores, and |
| may not start with a digit. Declaring a function with an invalid name |
| causes a fatal syntax error in non-interactive shells. |
| <P> |
| |
| <LI> |
| Function names may not be the same as one of the POSIX special |
| builtins. |
| <P> |
| |
| <LI> |
| POSIX special builtins are found before shell functions |
| during command lookup. |
| <P> |
| |
| <LI> |
| The <CODE>time</CODE> reserved word may be used by itself as a command. When |
| used in this way, it displays timing statistics for the shell and its |
| completed children. The <CODE>TIMEFORMAT</CODE> variable controls the format |
| of the timing information. |
| <P> |
| |
| <LI> |
| When parsing and expanding a ${<small>...</small>} expansion that appears within |
| double quotes, single quotes are no longer special and cannot be used to |
| quote a closing brace or other special character, unless the operator is |
| one of those defined to perform pattern removal. In this case, they do |
| not have to appear as matched pairs. |
| <P> |
| |
| <LI> |
| The parser does not recognize <CODE>time</CODE> as a reserved word if the next |
| token begins with a <SAMP>`-'</SAMP>. |
| <P> |
| |
| <LI> |
| If a POSIX special builtin returns an error status, a |
| non-interactive shell exits. The fatal errors are those listed in |
| the POSIX standard, and include things like passing incorrect options, |
| redirection errors, variable assignment errors for assignments preceding |
| the command name, and so on. |
| <P> |
| |
| <LI> |
| A non-interactive shell exits with an error status if a variable |
| assignment error occurs when no command name follows the assignment |
| statements. |
| A variable assignment error occurs, for example, when trying to assign |
| a value to a readonly variable. |
| <P> |
| |
| <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. |
| <P> |
| |
| <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 |
| <CODE>select</CODE> statement is a readonly variable. |
| <P> |
| |
| <LI> |
| Process substitution is not available. |
| <P> |
| |
| <LI> |
| While variable indirection is available, it may not be applied to the |
| <SAMP>`#'</SAMP> and <SAMP>`?'</SAMP> special parameters. |
| <P> |
| |
| <LI> |
| Assignment statements preceding POSIX special builtins |
| persist in the shell environment after the builtin completes. |
| <P> |
| |
| <LI> |
| Assignment statements preceding shell function calls persist in the |
| shell environment after the function returns, as if a POSIX |
| special builtin command had been executed. |
| <P> |
| |
| <LI> |
| The <CODE>export</CODE> and <CODE>readonly</CODE> builtin commands display their |
| output in the format required by POSIX. |
| <P> |
| |
| <LI> |
| The <CODE>trap</CODE> builtin displays signal names without the leading |
| <CODE>SIG</CODE>. |
| <P> |
| |
| <LI> |
| The <CODE>trap</CODE> builtin doesn't check the first argument for a possible |
| signal specification and revert the signal handling to the original |
| disposition if it is, unless that argument consists solely of digits and |
| is a valid signal number. If users want to reset the handler for a given |
| signal to the original disposition, they should use <SAMP>`-'</SAMP> as the |
| first argument. |
| <P> |
| |
| <LI> |
| The <CODE>.</CODE> and <CODE>source</CODE> builtins do not search the current directory |
| for the filename argument if it is not found by searching <CODE>PATH</CODE>. |
| <P> |
| |
| <LI> |
| Subshells spawned to execute command substitutions inherit the value of |
| the <SAMP>`-e'</SAMP> option from the parent shell. When not in POSIX mode, |
| Bash clears the <SAMP>`-e'</SAMP> option in such subshells. |
| <P> |
| |
| <LI> |
| Alias expansion is always enabled, even in non-interactive shells. |
| <P> |
| |
| <LI> |
| When the <CODE>alias</CODE> builtin displays alias definitions, it does not |
| display them with a leading <SAMP>`alias '</SAMP> unless the <SAMP>`-p'</SAMP> option |
| is supplied. |
| <P> |
| |
| <LI> |
| When the <CODE>set</CODE> builtin is invoked without options, it does not display |
| shell function names and definitions. |
| <P> |
| |
| <LI> |
| When the <CODE>set</CODE> builtin is invoked without options, it displays |
| variable values without quotes, unless they contain shell metacharacters, |
| even if the result contains nonprinting characters. |
| <P> |
| |
| <LI> |
| When the <CODE>cd</CODE> builtin is invoked in <VAR>logical</VAR> 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. |
| <P> |
| |
| <LI> |
| The <CODE>pwd</CODE> builtin verifies that the value it prints is the same as the |
| current directory, even if it is not asked to check the file system with the |
| <SAMP>`-P'</SAMP> option. |
| <P> |
| |
| <LI> |
| When listing the history, the <CODE>fc</CODE> builtin does not include an |
| indication of whether or not a history entry has been modified. |
| <P> |
| |
| <LI> |
| The default editor used by <CODE>fc</CODE> is <CODE>ed</CODE>. |
| <P> |
| |
| <LI> |
| The <CODE>type</CODE> and <CODE>command</CODE> builtins will not report a non-executable |
| file as having been found, though the shell will attempt to execute such a |
| file if it is the only so-named file found in <CODE>$PATH</CODE>. |
| <P> |
| |
| <LI> |
| The <CODE>vi</CODE> editing mode will invoke the <CODE>vi</CODE> editor directly when |
| the <SAMP>`v'</SAMP> command is run, instead of checking <CODE>$VISUAL</CODE> and |
| <CODE>$EDITOR</CODE>. |
| <P> |
| |
| <LI> |
| When the <CODE>xpg_echo</CODE> option is enabled, Bash does not attempt to interpret |
| any arguments to <CODE>echo</CODE> as options. Each argument is displayed, after |
| escape characters are converted. |
| <P> |
| |
| <LI> |
| The <CODE>ulimit</CODE> builtin uses a block size of 512 bytes for the <SAMP>`-c'</SAMP> |
| and <SAMP>`-f'</SAMP> options. |
| <P> |
| |
| <LI> |
| The arrival of <CODE>SIGCHLD</CODE> when a trap is set on <CODE>SIGCHLD</CODE> does |
| not interrupt the <CODE>wait</CODE> builtin and cause it to return immediately. |
| The trap command is run once for each child that exits. |
| <P> |
| |
| <LI> |
| The <CODE>read</CODE> builtin may be interrupted by a signal for which a trap |
| has been set. |
| 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. |
| <P> |
| |
| </OL> |
| <P> |
| |
| There is other POSIX behavior that Bash does not implement by |
| default even when in POSIX mode. |
| Specifically: |
| </P><P> |
| |
| <OL> |
| |
| <LI> |
| The <CODE>fc</CODE> builtin checks <CODE>$EDITOR</CODE> as a program to edit history |
| entries if <CODE>FCEDIT</CODE> is unset, rather than defaulting directly to |
| <CODE>ed</CODE>. <CODE>fc</CODE> uses <CODE>ed</CODE> if <CODE>EDITOR</CODE> is unset. |
| <P> |
| |
| <LI> |
| As noted above, Bash requires the <CODE>xpg_echo</CODE> option to be enabled for |
| the <CODE>echo</CODE> builtin to be fully conformant. |
| <P> |
| |
| </OL> |
| <P> |
| |
| Bash can be configured to be POSIX-conformant by default, by specifying |
| the <SAMP>`--enable-strict-posix-default'</SAMP> to <CODE>configure</CODE> when building |
| (see section <A HREF="bashref.html#SEC136">10.8 Optional Features</A>). |
| </P><P> |
| |
| <A NAME="Job Control"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC92"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC93"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> 7. Job Control </H1> |
| <!--docid::SEC92::--> |
| <P> |
| |
| This chapter discusses what job control is, how it works, and how |
| Bash allows you to access its facilities. |
| </P><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC93">7.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="bashref.html#SEC94">7.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="bashref.html#SEC95">7.3 Job Control Variables</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Variables Bash uses to customize job |
| control.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Job Control Basics"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC93"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC94"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 7.1 Job Control Basics </H2> |
| <!--docid::SEC93::--> |
| <P> |
| |
| Job control |
| refers to the ability to selectively stop (suspend) |
| the execution of processes and continue (resume) |
| their execution at a later point. A user typically employs |
| this facility via an interactive interface supplied jointly |
| by the operating system kernel's terminal driver and Bash. |
| </P><P> |
| |
| The shell associates a <VAR>job</VAR> with each pipeline. It keeps a |
| table of currently executing jobs, which may be listed with the |
| <CODE>jobs</CODE> command. When Bash starts a job |
| asynchronously, it prints a line that looks |
| like: |
| <TABLE><tr><td> </td><td class=example><pre>[1] 25647 |
| </pre></td></tr></table>indicating that this job is job number 1 and that the process ID |
| of the last process in the pipeline associated with this job is |
| 25647. All of the processes in a single pipeline are members of |
| the same job. Bash uses the <VAR>job</VAR> abstraction as the |
| basis for job control. |
| </P><P> |
| |
| To facilitate the implementation of the user interface to job |
| control, the operating system maintains the notion of a current terminal |
| process group ID. Members of this process group (processes whose |
| process group ID is equal to the current terminal process group |
| ID) receive keyboard-generated signals such as <CODE>SIGINT</CODE>. |
| These processes are said to be in the foreground. Background |
| processes are those whose process group ID differs from the |
| terminal's; such processes are immune to keyboard-generated |
| signals. Only foreground processes are allowed to read from or, if |
| the user so specifies with <CODE>stty tostop</CODE>, write to the terminal. |
| Background processes which attempt to |
| read from (write to when <CODE>stty tostop</CODE> is in effect) the |
| terminal are sent a <CODE>SIGTTIN</CODE> (<CODE>SIGTTOU</CODE>) |
| signal by the kernel's terminal driver, |
| which, unless caught, suspends the process. |
| </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 |
| process is running causes that process to be stopped and returns |
| control to Bash. Typing the <VAR>delayed suspend</VAR> 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 |
| this job, using the <CODE>bg</CODE> command to continue it in the |
| background, the <CODE>fg</CODE> command to continue it in the |
| foreground, or the <CODE>kill</CODE> command to kill it. A <SAMP>`^Z'</SAMP> |
| takes effect immediately, and has the additional side effect 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>). |
| </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 |
| current job, which is the last job stopped while it was in the foreground |
| or started in the background. |
| A single <SAMP>`%'</SAMP> (with no accompanying job specification) also refers |
| to the current job. |
| The previous job may be referenced using <SAMP>`%-'</SAMP>. |
| If there is only a single job, <SAMP>`%+'</SAMP> and <SAMP>`%-'</SAMP> can both be used |
| to refer to that job. |
| In output pertaining to jobs (e.g., the output of the <CODE>jobs</CODE> |
| command), the current job is always flagged with a <SAMP>`+'</SAMP>, and the |
| previous job with a <SAMP>`-'</SAMP>. |
| </P><P> |
| |
| A job may also be referred to |
| using a prefix of the name used to start it, or using a substring |
| that appears in its command line. For example, <SAMP>`%ce'</SAMP> refers |
| to a stopped <CODE>ce</CODE> job. Using <SAMP>`%?ce'</SAMP>, on the |
| other hand, refers to any job containing the string <SAMP>`ce'</SAMP> in |
| its command line. If the prefix or substring matches more than one job, |
| Bash reports an error. |
| </P><P> |
| |
| Simply naming a job can be used to bring it into the foreground: |
| <SAMP>`%1'</SAMP> is a synonym for <SAMP>`fg %1'</SAMP>, bringing job 1 from the |
| background into the foreground. Similarly, <SAMP>`%1 &'</SAMP> resumes |
| job 1 in the background, equivalent to <SAMP>`bg %1'</SAMP> |
| </P><P> |
| |
| The shell learns immediately whenever a job changes state. |
| Normally, Bash waits until it is about to print a prompt |
| before reporting changes in a job's status so as to not interrupt |
| any other output. |
| If the <SAMP>`-b'</SAMP> option to the <CODE>set</CODE> builtin is enabled, |
| Bash reports such changes immediately (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| Any trap on <CODE>SIGCHLD</CODE> is executed for each child process |
| that exits. |
| </P><P> |
| |
| If an attempt to exit Bash is made while jobs are stopped, (or running, if |
| the <CODE>checkjobs</CODE> option is enabled -- see <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>), the |
| shell prints a warning message, and if the <CODE>checkjobs</CODE> option is |
| enabled, lists the jobs and their statuses. |
| The <CODE>jobs</CODE> command may then be used to inspect their status. |
| If a second attempt to exit is made without an intervening command, |
| Bash does not print another warning, and any stopped jobs are terminated. |
| </P><P> |
| |
| <A NAME="Job Control Builtins"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC94"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC93"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 7.2 Job Control Builtins </H2> |
| <!--docid::SEC94::--> |
| <P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>bg</CODE> |
| <DD><A NAME="IDX318"></A> |
| <TABLE><tr><td> </td><td class=example><pre>bg [<VAR>jobspec</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| Resume each suspended job <VAR>jobspec</VAR> in the background, as if it |
| had been started with <SAMP>`&'</SAMP>. |
| If <VAR>jobspec</VAR> is not supplied, the current job is used. |
| The return status is zero unless it is run when job control is not |
| enabled, or, when run with job control enabled, any |
| <VAR>jobspec</VAR> was not found or specifies a job |
| that was started without job control. |
| </P><P> |
| |
| <DT><CODE>fg</CODE> |
| <DD><A NAME="IDX319"></A> |
| <TABLE><tr><td> </td><td class=example><pre>fg [<VAR>jobspec</VAR>] |
| </pre></td></tr></table><P> |
| |
| Resume the job <VAR>jobspec</VAR> in the foreground and make it the current job. |
| If <VAR>jobspec</VAR> is not supplied, the current job is used. |
| The return status is that of the command placed into the foreground, |
| or non-zero if run when job control is disabled or, when run with |
| job control enabled, <VAR>jobspec</VAR> does not specify a valid job or |
| <VAR>jobspec</VAR> specifies a job that was started without job control. |
| </P><P> |
| |
| <DT><CODE>jobs</CODE> |
| <DD><A NAME="IDX320"></A> |
| <TABLE><tr><td> </td><td class=example><pre>jobs [-lnprs] [<VAR>jobspec</VAR>] |
| jobs -x <VAR>command</VAR> [<VAR>arguments</VAR>] |
| </pre></td></tr></table><P> |
| |
| The first form lists the active jobs. The options have the |
| following meanings: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-l</CODE> |
| <DD>List process IDs in addition to the normal information. |
| <P> |
| |
| <DT><CODE>-n</CODE> |
| <DD>Display information only about jobs that have changed status since |
| the user was last notified of their status. |
| <P> |
| |
| <DT><CODE>-p</CODE> |
| <DD>List only the process ID of the job's process group leader. |
| <P> |
| |
| <DT><CODE>-r</CODE> |
| <DD>Display only running jobs. |
| <P> |
| |
| <DT><CODE>-s</CODE> |
| <DD>Display only stopped jobs. |
| </DL> |
| <P> |
| |
| If <VAR>jobspec</VAR> is given, |
| output is restricted to information about that job. |
| If <VAR>jobspec</VAR> is not supplied, the status of all jobs is |
| listed. |
| </P><P> |
| |
| If the <SAMP>`-x'</SAMP> option is supplied, <CODE>jobs</CODE> replaces any |
| <VAR>jobspec</VAR> found in <VAR>command</VAR> or <VAR>arguments</VAR> with the |
| corresponding process group ID, and executes <VAR>command</VAR>, |
| passing it <VAR>argument</VAR>s, returning its exit status. |
| </P><P> |
| |
| <DT><CODE>kill</CODE> |
| <DD><A NAME="IDX321"></A> |
| <TABLE><tr><td> </td><td class=example><pre>kill [-s <VAR>sigspec</VAR>] [-n <VAR>signum</VAR>] [-<VAR>sigspec</VAR>] <VAR>jobspec</VAR> or <VAR>pid</VAR> |
| kill -l [<VAR>exit_status</VAR>] |
| </pre></td></tr></table><P> |
| |
| Send a signal specified by <VAR>sigspec</VAR> or <VAR>signum</VAR> to the process |
| named by job specification <VAR>jobspec</VAR> or process ID <VAR>pid</VAR>. |
| <VAR>sigspec</VAR> is either a case-insensitive signal name such as |
| <CODE>SIGINT</CODE> (with or without the <CODE>SIG</CODE> prefix) |
| or a signal number; <VAR>signum</VAR> is a signal number. |
| If <VAR>sigspec</VAR> and <VAR>signum</VAR> are not present, <CODE>SIGTERM</CODE> is used. |
| The <SAMP>`-l'</SAMP> option lists the signal names. |
| If any arguments are supplied when <SAMP>`-l'</SAMP> is given, the names of the |
| signals corresponding to the arguments are listed, and the return status |
| is zero. |
| <VAR>exit_status</VAR> is a number specifying a signal number or the exit |
| status of a process terminated by a signal. |
| The return status is zero if at least one signal was successfully sent, |
| or non-zero if an error occurs or an invalid option is encountered. |
| </P><P> |
| |
| <DT><CODE>wait</CODE> |
| <DD><A NAME="IDX322"></A> |
| <TABLE><tr><td> </td><td class=example><pre>wait [-n] [<VAR>jobspec</VAR> or <VAR>pid</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| Wait until the child process specified by each process ID <VAR>pid</VAR> |
| or job specification <VAR>jobspec</VAR> exits and return the exit status of the |
| last command waited for. |
| If a job spec is given, all processes in the job are waited for. |
| If no arguments are given, all currently active child processes are |
| waited for, and the return status is zero. |
| If the <SAMP>`-n'</SAMP> option is supplied, <CODE>wait</CODE> waits for any job to |
| terminate and returns its exit status. |
| If neither <VAR>jobspec</VAR> nor <VAR>pid</VAR> specifies an active child process |
| of the shell, the return status is 127. |
| </P><P> |
| |
| <DT><CODE>disown</CODE> |
| <DD><A NAME="IDX323"></A> |
| <TABLE><tr><td> </td><td class=example><pre>disown [-ar] [-h] [<VAR>jobspec</VAR> <small>...</small>] |
| </pre></td></tr></table><P> |
| |
| Without options, remove each <VAR>jobspec</VAR> from the table of |
| active jobs. |
| If the <SAMP>`-h'</SAMP> option is given, the job is not removed from the table, |
| but is marked so that <CODE>SIGHUP</CODE> is not sent to the job if the shell |
| receives a <CODE>SIGHUP</CODE>. |
| If <VAR>jobspec</VAR> is not present, and neither the <SAMP>`-a'</SAMP> nor the |
| <SAMP>`-r'</SAMP> option is supplied, the current job is used. |
| If no <VAR>jobspec</VAR> is supplied, the <SAMP>`-a'</SAMP> option means to remove or |
| mark all jobs; the <SAMP>`-r'</SAMP> option without a <VAR>jobspec</VAR> |
| argument restricts operation to running jobs. |
| </P><P> |
| |
| <DT><CODE>suspend</CODE> |
| <DD><A NAME="IDX324"></A> |
| <TABLE><tr><td> </td><td class=example><pre>suspend [-f] |
| </pre></td></tr></table><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> |
| option can be used to override this and force the suspension. |
| </DL> |
| <P> |
| |
| When job control is not active, the <CODE>kill</CODE> and <CODE>wait</CODE> |
| builtins do not accept <VAR>jobspec</VAR> arguments. They must be |
| supplied process IDs. |
| </P><P> |
| |
| <A NAME="Job Control Variables"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC95"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC94"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC92"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 7.3 Job Control Variables </H2> |
| <!--docid::SEC95::--> |
| <P> |
| |
| <DL COMPACT> |
| |
| <A NAME="IDX325"></A> |
| <DT><CODE>auto_resume</CODE> |
| <DD><A NAME="IDX326"></A> |
| 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 |
| of an existing job. There is no ambiguity allowed; if there is |
| more than one job beginning with the string typed, then |
| the most recently accessed job will be selected. |
| The name of a stopped job, in this context, is the command line |
| used to start it. If this variable is set to the value <SAMP>`exact'</SAMP>, |
| the string supplied must match the name of a stopped job exactly; |
| if set to <SAMP>`substring'</SAMP>, |
| the string supplied needs to match a substring of the name of a |
| stopped job. The <SAMP>`substring'</SAMP> value provides functionality |
| analogous to the <SAMP>`%?'</SAMP> job ID (see section <A HREF="bashref.html#SEC93">7.1 Job Control Basics</A>). |
| If set to any other value, the supplied string must |
| be a prefix of a stopped job's name; this provides functionality |
| analogous to the <SAMP>`%'</SAMP> job ID. |
| <P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="IDX327"></A> |
| </P><P> |
| |
| <A NAME="Command Line Editing"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC96"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC97"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> 8. Command Line Editing </H1> |
| <!--docid::SEC96::--> |
| <P> |
| |
| This chapter describes the basic features of the GNU |
| command line editing interface. |
| Command line editing is provided by the Readline library, which is |
| used by several different programs, including Bash. |
| 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 section <A HREF="bashref.html#SEC61">4.2 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 |
| <SAMP>`-o vi'</SAMP> options to the <CODE>set</CODE> builtin command |
| (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>), or disabled using the <SAMP>`+o emacs'</SAMP> or |
| <SAMP>`+o vi'</SAMP> options to <CODE>set</CODE>. |
| </P><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC97">8.1 Introduction to Line Editing</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Notation used in this text.</TD></TR> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC98">8.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="bashref.html#SEC104">8.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="bashref.html#SEC108">8.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="bashref.html#SEC117">8.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="bashref.html#SEC118">8.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="bashref.html#SEC119">8.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="bashref.html#SEC120">8.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></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Introduction and Notation"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC97"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC98"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 8.1 Introduction to Line Editing </H2> |
| <!--docid::SEC97::--> |
| <P> |
| |
| The following paragraphs describe the notation used to represent |
| keystrokes. |
| </P><P> |
| |
| The text <KBD>C-k</KBD> is read as `Control-K' and describes the character |
| produced when the <KBD>k</KBD> key is pressed while the Control key |
| is depressed. |
| </P><P> |
| |
| The text <KBD>M-k</KBD> is read as `Meta-K' and describes the character |
| produced when the Meta key (if you have one) is depressed, and the <KBD>k</KBD> |
| key is pressed. |
| The Meta key is labeled <KBD>ALT</KBD> on many keyboards. |
| On keyboards with two keys labeled <KBD>ALT</KBD> (usually to either side of |
| the space bar), the <KBD>ALT</KBD> on the left side is generally set to |
| work as a Meta key. |
| The <KBD>ALT</KBD> key on the right may also be configured to work as a |
| Meta key or may be configured as some other modifier, such as a |
| Compose key for typing accented characters. |
| </P><P> |
| |
| If you do not have a Meta or <KBD>ALT</KBD> key, or another key working as |
| a Meta key, the identical keystroke can be generated by typing <KBD>ESC</KBD> |
| <EM>first</EM>, and then typing <KBD>k</KBD>. |
| Either process is known as <EM>metafying</EM> the <KBD>k</KBD> key. |
| </P><P> |
| |
| The text <KBD>M-C-k</KBD> is read as `Meta-Control-k' and describes the |
| character produced by <EM>metafying</EM> <KBD>C-k</KBD>. |
| </P><P> |
| |
| In addition, several keys have their own names. Specifically, |
| <KBD>DEL</KBD>, <KBD>ESC</KBD>, <KBD>LFD</KBD>, <KBD>SPC</KBD>, <KBD>RET</KBD>, and <KBD>TAB</KBD> all |
| stand for themselves when seen in this text, or in an init file |
| (see section <A HREF="bashref.html#SEC104">8.3 Readline Init File</A>). |
| If your keyboard lacks a <KBD>LFD</KBD> key, typing <KBD>C-j</KBD> will |
| produce the desired character. |
| The <KBD>RET</KBD> key may be labeled <KBD>Return</KBD> or <KBD>Enter</KBD> on |
| some keyboards. |
| </P><P> |
| |
| <A NAME="Readline Interaction"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC98"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC97"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC99"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 8.2 Readline Interaction </H2> |
| <!--docid::SEC98::--> |
| <P> |
| |
| Often during an interactive session you type in a long line of text, |
| only to notice that the first word on the line is misspelled. The |
| Readline library gives you a set of commands for manipulating the text |
| as you type it in, allowing you to just fix your typo, and not forcing |
| you to retype the majority of the line. Using these editing commands, |
| you move the cursor to the place that needs correction, and delete or |
| insert the text of the corrections. Then, when you are satisfied with |
| the line, you simply press <KBD>RET</KBD>. You do not have to be at the |
| end of the line to press <KBD>RET</KBD>; the entire line is accepted |
| regardless of the location of the cursor within the line. |
| </P><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC99">8.2.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="bashref.html#SEC100">8.2.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="bashref.html#SEC101">8.2.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="bashref.html#SEC102">8.2.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="bashref.html#SEC103">8.2.5 Searching for Commands in the History</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Searching through previous lines.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Readline Bare Essentials"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC99"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC98"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC100"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC98"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.2.1 Readline Bare Essentials </H3> |
| <!--docid::SEC99::--> |
| <P> |
| |
| In order to enter characters into the line, simply type them. The typed |
| character appears where the cursor was, and then the cursor moves one |
| space to the right. If you mistype a character, you can use your |
| erase character to back up and delete the mistyped character. |
| </P><P> |
| |
| Sometimes you may mistype a character, and |
| not notice the error until you have typed several other characters. In |
| that case, you can type <KBD>C-b</KBD> to move the cursor to the left, and then |
| correct your mistake. Afterwards, you can move the cursor to the right |
| with <KBD>C-f</KBD>. |
| </P><P> |
| |
| When you add text in the middle of a line, you will notice that characters |
| to the right of the cursor are `pushed over' to make room for the text |
| that you have inserted. Likewise, when you delete text behind the cursor, |
| characters to the right of the cursor are `pulled back' to fill in the |
| blank space created by the removal of the text. A list of the bare |
| essentials for editing the text of an input line follows. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><KBD>C-b</KBD> |
| <DD>Move back one character. |
| <DT><KBD>C-f</KBD> |
| <DD>Move forward one character. |
| <DT><KBD>DEL</KBD> or <KBD>Backspace</KBD> |
| <DD>Delete the character to the left of the cursor. |
| <DT><KBD>C-d</KBD> |
| <DD>Delete the character underneath the cursor. |
| <DT>Printing characters |
| <DD>Insert the character into the line at the cursor. |
| <DT><KBD>C-_</KBD> or <KBD>C-x C-u</KBD> |
| <DD>Undo the last editing command. You can undo all the way back to an |
| empty line. |
| </DL> |
| <P> |
| |
| (Depending on your configuration, the <KBD>Backspace</KBD> key be set to |
| delete the character to the left of the cursor and the <KBD>DEL</KBD> 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><P> |
| |
| <A NAME="Readline Movement Commands"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC100"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC99"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC101"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC101"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC98"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.2.2 Readline Movement Commands </H3> |
| <!--docid::SEC100::--> |
| <P> |
| |
| The above table describes the most basic keystrokes that you need |
| in order to do editing of the input line. For your convenience, many |
| other commands have been added in addition to <KBD>C-b</KBD>, <KBD>C-f</KBD>, |
| <KBD>C-d</KBD>, and <KBD>DEL</KBD>. Here are some commands for moving more rapidly |
| about the line. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><KBD>C-a</KBD> |
| <DD>Move to the start of the line. |
| <DT><KBD>C-e</KBD> |
| <DD>Move to the end of the line. |
| <DT><KBD>M-f</KBD> |
| <DD>Move forward a word, where a word is composed of letters and digits. |
| <DT><KBD>M-b</KBD> |
| <DD>Move backward a word. |
| <DT><KBD>C-l</KBD> |
| <DD>Clear the screen, reprinting the current line at the top. |
| </DL> |
| <P> |
| |
| Notice how <KBD>C-f</KBD> moves forward a character, while <KBD>M-f</KBD> moves |
| forward a word. It is a loose convention that control keystrokes |
| operate on characters while meta keystrokes operate on words. |
| </P><P> |
| |
| <A NAME="Readline Killing Commands"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC101"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC100"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC102"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC102"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC98"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.2.3 Readline Killing Commands </H3> |
| <!--docid::SEC101::--> |
| <P> |
| |
| <A NAME="IDX328"></A> |
| <A NAME="IDX329"></A> |
| </P><P> |
| |
| <EM>Killing</EM> text means to delete the text from the line, but to save |
| it away for later use, usually by <EM>yanking</EM> (re-inserting) |
| it back into the line. |
| (`Cut' and `paste' are more recent jargon for `kill' and `yank'.) |
| </P><P> |
| |
| If the description for a command says that it `kills' text, then you can |
| be sure that you can get the text back in a different (or the same) |
| place later. |
| </P><P> |
| |
| When you use a kill command, the text is saved in a <EM>kill-ring</EM>. |
| Any number of consecutive kills save all of the killed text together, so |
| that when you yank it back, you get it all. The kill |
| ring is not line specific; the text that you killed on a previously |
| typed line is available to be yanked back later, when you are typing |
| another line. |
| <A NAME="IDX330"></A> |
| </P><P> |
| |
| Here is the list of commands for killing text. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><KBD>C-k</KBD> |
| <DD>Kill the text from the current cursor position to the end of the line. |
| <P> |
| |
| <DT><KBD>M-d</KBD> |
| <DD>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> |
| |
| <DT><KBD>M-<KBD>DEL</KBD></KBD> |
| <DD>Kill from the cursor 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> |
| |
| <DT><KBD>C-w</KBD> |
| <DD>Kill from the cursor to the previous whitespace. This is different than |
| <KBD>M-<KBD>DEL</KBD></KBD> because the word boundaries differ. |
| <P> |
| |
| </DL> |
| <P> |
| |
| Here is how to <EM>yank</EM> the text back into the line. Yanking |
| means to copy the most-recently-killed text from the kill buffer. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><KBD>C-y</KBD> |
| <DD>Yank the most recently killed text back into the buffer at the cursor. |
| <P> |
| |
| <DT><KBD>M-y</KBD> |
| <DD>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>. |
| </DL> |
| <P> |
| |
| <A NAME="Readline Arguments"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC102"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC101"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC98"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.2.4 Readline Arguments </H3> |
| <!--docid::SEC102::--> |
| <P> |
| |
| You can pass numeric arguments to Readline commands. Sometimes the |
| argument acts as a repeat count, other times it is the <I>sign</I> of the |
| argument that is significant. If you pass a negative argument to a |
| command which normally acts in a forward direction, that command will |
| act in a backward direction. For example, to kill text back to the |
| start of the line, you might type <SAMP>`M-- C-k'</SAMP>. |
| </P><P> |
| |
| The general way to pass numeric arguments to a command is to type meta |
| digits before the command. If the first `digit' typed is a minus |
| sign (<SAMP>`-'</SAMP>), then the sign of the argument will be negative. Once |
| you have typed one meta digit to get the argument started, you can type |
| the remainder of the digits, and then the command. For example, to give |
| the <KBD>C-d</KBD> command an argument of 10, you could type <SAMP>`M-1 0 C-d'</SAMP>, |
| which will delete the next ten characters on the input line. |
| </P><P> |
| |
| <A NAME="Searching"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC103"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC102"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC98"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.2.5 Searching for Commands in the History </H3> |
| <!--docid::SEC103::--> |
| <P> |
| |
| Readline provides commands for searching through the command history |
| (see section <A HREF="bashref.html#SEC122">9.1 Bash History Facilities</A>) |
| for lines containing a specified string. |
| There are two search modes: <EM>incremental</EM> and <EM>non-incremental</EM>. |
| </P><P> |
| |
| Incremental searches begin before the user has finished typing the |
| search string. |
| As each character of the search string is typed, Readline displays |
| the next entry from the history matching the string typed so far. |
| An incremental search requires only as many characters as needed to |
| find the desired history entry. |
| To search backward in the history for a particular string, type |
| <KBD>C-r</KBD>. Typing <KBD>C-s</KBD> searches forward through the history. |
| The characters present in the value of the <CODE>isearch-terminators</CODE> variable |
| are used to terminate an incremental search. |
| If that variable has not been assigned a value, the <KBD>ESC</KBD> and |
| <KBD>C-J</KBD> characters will terminate an incremental search. |
| <KBD>C-g</KBD> will abort an incremental search and restore the original line. |
| When the search is terminated, the history entry containing the |
| search string becomes the current line. |
| </P><P> |
| |
| To find other matching entries in the history list, type <KBD>C-r</KBD> or |
| <KBD>C-s</KBD> as appropriate. |
| This will search backward or forward in the history for the next |
| entry matching the search string typed so far. |
| Any other key sequence bound to a Readline command will terminate |
| the search and execute that command. |
| For instance, a <KBD>RET</KBD> will terminate the search and accept |
| the line, thereby executing the command from the history list. |
| A movement command will terminate the search, make the last line found |
| the current line, and begin editing. |
| </P><P> |
| |
| Readline remembers the last incremental search string. If two |
| <KBD>C-r</KBD>s are typed without any intervening characters defining a new |
| search string, any remembered search string is used. |
| </P><P> |
| |
| Non-incremental searches read the entire search string before starting |
| to search for matching history lines. The search string may be |
| typed by the user or be part of the contents of the current line. |
| </P><P> |
| |
| <A NAME="Readline Init File"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC104"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC105"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 8.3 Readline Init File </H2> |
| <!--docid::SEC104::--> |
| <P> |
| |
| Although the Readline library comes with a set of Emacs-like |
| 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. |
| 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 <TT>`~/.inputrc'</TT>. If that |
| file does not exist or cannot be read, the ultimate default is |
| <TT>`/etc/inputrc'</TT>. |
| </P><P> |
| |
| When a program which uses the Readline library starts up, the |
| init file is read, and the key bindings are set. |
| </P><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><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Syntax for the commands in the inputrc file.</TD></TR> |
| </TABLE> |
| |
| <br> |
| <TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC106">8.3.2 Conditional Init Constructs</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Conditional key bindings in the inputrc file.</TD></TR> |
| </TABLE> |
| |
| <br> |
| <TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC107">8.3.3 Sample Init File</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">An example inputrc file.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Readline Init File Syntax"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC105"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC106"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.3.1 Readline Init File Syntax </H3> |
| <!--docid::SEC105::--> |
| <P> |
| |
| There are only a few basic constructs allowed in the |
| Readline init file. Blank lines are ignored. |
| Lines beginning with a <SAMP>`#'</SAMP> are comments. |
| Lines beginning with a <SAMP>`$'</SAMP> indicate conditional |
| constructs (see section <A HREF="bashref.html#SEC106">8.3.2 Conditional Init Constructs</A>). Other lines |
| denote variable settings and key bindings. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT>Variable Settings |
| <DD>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. |
| The syntax is simple: |
| <P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>set <VAR>variable</VAR> <VAR>value</VAR> |
| </pre></td></tr></table></P><P> |
| |
| Here, for example, is how to |
| change from the default Emacs-like key binding to use |
| <CODE>vi</CODE> line editing commands: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>set editing-mode vi |
| </pre></td></tr></table></P><P> |
| |
| Variable names and values, where appropriate, are recognized without regard |
| to case. Unrecognized variable names are ignored. |
| </P><P> |
| |
| Boolean variables (those that can be set to on or off) are set to on if |
| the value is null or empty, <VAR>on</VAR> (case-insensitive), or 1. Any other |
| value results in the variable being set to off. |
| </P><P> |
| |
| The <CODE>bind -V</CODE> command lists the current Readline variable names |
| and values. See section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>. |
| </P><P> |
| |
| A great deal of run-time behavior is changeable with the following |
| variables. |
| </P><P> |
| |
| <A NAME="IDX331"></A> |
| <DL COMPACT> |
| |
| <DT><CODE>bell-style</CODE> |
| <DD><A NAME="IDX332"></A> |
| 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> |
| |
| <DT><CODE>bind-tty-special-chars</CODE> |
| <DD><A NAME="IDX333"></A> |
| If set to <SAMP>`on'</SAMP>, Readline attempts to bind the control characters |
| treated specially by the kernel's terminal driver to their Readline |
| equivalents. |
| <P> |
| |
| <DT><CODE>colored-stats</CODE> |
| <DD><A NAME="IDX334"></A> |
| 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> |
| |
| <DT><CODE>comment-begin</CODE> |
| <DD><A NAME="IDX335"></A> |
| 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> |
| |
| <DT><CODE>completion-display-width</CODE> |
| <DD><A NAME="IDX336"></A> |
| 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. |
| A value of 0 will cause matches to be displayed one per line. |
| The default value is -1. |
| <P> |
| |
| <DT><CODE>completion-ignore-case</CODE> |
| <DD><A NAME="IDX337"></A> |
| 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> |
| |
| <DT><CODE>completion-map-case</CODE> |
| <DD><A NAME="IDX338"></A> |
| 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. |
| <P> |
| |
| <DT><CODE>completion-prefix-display-length</CODE> |
| <DD><A NAME="IDX339"></A> |
| 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> |
| |
| <DT><CODE>completion-query-items</CODE> |
| <DD><A NAME="IDX340"></A> |
| 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 this value, |
| Readline will ask the user whether or not he 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. |
| The default limit is <CODE>100</CODE>. |
| <P> |
| |
| <DT><CODE>convert-meta</CODE> |
| <DD><A NAME="IDX341"></A> |
| If set to <SAMP>`on'</SAMP>, Readline will convert characters with the |
| eighth bit set to an ASCII key sequence by stripping the eighth |
| bit and prefixing an <KBD>ESC</KBD> character, converting them to a |
| meta-prefixed key sequence. The default value is <SAMP>`on'</SAMP>. |
| <P> |
| |
| <DT><CODE>disable-completion</CODE> |
| <DD><A NAME="IDX342"></A> |
| 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> |
| |
| <DT><CODE>editing-mode</CODE> |
| <DD><A NAME="IDX343"></A> |
| 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> |
| |
| <DT><CODE>echo-control-characters</CODE> |
| <DD>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> |
| |
| <DT><CODE>enable-keypad</CODE> |
| <DD><A NAME="IDX344"></A> |
| 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> |
| |
| <DT><CODE>enable-meta-key</CODE> |
| <DD>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> |
| |
| <DT><CODE>expand-tilde</CODE> |
| <DD><A NAME="IDX345"></A> |
| If set to <SAMP>`on'</SAMP>, tilde expansion is performed when Readline |
| attempts word completion. The default is <SAMP>`off'</SAMP>. |
| <P> |
| |
| <DT><CODE>history-preserve-point</CODE> |
| <DD><A NAME="IDX346"></A> |
| 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> |
| |
| <DT><CODE>history-size</CODE> |
| <DD><A NAME="IDX347"></A> |
| 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 |
| limited. |
| By default, the number of history entries is not limited. |
| <P> |
| |
| <DT><CODE>horizontal-scroll-mode</CODE> |
| <DD><A NAME="IDX348"></A> |
| 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> |
| |
| <DT><CODE>input-meta</CODE> |
| <DD><A NAME="IDX349"></A> |
| <A NAME="IDX350"></A> |
| 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>. The name <CODE>meta-flag</CODE> is a |
| synonym for this variable. |
| <P> |
| |
| <DT><CODE>isearch-terminators</CODE> |
| <DD><A NAME="IDX351"></A> |
| The string of characters that should terminate an incremental search without |
| subsequently executing the character as a command (see section <A HREF="bashref.html#SEC103">8.2.5 Searching for Commands in the History</A>). |
| If this variable has not been given a value, the characters <KBD>ESC</KBD> and |
| <KBD>C-J</KBD> will terminate an incremental search. |
| <P> |
| |
| <DT><CODE>keymap</CODE> |
| <DD><A NAME="IDX352"></A> |
| Sets Readline's idea of the current keymap for key binding commands. |
| Acceptable <CODE>keymap</CODE> names are |
| <CODE>emacs</CODE>, |
| <CODE>emacs-standard</CODE>, |
| <CODE>emacs-meta</CODE>, |
| <CODE>emacs-ctlx</CODE>, |
| <CODE>vi</CODE>, |
| <CODE>vi-move</CODE>, |
| <CODE>vi-command</CODE>, and |
| <CODE>vi-insert</CODE>. |
| <CODE>vi</CODE> is equivalent to <CODE>vi-command</CODE>; <CODE>emacs</CODE> is |
| equivalent to <CODE>emacs-standard</CODE>. The default value is <CODE>emacs</CODE>. |
| The value of the <CODE>editing-mode</CODE> variable also affects the |
| default keymap. |
| <P> |
| |
| <DT><CODE>keyseq-timeout</CODE> |
| <DD>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 |
| key sequence). |
| If no input is received within the timeout, Readline will use the shorter |
| but complete key sequence. |
| Readline uses this value to determine whether or not input is |
| available on the current input source (<CODE>rl_instream</CODE> by default). |
| The value is specified in milliseconds, so a value of 1000 means that |
| Readline will wait one second for additional input. |
| If this variable is set to a value less than or equal to zero, or to a |
| non-numeric value, Readline will wait until another key is pressed to |
| decide which key sequence to complete. |
| The default value is <CODE>500</CODE>. |
| <P> |
| |
| <DT><CODE>mark-directories</CODE> |
| <DD>If set to <SAMP>`on'</SAMP>, completed directory names have a slash |
| appended. The default is <SAMP>`on'</SAMP>. |
| <P> |
| |
| <DT><CODE>mark-modified-lines</CODE> |
| <DD><A NAME="IDX353"></A> |
| 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> |
| |
| <DT><CODE>mark-symlinked-directories</CODE> |
| <DD><A NAME="IDX354"></A> |
| 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> |
| |
| <DT><CODE>match-hidden-files</CODE> |
| <DD><A NAME="IDX355"></A> |
| 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 |
| supplied by the user in the filename to be completed. |
| This variable is <SAMP>`on'</SAMP> by default. |
| <P> |
| |
| <DT><CODE>menu-complete-display-prefix</CODE> |
| <DD><A NAME="IDX356"></A> |
| 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> |
| |
| <DT><CODE>output-meta</CODE> |
| <DD><A NAME="IDX357"></A> |
| 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>. |
| <P> |
| |
| <DT><CODE>page-completions</CODE> |
| <DD><A NAME="IDX358"></A> |
| 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> |
| |
| <DT><CODE>print-completions-horizontally</CODE> |
| <DD>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> |
| |
| <DT><CODE>revert-all-at-newline</CODE> |
| <DD><A NAME="IDX359"></A> |
| 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>. |
| <P> |
| |
| <DT><CODE>show-all-if-ambiguous</CODE> |
| <DD><A NAME="IDX360"></A> |
| 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> |
| |
| <DT><CODE>show-all-if-unmodified</CODE> |
| <DD><A NAME="IDX361"></A> |
| 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 |
| possible partial completion (the possible completions don't share |
| a common prefix) cause the matches to be listed immediately instead |
| of ringing the bell. |
| The default value is <SAMP>`off'</SAMP>. |
| <P> |
| |
| <DT><CODE>show-mode-in-prompt</CODE> |
| <DD><A NAME="IDX362"></A> |
| If set to <SAMP>`on'</SAMP>, add a character to the beginning of the prompt |
| indicating the editing mode: emacs (<SAMP>`@'</SAMP>), vi command (<SAMP>`:'</SAMP>), |
| or vi insertion (<SAMP>`+'</SAMP>). |
| The default value is <SAMP>`off'</SAMP>. |
| <P> |
| |
| <DT><CODE>skip-completed-text</CODE> |
| <DD><A NAME="IDX363"></A> |
| 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 |
| 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. |
| For instance, if this is enabled, attempting completion when the cursor |
| is after the <SAMP>`e'</SAMP> in <SAMP>`Makefile'</SAMP> will result in <SAMP>`Makefile'</SAMP> |
| rather than <SAMP>`Makefilefile'</SAMP>, assuming there is a single possible |
| completion. |
| The default value is <SAMP>`off'</SAMP>. |
| <P> |
| |
| <DT><CODE>visible-stats</CODE> |
| <DD><A NAME="IDX364"></A> |
| 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> |
| <P> |
| |
| <DT>Key Bindings |
| <DD>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 |
| name, the default keybinding, if any, and a short description of what |
| the command does. |
| <P> |
| |
| Once you know the name of the command, simply place on a line |
| in the init file the name of the key |
| you wish to bind the command to, a colon, and then the name of the |
| command. |
| There can be no space between the key name and the colon -- that will be |
| interpreted as part of the key name. |
| 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 |
| to a string that is inserted when the key is pressed (a <VAR>macro</VAR>). |
| </P><P> |
| |
| The <CODE>bind -p</CODE> command displays Readline function names and |
| bindings in a format that can put directly into an initialization file. |
| See section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><VAR>keyname</VAR>: <VAR>function-name</VAR> or <VAR>macro</VAR> |
| <DD><VAR>keyname</VAR> is the name of a key spelled out in English. For example: |
| <TABLE><tr><td> </td><td class=example><pre>Control-u: universal-argument |
| Meta-Rubout: backward-kill-word |
| Control-o: "> output" |
| </pre></td></tr></table><P> |
| |
| In the above example, <KBD>C-u</KBD> is bound to the function |
| <CODE>universal-argument</CODE>, |
| <KBD>M-DEL</KBD> is bound to the function <CODE>backward-kill-word</CODE>, and |
| <KBD>C-o</KBD> is bound to run the macro |
| expressed on the right hand side (that is, to insert the text |
| <SAMP>`> output'</SAMP> into the line). |
| </P><P> |
| |
| A number of symbolic character names are recognized while |
| processing this key binding syntax: |
| <VAR>DEL</VAR>, |
| <VAR>ESC</VAR>, |
| <VAR>ESCAPE</VAR>, |
| <VAR>LFD</VAR>, |
| <VAR>NEWLINE</VAR>, |
| <VAR>RET</VAR>, |
| <VAR>RETURN</VAR>, |
| <VAR>RUBOUT</VAR>, |
| <VAR>SPACE</VAR>, |
| <VAR>SPC</VAR>, |
| and |
| <VAR>TAB</VAR>. |
| </P><P> |
| |
| <DT>"<VAR>keyseq</VAR>": <VAR>function-name</VAR> or <VAR>macro</VAR> |
| <DD><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 GNU Emacs style key |
| escapes can be used, as in the following example, but the |
| special character names are not recognized. |
| <P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>"\C-u": universal-argument |
| "\C-x\C-r": re-read-init-file |
| "\e[11~": "Function Key 1" |
| </pre></td></tr></table></P><P> |
| |
| In the above example, <KBD>C-u</KBD> is again bound to the function |
| <CODE>universal-argument</CODE> (just as it was in the first example), |
| <SAMP>`<KBD>C-x</KBD> <KBD>C-r</KBD>'</SAMP> is bound to the function <CODE>re-read-init-file</CODE>, |
| and <SAMP>`<KBD>ESC</KBD> <KBD>[</KBD> <KBD>1</KBD> <KBD>1</KBD> <KBD>~</KBD>'</SAMP> is bound to insert |
| the text <SAMP>`Function Key 1'</SAMP>. |
| </P><P> |
| |
| </DL> |
| <P> |
| |
| The following GNU Emacs style escape sequences are available when |
| specifying key sequences: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE><KBD>\C-</KBD></CODE> |
| <DD>control prefix |
| <DT><CODE><KBD>\M-</KBD></CODE> |
| <DD>meta prefix |
| <DT><CODE><KBD>\e</KBD></CODE> |
| <DD>an escape character |
| <DT><CODE><KBD>\\</KBD></CODE> |
| <DD>backslash |
| <DT><CODE><KBD>\"</KBD></CODE> |
| <DD><KBD>"</KBD>, a double quotation mark |
| <DT><CODE><KBD>\'</KBD></CODE> |
| <DD><KBD>'</KBD>, a single quote or apostrophe |
| </DL> |
| <P> |
| |
| In addition to the GNU Emacs style escape sequences, a second |
| set of backslash escapes is available: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>\a</CODE> |
| <DD>alert (bell) |
| <DT><CODE>\b</CODE> |
| <DD>backspace |
| <DT><CODE>\d</CODE> |
| <DD>delete |
| <DT><CODE>\f</CODE> |
| <DD>form feed |
| <DT><CODE>\n</CODE> |
| <DD>newline |
| <DT><CODE>\r</CODE> |
| <DD>carriage return |
| <DT><CODE>\t</CODE> |
| <DD>horizontal tab |
| <DT><CODE>\v</CODE> |
| <DD>vertical tab |
| <DT><CODE>\<VAR>nnn</VAR></CODE> |
| <DD>the eight-bit character whose value is the octal value <VAR>nnn</VAR> |
| (one to three digits) |
| <DT><CODE>\x<VAR>HH</VAR></CODE> |
| <DD>the eight-bit character whose value is the hexadecimal value <VAR>HH</VAR> |
| (one or two hex digits) |
| </DL> |
| <P> |
| |
| When entering the text of a macro, single or double quotes must |
| be used to indicate a macro definition. |
| Unquoted text is assumed to be a function name. |
| In the macro body, the backslash escapes described above are expanded. |
| Backslash will quote any other character in the macro text, |
| including <SAMP>`"'</SAMP> and <SAMP>`''</SAMP>. |
| For example, the following binding will make <SAMP>`<KBD>C-x</KBD> \'</SAMP> |
| insert a single <SAMP>`\'</SAMP> into the line: |
| <TABLE><tr><td> </td><td class=example><pre>"\C-x\\": "\\" |
| </pre></td></tr></table></P><P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Conditional Init Constructs"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC106"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC105"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC107"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC107"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.3.2 Conditional Init Constructs </H3> |
| <!--docid::SEC106::--> |
| <P> |
| |
| Readline implements a facility similar in spirit to the conditional |
| compilation features of the C preprocessor which allows key |
| bindings and variable settings to be performed as the result |
| of tests. There are four parser directives used. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>$if</CODE> |
| <DD>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 extends to the end of the line; |
| no characters are required to isolate it. |
| <P> |
| |
| <DL COMPACT> |
| <DT><CODE>mode</CODE> |
| <DD>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 |
| with the <SAMP>`set keymap'</SAMP> command, for instance, to set bindings in |
| the <CODE>emacs-standard</CODE> and <CODE>emacs-ctlx</CODE> keymaps only if |
| Readline is starting out in <CODE>emacs</CODE> mode. |
| <P> |
| |
| <DT><CODE>term</CODE> |
| <DD>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 |
| <SAMP>`='</SAMP> is tested against both the full name of the terminal and |
| the portion of the terminal name before the first <SAMP>`-'</SAMP>. This |
| allows <CODE>sun</CODE> to match both <CODE>sun</CODE> and <CODE>sun-cmd</CODE>, |
| for instance. |
| <P> |
| |
| <DT><CODE>application</CODE> |
| <DD>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 |
| a particular value. |
| This could be used to bind key sequences to functions useful for |
| a specific program. For instance, the following command adds a |
| key sequence that quotes the current or previous word in Bash: |
| <TABLE><tr><td> </td><td class=example><pre>$if Bash |
| # Quote the current or previous word |
| "\C-xq": "\eb\"\ef\"" |
| $endif |
| </pre></td></tr></table></DL> |
| <P> |
| |
| <DT><CODE>$endif</CODE> |
| <DD>This command, as seen in the previous example, terminates an |
| <CODE>$if</CODE> command. |
| <P> |
| |
| <DT><CODE>$else</CODE> |
| <DD>Commands in this branch of the <CODE>$if</CODE> directive are executed if |
| the test fails. |
| <P> |
| |
| <DT><CODE>$include</CODE> |
| <DD>This directive takes a single filename as an argument and reads commands |
| and bindings from that file. |
| For example, the following directive reads from <TT>`/etc/inputrc'</TT>: |
| <TABLE><tr><td> </td><td class=example><pre>$include /etc/inputrc |
| </pre></td></tr></table></DL> |
| <P> |
| |
| <A NAME="Sample Init File"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC107"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC106"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC104"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.3.3 Sample Init File </H3> |
| <!--docid::SEC107::--> |
| <P> |
| |
| Here is an example of an <VAR>inputrc</VAR> file. This illustrates key |
| binding, variable assignment, and conditional syntax. |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre># This file controls the behaviour of line input editing for |
| # programs that use the GNU Readline library. Existing |
| # programs include FTP, Bash, and GDB. |
| # |
| # You can re-read the inputrc file with C-x C-r. |
| # Lines beginning with '#' are comments. |
| # |
| # First, include any system-wide bindings and variable |
| # assignments from /etc/Inputrc |
| $include /etc/Inputrc |
| |
| # |
| # Set various bindings for emacs mode. |
| |
| set editing-mode emacs |
| |
| $if mode=emacs |
| |
| Meta-Control-h: backward-kill-word Text after the function name is ignored |
| |
| # |
| # Arrow keys in keypad mode |
| # |
| #"\M-OD": backward-char |
| #"\M-OC": forward-char |
| #"\M-OA": previous-history |
| #"\M-OB": next-history |
| # |
| # Arrow keys in ANSI mode |
| # |
| "\M-[D": backward-char |
| "\M-[C": forward-char |
| "\M-[A": previous-history |
| "\M-[B": next-history |
| # |
| # Arrow keys in 8 bit keypad mode |
| # |
| #"\M-\C-OD": backward-char |
| #"\M-\C-OC": forward-char |
| #"\M-\C-OA": previous-history |
| #"\M-\C-OB": next-history |
| # |
| # Arrow keys in 8 bit ANSI mode |
| # |
| #"\M-\C-[D": backward-char |
| #"\M-\C-[C": forward-char |
| #"\M-\C-[A": previous-history |
| #"\M-\C-[B": next-history |
| |
| C-q: quoted-insert |
| |
| $endif |
| |
| # An old-style binding. This happens to be the default. |
| TAB: complete |
| |
| # Macros that are convenient for shell interaction |
| $if Bash |
| # edit the path |
| "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f" |
| # prepare to type a quoted word -- |
| # insert open and close double quotes |
| # and move to just after the open quote |
| "\C-x\"": "\"\"\C-b" |
| # insert a backslash (testing backslash escapes |
| # in sequences and macros) |
| "\C-x\\": "\\" |
| # Quote the current or previous word |
| "\C-xq": "\eb\"\ef\"" |
| # Add a binding to refresh the line, which is unbound |
| "\C-xr": redraw-current-line |
| # Edit variable on current line. |
| "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y=" |
| $endif |
| |
| # use a visible bell if one is available |
| set bell-style visible |
| |
| # don't strip characters to 7 bits when reading |
| set input-meta on |
| |
| # allow iso-latin1 characters to be inserted rather |
| # than converted to prefix-meta sequences |
| set convert-meta off |
| |
| # display characters with the eighth bit set directly |
| # rather than as meta-prefixed characters |
| set output-meta on |
| |
| # if there are more than 150 possible completions for |
| # a word, ask the user if he wants to see all of them |
| set completion-query-items 150 |
| |
| # For FTP |
| $if Ftp |
| "\C-xg": "get \M-?" |
| "\C-xt": "put \M-?" |
| "\M-.": yank-last-arg |
| $endif |
| </pre></td></tr></table></P><P> |
| |
| <A NAME="Bindable Readline Commands"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC108"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC107"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC109"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 8.4 Bindable Readline Commands </H2> |
| <!--docid::SEC108::--> |
| <P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC109">8.4.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="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Getting at previous lines.</TD></TR> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Commands for changing text.</TD></TR> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Commands for killing and yanking.</TD></TR> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC113">8.4.5 Specifying 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="bashref.html#SEC114">8.4.6 Letting Readline Type For You</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="bashref.html#SEC115">8.4.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="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Other miscellaneous commands.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| This section describes Readline commands that may be bound to key |
| sequences. |
| You can list your key bindings by executing |
| <CODE>bind -P</CODE> or, for a more terse format, suitable for an |
| <VAR>inputrc</VAR> file, <CODE>bind -p</CODE>. (See section <A HREF="bashref.html#SEC61">4.2 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 |
| position, and <EM>mark</EM> refers to a cursor position saved by the |
| <CODE>set-mark</CODE> command. |
| The text between the point and mark is referred to as the <EM>region</EM>. |
| </P><P> |
| |
| <A NAME="Commands For Moving"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC109"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC110"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.4.1 Commands For Moving </H3> |
| <!--docid::SEC109::--> |
| <DL COMPACT> |
| <A NAME="IDX365"></A> |
| <DT><CODE>beginning-of-line (C-a)</CODE> |
| <DD><A NAME="IDX366"></A> |
| Move to the start of the current line. |
| <P> |
| |
| <A NAME="IDX367"></A> |
| <DT><CODE>end-of-line (C-e)</CODE> |
| <DD><A NAME="IDX368"></A> |
| Move to the end of the line. |
| <P> |
| |
| <A NAME="IDX369"></A> |
| <DT><CODE>forward-char (C-f)</CODE> |
| <DD><A NAME="IDX370"></A> |
| Move forward a character. |
| <P> |
| |
| <A NAME="IDX371"></A> |
| <DT><CODE>backward-char (C-b)</CODE> |
| <DD><A NAME="IDX372"></A> |
| Move back a character. |
| <P> |
| |
| <A NAME="IDX373"></A> |
| <DT><CODE>forward-word (M-f)</CODE> |
| <DD><A NAME="IDX374"></A> |
| Move forward to the end of the next word. |
| Words are composed of letters and digits. |
| <P> |
| |
| <A NAME="IDX375"></A> |
| <DT><CODE>backward-word (M-b)</CODE> |
| <DD><A NAME="IDX376"></A> |
| Move back to the start of the current or previous word. |
| Words are composed of letters and digits. |
| <P> |
| |
| <A NAME="IDX377"></A> |
| <DT><CODE>shell-forward-word ()</CODE> |
| <DD><A NAME="IDX378"></A> |
| Move forward to the end of the next word. |
| Words are delimited by non-quoted shell metacharacters. |
| <P> |
| |
| <A NAME="IDX379"></A> |
| <DT><CODE>shell-backward-word ()</CODE> |
| <DD><A NAME="IDX380"></A> |
| Move back to the start of the current or previous word. |
| Words are delimited by non-quoted shell metacharacters. |
| <P> |
| |
| <A NAME="IDX381"></A> |
| <DT><CODE>clear-screen (C-l)</CODE> |
| <DD><A NAME="IDX382"></A> |
| Clear the screen and redraw the current line, |
| leaving the current line at the top of the screen. |
| <P> |
| |
| <A NAME="IDX383"></A> |
| <DT><CODE>redraw-current-line ()</CODE> |
| <DD><A NAME="IDX384"></A> |
| Refresh the current line. By default, this is unbound. |
| <P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Commands For History"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC110"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC109"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC111"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC111"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.4.2 Commands For Manipulating The History </H3> |
| <!--docid::SEC110::--> |
| <P> |
| |
| <DL COMPACT> |
| <A NAME="IDX385"></A> |
| <DT><CODE>accept-line (Newline or Return)</CODE> |
| <DD><A NAME="IDX386"></A> |
| 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 |
| the <CODE>HISTCONTROL</CODE> and <CODE>HISTIGNORE</CODE> variables. |
| If this line is a modified history line, then restore the history line |
| to its original state. |
| <P> |
| |
| <A NAME="IDX387"></A> |
| <DT><CODE>previous-history (C-p)</CODE> |
| <DD><A NAME="IDX388"></A> |
| Move `back' through the history list, fetching the previous command. |
| <P> |
| |
| <A NAME="IDX389"></A> |
| <DT><CODE>next-history (C-n)</CODE> |
| <DD><A NAME="IDX390"></A> |
| Move `forward' through the history list, fetching the next command. |
| <P> |
| |
| <A NAME="IDX391"></A> |
| <DT><CODE>beginning-of-history (M-<)</CODE> |
| <DD><A NAME="IDX392"></A> |
| Move to the first line in the history. |
| <P> |
| |
| <A NAME="IDX393"></A> |
| <DT><CODE>end-of-history (M->)</CODE> |
| <DD><A NAME="IDX394"></A> |
| Move to the end of the input history, i.e., the line currently |
| being entered. |
| <P> |
| |
| <A NAME="IDX395"></A> |
| <DT><CODE>reverse-search-history (C-r)</CODE> |
| <DD><A NAME="IDX396"></A> |
| Search backward starting at the current line and moving `up' through |
| the history as necessary. This is an incremental search. |
| <P> |
| |
| <A NAME="IDX397"></A> |
| <DT><CODE>forward-search-history (C-s)</CODE> |
| <DD><A NAME="IDX398"></A> |
| Search forward starting at the current line and moving `down' through |
| the the history as necessary. This is an incremental search. |
| <P> |
| |
| <A NAME="IDX399"></A> |
| <DT><CODE>non-incremental-reverse-search-history (M-p)</CODE> |
| <DD><A NAME="IDX400"></A> |
| 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. |
| <P> |
| |
| <A NAME="IDX401"></A> |
| <DT><CODE>non-incremental-forward-search-history (M-n)</CODE> |
| <DD><A NAME="IDX402"></A> |
| Search forward starting at the current line and moving `down' |
| through the the history as necessary using a non-incremental search |
| for a string supplied by the user. |
| <P> |
| |
| <A NAME="IDX403"></A> |
| <DT><CODE>history-search-forward ()</CODE> |
| <DD><A NAME="IDX404"></A> |
| 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. |
| This is a non-incremental search. |
| By default, this command is unbound. |
| <P> |
| |
| <A NAME="IDX405"></A> |
| <DT><CODE>history-search-backward ()</CODE> |
| <DD><A NAME="IDX406"></A> |
| 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. |
| This is a non-incremental search. |
| By default, this command is unbound. |
| <P> |
| |
| <A NAME="IDX407"></A> |
| <DT><CODE>history-substr-search-forward ()</CODE> |
| <DD><A NAME="IDX408"></A> |
| 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. |
| This is a non-incremental search. |
| By default, this command is unbound. |
| <P> |
| |
| <A NAME="IDX409"></A> |
| <DT><CODE>history-substr-search-backward ()</CODE> |
| <DD><A NAME="IDX410"></A> |
| 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. |
| This is a non-incremental search. |
| By default, this command is unbound. |
| <P> |
| |
| <A NAME="IDX411"></A> |
| <DT><CODE>yank-nth-arg (M-C-y)</CODE> |
| <DD><A NAME="IDX412"></A> |
| Insert the first argument to the previous command (usually |
| the second word on the previous line) at point. |
| With an argument <VAR>n</VAR>, |
| insert the <VAR>n</VAR>th word from the previous command (the words |
| in the previous command begin with word 0). A negative argument |
| inserts the <VAR>n</VAR>th word from the end of the previous command. |
| Once the argument <VAR>n</VAR> is computed, the argument is extracted |
| as if the <SAMP>`!<VAR>n</VAR>'</SAMP> history expansion had been specified. |
| <P> |
| |
| <A NAME="IDX413"></A> |
| <DT><CODE>yank-last-arg (M-. or M-_)</CODE> |
| <DD><A NAME="IDX414"></A> |
| 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>. |
| Successive calls to <CODE>yank-last-arg</CODE> move back through the history |
| list, inserting the last word (or the word specified by the argument to |
| the first call) of each line in turn. |
| Any numeric argument supplied to these successive calls determines |
| the direction to move through the history. A negative argument switches |
| the direction through the history (back or forward). |
| The history expansion facilities are used to extract the last argument, |
| as if the <SAMP>`!$'</SAMP> history expansion had been specified. |
| <P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Commands For Text"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC111"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC110"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC112"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC112"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.4.3 Commands For Changing Text </H3> |
| <!--docid::SEC111::--> |
| <P> |
| |
| <DL COMPACT> |
| |
| <A NAME="IDX415"></A> |
| <DT><CODE><I>end-of-file</I> (usually C-d)</CODE> |
| <DD><A NAME="IDX416"></A> |
| 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 EOF. |
| <P> |
| |
| <A NAME="IDX417"></A> |
| <DT><CODE>delete-char (C-d)</CODE> |
| <DD><A NAME="IDX418"></A> |
| Delete the character at point. If this function is bound to the |
| same character as the tty EOF character, as <KBD>C-d</KBD> |
| commonly is, see above for the effects. |
| <P> |
| |
| <A NAME="IDX419"></A> |
| <DT><CODE>backward-delete-char (Rubout)</CODE> |
| <DD><A NAME="IDX420"></A> |
| Delete the character behind the cursor. A numeric argument means |
| to kill the characters instead of deleting them. |
| <P> |
| |
| <A NAME="IDX421"></A> |
| <DT><CODE>forward-backward-delete-char ()</CODE> |
| <DD><A NAME="IDX422"></A> |
| 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> |
| |
| <A NAME="IDX423"></A> |
| <DT><CODE>quoted-insert (C-q or C-v)</CODE> |
| <DD><A NAME="IDX424"></A> |
| Add the next character typed to the line verbatim. This is |
| how to insert key sequences like <KBD>C-q</KBD>, for example. |
| <P> |
| |
| <A NAME="IDX425"></A> |
| <DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE> |
| <DD><A NAME="IDX426"></A> |
| Insert yourself. |
| <P> |
| |
| <A NAME="IDX427"></A> |
| <DT><CODE>transpose-chars (C-t)</CODE> |
| <DD><A NAME="IDX428"></A> |
| Drag the character before the cursor forward over |
| the character at the cursor, moving the |
| cursor forward as well. If the insertion point |
| is at the end of the line, then this |
| transposes the last two characters of the line. |
| Negative arguments have no effect. |
| <P> |
| |
| <A NAME="IDX429"></A> |
| <DT><CODE>transpose-words (M-t)</CODE> |
| <DD><A NAME="IDX430"></A> |
| 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> |
| |
| <A NAME="IDX431"></A> |
| <DT><CODE>upcase-word (M-u)</CODE> |
| <DD><A NAME="IDX432"></A> |
| Uppercase the current (or following) word. With a negative argument, |
| uppercase the previous word, but do not move the cursor. |
| <P> |
| |
| <A NAME="IDX433"></A> |
| <DT><CODE>downcase-word (M-l)</CODE> |
| <DD><A NAME="IDX434"></A> |
| Lowercase the current (or following) word. With a negative argument, |
| lowercase the previous word, but do not move the cursor. |
| <P> |
| |
| <A NAME="IDX435"></A> |
| <DT><CODE>capitalize-word (M-c)</CODE> |
| <DD><A NAME="IDX436"></A> |
| Capitalize the current (or following) word. With a negative argument, |
| capitalize the previous word, but do not move the cursor. |
| <P> |
| |
| <A NAME="IDX437"></A> |
| <DT><CODE>overwrite-mode ()</CODE> |
| <DD><A NAME="IDX438"></A> |
| 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 |
| <CODE>emacs</CODE> mode; <CODE>vi</CODE> mode does overwrite differently. |
| Each call to <CODE>readline()</CODE> starts in insert mode. |
| <P> |
| |
| In overwrite mode, characters bound to <CODE>self-insert</CODE> replace |
| the text at point rather than pushing the text to the right. |
| Characters bound to <CODE>backward-delete-char</CODE> replace the character |
| before point with a space. |
| </P><P> |
| |
| By default, this command is unbound. |
| </P><P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Commands For Killing"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC112"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC111"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC113"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC113"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.4.4 Killing And Yanking </H3> |
| <!--docid::SEC112::--> |
| <P> |
| |
| <DL COMPACT> |
| |
| <A NAME="IDX439"></A> |
| <DT><CODE>kill-line (C-k)</CODE> |
| <DD><A NAME="IDX440"></A> |
| Kill the text from point to the end of the line. |
| <P> |
| |
| <A NAME="IDX441"></A> |
| <DT><CODE>backward-kill-line (C-x Rubout)</CODE> |
| <DD><A NAME="IDX442"></A> |
| Kill backward to the beginning of the line. |
| <P> |
| |
| <A NAME="IDX443"></A> |
| <DT><CODE>unix-line-discard (C-u)</CODE> |
| <DD><A NAME="IDX444"></A> |
| Kill backward from the cursor to the beginning of the current line. |
| <P> |
| |
| <A NAME="IDX445"></A> |
| <DT><CODE>kill-whole-line ()</CODE> |
| <DD><A NAME="IDX446"></A> |
| Kill all characters on the current line, no matter where point is. |
| By default, this is unbound. |
| <P> |
| |
| <A NAME="IDX447"></A> |
| <DT><CODE>kill-word (M-d)</CODE> |
| <DD><A NAME="IDX448"></A> |
| 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> |
| |
| <A NAME="IDX449"></A> |
| <DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE> |
| <DD><A NAME="IDX450"></A> |
| Kill the word behind point. |
| Word boundaries are the same as <CODE>backward-word</CODE>. |
| <P> |
| |
| <A NAME="IDX451"></A> |
| <DT><CODE>shell-kill-word ()</CODE> |
| <DD><A NAME="IDX452"></A> |
| 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> |
| |
| <A NAME="IDX453"></A> |
| <DT><CODE>shell-backward-kill-word ()</CODE> |
| <DD><A NAME="IDX454"></A> |
| Kill the word behind point. |
| Word boundaries are the same as <CODE>shell-backward-word</CODE>. |
| <P> |
| |
| <A NAME="IDX455"></A> |
| <DT><CODE>unix-word-rubout (C-w)</CODE> |
| <DD><A NAME="IDX456"></A> |
| Kill the word behind point, using white space as a word boundary. |
| The killed text is saved on the kill-ring. |
| <P> |
| |
| <A NAME="IDX457"></A> |
| <DT><CODE>unix-filename-rubout ()</CODE> |
| <DD><A NAME="IDX458"></A> |
| 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> |
| |
| <A NAME="IDX459"></A> |
| <DT><CODE>delete-horizontal-space ()</CODE> |
| <DD><A NAME="IDX460"></A> |
| Delete all spaces and tabs around point. By default, this is unbound. |
| <P> |
| |
| <A NAME="IDX461"></A> |
| <DT><CODE>kill-region ()</CODE> |
| <DD><A NAME="IDX462"></A> |
| Kill the text in the current region. |
| By default, this command is unbound. |
| <P> |
| |
| <A NAME="IDX463"></A> |
| <DT><CODE>copy-region-as-kill ()</CODE> |
| <DD><A NAME="IDX464"></A> |
| Copy the text in the region to the kill buffer, so it can be yanked |
| right away. By default, this command is unbound. |
| <P> |
| |
| <A NAME="IDX465"></A> |
| <DT><CODE>copy-backward-word ()</CODE> |
| <DD><A NAME="IDX466"></A> |
| 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> |
| |
| <A NAME="IDX467"></A> |
| <DT><CODE>copy-forward-word ()</CODE> |
| <DD><A NAME="IDX468"></A> |
| 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> |
| |
| <A NAME="IDX469"></A> |
| <DT><CODE>yank (C-y)</CODE> |
| <DD><A NAME="IDX470"></A> |
| Yank the top of the kill ring into the buffer at point. |
| <P> |
| |
| <A NAME="IDX471"></A> |
| <DT><CODE>yank-pop (M-y)</CODE> |
| <DD><A NAME="IDX472"></A> |
| 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>. |
| </DL> |
| <P> |
| |
| <A NAME="Numeric Arguments"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC113"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC112"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC114"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC114"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.4.5 Specifying Numeric Arguments </H3> |
| <!--docid::SEC113::--> |
| <DL COMPACT> |
| |
| <A NAME="IDX473"></A> |
| <DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE> |
| <DD><A NAME="IDX474"></A> |
| Add this digit to the argument already accumulating, or start a new |
| argument. <KBD>M--</KBD> starts a negative argument. |
| <P> |
| |
| <A NAME="IDX475"></A> |
| <DT><CODE>universal-argument ()</CODE> |
| <DD><A NAME="IDX476"></A> |
| 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. |
| If the command is followed by digits, executing <CODE>universal-argument</CODE> |
| again ends the numeric argument, but is otherwise ignored. |
| As a special case, if this command is immediately followed by a |
| character that is neither a digit or minus sign, the argument count |
| for the next command is multiplied by four. |
| The argument count is initially one, so executing this function the |
| first time makes the argument count four, a second time makes the |
| argument count sixteen, and so on. |
| By default, this is not bound to a key. |
| </DL> |
| <P> |
| |
| <A NAME="Commands For Completion"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC114"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC113"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC115"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC115"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.4.6 Letting Readline Type For You </H3> |
| <!--docid::SEC114::--> |
| <P> |
| |
| <DL COMPACT> |
| <A NAME="IDX477"></A> |
| <DT><CODE>complete (<KBD>TAB</KBD>)</CODE> |
| <DD><A NAME="IDX478"></A> |
| 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 |
| text begins with <SAMP>`$'</SAMP>), username (if the text begins with |
| <SAMP>`~'</SAMP>), hostname (if the text begins with <SAMP>`@'</SAMP>), or |
| command (including aliases and functions) in turn. If none |
| of these produces a match, filename completion is attempted. |
| <P> |
| |
| <A NAME="IDX479"></A> |
| <DT><CODE>possible-completions (M-?)</CODE> |
| <DD><A NAME="IDX480"></A> |
| 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> |
| |
| <A NAME="IDX481"></A> |
| <DT><CODE>insert-completions (M-*)</CODE> |
| <DD><A NAME="IDX482"></A> |
| Insert all completions of the text before point that would have |
| been generated by <CODE>possible-completions</CODE>. |
| <P> |
| |
| <A NAME="IDX483"></A> |
| <DT><CODE>menu-complete ()</CODE> |
| <DD><A NAME="IDX484"></A> |
| 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 |
| of possible completions, inserting each match in turn. |
| At the end of the list of completions, the bell is rung |
| (subject to the setting of <CODE>bell-style</CODE>) |
| and the original text is restored. |
| An argument of <VAR>n</VAR> moves <VAR>n</VAR> positions forward in the list |
| of matches; a negative argument may be used to move backward |
| through the list. |
| This command is intended to be bound to <KBD>TAB</KBD>, but is unbound |
| by default. |
| <P> |
| |
| <A NAME="IDX485"></A> |
| <DT><CODE>menu-complete-backward ()</CODE> |
| <DD><A NAME="IDX486"></A> |
| 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> |
| |
| <A NAME="IDX487"></A> |
| <DT><CODE>delete-char-or-list ()</CODE> |
| <DD><A NAME="IDX488"></A> |
| 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 |
| <CODE>possible-completions</CODE>. |
| This command is unbound by default. |
| <P> |
| |
| <A NAME="IDX489"></A> |
| <DT><CODE>complete-filename (M-/)</CODE> |
| <DD><A NAME="IDX490"></A> |
| Attempt filename completion on the text before point. |
| <P> |
| |
| <A NAME="IDX491"></A> |
| <DT><CODE>possible-filename-completions (C-x /)</CODE> |
| <DD><A NAME="IDX492"></A> |
| List the possible completions of the text before point, |
| treating it as a filename. |
| <P> |
| |
| <A NAME="IDX493"></A> |
| <DT><CODE>complete-username (M-~)</CODE> |
| <DD><A NAME="IDX494"></A> |
| Attempt completion on the text before point, treating |
| it as a username. |
| <P> |
| |
| <A NAME="IDX495"></A> |
| <DT><CODE>possible-username-completions (C-x ~)</CODE> |
| <DD><A NAME="IDX496"></A> |
| List the possible completions of the text before point, |
| treating it as a username. |
| <P> |
| |
| <A NAME="IDX497"></A> |
| <DT><CODE>complete-variable (M-$)</CODE> |
| <DD><A NAME="IDX498"></A> |
| Attempt completion on the text before point, treating |
| it as a shell variable. |
| <P> |
| |
| <A NAME="IDX499"></A> |
| <DT><CODE>possible-variable-completions (C-x $)</CODE> |
| <DD><A NAME="IDX500"></A> |
| List the possible completions of the text before point, |
| treating it as a shell variable. |
| <P> |
| |
| <A NAME="IDX501"></A> |
| <DT><CODE>complete-hostname (M-@)</CODE> |
| <DD><A NAME="IDX502"></A> |
| Attempt completion on the text before point, treating |
| it as a hostname. |
| <P> |
| |
| <A NAME="IDX503"></A> |
| <DT><CODE>possible-hostname-completions (C-x @)</CODE> |
| <DD><A NAME="IDX504"></A> |
| List the possible completions of the text before point, |
| treating it as a hostname. |
| <P> |
| |
| <A NAME="IDX505"></A> |
| <DT><CODE>complete-command (M-!)</CODE> |
| <DD><A NAME="IDX506"></A> |
| 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 |
| functions, shell builtins, and finally executable filenames, |
| in that order. |
| <P> |
| |
| <A NAME="IDX507"></A> |
| <DT><CODE>possible-command-completions (C-x !)</CODE> |
| <DD><A NAME="IDX508"></A> |
| List the possible completions of the text before point, |
| treating it as a command name. |
| <P> |
| |
| <A NAME="IDX509"></A> |
| <DT><CODE>dynamic-complete-history (M-<KBD>TAB</KBD>)</CODE> |
| <DD><A NAME="IDX510"></A> |
| Attempt completion on the text before point, comparing |
| the text against lines from the history list for possible |
| completion matches. |
| <P> |
| |
| <A NAME="IDX511"></A> |
| <DT><CODE>dabbrev-expand ()</CODE> |
| <DD><A NAME="IDX512"></A> |
| Attempt menu completion on the text before point, comparing |
| the text against lines from the history list for possible |
| completion matches. |
| <P> |
| |
| <A NAME="IDX513"></A> |
| <DT><CODE>complete-into-braces (M-{)</CODE> |
| <DD><A NAME="IDX514"></A> |
| Perform filename completion and insert the list of possible completions |
| enclosed within braces so the list is available to the shell |
| (see section <A HREF="bashref.html#SEC30">3.5.1 Brace Expansion</A>). |
| <P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Keyboard Macros"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC115"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC114"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.4.7 Keyboard Macros </H3> |
| <!--docid::SEC115::--> |
| <DL COMPACT> |
| |
| <A NAME="IDX515"></A> |
| <DT><CODE>start-kbd-macro (C-x ()</CODE> |
| <DD><A NAME="IDX516"></A> |
| Begin saving the characters typed into the current keyboard macro. |
| <P> |
| |
| <A NAME="IDX517"></A> |
| <DT><CODE>end-kbd-macro (C-x ))</CODE> |
| <DD><A NAME="IDX518"></A> |
| Stop saving the characters typed into the current keyboard macro |
| and save the definition. |
| <P> |
| |
| <A NAME="IDX519"></A> |
| <DT><CODE>call-last-kbd-macro (C-x e)</CODE> |
| <DD><A NAME="IDX520"></A> |
| Re-execute the last keyboard macro defined, by making the characters |
| in the macro appear as if typed at the keyboard. |
| <P> |
| |
| <A NAME="IDX521"></A> |
| <DT><CODE>print-last-kbd-macro ()</CODE> |
| <DD><A NAME="IDX522"></A> |
| Print the last keboard macro defined in a format suitable for the |
| <VAR>inputrc</VAR> file. |
| <P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Miscellaneous Commands"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC116"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC115"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC108"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 8.4.8 Some Miscellaneous Commands </H3> |
| <!--docid::SEC116::--> |
| <DL COMPACT> |
| |
| <A NAME="IDX523"></A> |
| <DT><CODE>re-read-init-file (C-x C-r)</CODE> |
| <DD><A NAME="IDX524"></A> |
| Read in the contents of the <VAR>inputrc</VAR> file, and incorporate |
| any bindings or variable assignments found there. |
| <P> |
| |
| <A NAME="IDX525"></A> |
| <DT><CODE>abort (C-g)</CODE> |
| <DD><A NAME="IDX526"></A> |
| Abort the current editing command and |
| ring the terminal's bell (subject to the setting of |
| <CODE>bell-style</CODE>). |
| <P> |
| |
| <A NAME="IDX527"></A> |
| <DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE> |
| <DD><A NAME="IDX528"></A> |
| If the metafied character <VAR>x</VAR> is lowercase, run the command |
| that is bound to the corresponding uppercase character. |
| <P> |
| |
| <A NAME="IDX529"></A> |
| <DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE> |
| <DD><A NAME="IDX530"></A> |
| Metafy the next character typed. This is for keyboards |
| without a meta key. Typing <SAMP>`<KBD>ESC</KBD> f'</SAMP> is equivalent to typing |
| <KBD>M-f</KBD>. |
| <P> |
| |
| <A NAME="IDX531"></A> |
| <DT><CODE>undo (C-_ or C-x C-u)</CODE> |
| <DD><A NAME="IDX532"></A> |
| Incremental undo, separately remembered for each line. |
| <P> |
| |
| <A NAME="IDX533"></A> |
| <DT><CODE>revert-line (M-r)</CODE> |
| <DD><A NAME="IDX534"></A> |
| 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> |
| |
| <A NAME="IDX535"></A> |
| <DT><CODE>tilde-expand (M-&)</CODE> |
| <DD><A NAME="IDX536"></A> |
| Perform tilde expansion on the current word. |
| <P> |
| |
| <A NAME="IDX537"></A> |
| <DT><CODE>set-mark (C-@)</CODE> |
| <DD><A NAME="IDX538"></A> |
| Set the mark to the point. If a |
| numeric argument is supplied, the mark is set to that position. |
| <P> |
| |
| <A NAME="IDX539"></A> |
| <DT><CODE>exchange-point-and-mark (C-x C-x)</CODE> |
| <DD><A NAME="IDX540"></A> |
| 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> |
| |
| <A NAME="IDX541"></A> |
| <DT><CODE>character-search (C-])</CODE> |
| <DD><A NAME="IDX542"></A> |
| A character is read and point is moved to the next occurrence of that |
| character. A negative count searches for previous occurrences. |
| <P> |
| |
| <A NAME="IDX543"></A> |
| <DT><CODE>character-search-backward (M-C-])</CODE> |
| <DD><A NAME="IDX544"></A> |
| A character is read and point is moved to the previous occurrence |
| of that character. A negative count searches for subsequent |
| occurrences. |
| <P> |
| |
| <A NAME="IDX545"></A> |
| <DT><CODE>skip-csi-sequence ()</CODE> |
| <DD><A NAME="IDX546"></A> |
| 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 |
| stray characters into the editing buffer. This is unbound by default, |
| but usually bound to ESC-[. |
| <P> |
| |
| <A NAME="IDX547"></A> |
| <DT><CODE>insert-comment (M-#)</CODE> |
| <DD><A NAME="IDX548"></A> |
| 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 |
| the characters at the beginning of the line do not match the value |
| of <CODE>comment-begin</CODE>, the value is inserted, otherwise |
| the characters in <CODE>comment-begin</CODE> are deleted from the beginning of |
| the line. |
| In either case, the line is accepted as if a newline had been typed. |
| The default value of <CODE>comment-begin</CODE> causes this command |
| to make the current line a shell comment. |
| If a numeric argument causes the comment character to be removed, the line |
| will be executed by the shell. |
| <P> |
| |
| <A NAME="IDX549"></A> |
| <DT><CODE>dump-functions ()</CODE> |
| <DD><A NAME="IDX550"></A> |
| 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> |
| |
| <A NAME="IDX551"></A> |
| <DT><CODE>dump-variables ()</CODE> |
| <DD><A NAME="IDX552"></A> |
| 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> |
| |
| <A NAME="IDX553"></A> |
| <DT><CODE>dump-macros ()</CODE> |
| <DD><A NAME="IDX554"></A> |
| 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> |
| |
| <A NAME="IDX555"></A> |
| <DT><CODE>glob-complete-word (M-g)</CODE> |
| <DD><A NAME="IDX556"></A> |
| 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> |
| |
| <A NAME="IDX557"></A> |
| <DT><CODE>glob-expand-word (C-x *)</CODE> |
| <DD><A NAME="IDX558"></A> |
| 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> |
| |
| <A NAME="IDX559"></A> |
| <DT><CODE>glob-list-expansions (C-x g)</CODE> |
| <DD><A NAME="IDX560"></A> |
| 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> |
| |
| <A NAME="IDX561"></A> |
| <DT><CODE>display-shell-version (C-x C-v)</CODE> |
| <DD><A NAME="IDX562"></A> |
| Display version information about the current instance of Bash. |
| <P> |
| |
| <A NAME="IDX563"></A> |
| <DT><CODE>shell-expand-line (M-C-e)</CODE> |
| <DD><A NAME="IDX564"></A> |
| Expand the line as the shell does. |
| This performs alias and history expansion as well as all of the shell |
| word expansions (see section <A HREF="bashref.html#SEC29">3.5 Shell Expansions</A>). |
| <P> |
| |
| <A NAME="IDX565"></A> |
| <DT><CODE>history-expand-line (M-^)</CODE> |
| <DD><A NAME="IDX566"></A> |
| Perform history expansion on the current line. |
| <P> |
| |
| <A NAME="IDX567"></A> |
| <DT><CODE>magic-space ()</CODE> |
| <DD><A NAME="IDX568"></A> |
| Perform history expansion on the current line and insert a space |
| (see section <A HREF="bashref.html#SEC124">9.3 History Expansion</A>). |
| <P> |
| |
| <A NAME="IDX569"></A> |
| <DT><CODE>alias-expand-line ()</CODE> |
| <DD><A NAME="IDX570"></A> |
| Perform alias expansion on the current line (see section <A HREF="bashref.html#SEC85">6.6 Aliases</A>). |
| <P> |
| |
| <A NAME="IDX571"></A> |
| <DT><CODE>history-and-alias-expand-line ()</CODE> |
| <DD><A NAME="IDX572"></A> |
| Perform history and alias expansion on the current line. |
| <P> |
| |
| <A NAME="IDX573"></A> |
| <DT><CODE>insert-last-argument (M-. or M-_)</CODE> |
| <DD><A NAME="IDX574"></A> |
| A synonym for <CODE>yank-last-arg</CODE>. |
| <P> |
| |
| <A NAME="IDX575"></A> |
| <DT><CODE>operate-and-get-next (C-o)</CODE> |
| <DD><A NAME="IDX576"></A> |
| Accept the current line for execution and fetch the next line |
| relative to the current line from the history for editing. Any |
| argument is ignored. |
| <P> |
| |
| <A NAME="IDX577"></A> |
| <DT><CODE>edit-and-execute-command (C-xC-e)</CODE> |
| <DD><A NAME="IDX578"></A> |
| Invoke an editor on the current command line, and execute the result as shell |
| commands. |
| Bash attempts to invoke |
| <CODE>$VISUAL</CODE>, <CODE>$EDITOR</CODE>, and <CODE>emacs</CODE> |
| as the editor, in that order. |
| <P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Readline vi Mode"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC117"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC118"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC118"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 8.5 Readline vi Mode </H2> |
| <!--docid::SEC117::--> |
| <P> |
| |
| While the Readline library does not have a full set of <CODE>vi</CODE> |
| editing functions, it does contain enough to allow simple editing |
| of the line. The Readline <CODE>vi</CODE> mode behaves as specified in |
| the POSIX standard. |
| </P><P> |
| |
| In order to switch interactively between <CODE>emacs</CODE> and <CODE>vi</CODE> |
| editing modes, use the <SAMP>`set -o emacs'</SAMP> and <SAMP>`set -o vi'</SAMP> |
| commands (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| The Readline default is <CODE>emacs</CODE> mode. |
| </P><P> |
| |
| When you enter a line in <CODE>vi</CODE> mode, you are already placed in |
| `insertion' mode, as if you had typed an <SAMP>`i'</SAMP>. Pressing <KBD>ESC</KBD> |
| switches you into `command' mode, where you can edit the text of the |
| line with the standard <CODE>vi</CODE> movement keys, move to previous |
| history lines with <SAMP>`k'</SAMP> and subsequent lines with <SAMP>`j'</SAMP>, and |
| so forth. |
| </P><P> |
| |
| <A NAME="Programmable Completion"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC118"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC117"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC119"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC119"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 8.6 Programmable Completion </H2> |
| <!--docid::SEC118::--> |
| <P> |
| |
| When word completion is attempted for an argument to a command for |
| which a completion specification (a <VAR>compspec</VAR>) has been defined |
| using the <CODE>complete</CODE> builtin (see section <A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A>), |
| the programmable completion facilities are invoked. |
| </P><P> |
| |
| First, the command name is identified. |
| If a compspec has been defined for that command, the |
| compspec is used to generate the list of possible completions for the word. |
| If the command word is the empty string (completion attempted at the |
| beginning of an empty line), any compspec defined with |
| the <SAMP>`-E'</SAMP> option to <CODE>complete</CODE> is used. |
| If the command word is a full pathname, a compspec for the full |
| pathname is searched for first. |
| If no compspec is found for the full pathname, an attempt is made to |
| find a compspec for the portion following the final slash. |
| If those searches do not result in a compspec, any compspec defined with |
| the <SAMP>`-D'</SAMP> option to <CODE>complete</CODE> is used as the default. |
| </P><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 section <A HREF="bashref.html#SEC114">8.4.6 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 |
| returned. |
| When the <SAMP>`-f'</SAMP> or <SAMP>`-d'</SAMP> option is used for filename or |
| directory name completion, the shell variable <CODE>FIGNORE</CODE> is |
| used to filter the matches. |
| See section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>, for a description of <CODE>FIGNORE</CODE>. |
| </P><P> |
| |
| Any completions specified by a filename expansion pattern to the |
| <SAMP>`-G'</SAMP> option are generated next. |
| The words generated by the pattern need not match the word being completed. |
| The <CODE>GLOBIGNORE</CODE> shell variable is not used to filter the matches, |
| but the <CODE>FIGNORE</CODE> shell variable is used. |
| </P><P> |
| |
| Next, the string specified as the argument to the <SAMP>`-W'</SAMP> option |
| is considered. |
| The string is first split using the characters in the <CODE>IFS</CODE> |
| special variable as delimiters. |
| Shell quoting is honored. |
| Each word is then expanded using |
| brace expansion, tilde expansion, parameter and variable expansion, |
| command substitution, and arithmetic expansion, |
| as described above (see section <A HREF="bashref.html#SEC29">3.5 Shell Expansions</A>). |
| The results are split using the rules described above |
| (see section <A HREF="bashref.html#SEC36">3.5.7 Word Splitting</A>). |
| The results of the expansion are prefix-matched against the word being |
| completed, and the matching words become the possible completions. |
| </P><P> |
| |
| After these matches have been generated, any shell function or command |
| specified with the <SAMP>`-F'</SAMP> and <SAMP>`-C'</SAMP> options is invoked. |
| When the command or function is invoked, the <CODE>COMP_LINE</CODE>, |
| <CODE>COMP_POINT</CODE>, <CODE>COMP_KEY</CODE>, and <CODE>COMP_TYPE</CODE> variables are |
| assigned values as described above (see section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>). |
| If a shell function is being invoked, the <CODE>COMP_WORDS</CODE> and |
| <CODE>COMP_CWORD</CODE> variables are also set. |
| When the function or command is invoked, the first argument ($1) is the |
| name of the command whose arguments are being completed, the |
| second argument ($2) is the word being completed, and the third argument |
| ($3) is the word preceding the word being completed on the current command |
| line. |
| No filtering of the generated completions against the word being completed |
| is performed; the function or command has complete freedom in generating |
| the matches. |
| </P><P> |
| |
| Any function specified with <SAMP>`-F'</SAMP> is invoked first. |
| The function may use any of the shell facilities, including the |
| <CODE>compgen</CODE> and <CODE>compopt</CODE> builtins described below |
| (see section <A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A>), to generate the matches. |
| It must put the possible completions in the <CODE>COMPREPLY</CODE> array |
| variable, one per array element. |
| </P><P> |
| |
| Next, any command specified with the <SAMP>`-C'</SAMP> option is invoked |
| in an environment equivalent to command substitution. |
| It should print a list of completions, one per line, to |
| the standard output. |
| Backslash may be used to escape a newline, if necessary. |
| </P><P> |
| |
| After all of the possible completions are generated, any filter |
| specified with the <SAMP>`-X'</SAMP> option is applied to the list. |
| The filter is a pattern as used for pathname expansion; a <SAMP>`&'</SAMP> |
| in the pattern is replaced with the text of the word being completed. |
| A literal <SAMP>`&'</SAMP> may be escaped with a backslash; the backslash |
| is removed before attempting a match. |
| Any completion that matches the pattern will be removed from the list. |
| A leading <SAMP>`!'</SAMP> negates the pattern; in this case any completion |
| not matching the pattern will be removed. |
| </P><P> |
| |
| Finally, any prefix and suffix specified with the <SAMP>`-P'</SAMP> and <SAMP>`-S'</SAMP> |
| options are added to each member of the completion list, and the result is |
| returned to the Readline completion code as the list of possible |
| completions. |
| </P><P> |
| |
| If the previously-applied actions do not generate any matches, and the |
| <SAMP>`-o dirnames'</SAMP> option was supplied to <CODE>complete</CODE> when the |
| compspec was defined, directory name completion is attempted. |
| </P><P> |
| |
| If the <SAMP>`-o plusdirs'</SAMP> option was supplied to <CODE>complete</CODE> when |
| the compspec was defined, directory name completion is attempted and any |
| matches are added to the results of the other actions. |
| </P><P> |
| |
| By default, if a compspec is found, whatever it generates is returned to |
| the completion code as the full set of possible completions. |
| The default Bash completions are not attempted, and the Readline default |
| of filename completion is disabled. |
| If the <SAMP>`-o bashdefault'</SAMP> option was supplied to <CODE>complete</CODE> when |
| the compspec was defined, the default Bash completions are attempted |
| if the compspec generates no matches. |
| If the <SAMP>`-o default'</SAMP> option was supplied to <CODE>complete</CODE> when the |
| compspec was defined, Readline's default completion will be performed |
| if the compspec (and, if attempted, the default Bash completions) |
| generate no matches. |
| </P><P> |
| |
| When a compspec indicates that directory name completion is desired, |
| the programmable completion functions force Readline to append a slash |
| to completed names which are symbolic links to directories, subject to |
| the value of the <VAR>mark-directories</VAR> Readline variable, regardless |
| of the setting of the <VAR>mark-symlinked-directories</VAR> Readline variable. |
| </P><P> |
| |
| There is some support for dynamically modifying completions. This is |
| most useful when used in combination with a default completion specified |
| with <SAMP>`-D'</SAMP>. It's possible for shell functions executed as completion |
| handlers to indicate that completion should be retried by returning an |
| exit status of 124. If a shell function returns 124, and changes |
| the compspec associated with the command on which completion is being |
| attempted (supplied as the first argument when the function is executed), |
| programmable completion restarts from the beginning, with an |
| attempt to find a new compspec for that command. This allows a set of |
| completions to be built dynamically as completion is attempted, rather than |
| being loaded all at once. |
| </P><P> |
| |
| For instance, assuming that there is a library of compspecs, each kept in a |
| file corresponding to the name of the command, the following default |
| completion function would load completions dynamically: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>_completion_loader() |
| { |
| . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 |
| } |
| complete -D -F _completion_loader -o bashdefault -o default |
| </pre></td></tr></table></P><P> |
| |
| <A NAME="Programmable Completion Builtins"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC119"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC118"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC120"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC120"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 8.7 Programmable Completion Builtins </H2> |
| <!--docid::SEC119::--> |
| <P> |
| |
| Three builtin commands are available to manipulate the programmable completion |
| facilities: one to specify how the arguments to a particular command are to |
| be completed, and two to modify the completion as it is happening. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>compgen</CODE> |
| <DD><A NAME="IDX579"></A> |
| <TABLE><tr><td> </td><td class=example><pre><CODE>compgen [<VAR>option</VAR>] [<VAR>word</VAR>]</CODE> |
| </pre></td></tr></table><P> |
| |
| Generate possible completion matches for <VAR>word</VAR> according to |
| the <VAR>option</VAR>s, which may be any option accepted by the |
| <CODE>complete</CODE> |
| builtin with the exception of <SAMP>`-p'</SAMP> and <SAMP>`-r'</SAMP>, and write |
| the matches to the standard output. |
| When using the <SAMP>`-F'</SAMP> or <SAMP>`-C'</SAMP> options, the various shell variables |
| set by the programmable completion facilities, while available, will not |
| have useful values. |
| </P><P> |
| |
| The matches will be generated in the same way as if the programmable |
| completion code had generated them directly from a completion specification |
| with the same flags. |
| If <VAR>word</VAR> is specified, only those completions matching <VAR>word</VAR> |
| will be displayed. |
| </P><P> |
| |
| The return value is true unless an invalid option is supplied, or no |
| matches were generated. |
| </P><P> |
| |
| <DT><CODE>complete</CODE> |
| <DD><A NAME="IDX580"></A> |
| <TABLE><tr><td> </td><td class=example><pre><CODE>complete [-abcdefgjksuv] [-o <VAR>comp-option</VAR>] [-DE] [-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> <small>...</small>]</CODE> |
| <CODE>complete -pr [-DE] [<VAR>name</VAR> <small>...</small>]</CODE> |
| </pre></td></tr></table><P> |
| |
| Specify how arguments to each <VAR>name</VAR> should be completed. |
| If the <SAMP>`-p'</SAMP> option is supplied, or if no options are supplied, existing |
| completion specifications are printed in a way that allows them to be |
| reused as input. |
| The <SAMP>`-r'</SAMP> option removes a completion specification for |
| each <VAR>name</VAR>, or, if no <VAR>name</VAR>s are supplied, all |
| completion specifications. |
| The <SAMP>`-D'</SAMP> option indicates that the remaining options and actions should |
| apply to the "default" command completion; that is, completion attempted |
| on a command for which no completion has previously been defined. |
| The <SAMP>`-E'</SAMP> option indicates that the remaining options and actions should |
| apply to "empty" command completion; that is, completion attempted on a |
| blank line. |
| </P><P> |
| |
| The process of applying these completion specifications when word completion |
| is attempted is described above (see section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>). The |
| <SAMP>`-D'</SAMP> option takes precedence over <SAMP>`-E'</SAMP>. |
| </P><P> |
| |
| Other options, if specified, have the following meanings. |
| The arguments to the <SAMP>`-G'</SAMP>, <SAMP>`-W'</SAMP>, and <SAMP>`-X'</SAMP> options |
| (and, if necessary, the <SAMP>`-P'</SAMP> and <SAMP>`-S'</SAMP> options) |
| should be quoted to protect them from expansion before the |
| <CODE>complete</CODE> builtin is invoked. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-o <VAR>comp-option</VAR></CODE> |
| <DD>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> |
| |
| <DT><CODE>bashdefault</CODE> |
| <DD>Perform the rest of the default Bash completions if the compspec |
| generates no matches. |
| <P> |
| |
| <DT><CODE>default</CODE> |
| <DD>Use Readline's default filename completion if the compspec generates |
| no matches. |
| <P> |
| |
| <DT><CODE>dirnames</CODE> |
| <DD>Perform directory name completion if the compspec generates no matches. |
| <P> |
| |
| <DT><CODE>filenames</CODE> |
| <DD>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). |
| This option is intended to be used with shell functions specified |
| with <SAMP>`-F'</SAMP>. |
| <P> |
| |
| <DT><CODE>noquote</CODE> |
| <DD>Tell Readline not to quote the completed words if they are filenames |
| (quoting filenames is the default). |
| <P> |
| |
| <DT><CODE>nospace</CODE> |
| <DD>Tell Readline not to append a space (the default) to words completed at |
| the end of the line. |
| <P> |
| |
| <DT><CODE>plusdirs</CODE> |
| <DD>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. |
| <P> |
| |
| </DL> |
| <P> |
| |
| <DT><CODE>-A <VAR>action</VAR></CODE> |
| <DD>The <VAR>action</VAR> may be one of the following to generate a list of possible |
| completions: |
| <P> |
| |
| <DL COMPACT> |
| <DT><CODE>alias</CODE> |
| <DD>Alias names. May also be specified as <SAMP>`-a'</SAMP>. |
| <P> |
| |
| <DT><CODE>arrayvar</CODE> |
| <DD>Array variable names. |
| <P> |
| |
| <DT><CODE>binding</CODE> |
| <DD>Readline key binding names (see section <A HREF="bashref.html#SEC108">8.4 Bindable Readline Commands</A>). |
| <P> |
| |
| <DT><CODE>builtin</CODE> |
| <DD>Names of shell builtin commands. May also be specified as <SAMP>`-b'</SAMP>. |
| <P> |
| |
| <DT><CODE>command</CODE> |
| <DD>Command names. May also be specified as <SAMP>`-c'</SAMP>. |
| <P> |
| |
| <DT><CODE>directory</CODE> |
| <DD>Directory names. May also be specified as <SAMP>`-d'</SAMP>. |
| <P> |
| |
| <DT><CODE>disabled</CODE> |
| <DD>Names of disabled shell builtins. |
| <P> |
| |
| <DT><CODE>enabled</CODE> |
| <DD>Names of enabled shell builtins. |
| <P> |
| |
| <DT><CODE>export</CODE> |
| <DD>Names of exported shell variables. May also be specified as <SAMP>`-e'</SAMP>. |
| <P> |
| |
| <DT><CODE>file</CODE> |
| <DD>File names. May also be specified as <SAMP>`-f'</SAMP>. |
| <P> |
| |
| <DT><CODE>function</CODE> |
| <DD>Names of shell functions. |
| <P> |
| |
| <DT><CODE>group</CODE> |
| <DD>Group names. May also be specified as <SAMP>`-g'</SAMP>. |
| <P> |
| |
| <DT><CODE>helptopic</CODE> |
| <DD>Help topics as accepted by the <CODE>help</CODE> builtin (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <DT><CODE>hostname</CODE> |
| <DD>Hostnames, as taken from the file specified by the |
| <CODE>HOSTFILE</CODE> shell variable (see section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>). |
| <P> |
| |
| <DT><CODE>job</CODE> |
| <DD>Job names, if job control is active. May also be specified as <SAMP>`-j'</SAMP>. |
| <P> |
| |
| <DT><CODE>keyword</CODE> |
| <DD>Shell reserved words. May also be specified as <SAMP>`-k'</SAMP>. |
| <P> |
| |
| <DT><CODE>running</CODE> |
| <DD>Names of running jobs, if job control is active. |
| <P> |
| |
| <DT><CODE>service</CODE> |
| <DD>Service names. May also be specified as <SAMP>`-s'</SAMP>. |
| <P> |
| |
| <DT><CODE>setopt</CODE> |
| <DD>Valid arguments for the <SAMP>`-o'</SAMP> option to the <CODE>set</CODE> builtin |
| (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| <P> |
| |
| <DT><CODE>shopt</CODE> |
| <DD>Shell option names as accepted by the <CODE>shopt</CODE> builtin |
| (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <DT><CODE>signal</CODE> |
| <DD>Signal names. |
| <P> |
| |
| <DT><CODE>stopped</CODE> |
| <DD>Names of stopped jobs, if job control is active. |
| <P> |
| |
| <DT><CODE>user</CODE> |
| <DD>User names. May also be specified as <SAMP>`-u'</SAMP>. |
| <P> |
| |
| <DT><CODE>variable</CODE> |
| <DD>Names of all shell variables. May also be specified as <SAMP>`-v'</SAMP>. |
| </DL> |
| <P> |
| |
| <DT><CODE>-C <VAR>command</VAR></CODE> |
| <DD><VAR>command</VAR> is executed in a subshell environment, and its output is |
| used as the possible completions. |
| <P> |
| |
| <DT><CODE>-F <VAR>function</VAR></CODE> |
| <DD>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 |
| being completed, $2 is the word being completed, and $3 is the word |
| preceding the word being completed, as described above |
| (see section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>). |
| When it finishes, the possible completions are retrieved from the value |
| of the <CODE>COMPREPLY</CODE> array variable. |
| <P> |
| |
| <DT><CODE>-G <VAR>globpat</VAR></CODE> |
| <DD>The filename expansion pattern <VAR>globpat</VAR> is expanded to generate |
| the possible completions. |
| <P> |
| |
| <DT><CODE>-P <VAR>prefix</VAR></CODE> |
| <DD><VAR>prefix</VAR> is added at the beginning of each possible completion |
| after all other options have been applied. |
| <P> |
| |
| <DT><CODE>-S <VAR>suffix</VAR></CODE> |
| <DD><VAR>suffix</VAR> is appended to each possible completion |
| after all other options have been applied. |
| <P> |
| |
| <DT><CODE>-W <VAR>wordlist</VAR></CODE> |
| <DD>The <VAR>wordlist</VAR> is split using the characters in the |
| <CODE>IFS</CODE> special variable as delimiters, and each resultant word |
| is expanded. |
| The possible completions are the members of the resultant list which |
| match the word being completed. |
| <P> |
| |
| <DT><CODE>-X <VAR>filterpat</VAR></CODE> |
| <DD><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 |
| <VAR>filterpat</VAR> is removed from the list. |
| A leading <SAMP>`!'</SAMP> in <VAR>filterpat</VAR> negates the pattern; in this |
| case, any completion not matching <VAR>filterpat</VAR> is removed. |
| </DL> |
| <P> |
| |
| The return value is true unless an invalid option is supplied, an option |
| other than <SAMP>`-p'</SAMP> or <SAMP>`-r'</SAMP> is supplied without a <VAR>name</VAR> |
| argument, an attempt is made to remove a completion specification for |
| a <VAR>name</VAR> for which no specification exists, or |
| an error occurs adding a completion specification. |
| </P><P> |
| |
| <DT><CODE>compopt</CODE> |
| <DD><A NAME="IDX581"></A> |
| <TABLE><tr><td> </td><td class=example><pre><CODE>compopt</CODE> [-o <VAR>option</VAR>] [-DE] [+o <VAR>option</VAR>] [<VAR>name</VAR>] |
| </pre></td></tr></table>Modify completion options for each <VAR>name</VAR> according to the |
| <VAR>option</VAR>s, or for the currently-executing completion if no <VAR>name</VAR>s |
| are supplied. |
| If no <VAR>option</VAR>s are given, display the completion options for each |
| <VAR>name</VAR> or the current completion. |
| The possible values of <VAR>option</VAR> are those valid for the <CODE>complete</CODE> |
| builtin described above. |
| The <SAMP>`-D'</SAMP> option indicates that the remaining options should |
| apply to the "default" command completion; that is, completion attempted |
| on a command for which no completion has previously been defined. |
| The <SAMP>`-E'</SAMP> option indicates that the remaining options should |
| apply to "empty" command completion; that is, completion attempted on a |
| blank line. |
| <P> |
| |
| The <SAMP>`-D'</SAMP> option takes precedence over <SAMP>`-E'</SAMP>. |
| </P><P> |
| |
| The return value is true unless an invalid option is supplied, an attempt |
| is made to modify the options for a <VAR>name</VAR> for which no completion |
| specification exists, or an output error occurs. |
| </P><P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="A Programmable Completion Example"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC120"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC119"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC96"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 8.8 A Programmable Completion Example </H2> |
| <!--docid::SEC120::--> |
| <P> |
| |
| The most common way to obtain additional completion functionality beyond |
| the default actions <CODE>complete</CODE> and <CODE>compgen</CODE> provide is to use |
| a shell function and bind it to a particular command using <CODE>complete -F</CODE>. |
| </P><P> |
| |
| The following function provides completions for the <CODE>cd</CODE> builtin. |
| It is a reasonably good example of what shell functions must do when |
| used for completion. This function uses the word passsed as <CODE>$2</CODE> |
| to determine the directory name to complete. You can also use the |
| <CODE>COMP_WORDS</CODE> array variable; the current word is indexed by the |
| <CODE>COMP_CWORD</CODE> variable. |
| </P><P> |
| |
| The function relies on the <CODE>complete</CODE> and <CODE>compgen</CODE> builtins |
| to do much of the work, adding only the things that the Bash <CODE>cd</CODE> |
| does beyond accepting basic directory names: |
| tilde expansion (see section <A HREF="bashref.html#SEC31">3.5.2 Tilde Expansion</A>), |
| searching directories in <VAR>$CDPATH</VAR>, which is described above |
| (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>), |
| and basic support for the <CODE>cdable_vars</CODE> shell option |
| (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>). |
| <CODE>_comp_cd</CODE> modifies the value of <VAR>IFS</VAR> so that it contains only |
| a newline to accommodate file names containing spaces and tabs -- |
| <CODE>compgen</CODE> prints the possible completions it generates one per line. |
| </P><P> |
| |
| Possible completions go into the <VAR>COMPREPLY</VAR> array variable, one |
| completion per array element. The programmable completion system retrieves |
| the completions from there when the function returns. |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre># A completion function for the cd builtin |
| # based on the cd completion function from the bash_completion package |
| _comp_cd() |
| { |
| local IFS=$' \t\n' # normalize IFS |
| local cur _skipdot _cdpath |
| local i j k |
| |
| # Tilde expansion, with side effect of expanding tilde to full pathname |
| case "$2" in |
| \~*) eval cur="$2" ;; |
| *) cur=$2 ;; |
| esac |
| |
| # no cdpath or absolute pathname -- straight directory completion |
| if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then |
| # compgen prints paths one per line; could also use while loop |
| IFS=$'\n' |
| COMPREPLY=( $(compgen -d -- "$cur") ) |
| IFS=$' \t\n' |
| # CDPATH+directories in the current directory if not in CDPATH |
| else |
| IFS=$'\n' |
| _skipdot=false |
| # preprocess CDPATH to convert null directory names to . |
| _cdpath=${CDPATH/#:/.:} |
| _cdpath=${_cdpath//::/:.:} |
| _cdpath=${_cdpath/%:/:.} |
| for i in ${_cdpath//:/$'\n'}; do |
| if [[ $i -ef . ]]; then _skipdot=true; fi |
| k="${#COMPREPLY[@]}" |
| for j in $( compgen -d -- "$i/$cur" ); do |
| COMPREPLY[k++]=${j#$i/} # cut off directory |
| done |
| done |
| $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") ) |
| IFS=$' \t\n' |
| fi |
| |
| # variable names if appropriate shell option set and no completions |
| if shopt -q cdable_vars && [[ ${#COMPREPLY[@]} -eq 0 ]]; then |
| COMPREPLY=( $(compgen -v -- "$cur") ) |
| fi |
| |
| return 0 |
| } |
| </pre></td></tr></table></P><P> |
| |
| We install the completion function using the <SAMP>`-F'</SAMP> option to |
| <CODE>complete</CODE>: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre># Tell readline to quote appropriate and append slashes to directories; |
| # use the bash default completion for other arguments |
| complete -o filenames -o nospace -o bashdefault -F _comp_cd cd |
| </pre></td></tr></table></P><P> |
| |
| Since we'd like Bash and Readline to take care of some |
| of the other details for us, we use several other options to tell Bash |
| and Readline what to do. The <SAMP>`-o filenames'</SAMP> option tells Readline |
| that the possible completions should be treated as filenames, and quoted |
| appropriately. That option will also cause Readline to append a slash to |
| filenames it can determine are directories (which is why we might want to |
| extend <CODE>_comp_cd</CODE> to append a slash if we're using directories found |
| via <VAR>CDPATH</VAR>: Readline can't tell those completions are directories). |
| 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 |
| set. These include things like command name completion, variable completion |
| for words beginning with <SAMP>`{'</SAMP>, completions containing pathname |
| expansion patterns (see section <A HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A>), and so on. |
| </P><P> |
| |
| Once installed using <CODE>complete</CODE>, <CODE>_comp_cd</CODE> will be called every |
| time we attempt word completion for a <CODE>cd</CODE> command. |
| </P><P> |
| |
| Many more examples -- an extensive collection of completions for most of |
| the common GNU, Unix, and Linux commands -- are available as part of the |
| bash_completion project. This is installed by default on many GNU/Linux |
| distributions. Originally written by Ian Macdonald, the project now lives |
| at <A HREF="http://bash-completion.alioth.debian.org/">http://bash-completion.alioth.debian.org/</A>. There are ports for |
| other systems such as Solaris and Mac OS X. |
| </P><P> |
| |
| An older version of the bash_completion package is distributed with bash |
| in the <TT>`examples/complete'</TT> subdirectory. |
| </P><P> |
| |
| <A NAME="IDX582"></A> |
| </P><P> |
| |
| <A NAME="Using History Interactively"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC121"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC120"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC122"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> 9. Using History Interactively </H1> |
| <!--docid::SEC121::--> |
| <P> |
| |
| This chapter describes how to use the GNU History Library |
| interactively, from a user's standpoint. |
| It should be considered a user's guide. |
| For information on using the GNU History Library in other programs, |
| see the GNU Readline Library Manual. |
| </P><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC122">9.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="bashref.html#SEC123">9.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="bashref.html#SEC124">9.3 History Expansion</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">What it feels like using History as a user.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Bash History Facilities"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC122"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC123"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 9.1 Bash History Facilities </H2> |
| <!--docid::SEC122::--> |
| <P> |
| |
| When the <SAMP>`-o history'</SAMP> option to the <CODE>set</CODE> builtin |
| is enabled (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>), |
| the shell provides access to the <EM>command history</EM>, |
| the list of commands previously typed. |
| The value of the <CODE>HISTSIZE</CODE> shell variable is used as the |
| number of commands to save in a history list. |
| The text of the last <CODE>$HISTSIZE</CODE> |
| commands (default 500) is saved. |
| The shell stores each command in the history list prior to |
| parameter and variable expansion |
| but after history expansion is performed, subject to the |
| values of the shell variables |
| <CODE>HISTIGNORE</CODE> and <CODE>HISTCONTROL</CODE>. |
| </P><P> |
| |
| When the shell starts up, the history is initialized from the |
| file named by the <CODE>HISTFILE</CODE> variable (default <TT>`~/.bash_history'</TT>). |
| The file named by the value of <CODE>HISTFILE</CODE> is truncated, if |
| necessary, to contain no more than the number of lines specified by |
| the value of the <CODE>HISTFILESIZE</CODE> variable. |
| 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 section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>), |
| the lines are appended to the history file, |
| otherwise the history file is overwritten. |
| If <CODE>HISTFILE</CODE> |
| is unset, or if the history file is unwritable, the history is not saved. |
| After saving the history, the history file is truncated |
| to contain no more than <CODE>$HISTFILESIZE</CODE> lines. |
| If <CODE>HISTFILESIZE</CODE> is unset, or set to null, a non-numeric value, or |
| a numeric value less than zero, the history file is not truncated. |
| </P><P> |
| |
| If the <CODE>HISTTIMEFORMAT</CODE> is set, the time stamp information |
| associated with each history entry is written to the history file, |
| marked with the history comment character. |
| When the history file is read, lines beginning with the history |
| comment character followed immediately by a digit are interpreted |
| as timestamps for the previous history line. |
| </P><P> |
| |
| The builtin command <CODE>fc</CODE> may be used to list or edit and re-execute |
| a portion of the history list. |
| The <CODE>history</CODE> builtin may be used to display or modify the history |
| 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 section <A HREF="bashref.html#SEC110">8.4.2 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> |
| variables may be set to cause the shell to save only a subset of the |
| commands entered. |
| The <CODE>cmdhist</CODE> |
| shell option, if enabled, causes the shell to attempt to save each |
| line of a multi-line command in the same history entry, adding |
| semicolons where necessary to preserve syntactic correctness. |
| The <CODE>lithist</CODE> |
| shell option causes the shell to save the command with embedded newlines |
| instead of semicolons. |
| The <CODE>shopt</CODE> builtin is used to set these options. |
| See section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>, for a description of <CODE>shopt</CODE>. |
| </P><P> |
| |
| <A NAME="Bash History Builtins"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC123"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC122"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC124"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC124"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 9.2 Bash History Builtins </H2> |
| <!--docid::SEC123::--> |
| <P> |
| |
| Bash provides two builtin commands which manipulate the |
| history list and history file. |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>fc</CODE> |
| <DD><A NAME="IDX583"></A> |
| <TABLE><tr><td> </td><td class=example><pre><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></td></tr></table><P> |
| |
| The first form selects a range of commands from <VAR>first</VAR> to |
| <VAR>last</VAR> from the history list and displays or edits and re-executes |
| them. |
| Both <VAR>first</VAR> and |
| <VAR>last</VAR> may be specified as a string (to locate the most recent |
| command beginning with that string) or as a number (an index into the |
| history list, where a negative number is used as an offset from the |
| current command number). If <VAR>last</VAR> is not specified it is set to |
| <VAR>first</VAR>. If <VAR>first</VAR> is not specified it is set to the previous |
| command for editing and -16 for listing. If the <SAMP>`-l'</SAMP> flag is |
| given, the commands are listed on standard output. The <SAMP>`-n'</SAMP> flag |
| suppresses the command numbers when listing. The <SAMP>`-r'</SAMP> flag |
| reverses the order of the listing. Otherwise, the editor given by |
| <VAR>ename</VAR> is invoked on a file containing those commands. If |
| <VAR>ename</VAR> is not given, the value of the following variable expansion |
| is used: <CODE>${FCEDIT:-${EDITOR:-vi}}</CODE>. This says to use the |
| value of the <CODE>FCEDIT</CODE> variable if set, or the value of the |
| <CODE>EDITOR</CODE> variable if that is set, or <CODE>vi</CODE> if neither is set. |
| When editing is complete, the edited commands are echoed and executed. |
| </P><P> |
| |
| In the second form, <VAR>command</VAR> is re-executed after each instance |
| of <VAR>pat</VAR> in the selected command is replaced by <VAR>rep</VAR>. |
| <VAR>command</VAR> is intepreted the same as <VAR>first</VAR> above. |
| </P><P> |
| |
| A useful alias to use with the <CODE>fc</CODE> command is <CODE>r='fc -s'</CODE>, so |
| that typing <SAMP>`r cc'</SAMP> runs the last command beginning with <CODE>cc</CODE> |
| and typing <SAMP>`r'</SAMP> re-executes the last command (see section <A HREF="bashref.html#SEC85">6.6 Aliases</A>). |
| </P><P> |
| |
| <DT><CODE>history</CODE> |
| <DD><A NAME="IDX584"></A> |
| <TABLE><tr><td> </td><td class=example><pre>history [<VAR>n</VAR>] |
| history -c |
| history -d <VAR>offset</VAR> |
| history [-anrw] [<VAR>filename</VAR>] |
| history -ps <VAR>arg</VAR> |
| </pre></td></tr></table><P> |
| |
| With no options, display the history list with line numbers. |
| Lines prefixed with a <SAMP>`*'</SAMP> have been modified. |
| An argument of <VAR>n</VAR> lists only the last <VAR>n</VAR> lines. |
| If the shell variable <CODE>HISTTIMEFORMAT</CODE> is set and not null, |
| it is used as a format string for <VAR>strftime</VAR> to display |
| the time stamp associated with each displayed history entry. |
| No intervening blank is printed between the formatted time stamp |
| and the history line. |
| </P><P> |
| |
| Options, if supplied, have the following meanings: |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>-c</CODE> |
| <DD>Clear the history list. This may be combined |
| with the other options to replace the history list completely. |
| <P> |
| |
| <DT><CODE>-d <VAR>offset</VAR></CODE> |
| <DD>Delete the history entry at position <VAR>offset</VAR>. |
| <VAR>offset</VAR> should be specified as it appears when the history is |
| displayed. |
| <P> |
| |
| <DT><CODE>-a</CODE> |
| <DD>Append the new |
| history lines (history lines entered since the beginning of the |
| current Bash session) to the history file. |
| <P> |
| |
| <DT><CODE>-n</CODE> |
| <DD>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> |
| |
| <DT><CODE>-r</CODE> |
| <DD>Read the history file and append its contents to |
| the history list. |
| <P> |
| |
| <DT><CODE>-w</CODE> |
| <DD>Write out the current history list to the history file. |
| <P> |
| |
| <DT><CODE>-p</CODE> |
| <DD>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> |
| |
| <DT><CODE>-s</CODE> |
| <DD>The <VAR>arg</VAR>s are added to the end of |
| the history list as a single entry. |
| <P> |
| |
| </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><P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="History Interaction"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC124"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC123"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC125"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC121"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 9.3 History Expansion </H2> |
| <!--docid::SEC124::--> |
| <P> |
| |
| The History library provides a history expansion feature that is similar |
| to the history expansion provided by <CODE>csh</CODE>. This section |
| describes the syntax used to manipulate the history information. |
| </P><P> |
| |
| History expansions introduce words from the history list into |
| the input stream, making it easy to repeat commands, insert the |
| arguments to a previous command into the current input line, or |
| fix errors in previous commands quickly. |
| </P><P> |
| |
| History expansion takes place in two parts. The first is to determine |
| which line from the history list should be used during substitution. |
| The second is to select portions of that line for inclusion into the |
| current one. The line selected from the history is called the |
| <EM>event</EM>, and the portions of that line that are acted upon are |
| called <EM>words</EM>. Various <EM>modifiers</EM> are available to manipulate |
| the selected words. The line is broken into words in the same fashion |
| that Bash does, so that several words |
| surrounded by quotes are considered one word. |
| History expansions are introduced by the appearance of the |
| history expansion character, which is <SAMP>`!'</SAMP> by default. |
| Only <SAMP>`\'</SAMP> and <SAMP>`''</SAMP> may be used to escape the history expansion |
| character. |
| </P><P> |
| |
| Several shell options settable with the <CODE>shopt</CODE> |
| builtin (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>) may be used to tailor |
| the behavior of history expansion. If the |
| <CODE>histverify</CODE> shell option is enabled, and Readline |
| is being used, history substitutions are not immediately passed to |
| the shell parser. |
| Instead, the expanded line is reloaded into the Readline |
| editing buffer for further modification. |
| If Readline is being used, and the <CODE>histreedit</CODE> |
| shell option is enabled, a failed history expansion will be |
| reloaded into the Readline editing buffer for correction. |
| The <SAMP>`-p'</SAMP> option to the <CODE>history</CODE> builtin command |
| may be used to see what a history expansion will do before using it. |
| The <SAMP>`-s'</SAMP> option to the <CODE>history</CODE> builtin may be used to |
| add commands to the end of the history list without actually executing |
| them, so that they are available for subsequent recall. |
| This is most useful in conjunction with Readline. |
| </P><P> |
| |
| The shell allows control of the various characters used by the |
| history expansion mechanism with the <CODE>histchars</CODE> variable, |
| as explained above (see section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>). The shell uses |
| the history comment character to mark history timestamps when |
| writing the history file. |
| </P><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC125">9.3.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="bashref.html#SEC126">9.3.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="bashref.html#SEC127">9.3.3 Modifiers</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Modifying the results of substitution.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Event Designators"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC125"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC124"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC126"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC124"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 9.3.1 Event Designators </H3> |
| <!--docid::SEC125::--> |
| <P> |
| |
| An event designator is a reference to a command line entry in the |
| history list. |
| Unless the reference is absolute, events are relative to the current |
| position in the history list. |
| <A NAME="IDX585"></A> |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>!</CODE> |
| <DD>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> |
| |
| <DT><CODE>!<VAR>n</VAR></CODE> |
| <DD>Refer to command line <VAR>n</VAR>. |
| <P> |
| |
| <DT><CODE>!-<VAR>n</VAR></CODE> |
| <DD>Refer to the command <VAR>n</VAR> lines back. |
| <P> |
| |
| <DT><CODE>!!</CODE> |
| <DD>Refer to the previous command. This is a synonym for <SAMP>`!-1'</SAMP>. |
| <P> |
| |
| <DT><CODE>!<VAR>string</VAR></CODE> |
| <DD>Refer to the most recent command |
| preceding the current position in the history list |
| starting with <VAR>string</VAR>. |
| <P> |
| |
| <DT><CODE>!?<VAR>string</VAR>[?]</CODE> |
| <DD>Refer to the most recent command |
| preceding the current position in the history list |
| containing <VAR>string</VAR>. |
| The trailing |
| <SAMP>`?'</SAMP> may be omitted if the <VAR>string</VAR> is followed immediately by |
| a newline. |
| <P> |
| |
| <DT><CODE>^<VAR>string1</VAR>^<VAR>string2</VAR>^</CODE> |
| <DD>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> |
| |
| <DT><CODE>!#</CODE> |
| <DD>The entire command line typed so far. |
| <P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Word Designators"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC126"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC125"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC127"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC127"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC124"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 9.3.2 Word Designators </H3> |
| <!--docid::SEC126::--> |
| <P> |
| |
| Word designators are used to select desired words from the event. |
| A <SAMP>`:'</SAMP> separates the event specification from the word designator. It |
| may be omitted if the word designator begins with a <SAMP>`^'</SAMP>, <SAMP>`$'</SAMP>, |
| <SAMP>`*'</SAMP>, <SAMP>`-'</SAMP>, or <SAMP>`%'</SAMP>. Words are numbered from the beginning |
| of the line, with the first word being denoted by 0 (zero). Words are |
| inserted into the current line separated by single spaces. |
| </P><P> |
| |
| For example, |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>!!</CODE> |
| <DD>designates the preceding command. When you type this, the preceding |
| command is repeated in toto. |
| <P> |
| |
| <DT><CODE>!!:$</CODE> |
| <DD>designates the last argument of the preceding command. This may be |
| shortened to <CODE>!$</CODE>. |
| <P> |
| |
| <DT><CODE>!fi:2</CODE> |
| <DD>designates the second argument of the most recent command starting with |
| the letters <CODE>fi</CODE>. |
| </DL> |
| <P> |
| |
| Here are the word designators: |
| |
| <DL COMPACT> |
| |
| <DT><CODE>0 (zero)</CODE> |
| <DD>The <CODE>0</CODE>th word. For many applications, this is the command word. |
| <P> |
| |
| <DT><CODE><VAR>n</VAR></CODE> |
| <DD>The <VAR>n</VAR>th word. |
| <P> |
| |
| <DT><CODE>^</CODE> |
| <DD>The first argument; that is, word 1. |
| <P> |
| |
| <DT><CODE>$</CODE> |
| <DD>The last argument. |
| <P> |
| |
| <DT><CODE>%</CODE> |
| <DD>The word matched by the most recent <SAMP>`?<VAR>string</VAR>?'</SAMP> search. |
| <P> |
| |
| <DT><CODE><VAR>x</VAR>-<VAR>y</VAR></CODE> |
| <DD>A range of words; <SAMP>`-<VAR>y</VAR>'</SAMP> abbreviates <SAMP>`0-<VAR>y</VAR>'</SAMP>. |
| <P> |
| |
| <DT><CODE>*</CODE> |
| <DD>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> |
| |
| <DT><CODE><VAR>x</VAR>*</CODE> |
| <DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> |
| <P> |
| |
| <DT><CODE><VAR>x</VAR>-</CODE> |
| <DD>Abbreviates <SAMP>`<VAR>x</VAR>-$'</SAMP> like <SAMP>`<VAR>x</VAR>*'</SAMP>, but omits the last word. |
| <P> |
| |
| </DL> |
| <P> |
| |
| If a word designator is supplied without an event specification, the |
| previous command is used as the event. |
| </P><P> |
| |
| <A NAME="Modifiers"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC127"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC126"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC124"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H3> 9.3.3 Modifiers </H3> |
| <!--docid::SEC127::--> |
| <P> |
| |
| After the optional word designator, you can add a sequence of one or more |
| of the following modifiers, each preceded by a <SAMP>`:'</SAMP>. |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>h</CODE> |
| <DD>Remove a trailing pathname component, leaving only the head. |
| <P> |
| |
| <DT><CODE>t</CODE> |
| <DD>Remove all leading pathname components, leaving the tail. |
| <P> |
| |
| <DT><CODE>r</CODE> |
| <DD>Remove a trailing suffix of the form <SAMP>`.<VAR>suffix</VAR>'</SAMP>, leaving |
| the basename. |
| <P> |
| |
| <DT><CODE>e</CODE> |
| <DD>Remove all but the trailing suffix. |
| <P> |
| |
| <DT><CODE>p</CODE> |
| <DD>Print the new command but do not execute it. |
| <P> |
| |
| <DT><CODE>q</CODE> |
| <DD>Quote the substituted words, escaping further substitutions. |
| <P> |
| |
| <DT><CODE>x</CODE> |
| <DD>Quote the substituted words as with <SAMP>`q'</SAMP>, |
| but break into words at spaces, tabs, and newlines. |
| <P> |
| |
| <DT><CODE>s/<VAR>old</VAR>/<VAR>new</VAR>/</CODE> |
| <DD>Substitute <VAR>new</VAR> for the first occurrence of <VAR>old</VAR> in the |
| event line. Any delimiter may be used in place of <SAMP>`/'</SAMP>. |
| The delimiter may be quoted in <VAR>old</VAR> and <VAR>new</VAR> |
| with a single backslash. If <SAMP>`&'</SAMP> appears in <VAR>new</VAR>, |
| it is replaced by <VAR>old</VAR>. A single backslash will quote |
| the <SAMP>`&'</SAMP>. The final delimiter is optional if it is the last |
| character on the input line. |
| <P> |
| |
| <DT><CODE>&</CODE> |
| <DD>Repeat the previous substitution. |
| <P> |
| |
| <DT><CODE>g</CODE> |
| <DD><DT><CODE>a</CODE> |
| <DD>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> |
| |
| <DT><CODE>G</CODE> |
| <DD>Apply the following <SAMP>`s'</SAMP> modifier once to each word in the event. |
| <P> |
| |
| </DL> |
| <P> |
| |
| <A NAME="Installing Bash"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC128"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC127"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC129"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC4"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> 10. Installing Bash </H1> |
| <!--docid::SEC128::--> |
| <P> |
| |
| This chapter provides basic instructions for installing Bash on |
| the various supported platforms. The distribution supports the |
| GNU operating systems, nearly every version of Unix, and several |
| non-Unix systems such as BeOS and Interix. |
| Other independent ports exist for |
| MS-DOS, OS/2, and Windows platforms. |
| </P><P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC129">10.1 Basic Installation</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Installation instructions.</TD></TR> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC130">10.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="bashref.html#SEC131">10.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="bashref.html#SEC132">10.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="bashref.html#SEC133">10.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="bashref.html#SEC134">10.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="bashref.html#SEC135">10.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="bashref.html#SEC136">10.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></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Basic Installation"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC129"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC130"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 10.1 Basic Installation </H2> |
| <!--docid::SEC129::--> |
| <P> |
| |
| These are installation instructions for Bash. |
| </P><P> |
| |
| The simplest way to compile Bash is: |
| </P><P> |
| |
| <OL> |
| <LI> |
| <CODE>cd</CODE> to the directory containing the source code and type |
| <SAMP>`./configure'</SAMP> to configure Bash for your system. If you're |
| using <CODE>csh</CODE> on an old version of System V, you might need to |
| type <SAMP>`sh ./configure'</SAMP> instead to prevent <CODE>csh</CODE> from trying |
| to execute <CODE>configure</CODE> itself. |
| <P> |
| |
| Running <CODE>configure</CODE> takes some time. |
| While running, it prints messages telling which features it is |
| checking for. |
| </P><P> |
| |
| <LI> |
| Type <SAMP>`make'</SAMP> to compile Bash and build the <CODE>bashbug</CODE> bug |
| reporting script. |
| <P> |
| |
| <LI> |
| Optionally, type <SAMP>`make tests'</SAMP> to run the Bash test suite. |
| <P> |
| |
| <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. |
| <P> |
| |
| </OL> |
| <P> |
| |
| The <CODE>configure</CODE> shell script attempts to guess correct |
| values for various system-dependent variables used during |
| compilation. It uses those values to create a <TT>`Makefile'</TT> in |
| each directory of the package (the top directory, the |
| <TT>`builtins'</TT>, <TT>`doc'</TT>, and <TT>`support'</TT> directories, |
| each directory under <TT>`lib'</TT>, and several others). It also creates a |
| <TT>`config.h'</TT> file containing system-dependent definitions. |
| Finally, it creates a shell script named <CODE>config.status</CODE> that you |
| can run in the future to recreate the current configuration, a |
| file <TT>`config.cache'</TT> that saves the results of its tests to |
| speed up reconfiguring, and a file <TT>`config.log'</TT> containing |
| compiler output (useful mainly for debugging <CODE>configure</CODE>). |
| If at some point |
| <TT>`config.cache'</TT> contains results you don't want to keep, you |
| may remove or edit it. |
| </P><P> |
| |
| To find out more about the options and arguments that the |
| <CODE>configure</CODE> script understands, type |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>bash-2.04$ ./configure --help |
| </pre></td></tr></table></P><P> |
| |
| at the Bash prompt in your Bash source directory. |
| </P><P> |
| |
| If you need to do unusual things to compile Bash, please |
| try to figure out how <CODE>configure</CODE> could check whether or not |
| to do them, and mail diffs or instructions to |
| <A HREF="mailto:bash-maintainers@gnu.org">bash-maintainers@gnu.org</A> so they can be |
| considered for the next release. |
| </P><P> |
| |
| The file <TT>`configure.ac'</TT> is used to create <CODE>configure</CODE> |
| by a program called Autoconf. You only need |
| <TT>`configure.ac'</TT> 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 |
| newer. |
| </P><P> |
| |
| You can remove the program binaries and object files from the |
| source code directory by typing <SAMP>`make clean'</SAMP>. To also remove the |
| files that <CODE>configure</CODE> created (so you can compile Bash for |
| a different kind of computer), type <SAMP>`make distclean'</SAMP>. |
| </P><P> |
| |
| <A NAME="Compilers and Options"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC130"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC129"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC131"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC131"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 10.2 Compilers and Options </H2> |
| <!--docid::SEC130::--> |
| <P> |
| |
| Some systems require unusual options for compilation or linking |
| that the <CODE>configure</CODE> script does not know about. You can |
| give <CODE>configure</CODE> initial values for variables by setting |
| them in the environment. Using a Bourne-compatible shell, you |
| can do that on the command line like this: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure |
| </pre></td></tr></table></P><P> |
| |
| On systems that have the <CODE>env</CODE> program, you can do it like this: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure |
| </pre></td></tr></table></P><P> |
| |
| The configuration process uses GCC to build Bash if it |
| is available. |
| </P><P> |
| |
| <A NAME="Compiling For Multiple Architectures"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC131"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC130"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC132"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC132"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 10.3 Compiling For Multiple Architectures </H2> |
| <!--docid::SEC131::--> |
| <P> |
| |
| You can compile Bash for more than one kind of computer at the |
| same time, by placing the object files for each architecture in their |
| own directory. To do this, you must use a version of <CODE>make</CODE> that |
| supports the <CODE>VPATH</CODE> variable, such as GNU <CODE>make</CODE>. |
| <CODE>cd</CODE> to the |
| directory where you want the object files and executables to go and run |
| the <CODE>configure</CODE> script from the source directory. You may need to |
| supply the <SAMP>`--srcdir=PATH'</SAMP> argument to tell <CODE>configure</CODE> where the |
| 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> |
| 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 |
| reconfiguring for another architecture. |
| </P><P> |
| |
| Alternatively, if your system supports symbolic links, you can use the |
| <TT>`support/mkclone'</TT> script to create a build tree which has |
| symbolic links back to each file in the source directory. Here's an |
| example that creates a build directory in the current directory from a |
| source directory <TT>`/usr/gnu/src/bash-2.0'</TT>: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=example><pre>bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 . |
| </pre></td></tr></table></P><P> |
| |
| The <CODE>mkclone</CODE> script requires Bash, so you must have already built |
| Bash for at least one architecture before you can create build |
| directories for other architectures. |
| </P><P> |
| |
| <A NAME="Installation Names"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC132"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC131"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC133"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC133"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 10.4 Installation Names </H2> |
| <!--docid::SEC132::--> |
| <P> |
| |
| By default, <SAMP>`make install'</SAMP> will install into |
| <TT>`/usr/local/bin'</TT>, <TT>`/usr/local/man'</TT>, etc. You can |
| specify an installation prefix other than <TT>`/usr/local'</TT> 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>. |
| </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. |
| </P><P> |
| |
| <A NAME="Specifying the System Type"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC133"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC132"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC134"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC134"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 10.5 Specifying the System Type </H2> |
| <!--docid::SEC133::--> |
| <P> |
| |
| There may be some features <CODE>configure</CODE> can not figure out |
| automatically, but need 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 |
| either be a short name for the system type, such as <SAMP>`sun4'</SAMP>, |
| or a canonical name with three fields: <SAMP>`CPU-COMPANY-SYSTEM'</SAMP> |
| (e.g., <SAMP>`i386-unknown-freebsd4.2'</SAMP>). |
| </P><P> |
| |
| See the file <TT>`support/config.sub'</TT> for the possible |
| values of each field. |
| </P><P> |
| |
| <A NAME="Sharing Defaults"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC134"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC133"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 10.6 Sharing Defaults </H2> |
| <!--docid::SEC134::--> |
| <P> |
| |
| If you want to set default values for <CODE>configure</CODE> scripts to |
| share, you can create a site shell script called |
| <CODE>config.site</CODE> that gives default values for variables like |
| <CODE>CC</CODE>, <CODE>cache_file</CODE>, and <CODE>prefix</CODE>. <CODE>configure</CODE> |
| looks for <TT>`PREFIX/share/config.site'</TT> if it exists, then |
| <TT>`PREFIX/etc/config.site'</TT> if it exists. Or, you can set the |
| <CODE>CONFIG_SITE</CODE> environment variable to the location of the site |
| script. A warning: the Bash <CODE>configure</CODE> looks for a site script, |
| but not all <CODE>configure</CODE> scripts do. |
| </P><P> |
| |
| <A NAME="Operation Controls"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC135"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC134"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC136"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC136"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 10.7 Operation Controls </H2> |
| <!--docid::SEC135::--> |
| <P> |
| |
| <CODE>configure</CODE> recognizes the following options to control how it |
| operates. |
| </P><P> |
| |
| <DL COMPACT> |
| |
| <DT><CODE>--cache-file=<VAR>file</VAR></CODE> |
| <DD>Use and save the results of the tests in |
| <VAR>file</VAR> instead of <TT>`./config.cache'</TT>. Set <VAR>file</VAR> to |
| <TT>`/dev/null'</TT> to disable caching, for debugging |
| <CODE>configure</CODE>. |
| <P> |
| |
| <DT><CODE>--help</CODE> |
| <DD>Print a summary of the options to <CODE>configure</CODE>, and exit. |
| <P> |
| |
| <DT><CODE>--quiet</CODE> |
| <DD><DT><CODE>--silent</CODE> |
| <DD><DT><CODE>-q</CODE> |
| <DD>Do not print messages saying which checks are being made. |
| <P> |
| |
| <DT><CODE>--srcdir=<VAR>dir</VAR></CODE> |
| <DD>Look for the Bash source code in directory <VAR>dir</VAR>. Usually |
| <CODE>configure</CODE> can determine that directory automatically. |
| <P> |
| |
| <DT><CODE>--version</CODE> |
| <DD>Print the version of Autoconf used to generate the <CODE>configure</CODE> |
| script, and exit. |
| </DL> |
| <P> |
| |
| <CODE>configure</CODE> also accepts some other, not widely used, boilerplate |
| options. <SAMP>`configure --help'</SAMP> prints the complete list. |
| </P><P> |
| |
| <A NAME="Optional Features"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC136"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> 10.8 Optional Features </H2> |
| <!--docid::SEC136::--> |
| <P> |
| |
| The Bash <CODE>configure</CODE> has a number of <SAMP>`--enable-<VAR>feature</VAR>'</SAMP> |
| options, where <VAR>feature</VAR> indicates an optional part of Bash. |
| There are also several <SAMP>`--with-<VAR>package</VAR>'</SAMP> options, |
| where <VAR>package</VAR> is something like <SAMP>`bash-malloc'</SAMP> or <SAMP>`purify'</SAMP>. |
| To turn off the default use of a package, use |
| <SAMP>`--without-<VAR>package</VAR>'</SAMP>. To configure Bash without a feature |
| that is enabled by default, use <SAMP>`--disable-<VAR>feature</VAR>'</SAMP>. |
| </P><P> |
| |
| Here is a complete list of the <SAMP>`--enable-'</SAMP> and |
| <SAMP>`--with-'</SAMP> options that the Bash <CODE>configure</CODE> recognizes. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>--with-afs</CODE> |
| <DD>Define if you are using the Andrew File System from Transarc. |
| <P> |
| |
| <DT><CODE>--with-bash-malloc</CODE> |
| <DD>Use the Bash version of |
| <CODE>malloc</CODE> in the directory <TT>`lib/malloc'</TT>. This is not the same |
| <CODE>malloc</CODE> that appears in GNU libc, but an older version |
| originally derived from the 4.2 BSD <CODE>malloc</CODE>. This <CODE>malloc</CODE> |
| is very fast, but wastes some space on each allocation. |
| This option is enabled by default. |
| The <TT>`NOTES'</TT> file contains a list of systems for |
| which this should be turned off, and <CODE>configure</CODE> disables this |
| option automatically for a number of systems. |
| <P> |
| |
| <DT><CODE>--with-curses</CODE> |
| <DD>Use the curses library instead of the termcap library. This should |
| be supplied if your system has an inadequate or incomplete termcap |
| database. |
| <P> |
| |
| <DT><CODE>--with-gnu-malloc</CODE> |
| <DD>A synonym for <CODE>--with-bash-malloc</CODE>. |
| <P> |
| |
| <DT><CODE>--with-installed-readline[=<VAR>PREFIX</VAR>]</CODE> |
| <DD>Define this to make Bash link with a locally-installed version of Readline |
| rather than the version in <TT>`lib/readline'</TT>. This works only with |
| Readline 5.0 and later versions. If <VAR>PREFIX</VAR> is <CODE>yes</CODE> or not |
| supplied, <CODE>configure</CODE> uses the values of the make variables |
| <CODE>includedir</CODE> and <CODE>libdir</CODE>, which are subdirectories of <CODE>prefix</CODE> |
| by default, to find the installed version of Readline if it is not in |
| the standard system include and library directories. |
| If <VAR>PREFIX</VAR> is <CODE>no</CODE>, Bash links with the version in |
| <TT>`lib/readline'</TT>. |
| If <VAR>PREFIX</VAR> is set to any other value, <CODE>configure</CODE> treats it as |
| a directory pathname and looks for |
| the installed version of Readline in subdirectories of that directory |
| (include files in <VAR>PREFIX</VAR>/<CODE>include</CODE> and the library in |
| <VAR>PREFIX</VAR>/<CODE>lib</CODE>). |
| <P> |
| |
| <DT><CODE>--with-purify</CODE> |
| <DD>Define this to use the Purify memory allocation checker from Rational |
| Software. |
| <P> |
| |
| <DT><CODE>--enable-minimal-config</CODE> |
| <DD>This produces a shell with minimal features, close to the historical |
| Bourne shell. |
| </DL> |
| <P> |
| |
| There are several <SAMP>`--enable-'</SAMP> options that alter how Bash is |
| compiled and linked, rather than changing run-time features. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>--enable-largefile</CODE> |
| <DD>Enable support for <A HREF="http://www.sas.com/standards/large_file/x_open.20Mar96.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> |
| |
| <DT><CODE>--enable-profiling</CODE> |
| <DD>This builds a Bash binary that produces profiling information to be |
| processed by <CODE>gprof</CODE> each time it is executed. |
| <P> |
| |
| <DT><CODE>--enable-static-link</CODE> |
| <DD>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. |
| </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>`directpand-default'</SAMP>, and |
| <SAMP>`xpg-echo-default'</SAMP> are |
| enabled by default, unless the operating system does not provide the |
| necessary support. |
| </P><P> |
| |
| <DL COMPACT> |
| <DT><CODE>--enable-alias</CODE> |
| <DD>Allow alias expansion and include the <CODE>alias</CODE> and <CODE>unalias</CODE> |
| builtins (see section <A HREF="bashref.html#SEC85">6.6 Aliases</A>). |
| <P> |
| |
| <DT><CODE>--enable-arith-for-command</CODE> |
| <DD>Include support for the alternate form of the <CODE>for</CODE> command |
| that behaves like the C language <CODE>for</CODE> statement |
| (see section <A HREF="bashref.html#SEC20">3.2.4.1 Looping Constructs</A>). |
| <P> |
| |
| <DT><CODE>--enable-array-variables</CODE> |
| <DD>Include support for one-dimensional array shell variables |
| (see section <A HREF="bashref.html#SEC86">6.7 Arrays</A>). |
| <P> |
| |
| <DT><CODE>--enable-bang-history</CODE> |
| <DD>Include support for <CODE>csh</CODE>-like history substitution |
| (see section <A HREF="bashref.html#SEC124">9.3 History Expansion</A>). |
| <P> |
| |
| <DT><CODE>--enable-brace-expansion</CODE> |
| <DD>Include <CODE>csh</CODE>-like brace expansion |
| ( <CODE>b{a,b}c</CODE> ==> <CODE>bac bbc</CODE> ). |
| See <A HREF="bashref.html#SEC30">3.5.1 Brace Expansion</A>, for a complete description. |
| <P> |
| |
| <DT><CODE>--enable-casemod-attributes</CODE> |
| <DD>Include support for case-modifying attributes in the <CODE>declare</CODE> builtin |
| and assignment statements. Variables with the <VAR>uppercase</VAR> attribute, |
| for example, will have their values converted to uppercase upon assignment. |
| <P> |
| |
| <DT><CODE>--enable-casemod-expansion</CODE> |
| <DD>Include support for case-modifying word expansions. |
| <P> |
| |
| <DT><CODE>--enable-command-timing</CODE> |
| <DD>Include support for recognizing <CODE>time</CODE> as a reserved word and for |
| displaying timing statistics for the pipeline following <CODE>time</CODE> |
| (see section <A HREF="bashref.html#SEC17">3.2.2 Pipelines</A>). |
| This allows pipelines as well as shell builtins and functions to be timed. |
| <P> |
| |
| <DT><CODE>--enable-cond-command</CODE> |
| <DD>Include support for the <CODE>[[</CODE> conditional command. |
| (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>). |
| <P> |
| |
| <DT><CODE>--enable-cond-regexp</CODE> |
| <DD>Include support for matching POSIX regular expressions using the |
| <SAMP>`=~'</SAMP> binary operator in the <CODE>[[</CODE> conditional command. |
| (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>). |
| <P> |
| |
| <DT><CODE>--enable-coprocesses</CODE> |
| <DD>Include support for coprocesses and the <CODE>coproc</CODE> reserved word |
| (see section <A HREF="bashref.html#SEC17">3.2.2 Pipelines</A>). |
| <P> |
| |
| <DT><CODE>--enable-debugger</CODE> |
| <DD>Include support for the bash debugger (distributed separately). |
| <P> |
| |
| <DT><CODE>--enable-direxpand-default</CODE> |
| <DD>Cause the <CODE>direxpand</CODE> shell option (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>) |
| to be enabled by default when the shell starts. |
| It is normally disabled by default. |
| <P> |
| |
| <DT><CODE>--enable-directory-stack</CODE> |
| <DD>Include support for a <CODE>csh</CODE>-like directory stack and the |
| <CODE>pushd</CODE>, <CODE>popd</CODE>, and <CODE>dirs</CODE> builtins |
| (see section <A HREF="bashref.html#SEC87">6.8 The Directory Stack</A>). |
| <P> |
| |
| <DT><CODE>--enable-disabled-builtins</CODE> |
| <DD>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="bashref.html#SEC61">4.2 Bash Builtin Commands</A>, for details of the <CODE>builtin</CODE> and |
| <CODE>enable</CODE> builtin commands. |
| <P> |
| |
| <DT><CODE>--enable-dparen-arithmetic</CODE> |
| <DD>Include support for the <CODE>((<small>...</small>))</CODE> command |
| (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>). |
| <P> |
| |
| <DT><CODE>--enable-extended-glob</CODE> |
| <DD>Include support for the extended pattern matching features described |
| above under <A HREF="bashref.html#SEC38">3.5.8.1 Pattern Matching</A>. |
| <P> |
| |
| <DT><CODE>--enable-extended-glob-default</CODE> |
| <DD>Set the default value of the <VAR>extglob</VAR> shell option described |
| above under <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A> to be enabled. |
| <P> |
| |
| <DT><CODE>--enable-glob-asciirange-default</CODE> |
| <DD>Set the default value of the <VAR>globasciiranges</VAR> shell option described |
| above under <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A> to be enabled. |
| This controls the behavior of character ranges when used in pattern matching |
| bracket expressions. |
| <P> |
| |
| <DT><CODE>--enable-help-builtin</CODE> |
| <DD>Include the <CODE>help</CODE> builtin, which displays help on shell builtins and |
| variables (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <DT><CODE>--enable-history</CODE> |
| <DD>Include command history and the <CODE>fc</CODE> and <CODE>history</CODE> |
| builtin commands (see section <A HREF="bashref.html#SEC122">9.1 Bash History Facilities</A>). |
| <P> |
| |
| <DT><CODE>--enable-job-control</CODE> |
| <DD>This enables the job control features (see section <A HREF="bashref.html#SEC92">7. Job Control</A>), |
| if the operating system supports them. |
| <P> |
| |
| <DT><CODE>--enable-multibyte</CODE> |
| <DD>This enables support for multibyte characters if the operating |
| system provides the necessary support. |
| <P> |
| |
| <DT><CODE>--enable-net-redirections</CODE> |
| <DD>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 section <A HREF="bashref.html#SEC40">3.6 Redirections</A>). |
| <P> |
| |
| <DT><CODE>--enable-process-substitution</CODE> |
| <DD>This enables process substitution (see section <A HREF="bashref.html#SEC35">3.5.6 Process Substitution</A>) if |
| the operating system provides the necessary support. |
| <P> |
| |
| <DT><CODE>--enable-progcomp</CODE> |
| <DD>Enable the programmable completion facilities |
| (see section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>). |
| If Readline is not enabled, this option has no effect. |
| <P> |
| |
| <DT><CODE>--enable-prompt-string-decoding</CODE> |
| <DD>Turn on the interpretation of a number of backslash-escaped characters |
| in the <CODE>$PS1</CODE>, <CODE>$PS2</CODE>, <CODE>$PS3</CODE>, and <CODE>$PS4</CODE> prompt |
| strings. See <A HREF="bashref.html#SEC89">6.9 Controlling the Prompt</A>, for a complete list of prompt |
| string escape sequences. |
| <P> |
| |
| <DT><CODE>--enable-readline</CODE> |
| <DD>Include support for command-line editing and history with the Bash |
| version of the Readline library (see section <A HREF="bashref.html#SEC96">8. Command Line Editing</A>). |
| <P> |
| |
| <DT><CODE>--enable-restricted</CODE> |
| <DD>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="bashref.html#SEC90">6.10 The Restricted Shell</A>, for a description of restricted mode. |
| <P> |
| |
| <DT><CODE>--enable-select</CODE> |
| <DD>Include the <CODE>select</CODE> compound command, which allows the generation of |
| simple menus (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>). |
| <P> |
| |
| <DT><CODE>--enable-separate-helpfiles</CODE> |
| <DD>Use external files for the documentation displayed by the <CODE>help</CODE> builtin |
| instead of storing the text internally. |
| <P> |
| |
| <DT><CODE>--enable-single-help-strings</CODE> |
| <DD>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> |
| |
| <DT><CODE>--enable-strict-posix-default</CODE> |
| <DD>Make Bash POSIX-conformant by default (see section <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>). |
| <P> |
| |
| <DT><CODE>--enable-usg-echo-default</CODE> |
| <DD>A synonym for <CODE>--enable-xpg-echo-default</CODE>. |
| <P> |
| |
| <DT><CODE>--enable-xpg-echo-default</CODE> |
| <DD>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 section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>, for a description of the escape sequences that |
| <CODE>echo</CODE> recognizes. |
| </DL> |
| <P> |
| |
| The file <TT>`config-top.h'</TT> contains C Preprocessor |
| <SAMP>`#define'</SAMP> statements for options which are not settable from |
| <CODE>configure</CODE>. |
| Some of these are not meant to be changed; beware of the consequences if |
| you do. |
| Read the comments associated with each definition for more |
| information about its effect. |
| </P><P> |
| |
| <A NAME="Reporting Bugs"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC137"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC136"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC138"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC128"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC138"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> A. Reporting Bugs </H1> |
| <!--docid::SEC137::--> |
| <P> |
| |
| Please report all bugs you find in Bash. |
| But first, you should |
| 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>. |
| </P><P> |
| |
| Once you have determined that a bug actually exists, use the |
| <CODE>bashbug</CODE> command to submit a bug report. |
| If you have a fix, you are encouraged to mail that as well! |
| Suggestions and `philosophical' bug reports may be mailed |
| to <A HREF="mailto:bug-bash@gnu.org">bug-bash@gnu.org</A> or posted to the Usenet |
| newsgroup <CODE>gnu.bash.bug</CODE>. |
| </P><P> |
| |
| All bug reports should include: |
| <UL> |
| <LI> |
| The version number of Bash. |
| <LI> |
| The hardware and operating system. |
| <LI> |
| The compiler used to compile Bash. |
| <LI> |
| A description of the bug behaviour. |
| <LI> |
| A short script or `recipe' which exercises the bug and may be used |
| to reproduce it. |
| </UL> |
| <P> |
| |
| <CODE>bashbug</CODE> inserts the first three items automatically into |
| the template it provides for filing a bug report. |
| </P><P> |
| |
| Please send all reports concerning this manual to |
| <A HREF="mailto:bug-bash@gnu.org">bug-bash@gnu.org</A>. |
| </P><P> |
| |
| <A NAME="Major Differences From The Bourne Shell"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC138"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC137"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC139"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC140"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC140"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> B. Major Differences From The Bourne Shell </H1> |
| <!--docid::SEC138::--> |
| <P> |
| |
| Bash implements essentially the same grammar, parameter and |
| variable expansion, redirection, and quoting as the Bourne Shell. |
| Bash uses the POSIX standard as the specification of |
| how these features are to be implemented. There are some |
| differences between the traditional Bourne shell and Bash; this |
| section quickly details the differences of significance. A |
| number of these differences are explained in greater depth in |
| previous sections. |
| This section uses the version of <CODE>sh</CODE> included in SVR4.2 (the |
| last version of the historical Bourne shell) as the baseline reference. |
| </P><P> |
| |
| <UL> |
| |
| <LI> |
| Bash is POSIX-conformant, even where the POSIX specification |
| differs from traditional <CODE>sh</CODE> behavior (see section <A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A>). |
| <P> |
| |
| <LI> |
| Bash has multi-character invocation options (see section <A HREF="bashref.html#SEC70">6.1 Invoking Bash</A>). |
| <P> |
| |
| <LI> |
| Bash has command-line editing (see section <A HREF="bashref.html#SEC96">8. Command Line Editing</A>) and |
| the <CODE>bind</CODE> builtin. |
| <P> |
| |
| <LI> |
| Bash provides a programmable word completion mechanism |
| (see section <A HREF="bashref.html#SEC118">8.6 Programmable Completion</A>), and builtin commands |
| <CODE>complete</CODE>, <CODE>compgen</CODE>, and <CODE>compopt</CODE>, to |
| manipulate it. |
| <P> |
| |
| <LI> |
| Bash has command history (see section <A HREF="bashref.html#SEC122">9.1 Bash History Facilities</A>) and the |
| <CODE>history</CODE> and <CODE>fc</CODE> builtins to manipulate it. |
| The Bash history list maintains timestamp information and uses the |
| value of the <CODE>HISTTIMEFORMAT</CODE> variable to display it. |
| <P> |
| |
| <LI> |
| Bash implements <CODE>csh</CODE>-like history expansion |
| (see section <A HREF="bashref.html#SEC124">9.3 History Expansion</A>). |
| <P> |
| |
| <LI> |
| Bash has one-dimensional array variables (see section <A HREF="bashref.html#SEC86">6.7 Arrays</A>), and the |
| appropriate variable expansions and assignment syntax to use them. |
| Several of the Bash builtins take options to act on arrays. |
| Bash provides a number of built-in array variables. |
| <P> |
| |
| <LI> |
| The <CODE>$'<small>...</small>'</CODE> quoting syntax, which expands ANSI-C |
| backslash-escaped characters in the text between the single quotes, |
| is supported (see section <A HREF="bashref.html#SEC12">3.1.2.4 ANSI-C Quoting</A>). |
| <P> |
| |
| <LI> |
| Bash supports the <CODE>$"<small>...</small>"</CODE> quoting syntax to do |
| 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 section <A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A>). |
| <P> |
| |
| <LI> |
| Bash implements the <CODE>!</CODE> keyword to negate the return value of |
| a pipeline (see section <A HREF="bashref.html#SEC17">3.2.2 Pipelines</A>). |
| Very useful when an <CODE>if</CODE> statement needs to act only if a test fails. |
| The Bash <SAMP>`-o pipefail'</SAMP> option to <CODE>set</CODE> will cause a pipeline to |
| return a failure status if any command fails. |
| <P> |
| |
| <LI> |
| Bash has the <CODE>time</CODE> reserved word and command timing (see section <A HREF="bashref.html#SEC17">3.2.2 Pipelines</A>). |
| The display of the timing statistics may be controlled with the |
| <CODE>TIMEFORMAT</CODE> variable. |
| <P> |
| |
| <LI> |
| Bash implements the <CODE>for (( <VAR>expr1</VAR> ; <VAR>expr2</VAR> ; <VAR>expr3</VAR> ))</CODE> |
| arithmetic for command, similar to the C language (see section <A HREF="bashref.html#SEC20">3.2.4.1 Looping Constructs</A>). |
| <P> |
| |
| <LI> |
| Bash includes the <CODE>select</CODE> compound command, which allows the |
| generation of simple menus (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>). |
| <P> |
| |
| <LI> |
| Bash includes the <CODE>[[</CODE> compound command, which makes conditional |
| testing part of the shell grammar (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>), including |
| optional regular expression matching. |
| <P> |
| |
| <LI> |
| Bash provides optional case-insensitive matching for the <CODE>case</CODE> and |
| <CODE>[[</CODE> constructs. |
| <P> |
| |
| <LI> |
| Bash includes brace expansion (see section <A HREF="bashref.html#SEC30">3.5.1 Brace Expansion</A>) and tilde |
| expansion (see section <A HREF="bashref.html#SEC31">3.5.2 Tilde Expansion</A>). |
| <P> |
| |
| <LI> |
| Bash implements command aliases and the <CODE>alias</CODE> and <CODE>unalias</CODE> |
| builtins (see section <A HREF="bashref.html#SEC85">6.6 Aliases</A>). |
| <P> |
| |
| <LI> |
| Bash provides shell arithmetic, the <CODE>((</CODE> compound command |
| (see section <A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A>), |
| and arithmetic expansion (see section <A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A>). |
| <P> |
| |
| <LI> |
| Variables present in the shell's initial environment are automatically |
| exported to child processes. The Bourne shell does not normally do |
| this unless the variables are explicitly marked using the <CODE>export</CODE> |
| command. |
| <P> |
| |
| <LI> |
| Bash supports the <SAMP>`+='</SAMP> assignment operator, which appends to the value |
| of the variable named on the left hand side. |
| <P> |
| |
| <LI> |
| Bash includes the POSIX pattern removal <SAMP>`%'</SAMP>, <SAMP>`#'</SAMP>, <SAMP>`%%'</SAMP> |
| and <SAMP>`##'</SAMP> expansions to remove leading or trailing substrings from |
| variable values (see section <A HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A>). |
| <P> |
| |
| <LI> |
| The expansion <CODE>${#xx}</CODE>, which returns the length of <CODE>${xx}</CODE>, |
| is supported (see section <A HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A>). |
| <P> |
| |
| <LI> |
| The expansion <CODE>${var:</CODE><VAR>offset</VAR><CODE>[:</CODE><VAR>length</VAR><CODE>]}</CODE>, |
| which expands to the substring of <CODE>var</CODE>'s value of length |
| <VAR>length</VAR>, beginning at <VAR>offset</VAR>, is present |
| (see section <A HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A>). |
| <P> |
| |
| <LI> |
| The expansion |
| <CODE>${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 section <A HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A>). |
| <P> |
| |
| <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 section <A HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A>). |
| <P> |
| |
| <LI> |
| Bash has <VAR>indirect</VAR> variable expansion using <CODE>${!word}</CODE> |
| (see section <A HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A>). |
| <P> |
| |
| <LI> |
| Bash can expand positional parameters beyond <CODE>$9</CODE> using |
| <CODE>${<VAR>num</VAR>}</CODE>. |
| <P> |
| |
| <LI> |
| The POSIX <CODE>$()</CODE> form of command substitution |
| is implemented (see section <A HREF="bashref.html#SEC33">3.5.4 Command Substitution</A>), |
| and preferred to the Bourne shell's <CODE>"</CODE> (which |
| is also implemented for backwards compatibility). |
| <P> |
| |
| <LI> |
| Bash has process substitution (see section <A HREF="bashref.html#SEC35">3.5.6 Process Substitution</A>). |
| <P> |
| |
| <LI> |
| Bash automatically assigns variables that provide information about the |
| current user (<CODE>UID</CODE>, <CODE>EUID</CODE>, and <CODE>GROUPS</CODE>), the current host |
| (<CODE>HOSTTYPE</CODE>, <CODE>OSTYPE</CODE>, <CODE>MACHTYPE</CODE>, and <CODE>HOSTNAME</CODE>), |
| and the instance of Bash that is running (<CODE>BASH</CODE>, |
| <CODE>BASH_VERSION</CODE>, and <CODE>BASH_VERSINFO</CODE>). See section <A HREF="bashref.html#SEC68">5.2 Bash Variables</A>, |
| for details. |
| <P> |
| |
| <LI> |
| The <CODE>IFS</CODE> variable is used to split only the results of expansion, |
| not all words (see section <A HREF="bashref.html#SEC36">3.5.7 Word Splitting</A>). |
| This closes a longstanding shell security hole. |
| <P> |
| |
| <LI> |
| The filename expansion bracket expression code uses <SAMP>`!'</SAMP> and <SAMP>`^'</SAMP> |
| to negate the set of characters between the brackets. |
| The Bourne shell uses only <SAMP>`!'</SAMP>. |
| <P> |
| |
| <LI> |
| Bash implements the full set of POSIX filename expansion operators, |
| including <VAR>character classes</VAR>, <VAR>equivalence classes</VAR>, and |
| <VAR>collating symbols</VAR> (see section <A HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A>). |
| <P> |
| |
| <LI> |
| Bash implements extended pattern matching features when the <CODE>extglob</CODE> |
| shell option is enabled (see section <A HREF="bashref.html#SEC38">3.5.8.1 Pattern Matching</A>). |
| <P> |
| |
| <LI> |
| It is possible to have a variable and a function with the same name; |
| <CODE>sh</CODE> does not separate the two name spaces. |
| <P> |
| |
| <LI> |
| Bash functions are permitted to have local variables using the |
| <CODE>local</CODE> builtin, and thus useful recursive functions may be written |
| (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <LI> |
| Variable assignments preceding commands affect only that command, even |
| builtins and functions (see section <A HREF="bashref.html#SEC55">3.7.4 Environment</A>). |
| In <CODE>sh</CODE>, all variable assignments |
| preceding commands are global unless the command is executed from the |
| file system. |
| <P> |
| |
| <LI> |
| Bash performs filename expansion on filenames specified as operands |
| to input and output redirection operators (see section <A HREF="bashref.html#SEC40">3.6 Redirections</A>). |
| <P> |
| |
| <LI> |
| Bash contains the <SAMP>`<>'</SAMP> redirection operator, allowing a file to be |
| opened for both reading and writing, and the <SAMP>`&>'</SAMP> redirection |
| operator, for directing standard output and standard error to the same |
| file (see section <A HREF="bashref.html#SEC40">3.6 Redirections</A>). |
| <P> |
| |
| <LI> |
| Bash includes the <SAMP>`<<<'</SAMP> redirection operator, allowing a string to |
| be used as the standard input to a command. |
| <P> |
| |
| <LI> |
| Bash implements the <SAMP>`[n]<&<VAR>word</VAR>'</SAMP> and <SAMP>`[n]>&<VAR>word</VAR>'</SAMP> |
| redirection operators, which move one file descriptor to another. |
| <P> |
| |
| <LI> |
| Bash treats a number of filenames specially when they are |
| used in redirection operators (see section <A HREF="bashref.html#SEC40">3.6 Redirections</A>). |
| <P> |
| |
| <LI> |
| Bash can open network connections to arbitrary machines and services |
| with the redirection operators (see section <A HREF="bashref.html#SEC40">3.6 Redirections</A>). |
| <P> |
| |
| <LI> |
| The <CODE>noclobber</CODE> option is available to avoid overwriting existing |
| files with output redirection (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| The <SAMP>`>|'</SAMP> redirection operator may be used to override <CODE>noclobber</CODE>. |
| <P> |
| |
| <LI> |
| The Bash <CODE>cd</CODE> and <CODE>pwd</CODE> builtins (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>) |
| each take <SAMP>`-L'</SAMP> and <SAMP>`-P'</SAMP> options to switch between logical and |
| physical modes. |
| <P> |
| |
| <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 section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <LI> |
| The <CODE>command</CODE> builtin allows selective disabling of functions |
| when command lookup is performed (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <LI> |
| Individual builtins may be enabled or disabled using the <CODE>enable</CODE> |
| builtin (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <LI> |
| The Bash <CODE>exec</CODE> builtin takes additional options that allow users |
| to control the contents of the environment passed to the executed |
| command, and what the zeroth argument to the command is to be |
| (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| <P> |
| |
| <LI> |
| Shell functions may be exported to children via the environment |
| using <CODE>export -f</CODE> (see section <A HREF="bashref.html#SEC25">3.3 Shell Functions</A>). |
| <P> |
| |
| <LI> |
| The Bash <CODE>export</CODE>, <CODE>readonly</CODE>, and <CODE>declare</CODE> builtins can |
| take a <SAMP>`-f'</SAMP> option to act on shell functions, a <SAMP>`-p'</SAMP> option to |
| display variables with various attributes set in a format that can be |
| used as shell input, a <SAMP>`-n'</SAMP> option to remove various variable |
| attributes, and <SAMP>`name=value'</SAMP> arguments to set variable attributes |
| and values simultaneously. |
| <P> |
| |
| <LI> |
| The Bash <CODE>hash</CODE> builtin allows a name to be associated with |
| an arbitrary filename, even when that filename cannot be found by |
| searching the <CODE>$PATH</CODE>, using <SAMP>`hash -p'</SAMP> |
| (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| <P> |
| |
| <LI> |
| Bash includes a <CODE>help</CODE> builtin for quick reference to shell |
| facilities (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <LI> |
| The <CODE>printf</CODE> builtin is available to display formatted output |
| (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <LI> |
| The Bash <CODE>read</CODE> builtin (see section <A HREF="bashref.html#SEC61">4.2 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. |
| The Bash <CODE>read</CODE> builtin |
| also accepts a prompt string with the <SAMP>`-p'</SAMP> option and will use |
| Readline to obtain the line when given the <SAMP>`-e'</SAMP> option. |
| The <CODE>read</CODE> builtin also has additional options to control input: |
| the <SAMP>`-s'</SAMP> option will turn off echoing of input characters as |
| they are read, the <SAMP>`-t'</SAMP> option will allow <CODE>read</CODE> to time out |
| if input does not arrive within a specified number of seconds, the |
| <SAMP>`-n'</SAMP> option will allow reading only a specified number of |
| characters rather than a full line, and the <SAMP>`-d'</SAMP> option will read |
| until a particular character rather than newline. |
| <P> |
| |
| <LI> |
| The <CODE>return</CODE> builtin may be used to abort execution of scripts |
| executed with the <CODE>.</CODE> or <CODE>source</CODE> builtins |
| (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| <P> |
| |
| <LI> |
| Bash includes the <CODE>shopt</CODE> builtin, for finer control of shell |
| optional capabilities (see section <A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A>), and allows these options |
| to be set and unset at shell invocation (see section <A HREF="bashref.html#SEC70">6.1 Invoking Bash</A>). |
| <P> |
| |
| <LI> |
| Bash has much more optional behavior controllable with the <CODE>set</CODE> |
| builtin (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| <P> |
| |
| <LI> |
| The <SAMP>`-x'</SAMP> (<SAMP>`xtrace'</SAMP>) option displays commands other than |
| simple commands when performing an execution trace |
| (see section <A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A>). |
| <P> |
| |
| <LI> |
| The <CODE>test</CODE> builtin (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>) |
| is slightly different, as it implements the POSIX algorithm, |
| which specifies the behavior based on the number of arguments. |
| <P> |
| |
| <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 |
| debugger. |
| <P> |
| |
| <LI> |
| The <CODE>trap</CODE> builtin (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>) allows a |
| <CODE>DEBUG</CODE> pseudo-signal specification, similar to <CODE>EXIT</CODE>. |
| Commands specified with a <CODE>DEBUG</CODE> trap are executed before every |
| simple command, <CODE>for</CODE> command, <CODE>case</CODE> command, |
| <CODE>select</CODE> command, every arithmetic <CODE>for</CODE> command, and before |
| the first command executes in a shell function. |
| The <CODE>DEBUG</CODE> trap is not inherited by shell functions unless the |
| function has been given the <CODE>trace</CODE> attribute or the |
| <CODE>functrace</CODE> option has been enabled using the <CODE>shopt</CODE> builtin. |
| The <CODE>extdebug</CODE> shell option has additional effects on the |
| <CODE>DEBUG</CODE> trap. |
| <P> |
| |
| The <CODE>trap</CODE> builtin (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>) allows an |
| <CODE>ERR</CODE> pseudo-signal specification, similar to <CODE>EXIT</CODE> and <CODE>DEBUG</CODE>. |
| Commands specified with an <CODE>ERR</CODE> trap are executed after a simple |
| command fails, with a few exceptions. |
| The <CODE>ERR</CODE> trap is not inherited by shell functions unless the |
| <CODE>-o errtrace</CODE> option to the <CODE>set</CODE> builtin is enabled. |
| </P><P> |
| |
| The <CODE>trap</CODE> builtin (see section <A HREF="bashref.html#SEC60">4.1 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 |
| 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 |
| function has been given the <CODE>trace</CODE> attribute or the |
| <CODE>functrace</CODE> option has been enabled using the <CODE>shopt</CODE> builtin. |
| </P><P> |
| |
| <LI> |
| The Bash <CODE>type</CODE> builtin is more extensive and gives more information |
| about the names it finds (see section <A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A>). |
| <P> |
| |
| <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 |
| that may be reused as input (see section <A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A>). |
| <P> |
| |
| <LI> |
| Bash implements a <CODE>csh</CODE>-like directory stack, and provides the |
| <CODE>pushd</CODE>, <CODE>popd</CODE>, and <CODE>dirs</CODE> builtins to manipulate it |
| (see section <A HREF="bashref.html#SEC87">6.8 The Directory Stack</A>). |
| Bash also makes the directory stack visible as the value of the |
| <CODE>DIRSTACK</CODE> shell variable. |
| <P> |
| |
| <LI> |
| Bash interprets special backslash-escaped characters in the prompt |
| strings when interactive (see section <A HREF="bashref.html#SEC89">6.9 Controlling the Prompt</A>). |
| <P> |
| |
| <LI> |
| The Bash restricted mode is more useful (see section <A HREF="bashref.html#SEC90">6.10 The Restricted Shell</A>); |
| the SVR4.2 shell restricted mode is too limited. |
| <P> |
| |
| <LI> |
| The <CODE>disown</CODE> builtin can remove a job from the internal shell |
| job table (see section <A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A>) or suppress the sending |
| of <CODE>SIGHUP</CODE> to a job when the shell exits as the result of a |
| <CODE>SIGHUP</CODE>. |
| <P> |
| |
| <LI> |
| Bash includes a number of features to support a separate debugger for |
| shell scripts. |
| <P> |
| |
| <LI> |
| The SVR4.2 shell has two privilege-related builtins |
| (<CODE>mldmode</CODE> and <CODE>priv</CODE>) not present in Bash. |
| <P> |
| |
| <LI> |
| Bash does not have the <CODE>stop</CODE> or <CODE>newgrp</CODE> builtins. |
| <P> |
| |
| <LI> |
| Bash does not use the <CODE>SHACCT</CODE> variable or perform shell accounting. |
| <P> |
| |
| <LI> |
| The SVR4.2 <CODE>sh</CODE> uses a <CODE>TIMEOUT</CODE> variable like Bash uses |
| <CODE>TMOUT</CODE>. |
| <P> |
| |
| </UL> |
| <P> |
| |
| More features unique to Bash may be found in <A HREF="bashref.html#SEC69">6. Bash Features</A>. |
| </P><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC139"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC138"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC140"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC138"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC138"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC140"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> B.1 Implementation Differences From The SVR4.2 Shell </H2> |
| <!--docid::SEC139::--> |
| <P> |
| |
| Since Bash is a completely new implementation, it does not suffer from |
| many of the limitations of the SVR4.2 shell. For instance: |
| </P><P> |
| |
| <UL> |
| |
| <LI> |
| Bash does not fork a subshell when redirecting into or out of |
| a shell control structure such as an <CODE>if</CODE> or <CODE>while</CODE> |
| statement. |
| <P> |
| |
| <LI> |
| Bash does not allow unbalanced quotes. The SVR4.2 shell will silently |
| insert a needed closing quote at <CODE>EOF</CODE> under certain circumstances. |
| This can be the cause of some hard-to-find errors. |
| <P> |
| |
| <LI> |
| The SVR4.2 shell uses a baroque memory management scheme based on |
| trapping <CODE>SIGSEGV</CODE>. If the shell is started from a process with |
| <CODE>SIGSEGV</CODE> blocked (e.g., by using the <CODE>system()</CODE> C library |
| function call), it misbehaves badly. |
| <P> |
| |
| <LI> |
| In a questionable attempt at security, the SVR4.2 shell, |
| when invoked without the <SAMP>`-p'</SAMP> option, will alter its real |
| and effective UID and GID if they are less than some |
| magic threshold value, commonly 100. |
| This can lead to unexpected results. |
| <P> |
| |
| <LI> |
| The SVR4.2 shell does not allow users to trap <CODE>SIGSEGV</CODE>, |
| <CODE>SIGALRM</CODE>, or <CODE>SIGCHLD</CODE>. |
| <P> |
| |
| <LI> |
| The SVR4.2 shell does not allow the <CODE>IFS</CODE>, <CODE>MAILCHECK</CODE>, |
| <CODE>PATH</CODE>, <CODE>PS1</CODE>, or <CODE>PS2</CODE> variables to be unset. |
| <P> |
| |
| <LI> |
| The SVR4.2 shell treats <SAMP>`^'</SAMP> as the undocumented equivalent of |
| <SAMP>`|'</SAMP>. |
| <P> |
| |
| <LI> |
| Bash allows multiple option arguments when it is invoked (<CODE>-x -v</CODE>); |
| the SVR4.2 shell allows only one option argument (<CODE>-xv</CODE>). In |
| fact, some versions of the shell dump core if the second argument begins |
| with a <SAMP>`-'</SAMP>. |
| <P> |
| |
| <LI> |
| The SVR4.2 shell exits a script if any builtin fails; Bash exits |
| a script only if one of the POSIX special builtins fails, and |
| only for certain failures, as enumerated in the POSIX standard. |
| <P> |
| |
| <LI> |
| The SVR4.2 shell behaves differently when invoked as <CODE>jsh</CODE> |
| (it turns on job control). |
| </UL> |
| <P> |
| |
| <A NAME="GNU Free Documentation License"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC140"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC139"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142"> >> </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> C. GNU Free Documentation License </H1> |
| <!--docid::SEC140::--> |
| <P> |
| |
| <center> |
| Version 1.3, 3 November 2008 |
| </center> |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=display><pre style="font-family: serif">Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. |
| <A HREF="http://fsf.org/">http://fsf.org/</A> |
| |
| Everyone is permitted to copy and distribute verbatim copies |
| of this license document, but changing it is not allowed. |
| </pre></td></tr></table></P><P> |
| |
| <OL> |
| <LI> |
| PREAMBLE |
| <P> |
| |
| The purpose of this License is to make a manual, textbook, or other |
| functional and useful document <EM>free</EM> in the sense of freedom: to |
| assure everyone the effective freedom to copy and redistribute it, |
| with or without modifying it, either commercially or noncommercially. |
| Secondarily, this License preserves for the author and publisher a way |
| to get credit for their work, while not being considered responsible |
| for modifications made by others. |
| </P><P> |
| |
| This License is a kind of "copyleft", which means that derivative |
| works of the document must themselves be free in the same sense. It |
| complements the GNU General Public License, which is a copyleft |
| license designed for free software. |
| </P><P> |
| |
| We have designed this License in order to use it for manuals for free |
| software, because free software needs free documentation: a free |
| program should come with manuals providing the same freedoms that the |
| software does. But this License is not limited to software manuals; |
| it can be used for any textual work, regardless of subject matter or |
| whether it is published as a printed book. We recommend this License |
| principally for works whose purpose is instruction or reference. |
| </P><P> |
| |
| <LI> |
| APPLICABILITY AND DEFINITIONS |
| <P> |
| |
| This License applies to any manual or other work, in any medium, that |
| contains a notice placed by the copyright holder saying it can be |
| distributed under the terms of this License. Such a notice grants a |
| world-wide, royalty-free license, unlimited in duration, to use that |
| work under the conditions stated herein. The "Document", below, |
| refers to any such manual or work. Any member of the public is a |
| licensee, and is addressed as "you". You accept the license if you |
| copy, modify or distribute the work in a way requiring permission |
| under copyright law. |
| </P><P> |
| |
| A "Modified Version" of the Document means any work containing the |
| Document or a portion of it, either copied verbatim, or with |
| modifications and/or translated into another language. |
| </P><P> |
| |
| A "Secondary Section" is a named appendix or a front-matter section |
| of the Document that deals exclusively with the relationship of the |
| publishers or authors of the Document to the Document's overall |
| subject (or to related matters) and contains nothing that could fall |
| directly within that overall subject. (Thus, if the Document is in |
| part a textbook of mathematics, a Secondary Section may not explain |
| any mathematics.) The relationship could be a matter of historical |
| connection with the subject or with related matters, or of legal, |
| commercial, philosophical, ethical or political position regarding |
| them. |
| </P><P> |
| |
| The "Invariant Sections" are certain Secondary Sections whose titles |
| are designated, as being those of Invariant Sections, in the notice |
| that says that the Document is released under this License. If a |
| section does not fit the above definition of Secondary then it is not |
| allowed to be designated as Invariant. The Document may contain zero |
| Invariant Sections. If the Document does not identify any Invariant |
| Sections then there are none. |
| </P><P> |
| |
| The "Cover Texts" are certain short passages of text that are listed, |
| as Front-Cover Texts or Back-Cover Texts, in the notice that says that |
| the Document is released under this License. A Front-Cover Text may |
| be at most 5 words, and a Back-Cover Text may be at most 25 words. |
| </P><P> |
| |
| A "Transparent" copy of the Document means a machine-readable copy, |
| represented in a format whose specification is available to the |
| general public, that is suitable for revising the document |
| straightforwardly with generic text editors or (for images composed of |
| pixels) generic paint programs or (for drawings) some widely available |
| drawing editor, and that is suitable for input to text formatters or |
| for automatic translation to a variety of formats suitable for input |
| to text formatters. A copy made in an otherwise Transparent file |
| format whose markup, or absence of markup, has been arranged to thwart |
| or discourage subsequent modification by readers is not Transparent. |
| An image format is not Transparent if used for any substantial amount |
| of text. A copy that is not "Transparent" is called "Opaque". |
| </P><P> |
| |
| Examples of suitable formats for Transparent copies include plain |
| ASCII without markup, Texinfo input format, LaTeX input |
| format, <FONT SIZE="-1">SGML</FONT> or <FONT SIZE="-1">XML</FONT> using a publicly available |
| <FONT SIZE="-1">DTD</FONT>, and standard-conforming simple <FONT SIZE="-1">HTML</FONT>, |
| PostScript or <FONT SIZE="-1">PDF</FONT> designed for human modification. Examples |
| of transparent image formats include <FONT SIZE="-1">PNG</FONT>, <FONT SIZE="-1">XCF</FONT> and |
| <FONT SIZE="-1">JPG</FONT>. Opaque formats include proprietary formats that can be |
| read and edited only by proprietary word processors, <FONT SIZE="-1">SGML</FONT> or |
| <FONT SIZE="-1">XML</FONT> for which the <FONT SIZE="-1">DTD</FONT> and/or processing tools are |
| not generally available, and the machine-generated <FONT SIZE="-1">HTML</FONT>, |
| PostScript or <FONT SIZE="-1">PDF</FONT> produced by some word processors for |
| output purposes only. |
| </P><P> |
| |
| The "Title Page" means, for a printed book, the title page itself, |
| plus such following pages as are needed to hold, legibly, the material |
| this License requires to appear in the title page. For works in |
| formats which do not have any title page as such, "Title Page" means |
| the text near the most prominent appearance of the work's title, |
| preceding the beginning of the body of the text. |
| </P><P> |
| |
| The "publisher" means any person or entity that distributes copies |
| of the Document to the public. |
| </P><P> |
| |
| A section "Entitled XYZ" means a named subunit of the Document whose |
| title either is precisely XYZ or contains XYZ in parentheses following |
| text that translates XYZ in another language. (Here XYZ stands for a |
| specific section name mentioned below, such as "Acknowledgements", |
| "Dedications", "Endorsements", or "History".) To "Preserve the Title" |
| of such a section when you modify the Document means that it remains a |
| section "Entitled XYZ" according to this definition. |
| </P><P> |
| |
| The Document may include Warranty Disclaimers next to the notice which |
| states that this License applies to the Document. These Warranty |
| Disclaimers are considered to be included by reference in this |
| License, but only as regards disclaiming warranties: any other |
| implication that these Warranty Disclaimers may have is void and has |
| no effect on the meaning of this License. |
| </P><P> |
| |
| <LI> |
| VERBATIM COPYING |
| <P> |
| |
| You may copy and distribute the Document in any medium, either |
| commercially or noncommercially, provided that this License, the |
| copyright notices, and the license notice saying this License applies |
| to the Document are reproduced in all copies, and that you add no other |
| conditions whatsoever to those of this License. You may not use |
| technical measures to obstruct or control the reading or further |
| copying of the copies you make or distribute. However, you may accept |
| compensation in exchange for copies. If you distribute a large enough |
| number of copies you must also follow the conditions in section 3. |
| </P><P> |
| |
| You may also lend copies, under the same conditions stated above, and |
| you may publicly display copies. |
| </P><P> |
| |
| <LI> |
| COPYING IN QUANTITY |
| <P> |
| |
| If you publish printed copies (or copies in media that commonly have |
| printed covers) of the Document, numbering more than 100, and the |
| Document's license notice requires Cover Texts, you must enclose the |
| copies in covers that carry, clearly and legibly, all these Cover |
| Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on |
| the back cover. Both covers must also clearly and legibly identify |
| you as the publisher of these copies. The front cover must present |
| the full title with all words of the title equally prominent and |
| visible. You may add other material on the covers in addition. |
| Copying with changes limited to the covers, as long as they preserve |
| the title of the Document and satisfy these conditions, can be treated |
| as verbatim copying in other respects. |
| </P><P> |
| |
| If the required texts for either cover are too voluminous to fit |
| legibly, you should put the first ones listed (as many as fit |
| reasonably) on the actual cover, and continue the rest onto adjacent |
| pages. |
| </P><P> |
| |
| If you publish or distribute Opaque copies of the Document numbering |
| more than 100, you must either include a machine-readable Transparent |
| copy along with each Opaque copy, or state in or with each Opaque copy |
| a computer-network location from which the general network-using |
| public has access to download using public-standard network protocols |
| a complete Transparent copy of the Document, free of added material. |
| If you use the latter option, you must take reasonably prudent steps, |
| when you begin distribution of Opaque copies in quantity, to ensure |
| that this Transparent copy will remain thus accessible at the stated |
| location until at least one year after the last time you distribute an |
| Opaque copy (directly or through your agents or retailers) of that |
| edition to the public. |
| </P><P> |
| |
| It is requested, but not required, that you contact the authors of the |
| Document well before redistributing any large number of copies, to give |
| them a chance to provide you with an updated version of the Document. |
| </P><P> |
| |
| <LI> |
| MODIFICATIONS |
| <P> |
| |
| You may copy and distribute a Modified Version of the Document under |
| the conditions of sections 2 and 3 above, provided that you release |
| the Modified Version under precisely this License, with the Modified |
| Version filling the role of the Document, thus licensing distribution |
| and modification of the Modified Version to whoever possesses a copy |
| of it. In addition, you must do these things in the Modified Version: |
| </P><P> |
| |
| <OL> |
| <LI> |
| Use in the Title Page (and on the covers, if any) a title distinct |
| from that of the Document, and from those of previous versions |
| (which should, if there were any, be listed in the History section |
| of the Document). You may use the same title as a previous version |
| if the original publisher of that version gives permission. |
| <P> |
| |
| <LI> |
| List on the Title Page, as authors, one or more persons or entities |
| responsible for authorship of the modifications in the Modified |
| Version, together with at least five of the principal authors of the |
| Document (all of its principal authors, if it has fewer than five), |
| unless they release you from this requirement. |
| <P> |
| |
| <LI> |
| State on the Title page the name of the publisher of the |
| Modified Version, as the publisher. |
| <P> |
| |
| <LI> |
| Preserve all the copyright notices of the Document. |
| <P> |
| |
| <LI> |
| Add an appropriate copyright notice for your modifications |
| adjacent to the other copyright notices. |
| <P> |
| |
| <LI> |
| Include, immediately after the copyright notices, a license notice |
| giving the public permission to use the Modified Version under the |
| terms of this License, in the form shown in the Addendum below. |
| <P> |
| |
| <LI> |
| Preserve in that license notice the full lists of Invariant Sections |
| and required Cover Texts given in the Document's license notice. |
| <P> |
| |
| <LI> |
| Include an unaltered copy of this License. |
| <P> |
| |
| <LI> |
| Preserve the section Entitled "History", Preserve its Title, and add |
| to it an item stating at least the title, year, new authors, and |
| publisher of the Modified Version as given on the Title Page. If |
| there is no section Entitled "History" in the Document, create one |
| stating the title, year, authors, and publisher of the Document as |
| given on its Title Page, then add an item describing the Modified |
| Version as stated in the previous sentence. |
| <P> |
| |
| <LI> |
| Preserve the network location, if any, given in the Document for |
| public access to a Transparent copy of the Document, and likewise |
| the network locations given in the Document for previous versions |
| it was based on. These may be placed in the "History" section. |
| You may omit a network location for a work that was published at |
| least four years before the Document itself, or if the original |
| publisher of the version it refers to gives permission. |
| <P> |
| |
| <LI> |
| For any section Entitled "Acknowledgements" or "Dedications", Preserve |
| the Title of the section, and preserve in the section all the |
| substance and tone of each of the contributor acknowledgements and/or |
| dedications given therein. |
| <P> |
| |
| <LI> |
| Preserve all the Invariant Sections of the Document, |
| unaltered in their text and in their titles. Section numbers |
| or the equivalent are not considered part of the section titles. |
| <P> |
| |
| <LI> |
| Delete any section Entitled "Endorsements". Such a section |
| may not be included in the Modified Version. |
| <P> |
| |
| <LI> |
| Do not retitle any existing section to be Entitled "Endorsements" or |
| to conflict in title with any Invariant Section. |
| <P> |
| |
| <LI> |
| Preserve any Warranty Disclaimers. |
| </OL> |
| <P> |
| |
| If the Modified Version includes new front-matter sections or |
| appendices that qualify as Secondary Sections and contain no material |
| copied from the Document, you may at your option designate some or all |
| of these sections as invariant. To do this, add their titles to the |
| list of Invariant Sections in the Modified Version's license notice. |
| These titles must be distinct from any other section titles. |
| </P><P> |
| |
| You may add a section Entitled "Endorsements", provided it contains |
| nothing but endorsements of your Modified Version by various |
| parties--for example, statements of peer review or that the text has |
| been approved by an organization as the authoritative definition of a |
| standard. |
| </P><P> |
| |
| You may add a passage of up to five words as a Front-Cover Text, and a |
| passage of up to 25 words as a Back-Cover Text, to the end of the list |
| of Cover Texts in the Modified Version. Only one passage of |
| Front-Cover Text and one of Back-Cover Text may be added by (or |
| through arrangements made by) any one entity. If the Document already |
| includes a cover text for the same cover, previously added by you or |
| by arrangement made by the same entity you are acting on behalf of, |
| you may not add another; but you may replace the old one, on explicit |
| permission from the previous publisher that added the old one. |
| </P><P> |
| |
| The author(s) and publisher(s) of the Document do not by this License |
| give permission to use their names for publicity for or to assert or |
| imply endorsement of any Modified Version. |
| </P><P> |
| |
| <LI> |
| COMBINING DOCUMENTS |
| <P> |
| |
| You may combine the Document with other documents released under this |
| License, under the terms defined in section 4 above for modified |
| versions, provided that you include in the combination all of the |
| Invariant Sections of all of the original documents, unmodified, and |
| list them all as Invariant Sections of your combined work in its |
| license notice, and that you preserve all their Warranty Disclaimers. |
| </P><P> |
| |
| The combined work need only contain one copy of this License, and |
| multiple identical Invariant Sections may be replaced with a single |
| copy. If there are multiple Invariant Sections with the same name but |
| different contents, make the title of each such section unique by |
| adding at the end of it, in parentheses, the name of the original |
| author or publisher of that section if known, or else a unique number. |
| Make the same adjustment to the section titles in the list of |
| Invariant Sections in the license notice of the combined work. |
| </P><P> |
| |
| In the combination, you must combine any sections Entitled "History" |
| in the various original documents, forming one section Entitled |
| "History"; likewise combine any sections Entitled "Acknowledgements", |
| and any sections Entitled "Dedications". You must delete all |
| sections Entitled "Endorsements." |
| </P><P> |
| |
| <LI> |
| COLLECTIONS OF DOCUMENTS |
| <P> |
| |
| You may make a collection consisting of the Document and other documents |
| released under this License, and replace the individual copies of this |
| License in the various documents with a single copy that is included in |
| the collection, provided that you follow the rules of this License for |
| verbatim copying of each of the documents in all other respects. |
| </P><P> |
| |
| You may extract a single document from such a collection, and distribute |
| it individually under this License, provided you insert a copy of this |
| License into the extracted document, and follow this License in all |
| other respects regarding verbatim copying of that document. |
| </P><P> |
| |
| <LI> |
| AGGREGATION WITH INDEPENDENT WORKS |
| <P> |
| |
| A compilation of the Document or its derivatives with other separate |
| and independent documents or works, in or on a volume of a storage or |
| distribution medium, is called an "aggregate" if the copyright |
| resulting from the compilation is not used to limit the legal rights |
| of the compilation's users beyond what the individual works permit. |
| When the Document is included in an aggregate, this License does not |
| apply to the other works in the aggregate which are not themselves |
| derivative works of the Document. |
| </P><P> |
| |
| If the Cover Text requirement of section 3 is applicable to these |
| copies of the Document, then if the Document is less than one half of |
| the entire aggregate, the Document's Cover Texts may be placed on |
| covers that bracket the Document within the aggregate, or the |
| electronic equivalent of covers if the Document is in electronic form. |
| Otherwise they must appear on printed covers that bracket the whole |
| aggregate. |
| </P><P> |
| |
| <LI> |
| TRANSLATION |
| <P> |
| |
| Translation is considered a kind of modification, so you may |
| distribute translations of the Document under the terms of section 4. |
| Replacing Invariant Sections with translations requires special |
| permission from their copyright holders, but you may include |
| translations of some or all Invariant Sections in addition to the |
| original versions of these Invariant Sections. You may include a |
| translation of this License, and all the license notices in the |
| Document, and any Warranty Disclaimers, provided that you also include |
| the original English version of this License and the original versions |
| of those notices and disclaimers. In case of a disagreement between |
| the translation and the original version of this License or a notice |
| or disclaimer, the original version will prevail. |
| </P><P> |
| |
| If a section in the Document is Entitled "Acknowledgements", |
| "Dedications", or "History", the requirement (section 4) to Preserve |
| its Title (section 1) will typically require changing the actual |
| title. |
| </P><P> |
| |
| <LI> |
| TERMINATION |
| <P> |
| |
| You may not copy, modify, sublicense, or distribute the Document |
| except as expressly provided under this License. Any attempt |
| otherwise to copy, modify, sublicense, or distribute it is void, and |
| will automatically terminate your rights under this License. |
| </P><P> |
| |
| However, if you cease all violation of this License, then your license |
| from a particular copyright holder is reinstated (a) provisionally, |
| unless and until the copyright holder explicitly and finally |
| terminates your license, and (b) permanently, if the copyright holder |
| fails to notify you of the violation by some reasonable means prior to |
| 60 days after the cessation. |
| </P><P> |
| |
| Moreover, your license from a particular copyright holder is |
| reinstated permanently if the copyright holder notifies you of the |
| violation by some reasonable means, this is the first time you have |
| received notice of violation of this License (for any work) from that |
| copyright holder, and you cure the violation prior to 30 days after |
| your receipt of the notice. |
| </P><P> |
| |
| Termination of your rights under this section does not terminate the |
| licenses of parties who have received copies or rights from you under |
| this License. If your rights have been terminated and not permanently |
| reinstated, receipt of a copy of some or all of the same material does |
| not give you any rights to use it. |
| </P><P> |
| |
| <LI> |
| FUTURE REVISIONS OF THIS LICENSE |
| <P> |
| |
| The Free Software Foundation may publish new, revised versions |
| of the GNU Free Documentation License from time to time. Such new |
| versions will be similar in spirit to the present version, but may |
| differ in detail to address new problems or concerns. See |
| <A HREF="http://www.gnu.org/copyleft/">http://www.gnu.org/copyleft/</A>. |
| </P><P> |
| |
| Each version of the License is given a distinguishing version number. |
| If the Document specifies that a particular numbered version of this |
| License "or any later version" applies to it, you have the option of |
| following the terms and conditions either of that specified version or |
| of any later version that has been published (not as a draft) by the |
| Free Software Foundation. If the Document does not specify a version |
| number of this License, you may choose any version ever published (not |
| as a draft) by the Free Software Foundation. If the Document |
| specifies that a proxy can decide which future versions of this |
| License can be used, that proxy's public statement of acceptance of a |
| version permanently authorizes you to choose that version for the |
| Document. |
| </P><P> |
| |
| <LI> |
| RELICENSING |
| <P> |
| |
| "Massive Multiauthor Collaboration Site" (or "MMC Site") means any |
| World Wide Web server that publishes copyrightable works and also |
| provides prominent facilities for anybody to edit those works. A |
| public wiki that anybody can edit is an example of such a server. A |
| "Massive Multiauthor Collaboration" (or "MMC") contained in the |
| site means any set of copyrightable works thus published on the MMC |
| site. |
| </P><P> |
| |
| "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 |
| license published by Creative Commons Corporation, a not-for-profit |
| corporation with a principal place of business in San Francisco, |
| California, as well as future copyleft versions of that license |
| published by that same organization. |
| </P><P> |
| |
| "Incorporate" means to publish or republish a Document, in whole or |
| in part, as part of another Document. |
| </P><P> |
| |
| An MMC is "eligible for relicensing" if it is licensed under this |
| License, and if all works that were first published under this License |
| somewhere other than this MMC, and subsequently incorporated in whole |
| or in part into the MMC, (1) had no cover texts or invariant sections, |
| and (2) were thus incorporated prior to November 1, 2008. |
| </P><P> |
| |
| The operator of an MMC Site may republish an MMC contained in the site |
| under CC-BY-SA on the same site at any time before August 1, 2009, |
| provided the MMC is eligible for relicensing. |
| </P><P> |
| |
| </OL> |
| <P> |
| |
| <A NAME="SEC141"></A> |
| <H2> ADDENDUM: How to use this License for your documents </H2> |
| <!--docid::SEC141::--> |
| <P> |
| |
| To use this License in a document you have written, include a copy of |
| the License in the document and put the following copyright and |
| license notices just after the title page: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> Copyright (C) <VAR>year</VAR> <VAR>your name</VAR>. |
| Permission is granted to copy, distribute and/or modify this document |
| under the terms of the GNU Free Documentation License, Version 1.3 |
| or any later version published by the Free Software Foundation; |
| with no 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''. |
| </FONT></pre></td></tr></table></P><P> |
| |
| If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, |
| replace the "with<small>...</small>Texts." line with this: |
| </P><P> |
| |
| <TABLE><tr><td> </td><td class=smallexample><FONT SIZE=-1><pre> with the Invariant Sections being <VAR>list their titles</VAR>, with |
| the Front-Cover Texts being <VAR>list</VAR>, and with the Back-Cover Texts |
| being <VAR>list</VAR>. |
| </FONT></pre></td></tr></table></P><P> |
| |
| If you have Invariant Sections without Cover Texts, or some other |
| combination of the three, merge those two alternatives to suit the |
| situation. |
| </P><P> |
| |
| If your document contains nontrivial examples of program code, we |
| recommend releasing these examples in parallel under your choice of |
| free software license, such as the GNU General Public License, |
| to permit their use in free software. |
| </P><P> |
| |
| <A NAME="Indexes"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC142"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC140"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC143"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1> D. Indexes </H1> |
| <!--docid::SEC142::--> |
| <P> |
| |
| <BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC143">D.1 Index of Shell Builtin Commands</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Index of Bash builtin commands.</TD></TR> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC144">D.2 Index of Shell Reserved Words</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Index of Bash reserved words.</TD></TR> |
| <TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC145">D.3 Parameter and 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="bashref.html#SEC146">D.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="bashref.html#SEC147">D.5 Concept Index</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">General index for concepts described in |
| this manual.</TD></TR> |
| </TABLE></BLOCKQUOTE> |
| <P> |
| |
| <A NAME="Builtin Index"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC143"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC144"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> D.1 Index of Shell Builtin Commands </H2> |
| <!--docid::SEC143::--> |
| <table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#bt_." style="text-decoration:none"><b>.</b></A> |
| |
| <A HREF="bashref.html#bt_:" style="text-decoration:none"><b>:</b></A> |
| |
| <A HREF="bashref.html#bt_[" style="text-decoration:none"><b>[</b></A> |
| |
| <BR> |
| <A HREF="bashref.html#bt_A" style="text-decoration:none"><b>A</b></A> |
| |
| <A HREF="bashref.html#bt_B" style="text-decoration:none"><b>B</b></A> |
| |
| <A HREF="bashref.html#bt_C" style="text-decoration:none"><b>C</b></A> |
| |
| <A HREF="bashref.html#bt_D" style="text-decoration:none"><b>D</b></A> |
| |
| <A HREF="bashref.html#bt_E" style="text-decoration:none"><b>E</b></A> |
| |
| <A HREF="bashref.html#bt_F" style="text-decoration:none"><b>F</b></A> |
| |
| <A HREF="bashref.html#bt_G" style="text-decoration:none"><b>G</b></A> |
| |
| <A HREF="bashref.html#bt_H" style="text-decoration:none"><b>H</b></A> |
| |
| <A HREF="bashref.html#bt_J" style="text-decoration:none"><b>J</b></A> |
| |
| <A HREF="bashref.html#bt_K" style="text-decoration:none"><b>K</b></A> |
| |
| <A HREF="bashref.html#bt_L" style="text-decoration:none"><b>L</b></A> |
| |
| <A HREF="bashref.html#bt_M" style="text-decoration:none"><b>M</b></A> |
| |
| <A HREF="bashref.html#bt_P" style="text-decoration:none"><b>P</b></A> |
| |
| <A HREF="bashref.html#bt_R" style="text-decoration:none"><b>R</b></A> |
| |
| <A HREF="bashref.html#bt_S" style="text-decoration:none"><b>S</b></A> |
| |
| <A HREF="bashref.html#bt_T" style="text-decoration:none"><b>T</b></A> |
| |
| <A HREF="bashref.html#bt_U" style="text-decoration:none"><b>U</b></A> |
| |
| <A HREF="bashref.html#bt_W" style="text-decoration:none"><b>W</b></A> |
| |
| </td></tr></table><br><P></P> |
| <TABLE border=0> |
| <TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_."></A>.</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX78"><CODE>.</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_:"></A>:</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX77"><CODE>:</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_["></A>[</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX93"><CODE>[</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_A"></A>A</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX98"><CODE>alias</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_B"></A>B</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX318"><CODE>bg</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX99"><CODE>bind</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX79"><CODE>break</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX100"><CODE>builtin</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_C"></A>C</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX101"><CODE>caller</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX80"><CODE>cd</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX102"><CODE>command</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX579"><CODE>compgen</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX580"><CODE>complete</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX581"><CODE>compopt</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX81"><CODE>continue</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_D"></A>D</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX103"><CODE>declare</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX315"><CODE>dirs</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC88">6.8.1 Directory Stack Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX323"><CODE>disown</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_E"></A>E</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX104"><CODE>echo</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX105"><CODE>enable</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX82"><CODE>eval</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX83"><CODE>exec</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX84"><CODE>exit</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX85"><CODE>export</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_F"></A>F</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX583"><CODE>fc</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC123">9.2 Bash History Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX319"><CODE>fg</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_G"></A>G</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX86"><CODE>getopts</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_H"></A>H</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX87"><CODE>hash</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX106"><CODE>help</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX584"><CODE>history</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC123">9.2 Bash History Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_J"></A>J</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX320"><CODE>jobs</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_K"></A>K</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX321"><CODE>kill</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_L"></A>L</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX107"><CODE>let</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX108"><CODE>local</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX109"><CODE>logout</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_M"></A>M</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX110"><CODE>mapfile</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_P"></A>P</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX316"><CODE>popd</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC88">6.8.1 Directory Stack Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX111"><CODE>printf</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX317"><CODE>pushd</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC88">6.8.1 Directory Stack Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX88"><CODE>pwd</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_R"></A>R</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX112"><CODE>read</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX113"><CODE>readarray</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX89"><CODE>readonly</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX90"><CODE>return</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_S"></A>S</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX119"><CODE>set</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX91"><CODE>shift</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX120"><CODE>shopt</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX114"><CODE>source</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX324"><CODE>suspend</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_T"></A>T</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX92"><CODE>test</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX94"><CODE>times</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX95"><CODE>trap</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX115"><CODE>type</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX116"><CODE>typeset</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_U"></A>U</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX117"><CODE>ulimit</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX96"><CODE>umask</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX118"><CODE>unalias</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX97"><CODE>unset</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="bt_W"></A>W</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX322"><CODE>wait</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.2 Job Control Builtins</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| </TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#bt_." style="text-decoration:none"><b>.</b></A> |
| |
| <A HREF="bashref.html#bt_:" style="text-decoration:none"><b>:</b></A> |
| |
| <A HREF="bashref.html#bt_[" style="text-decoration:none"><b>[</b></A> |
| |
| <BR> |
| <A HREF="bashref.html#bt_A" style="text-decoration:none"><b>A</b></A> |
| |
| <A HREF="bashref.html#bt_B" style="text-decoration:none"><b>B</b></A> |
| |
| <A HREF="bashref.html#bt_C" style="text-decoration:none"><b>C</b></A> |
| |
| <A HREF="bashref.html#bt_D" style="text-decoration:none"><b>D</b></A> |
| |
| <A HREF="bashref.html#bt_E" style="text-decoration:none"><b>E</b></A> |
| |
| <A HREF="bashref.html#bt_F" style="text-decoration:none"><b>F</b></A> |
| |
| <A HREF="bashref.html#bt_G" style="text-decoration:none"><b>G</b></A> |
| |
| <A HREF="bashref.html#bt_H" style="text-decoration:none"><b>H</b></A> |
| |
| <A HREF="bashref.html#bt_J" style="text-decoration:none"><b>J</b></A> |
| |
| <A HREF="bashref.html#bt_K" style="text-decoration:none"><b>K</b></A> |
| |
| <A HREF="bashref.html#bt_L" style="text-decoration:none"><b>L</b></A> |
| |
| <A HREF="bashref.html#bt_M" style="text-decoration:none"><b>M</b></A> |
| |
| <A HREF="bashref.html#bt_P" style="text-decoration:none"><b>P</b></A> |
| |
| <A HREF="bashref.html#bt_R" style="text-decoration:none"><b>R</b></A> |
| |
| <A HREF="bashref.html#bt_S" style="text-decoration:none"><b>S</b></A> |
| |
| <A HREF="bashref.html#bt_T" style="text-decoration:none"><b>T</b></A> |
| |
| <A HREF="bashref.html#bt_U" style="text-decoration:none"><b>U</b></A> |
| |
| <A HREF="bashref.html#bt_W" style="text-decoration:none"><b>W</b></A> |
| |
| </td></tr></table><br><P> |
| |
| <A NAME="Reserved Word Index"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC144"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC143"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC145"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC145"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> D.2 Index of Shell Reserved Words </H2> |
| <!--docid::SEC144::--> |
| <table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#rw_!" style="text-decoration:none"><b>!</b></A> |
| |
| <A HREF="bashref.html#rw_[" style="text-decoration:none"><b>[</b></A> |
| |
| <A HREF="bashref.html#rw_]" style="text-decoration:none"><b>]</b></A> |
| |
| <A HREF="bashref.html#rw_{" style="text-decoration:none"><b>{</b></A> |
| |
| <A HREF="bashref.html#rw_}" style="text-decoration:none"><b>}</b></A> |
| |
| <BR> |
| <A HREF="bashref.html#rw_C" style="text-decoration:none"><b>C</b></A> |
| |
| <A HREF="bashref.html#rw_D" style="text-decoration:none"><b>D</b></A> |
| |
| <A HREF="bashref.html#rw_E" style="text-decoration:none"><b>E</b></A> |
| |
| <A HREF="bashref.html#rw_F" style="text-decoration:none"><b>F</b></A> |
| |
| <A HREF="bashref.html#rw_I" style="text-decoration:none"><b>I</b></A> |
| |
| <A HREF="bashref.html#rw_S" style="text-decoration:none"><b>S</b></A> |
| |
| <A HREF="bashref.html#rw_T" style="text-decoration:none"><b>T</b></A> |
| |
| <A HREF="bashref.html#rw_U" style="text-decoration:none"><b>U</b></A> |
| |
| <A HREF="bashref.html#rw_W" style="text-decoration:none"><b>W</b></A> |
| |
| </td></tr></table><br><P></P> |
| <TABLE border=0> |
| <TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_!"></A>!</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX25"><CODE>!</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC17">3.2.2 Pipelines</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_["></A>[</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX41"><CODE>[[</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_]"></A>]</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX42"><CODE>]]</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_{"></A>{</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX43"><CODE>{</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC22">3.2.4.3 Grouping Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_}"></A>}</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX44"><CODE>}</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC22">3.2.4.3 Grouping Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_C"></A>C</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX37"><CODE>case</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_D"></A>D</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX28"><CODE>do</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC20">3.2.4.1 Looping Constructs</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX29"><CODE>done</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC20">3.2.4.1 Looping Constructs</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_E"></A>E</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX35"><CODE>elif</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX34"><CODE>else</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX39"><CODE>esac</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_F"></A>F</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX36"><CODE>fi</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX31"><CODE>for</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC20">3.2.4.1 Looping Constructs</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX45"><CODE>function</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC25">3.3 Shell Functions</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_I"></A>I</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX32"><CODE>if</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX38"><CODE>in</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_S"></A>S</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX40"><CODE>select</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_T"></A>T</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX33"><CODE>then</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX24"><CODE>time</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC17">3.2.2 Pipelines</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_U"></A>U</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX27"><CODE>until</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC20">3.2.4.1 Looping Constructs</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="rw_W"></A>W</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX30"><CODE>while</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC20">3.2.4.1 Looping Constructs</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| </TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#rw_!" style="text-decoration:none"><b>!</b></A> |
| |
| <A HREF="bashref.html#rw_[" style="text-decoration:none"><b>[</b></A> |
| |
| <A HREF="bashref.html#rw_]" style="text-decoration:none"><b>]</b></A> |
| |
| <A HREF="bashref.html#rw_{" style="text-decoration:none"><b>{</b></A> |
| |
| <A HREF="bashref.html#rw_}" style="text-decoration:none"><b>}</b></A> |
| |
| <BR> |
| <A HREF="bashref.html#rw_C" style="text-decoration:none"><b>C</b></A> |
| |
| <A HREF="bashref.html#rw_D" style="text-decoration:none"><b>D</b></A> |
| |
| <A HREF="bashref.html#rw_E" style="text-decoration:none"><b>E</b></A> |
| |
| <A HREF="bashref.html#rw_F" style="text-decoration:none"><b>F</b></A> |
| |
| <A HREF="bashref.html#rw_I" style="text-decoration:none"><b>I</b></A> |
| |
| <A HREF="bashref.html#rw_S" style="text-decoration:none"><b>S</b></A> |
| |
| <A HREF="bashref.html#rw_T" style="text-decoration:none"><b>T</b></A> |
| |
| <A HREF="bashref.html#rw_U" style="text-decoration:none"><b>U</b></A> |
| |
| <A HREF="bashref.html#rw_W" style="text-decoration:none"><b>W</b></A> |
| |
| </td></tr></table><br><P> |
| |
| <A NAME="Variable Index"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC145"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC144"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC146"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC146"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> D.3 Parameter and Variable Index </H2> |
| <!--docid::SEC145::--> |
| <table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#vr_!" style="text-decoration:none"><b>!</b></A> |
| |
| <A HREF="bashref.html#vr_#" style="text-decoration:none"><b>#</b></A> |
| |
| <A HREF="bashref.html#vr_$" style="text-decoration:none"><b>$</b></A> |
| |
| <A HREF="bashref.html#vr_*" style="text-decoration:none"><b>*</b></A> |
| |
| <A HREF="bashref.html#vr_-" style="text-decoration:none"><b>-</b></A> |
| |
| <A HREF="bashref.html#vr_0" style="text-decoration:none"><b>0</b></A> |
| |
| <A HREF="bashref.html#vr_?" style="text-decoration:none"><b>?</b></A> |
| |
| <A HREF="bashref.html#vr_@" style="text-decoration:none"><b>@</b></A> |
| |
| <A HREF="bashref.html#vr__" style="text-decoration:none"><b>_</b></A> |
| |
| <BR> |
| <A HREF="bashref.html#vr_A" style="text-decoration:none"><b>A</b></A> |
| |
| <A HREF="bashref.html#vr_B" style="text-decoration:none"><b>B</b></A> |
| |
| <A HREF="bashref.html#vr_C" style="text-decoration:none"><b>C</b></A> |
| |
| <A HREF="bashref.html#vr_D" style="text-decoration:none"><b>D</b></A> |
| |
| <A HREF="bashref.html#vr_E" style="text-decoration:none"><b>E</b></A> |
| |
| <A HREF="bashref.html#vr_F" style="text-decoration:none"><b>F</b></A> |
| |
| <A HREF="bashref.html#vr_G" style="text-decoration:none"><b>G</b></A> |
| |
| <A HREF="bashref.html#vr_H" style="text-decoration:none"><b>H</b></A> |
| |
| <A HREF="bashref.html#vr_I" style="text-decoration:none"><b>I</b></A> |
| |
| <A HREF="bashref.html#vr_K" style="text-decoration:none"><b>K</b></A> |
| |
| <A HREF="bashref.html#vr_L" style="text-decoration:none"><b>L</b></A> |
| |
| <A HREF="bashref.html#vr_M" style="text-decoration:none"><b>M</b></A> |
| |
| <A HREF="bashref.html#vr_O" style="text-decoration:none"><b>O</b></A> |
| |
| <A HREF="bashref.html#vr_P" style="text-decoration:none"><b>P</b></A> |
| |
| <A HREF="bashref.html#vr_R" style="text-decoration:none"><b>R</b></A> |
| |
| <A HREF="bashref.html#vr_S" style="text-decoration:none"><b>S</b></A> |
| |
| <A HREF="bashref.html#vr_T" style="text-decoration:none"><b>T</b></A> |
| |
| <A HREF="bashref.html#vr_U" style="text-decoration:none"><b>U</b></A> |
| |
| <A HREF="bashref.html#vr_V" style="text-decoration:none"><b>V</b></A> |
| |
| </td></tr></table><br><P></P> |
| <TABLE border=0> |
| <TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_!"></A>!</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX64"><CODE>!</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX65"><CODE>!</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_#"></A>#</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX52"><CODE>#</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX53"><CODE>#</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_$"></A>$</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX61"><CODE>$</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX62"><CODE>$</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX66"><CODE>$!</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX54"><CODE>$#</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX63"><CODE>$$</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX48"><CODE>$*</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX60"><CODE>$-</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX69"><CODE>$0</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX57"><CODE>$?</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX51"><CODE>$@</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX72"><CODE>$_</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_*"></A>*</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX46"><CODE>*</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX47"><CODE>*</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_-"></A>-</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX58"><CODE>-</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX59"><CODE>-</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_0"></A>0</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX67"><CODE>0</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX68"><CODE>0</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_?"></A>?</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX55"><CODE>?</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX56"><CODE>?</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_@"></A>@</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX49"><CODE>@</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX50"><CODE>@</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr__"></A>_</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX70"><CODE>_</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX71"><CODE>_</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_A"></A>A</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX325"><CODE>auto_resume</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC95">7.3 Job Control Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX326"><CODE>auto_resume</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC95">7.3 Job Control Variables</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_B"></A>B</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX141"><CODE>BASH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX142"><CODE>BASH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX147"><CODE>BASH_ALIASES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX148"><CODE>BASH_ALIASES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX149"><CODE>BASH_ARGC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX150"><CODE>BASH_ARGC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX151"><CODE>BASH_ARGV</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX152"><CODE>BASH_ARGV</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX153"><CODE>BASH_CMDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX154"><CODE>BASH_CMDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX155"><CODE>BASH_COMMAND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX156"><CODE>BASH_COMMAND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX157"><CODE>BASH_COMPAT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX158"><CODE>BASH_COMPAT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX159"><CODE>BASH_ENV</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX160"><CODE>BASH_ENV</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX161"><CODE>BASH_EXECUTION_STRING</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX162"><CODE>BASH_EXECUTION_STRING</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX163"><CODE>BASH_LINENO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX164"><CODE>BASH_LINENO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX165"><CODE>BASH_REMATCH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX166"><CODE>BASH_REMATCH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX167"><CODE>BASH_SOURCE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX168"><CODE>BASH_SOURCE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX169"><CODE>BASH_SUBSHELL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX170"><CODE>BASH_SUBSHELL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX171"><CODE>BASH_VERSINFO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX172"><CODE>BASH_VERSINFO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX173"><CODE>BASH_VERSION</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX174"><CODE>BASH_VERSION</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX175"><CODE>BASH_XTRACEFD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX176"><CODE>BASH_XTRACEFD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX143"><CODE>BASHOPTS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX144"><CODE>BASHOPTS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX145"><CODE>BASHPID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX146"><CODE>BASHPID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX332"><CODE>bell-style</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX333"><CODE>bind-tty-special-chars</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_C"></A>C</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX121"><CODE>CDPATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX122"><CODE>CDPATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX177"><CODE>CHILD_MAX</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX178"><CODE>CHILD_MAX</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX334"><CODE>colored-stats</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX179"><CODE>COLUMNS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX180"><CODE>COLUMNS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX335"><CODE>comment-begin</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX181"><CODE>COMP_CWORD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX182"><CODE>COMP_CWORD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX189"><CODE>COMP_KEY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX190"><CODE>COMP_KEY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX183"><CODE>COMP_LINE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX184"><CODE>COMP_LINE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX185"><CODE>COMP_POINT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX186"><CODE>COMP_POINT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX187"><CODE>COMP_TYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX188"><CODE>COMP_TYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX191"><CODE>COMP_WORDBREAKS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX192"><CODE>COMP_WORDBREAKS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX193"><CODE>COMP_WORDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX194"><CODE>COMP_WORDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX336"><CODE>completion-display-width</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX337"><CODE>completion-ignore-case</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX338"><CODE>completion-map-case</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX339"><CODE>completion-prefix-display-length</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX340"><CODE>completion-query-items</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX195"><CODE>COMPREPLY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX196"><CODE>COMPREPLY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX341"><CODE>convert-meta</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX197"><CODE>COPROC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX198"><CODE>COPROC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_D"></A>D</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX199"><CODE>DIRSTACK</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX200"><CODE>DIRSTACK</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX342"><CODE>disable-completion</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_E"></A>E</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX343"><CODE>editing-mode</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX201"><CODE>EMACS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX202"><CODE>EMACS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX344"><CODE>enable-keypad</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX203"><CODE>ENV</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX204"><CODE>ENV</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX205"><CODE>EUID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX206"><CODE>EUID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX345"><CODE>expand-tilde</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_F"></A>F</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX207"><CODE>FCEDIT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX208"><CODE>FCEDIT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX209"><CODE>FIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX210"><CODE>FIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX211"><CODE>FUNCNAME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX212"><CODE>FUNCNAME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX213"><CODE>FUNCNEST</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX214"><CODE>FUNCNEST</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_G"></A>G</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX215"><CODE>GLOBIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX216"><CODE>GLOBIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX217"><CODE>GROUPS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX218"><CODE>GROUPS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_H"></A>H</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX219"><CODE>histchars</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX220"><CODE>histchars</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX221"><CODE>HISTCMD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX222"><CODE>HISTCMD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX223"><CODE>HISTCONTROL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX224"><CODE>HISTCONTROL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX225"><CODE>HISTFILE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX226"><CODE>HISTFILE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX227"><CODE>HISTFILESIZE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX228"><CODE>HISTFILESIZE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX229"><CODE>HISTIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX230"><CODE>HISTIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX346"><CODE>history-preserve-point</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX347"><CODE>history-size</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX231"><CODE>HISTSIZE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX232"><CODE>HISTSIZE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX233"><CODE>HISTTIMEFORMAT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX234"><CODE>HISTTIMEFORMAT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX123"><CODE>HOME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX124"><CODE>HOME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX348"><CODE>horizontal-scroll-mode</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX235"><CODE>HOSTFILE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX236"><CODE>HOSTFILE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX237"><CODE>HOSTNAME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX238"><CODE>HOSTNAME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX239"><CODE>HOSTTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX240"><CODE>HOSTTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_I"></A>I</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX125"><CODE>IFS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX126"><CODE>IFS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX241"><CODE>IGNOREEOF</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX242"><CODE>IGNOREEOF</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX349"><CODE>input-meta</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX243"><CODE>INPUTRC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX244"><CODE>INPUTRC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX351"><CODE>isearch-terminators</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_K"></A>K</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX352"><CODE>keymap</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_L"></A>L</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX245"><CODE>LANG</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX246"><CODE>LANG</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX247"><CODE>LC_ALL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX248"><CODE>LC_ALL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX249"><CODE>LC_COLLATE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX250"><CODE>LC_COLLATE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX251"><CODE>LC_CTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX252"><CODE>LC_CTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX21"><CODE>LC_MESSAGES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX253"><CODE>LC_MESSAGES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX254"><CODE>LC_MESSAGES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX255"><CODE>LC_NUMERIC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX256"><CODE>LC_NUMERIC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX257"><CODE>LINENO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX258"><CODE>LINENO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX259"><CODE>LINES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX260"><CODE>LINES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_M"></A>M</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX261"><CODE>MACHTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX262"><CODE>MACHTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX127"><CODE>MAIL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX128"><CODE>MAIL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX263"><CODE>MAILCHECK</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX264"><CODE>MAILCHECK</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX129"><CODE>MAILPATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX130"><CODE>MAILPATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX265"><CODE>MAPFILE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX266"><CODE>MAPFILE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX353"><CODE>mark-modified-lines</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX354"><CODE>mark-symlinked-directories</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX355"><CODE>match-hidden-files</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX356"><CODE>menu-complete-display-prefix</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX350"><CODE>meta-flag</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_O"></A>O</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX267"><CODE>OLDPWD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX268"><CODE>OLDPWD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX131"><CODE>OPTARG</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX132"><CODE>OPTARG</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX269"><CODE>OPTERR</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX270"><CODE>OPTERR</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX133"><CODE>OPTIND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX134"><CODE>OPTIND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX271"><CODE>OSTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX272"><CODE>OSTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX357"><CODE>output-meta</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_P"></A>P</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX358"><CODE>page-completions</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX135"><CODE>PATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX136"><CODE>PATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX273"><CODE>PIPESTATUS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX274"><CODE>PIPESTATUS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX275"><CODE>POSIXLY_CORRECT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX276"><CODE>POSIXLY_CORRECT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX277"><CODE>PPID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX278"><CODE>PPID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX279"><CODE>PROMPT_COMMAND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX280"><CODE>PROMPT_COMMAND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX281"><CODE>PROMPT_DIRTRIM</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX282"><CODE>PROMPT_DIRTRIM</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX137"><CODE>PS1</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX138"><CODE>PS1</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX139"><CODE>PS2</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX140"><CODE>PS2</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX283"><CODE>PS3</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX284"><CODE>PS3</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX285"><CODE>PS4</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX286"><CODE>PS4</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX287"><CODE>PWD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX288"><CODE>PWD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_R"></A>R</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX289"><CODE>RANDOM</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX290"><CODE>RANDOM</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX291"><CODE>READLINE_LINE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX292"><CODE>READLINE_LINE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX293"><CODE>READLINE_POINT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX294"><CODE>READLINE_POINT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX295"><CODE>REPLY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX296"><CODE>REPLY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX359"><CODE>revert-all-at-newline</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_S"></A>S</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX297"><CODE>SECONDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX298"><CODE>SECONDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX299"><CODE>SHELL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX300"><CODE>SHELL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX301"><CODE>SHELLOPTS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX302"><CODE>SHELLOPTS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX303"><CODE>SHLVL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX304"><CODE>SHLVL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX360"><CODE>show-all-if-ambiguous</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX361"><CODE>show-all-if-unmodified</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX362"><CODE>show-mode-in-prompt</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX363"><CODE>skip-completed-text</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_T"></A>T</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX22"><CODE>TEXTDOMAIN</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX23"><CODE>TEXTDOMAINDIR</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX305"><CODE>TIMEFORMAT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX306"><CODE>TIMEFORMAT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX307"><CODE>TMOUT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX308"><CODE>TMOUT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX309"><CODE>TMPDIR</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX310"><CODE>TMPDIR</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_U"></A>U</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX311"><CODE>UID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX312"><CODE>UID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC68">5.2 Bash Variables</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="vr_V"></A>V</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX364"><CODE>visible-stats</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| </TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#vr_!" style="text-decoration:none"><b>!</b></A> |
| |
| <A HREF="bashref.html#vr_#" style="text-decoration:none"><b>#</b></A> |
| |
| <A HREF="bashref.html#vr_$" style="text-decoration:none"><b>$</b></A> |
| |
| <A HREF="bashref.html#vr_*" style="text-decoration:none"><b>*</b></A> |
| |
| <A HREF="bashref.html#vr_-" style="text-decoration:none"><b>-</b></A> |
| |
| <A HREF="bashref.html#vr_0" style="text-decoration:none"><b>0</b></A> |
| |
| <A HREF="bashref.html#vr_?" style="text-decoration:none"><b>?</b></A> |
| |
| <A HREF="bashref.html#vr_@" style="text-decoration:none"><b>@</b></A> |
| |
| <A HREF="bashref.html#vr__" style="text-decoration:none"><b>_</b></A> |
| |
| <BR> |
| <A HREF="bashref.html#vr_A" style="text-decoration:none"><b>A</b></A> |
| |
| <A HREF="bashref.html#vr_B" style="text-decoration:none"><b>B</b></A> |
| |
| <A HREF="bashref.html#vr_C" style="text-decoration:none"><b>C</b></A> |
| |
| <A HREF="bashref.html#vr_D" style="text-decoration:none"><b>D</b></A> |
| |
| <A HREF="bashref.html#vr_E" style="text-decoration:none"><b>E</b></A> |
| |
| <A HREF="bashref.html#vr_F" style="text-decoration:none"><b>F</b></A> |
| |
| <A HREF="bashref.html#vr_G" style="text-decoration:none"><b>G</b></A> |
| |
| <A HREF="bashref.html#vr_H" style="text-decoration:none"><b>H</b></A> |
| |
| <A HREF="bashref.html#vr_I" style="text-decoration:none"><b>I</b></A> |
| |
| <A HREF="bashref.html#vr_K" style="text-decoration:none"><b>K</b></A> |
| |
| <A HREF="bashref.html#vr_L" style="text-decoration:none"><b>L</b></A> |
| |
| <A HREF="bashref.html#vr_M" style="text-decoration:none"><b>M</b></A> |
| |
| <A HREF="bashref.html#vr_O" style="text-decoration:none"><b>O</b></A> |
| |
| <A HREF="bashref.html#vr_P" style="text-decoration:none"><b>P</b></A> |
| |
| <A HREF="bashref.html#vr_R" style="text-decoration:none"><b>R</b></A> |
| |
| <A HREF="bashref.html#vr_S" style="text-decoration:none"><b>S</b></A> |
| |
| <A HREF="bashref.html#vr_T" style="text-decoration:none"><b>T</b></A> |
| |
| <A HREF="bashref.html#vr_U" style="text-decoration:none"><b>U</b></A> |
| |
| <A HREF="bashref.html#vr_V" style="text-decoration:none"><b>V</b></A> |
| |
| </td></tr></table><br><P> |
| |
| <A NAME="Function Index"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC146"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC145"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC147"> > </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC147"> << </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> D.4 Function Index </H2> |
| <!--docid::SEC146::--> |
| <table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#fn_A" style="text-decoration:none"><b>A</b></A> |
| |
| <A HREF="bashref.html#fn_B" style="text-decoration:none"><b>B</b></A> |
| |
| <A HREF="bashref.html#fn_C" style="text-decoration:none"><b>C</b></A> |
| |
| <A HREF="bashref.html#fn_D" style="text-decoration:none"><b>D</b></A> |
| |
| <A HREF="bashref.html#fn_E" style="text-decoration:none"><b>E</b></A> |
| |
| <A HREF="bashref.html#fn_F" style="text-decoration:none"><b>F</b></A> |
| |
| <A HREF="bashref.html#fn_G" style="text-decoration:none"><b>G</b></A> |
| |
| <A HREF="bashref.html#fn_H" style="text-decoration:none"><b>H</b></A> |
| |
| <A HREF="bashref.html#fn_I" style="text-decoration:none"><b>I</b></A> |
| |
| <A HREF="bashref.html#fn_K" style="text-decoration:none"><b>K</b></A> |
| |
| <A HREF="bashref.html#fn_M" style="text-decoration:none"><b>M</b></A> |
| |
| <A HREF="bashref.html#fn_N" style="text-decoration:none"><b>N</b></A> |
| |
| <A HREF="bashref.html#fn_O" style="text-decoration:none"><b>O</b></A> |
| |
| <A HREF="bashref.html#fn_P" style="text-decoration:none"><b>P</b></A> |
| |
| <A HREF="bashref.html#fn_Q" style="text-decoration:none"><b>Q</b></A> |
| |
| <A HREF="bashref.html#fn_R" style="text-decoration:none"><b>R</b></A> |
| |
| <A HREF="bashref.html#fn_S" style="text-decoration:none"><b>S</b></A> |
| |
| <A HREF="bashref.html#fn_T" style="text-decoration:none"><b>T</b></A> |
| |
| <A HREF="bashref.html#fn_U" style="text-decoration:none"><b>U</b></A> |
| |
| <A HREF="bashref.html#fn_Y" style="text-decoration:none"><b>Y</b></A> |
| |
| </td></tr></table><br><P></P> |
| <TABLE border=0> |
| <TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_A"></A>A</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX525"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX526"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX385"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX386"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX569"><CODE>alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX570"><CODE>alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_B"></A>B</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX371"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX372"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX419"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX420"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX441"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX442"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX449"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX450"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX375"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX376"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX391"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX392"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX365"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX366"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_C"></A>C</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX519"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX520"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX435"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX436"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX541"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX542"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX543"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX544"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX381"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX382"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX477"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX478"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX505"><CODE>complete-command (M-!)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX506"><CODE>complete-command (M-!)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX489"><CODE>complete-filename (M-/)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX490"><CODE>complete-filename (M-/)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX501"><CODE>complete-hostname (M-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX502"><CODE>complete-hostname (M-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX513"><CODE>complete-into-braces (M-{)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX514"><CODE>complete-into-braces (M-{)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX493"><CODE>complete-username (M-~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX494"><CODE>complete-username (M-~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX497"><CODE>complete-variable (M-$)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX498"><CODE>complete-variable (M-$)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX465"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX466"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX467"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX468"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX463"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX464"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_D"></A>D</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX511"><CODE>dabbrev-expand ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX512"><CODE>dabbrev-expand ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX417"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX418"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX487"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX488"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX459"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX460"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX473"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX474"><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX561"><CODE>display-shell-version (C-x C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX562"><CODE>display-shell-version (C-x C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX527"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX528"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX433"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX434"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX549"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX550"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX553"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX554"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX551"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX552"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX509"><CODE>dynamic-complete-history (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX510"><CODE>dynamic-complete-history (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_E"></A>E</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX577"><CODE>edit-and-execute-command (C-xC-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX578"><CODE>edit-and-execute-command (C-xC-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX517"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX518"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX415"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX416"><CODE><I>end-of-file</I> (usually C-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX393"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX394"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX367"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX368"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX539"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX540"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_F"></A>F</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX421"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX422"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX369"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX370"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX397"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX398"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX373"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX374"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_G"></A>G</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX555"><CODE>glob-complete-word (M-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX556"><CODE>glob-complete-word (M-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX557"><CODE>glob-expand-word (C-x *)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX558"><CODE>glob-expand-word (C-x *)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX559"><CODE>glob-list-expansions (C-x g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX560"><CODE>glob-list-expansions (C-x g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_H"></A>H</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX571"><CODE>history-and-alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX572"><CODE>history-and-alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX565"><CODE>history-expand-line (M-^)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX566"><CODE>history-expand-line (M-^)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX405"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX406"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX403"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX404"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX409"><CODE>history-substr-search-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX410"><CODE>history-substr-search-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX407"><CODE>history-substr-search-forward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX408"><CODE>history-substr-search-forward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_I"></A>I</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX547"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX548"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX481"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX482"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX573"><CODE>insert-last-argument (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX574"><CODE>insert-last-argument (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_K"></A>K</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX439"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX440"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX461"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX462"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX445"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX446"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX447"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX448"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_M"></A>M</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX567"><CODE>magic-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX568"><CODE>magic-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX483"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX484"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX485"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX486"><CODE>menu-complete-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_N"></A>N</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX389"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX390"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX401"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX402"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX399"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX400"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_O"></A>O</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX575"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX576"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX437"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX438"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_P"></A>P</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX507"><CODE>possible-command-completions (C-x !)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX508"><CODE>possible-command-completions (C-x !)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX479"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX480"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX491"><CODE>possible-filename-completions (C-x /)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX492"><CODE>possible-filename-completions (C-x /)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX503"><CODE>possible-hostname-completions (C-x @)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX504"><CODE>possible-hostname-completions (C-x @)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX495"><CODE>possible-username-completions (C-x ~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX496"><CODE>possible-username-completions (C-x ~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX499"><CODE>possible-variable-completions (C-x $)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX500"><CODE>possible-variable-completions (C-x $)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX529"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX530"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX387"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX388"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX521"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX522"><CODE>print-last-kbd-macro ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_Q"></A>Q</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX423"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX424"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_R"></A>R</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX523"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX524"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX383"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX384"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX395"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX396"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX533"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX534"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_S"></A>S</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX425"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX426"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX537"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX538"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX453"><CODE>shell-backward-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX454"><CODE>shell-backward-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX379"><CODE>shell-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX380"><CODE>shell-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX563"><CODE>shell-expand-line (M-C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX564"><CODE>shell-expand-line (M-C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX377"><CODE>shell-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX378"><CODE>shell-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX451"><CODE>shell-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX452"><CODE>shell-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX545"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX546"><CODE>skip-csi-sequence ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX515"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX516"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_T"></A>T</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX535"><CODE>tilde-expand (M-&#38;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX536"><CODE>tilde-expand (M-&#38;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX427"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX428"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX429"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX430"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_U"></A>U</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX531"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX532"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX475"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX476"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX457"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX458"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX443"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX444"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX455"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX456"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX431"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX432"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="fn_Y"></A>Y</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX469"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX470"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX413"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX414"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX411"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX412"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX471"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX472"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| </TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#fn_A" style="text-decoration:none"><b>A</b></A> |
| |
| <A HREF="bashref.html#fn_B" style="text-decoration:none"><b>B</b></A> |
| |
| <A HREF="bashref.html#fn_C" style="text-decoration:none"><b>C</b></A> |
| |
| <A HREF="bashref.html#fn_D" style="text-decoration:none"><b>D</b></A> |
| |
| <A HREF="bashref.html#fn_E" style="text-decoration:none"><b>E</b></A> |
| |
| <A HREF="bashref.html#fn_F" style="text-decoration:none"><b>F</b></A> |
| |
| <A HREF="bashref.html#fn_G" style="text-decoration:none"><b>G</b></A> |
| |
| <A HREF="bashref.html#fn_H" style="text-decoration:none"><b>H</b></A> |
| |
| <A HREF="bashref.html#fn_I" style="text-decoration:none"><b>I</b></A> |
| |
| <A HREF="bashref.html#fn_K" style="text-decoration:none"><b>K</b></A> |
| |
| <A HREF="bashref.html#fn_M" style="text-decoration:none"><b>M</b></A> |
| |
| <A HREF="bashref.html#fn_N" style="text-decoration:none"><b>N</b></A> |
| |
| <A HREF="bashref.html#fn_O" style="text-decoration:none"><b>O</b></A> |
| |
| <A HREF="bashref.html#fn_P" style="text-decoration:none"><b>P</b></A> |
| |
| <A HREF="bashref.html#fn_Q" style="text-decoration:none"><b>Q</b></A> |
| |
| <A HREF="bashref.html#fn_R" style="text-decoration:none"><b>R</b></A> |
| |
| <A HREF="bashref.html#fn_S" style="text-decoration:none"><b>S</b></A> |
| |
| <A HREF="bashref.html#fn_T" style="text-decoration:none"><b>T</b></A> |
| |
| <A HREF="bashref.html#fn_U" style="text-decoration:none"><b>U</b></A> |
| |
| <A HREF="bashref.html#fn_Y" style="text-decoration:none"><b>Y</b></A> |
| |
| </td></tr></table><br><P> |
| |
| <A NAME="Concept Index"></A> |
| <HR SIZE="6"> |
| <A NAME="SEC147"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC146"> < </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[ > ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142"> Up </A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[ >> ]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H2> D.5 Concept Index </H2> |
| <!--docid::SEC147::--> |
| <table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#cp_A" style="text-decoration:none"><b>A</b></A> |
| |
| <A HREF="bashref.html#cp_B" style="text-decoration:none"><b>B</b></A> |
| |
| <A HREF="bashref.html#cp_C" style="text-decoration:none"><b>C</b></A> |
| |
| <A HREF="bashref.html#cp_D" style="text-decoration:none"><b>D</b></A> |
| |
| <A HREF="bashref.html#cp_E" style="text-decoration:none"><b>E</b></A> |
| |
| <A HREF="bashref.html#cp_F" style="text-decoration:none"><b>F</b></A> |
| |
| <A HREF="bashref.html#cp_H" style="text-decoration:none"><b>H</b></A> |
| |
| <A HREF="bashref.html#cp_I" style="text-decoration:none"><b>I</b></A> |
| |
| <A HREF="bashref.html#cp_J" style="text-decoration:none"><b>J</b></A> |
| |
| <A HREF="bashref.html#cp_K" style="text-decoration:none"><b>K</b></A> |
| |
| <A HREF="bashref.html#cp_L" style="text-decoration:none"><b>L</b></A> |
| |
| <A HREF="bashref.html#cp_M" style="text-decoration:none"><b>M</b></A> |
| |
| <A HREF="bashref.html#cp_N" style="text-decoration:none"><b>N</b></A> |
| |
| <A HREF="bashref.html#cp_O" style="text-decoration:none"><b>O</b></A> |
| |
| <A HREF="bashref.html#cp_P" style="text-decoration:none"><b>P</b></A> |
| |
| <A HREF="bashref.html#cp_Q" style="text-decoration:none"><b>Q</b></A> |
| |
| <A HREF="bashref.html#cp_R" style="text-decoration:none"><b>R</b></A> |
| |
| <A HREF="bashref.html#cp_S" style="text-decoration:none"><b>S</b></A> |
| |
| <A HREF="bashref.html#cp_T" style="text-decoration:none"><b>T</b></A> |
| |
| <A HREF="bashref.html#cp_V" style="text-decoration:none"><b>V</b></A> |
| |
| <A HREF="bashref.html#cp_W" style="text-decoration:none"><b>W</b></A> |
| |
| <A HREF="bashref.html#cp_Y" style="text-decoration:none"><b>Y</b></A> |
| |
| </td></tr></table><br><P></P> |
| <TABLE border=0> |
| <TR><TD></TD><TH ALIGN=LEFT>Index Entry</TH><TH ALIGN=LEFT> Section</TH></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_A"></A>A</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC85">alias expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC85">6.6 Aliases</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC84">arithmetic evaluation</A></TD><TD valign=top><A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC34">arithmetic expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC34">3.5.5 Arithmetic Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC84">arithmetic, shell</A></TD><TD valign=top><A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC86">arrays</A></TD><TD valign=top><A HREF="bashref.html#SEC86">6.7 Arrays</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_B"></A>B</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC93">background</A></TD><TD valign=top><A HREF="bashref.html#SEC93">7.1 Job Control Basics</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC129">Bash configuration</A></TD><TD valign=top><A HREF="bashref.html#SEC129">10.1 Basic Installation</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC129">Bash installation</A></TD><TD valign=top><A HREF="bashref.html#SEC129">10.1 Basic Installation</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC5">Bourne shell</A></TD><TD valign=top><A HREF="bashref.html#SEC5">3. Basic Shell Features</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC30">brace expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC30">3.5.1 Brace Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX2">builtin</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_C"></A>C</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC99">command editing</A></TD><TD valign=top><A HREF="bashref.html#SEC99">8.2.1 Readline Bare Essentials</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC53">command execution</A></TD><TD valign=top><A HREF="bashref.html#SEC53">3.7.2 Command Search and Execution</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC52">command expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC52">3.7.1 Simple Command Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC122">command history</A></TD><TD valign=top><A HREF="bashref.html#SEC122">9.1 Bash History Facilities</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC53">command search</A></TD><TD valign=top><A HREF="bashref.html#SEC53">3.7.2 Command Search and Execution</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC33">command substitution</A></TD><TD valign=top><A HREF="bashref.html#SEC33">3.5.4 Command Substitution</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX26">command timing</A></TD><TD valign=top><A HREF="bashref.html#SEC17">3.2.2 Pipelines</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC19">commands, compound</A></TD><TD valign=top><A HREF="bashref.html#SEC19">3.2.4 Compound Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC21">commands, conditional</A></TD><TD valign=top><A HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC22">commands, grouping</A></TD><TD valign=top><A HREF="bashref.html#SEC22">3.2.4.3 Grouping Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC18">commands, lists</A></TD><TD valign=top><A HREF="bashref.html#SEC18">3.2.3 Lists of Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC20">commands, looping</A></TD><TD valign=top><A HREF="bashref.html#SEC20">3.2.4.1 Looping Constructs</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC17">commands, pipelines</A></TD><TD valign=top><A HREF="bashref.html#SEC17">3.2.2 Pipelines</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC15">commands, shell</A></TD><TD valign=top><A HREF="bashref.html#SEC15">3.2 Shell Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC16">commands, simple</A></TD><TD valign=top><A HREF="bashref.html#SEC16">3.2.1 Simple Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC14">comments, shell</A></TD><TD valign=top><A HREF="bashref.html#SEC14">3.1.3 Comments</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC119">completion builtins</A></TD><TD valign=top><A HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC129">configuration</A></TD><TD valign=top><A HREF="bashref.html#SEC129">10.1 Basic Installation</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX3">control operator</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC23">coprocess</A></TD><TD valign=top><A HREF="bashref.html#SEC23">3.2.5 Coprocesses</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_D"></A>D</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC87">directory stack</A></TD><TD valign=top><A HREF="bashref.html#SEC87">6.8 The Directory Stack</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_E"></A>E</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC99">editing command lines</A></TD><TD valign=top><A HREF="bashref.html#SEC99">8.2.1 Readline Bare Essentials</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC55">environment</A></TD><TD valign=top><A HREF="bashref.html#SEC55">3.7.4 Environment</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC84">evaluation, arithmetic</A></TD><TD valign=top><A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC125">event designators</A></TD><TD valign=top><A HREF="bashref.html#SEC125">9.3.1 Event Designators</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC54">execution environment</A></TD><TD valign=top><A HREF="bashref.html#SEC54">3.7.3 Command Execution Environment</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX4">exit status</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC56">exit status</A></TD><TD valign=top><A HREF="bashref.html#SEC56">3.7.5 Exit Status</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC29">expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC29">3.5 Shell Expansions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC34">expansion, arithmetic</A></TD><TD valign=top><A HREF="bashref.html#SEC34">3.5.5 Arithmetic Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC30">expansion, brace</A></TD><TD valign=top><A HREF="bashref.html#SEC30">3.5.1 Brace Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX73">expansion, filename</A></TD><TD valign=top><A HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC32">expansion, parameter</A></TD><TD valign=top><A HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX74">expansion, pathname</A></TD><TD valign=top><A HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC31">expansion, tilde</A></TD><TD valign=top><A HREF="bashref.html#SEC31">3.5.2 Tilde Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC84">expressions, arithmetic</A></TD><TD valign=top><A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC83">expressions, conditional</A></TD><TD valign=top><A HREF="bashref.html#SEC83">6.4 Bash Conditional Expressions</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_F"></A>F</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX5">field</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX6">filename</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX75">filename expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC93">foreground</A></TD><TD valign=top><A HREF="bashref.html#SEC93">7.1 Job Control Basics</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC25">functions, shell</A></TD><TD valign=top><A HREF="bashref.html#SEC25">3.3 Shell Functions</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_H"></A>H</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC123">history builtins</A></TD><TD valign=top><A HREF="bashref.html#SEC123">9.2 Bash History Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX585">history events</A></TD><TD valign=top><A HREF="bashref.html#SEC125">9.3.1 Event Designators</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC124">history expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC124">9.3 History Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC122">history list</A></TD><TD valign=top><A HREF="bashref.html#SEC122">9.1 Bash History Facilities</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX582">History, how to use</A></TD><TD valign=top><A HREF="bashref.html#SEC120">8.8 A Programmable Completion Example</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_I"></A>I</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX11">identifier</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC104">initialization file, readline</A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3 Readline Init File</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC129">installation</A></TD><TD valign=top><A HREF="bashref.html#SEC129">10.1 Basic Installation</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC98">interaction, readline</A></TD><TD valign=top><A HREF="bashref.html#SEC98">8.2 Readline Interaction</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX314">interactive shell</A></TD><TD valign=top><A HREF="bashref.html#SEC70">6.1 Invoking Bash</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC79">interactive shell</A></TD><TD valign=top><A HREF="bashref.html#SEC79">6.3 Interactive Shells</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC13">internationalization</A></TD><TD valign=top><A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_J"></A>J</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX7">job</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX8">job control</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC93">job control</A></TD><TD valign=top><A HREF="bashref.html#SEC93">7.1 Job Control Basics</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_K"></A>K</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX330">kill ring</A></TD><TD valign=top><A HREF="bashref.html#SEC101">8.2.3 Readline Killing Commands</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX328">killing text</A></TD><TD valign=top><A HREF="bashref.html#SEC101">8.2.3 Readline Killing Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_L"></A>L</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC13">localization</A></TD><TD valign=top><A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX313">login shell</A></TD><TD valign=top><A HREF="bashref.html#SEC70">6.1 Invoking Bash</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_M"></A>M</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC38">matching, pattern</A></TD><TD valign=top><A HREF="bashref.html#SEC38">3.5.8.1 Pattern Matching</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX9">metacharacter</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_N"></A>N</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX10">name</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC13">native languages</A></TD><TD valign=top><A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC99">notation, readline</A></TD><TD valign=top><A HREF="bashref.html#SEC99">8.2.1 Readline Bare Essentials</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_O"></A>O</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX12">operator, shell</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_P"></A>P</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC32">parameter expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC26">parameters</A></TD><TD valign=top><A HREF="bashref.html#SEC26">3.4 Shell Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC27">parameters, positional</A></TD><TD valign=top><A HREF="bashref.html#SEC27">3.4.1 Positional Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC28">parameters, special</A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.4.2 Special Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX76">pathname expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC38">pattern matching</A></TD><TD valign=top><A HREF="bashref.html#SEC38">3.5.8.1 Pattern Matching</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC17">pipeline</A></TD><TD valign=top><A HREF="bashref.html#SEC17">3.2.2 Pipelines</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX1">POSIX</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC91">POSIX Mode</A></TD><TD valign=top><A HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX13">process group</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX14">process group ID</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC35">process substitution</A></TD><TD valign=top><A HREF="bashref.html#SEC35">3.5.6 Process Substitution</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC118">programmable completion</A></TD><TD valign=top><A HREF="bashref.html#SEC118">8.6 Programmable Completion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC89">prompting</A></TD><TD valign=top><A HREF="bashref.html#SEC89">6.9 Controlling the Prompt</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_Q"></A>Q</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC8">quoting</A></TD><TD valign=top><A HREF="bashref.html#SEC8">3.1.2 Quoting</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC12">quoting, ANSI</A></TD><TD valign=top><A HREF="bashref.html#SEC12">3.1.2.4 ANSI-C Quoting</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_R"></A>R</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX327">Readline, how to use</A></TD><TD valign=top><A HREF="bashref.html#SEC95">7.3 Job Control Variables</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC40">redirection</A></TD><TD valign=top><A HREF="bashref.html#SEC40">3.6 Redirections</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX15">reserved word</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC90">restricted shell</A></TD><TD valign=top><A HREF="bashref.html#SEC90">6.10 The Restricted Shell</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX16">return status</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_S"></A>S</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC84">shell arithmetic</A></TD><TD valign=top><A HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC25">shell function</A></TD><TD valign=top><A HREF="bashref.html#SEC25">3.3 Shell Functions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC58">shell script</A></TD><TD valign=top><A HREF="bashref.html#SEC58">3.8 Shell Scripts</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC26">shell variable</A></TD><TD valign=top><A HREF="bashref.html#SEC26">3.4 Shell Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC79">shell, interactive</A></TD><TD valign=top><A HREF="bashref.html#SEC79">6.3 Interactive Shells</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX17">signal</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC57">signal handling</A></TD><TD valign=top><A HREF="bashref.html#SEC57">3.7.6 Signals</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX18">special builtin</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC65">special builtin</A></TD><TD valign=top><A HREF="bashref.html#SEC65">4.4 Special Builtins</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC71">startup files</A></TD><TD valign=top><A HREF="bashref.html#SEC71">6.2 Bash Startup Files</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC93">suspending jobs</A></TD><TD valign=top><A HREF="bashref.html#SEC93">7.1 Job Control Basics</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_T"></A>T</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC31">tilde expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC31">3.5.2 Tilde Expansion</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX19">token</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC13">translation, native languages</A></TD><TD valign=top><A HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_V"></A>V</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC26">variable, shell</A></TD><TD valign=top><A HREF="bashref.html#SEC26">3.4 Shell Parameters</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX331">variables, readline</A></TD><TD valign=top><A HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_W"></A>W</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX20">word</A></TD><TD valign=top><A HREF="bashref.html#SEC4">2. Definitions</A></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC36">word splitting</A></TD><TD valign=top><A HREF="bashref.html#SEC36">3.5.7 Word Splitting</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| <TR><TH><A NAME="cp_Y"></A>Y</TH><TD></TD><TD></TD></TR> |
| <TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX329">yanking text</A></TD><TD valign=top><A HREF="bashref.html#SEC101">8.2.3 Readline Killing Commands</A></TD></TR> |
| <TR><TD COLSPAN=3> <HR></TD></TR> |
| </TABLE><P></P><table><tr><th valign=top>Jump to: </th><td><A HREF="bashref.html#cp_A" style="text-decoration:none"><b>A</b></A> |
| |
| <A HREF="bashref.html#cp_B" style="text-decoration:none"><b>B</b></A> |
| |
| <A HREF="bashref.html#cp_C" style="text-decoration:none"><b>C</b></A> |
| |
| <A HREF="bashref.html#cp_D" style="text-decoration:none"><b>D</b></A> |
| |
| <A HREF="bashref.html#cp_E" style="text-decoration:none"><b>E</b></A> |
| |
| <A HREF="bashref.html#cp_F" style="text-decoration:none"><b>F</b></A> |
| |
| <A HREF="bashref.html#cp_H" style="text-decoration:none"><b>H</b></A> |
| |
| <A HREF="bashref.html#cp_I" style="text-decoration:none"><b>I</b></A> |
| |
| <A HREF="bashref.html#cp_J" style="text-decoration:none"><b>J</b></A> |
| |
| <A HREF="bashref.html#cp_K" style="text-decoration:none"><b>K</b></A> |
| |
| <A HREF="bashref.html#cp_L" style="text-decoration:none"><b>L</b></A> |
| |
| <A HREF="bashref.html#cp_M" style="text-decoration:none"><b>M</b></A> |
| |
| <A HREF="bashref.html#cp_N" style="text-decoration:none"><b>N</b></A> |
| |
| <A HREF="bashref.html#cp_O" style="text-decoration:none"><b>O</b></A> |
| |
| <A HREF="bashref.html#cp_P" style="text-decoration:none"><b>P</b></A> |
| |
| <A HREF="bashref.html#cp_Q" style="text-decoration:none"><b>Q</b></A> |
| |
| <A HREF="bashref.html#cp_R" style="text-decoration:none"><b>R</b></A> |
| |
| <A HREF="bashref.html#cp_S" style="text-decoration:none"><b>S</b></A> |
| |
| <A HREF="bashref.html#cp_T" style="text-decoration:none"><b>T</b></A> |
| |
| <A HREF="bashref.html#cp_V" style="text-decoration:none"><b>V</b></A> |
| |
| <A HREF="bashref.html#cp_W" style="text-decoration:none"><b>W</b></A> |
| |
| <A HREF="bashref.html#cp_Y" style="text-decoration:none"><b>Y</b></A> |
| |
| </td></tr></table><br><P> |
| |
| <HR SIZE="6"> |
| <A NAME="SEC_Contents"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1>Table of Contents</H1> |
| <UL> |
| <A NAME="TOC1" HREF="bashref.html#SEC1">1. Introduction</A> |
| <BR> |
| <UL> |
| <A NAME="TOC2" HREF="bashref.html#SEC2">1.1 What is Bash?</A> |
| <BR> |
| <A NAME="TOC3" HREF="bashref.html#SEC3">1.2 What is a shell?</A> |
| <BR> |
| </UL> |
| <A NAME="TOC4" HREF="bashref.html#SEC4">2. Definitions</A> |
| <BR> |
| <A NAME="TOC5" HREF="bashref.html#SEC5">3. Basic Shell Features</A> |
| <BR> |
| <UL> |
| <A NAME="TOC6" HREF="bashref.html#SEC6">3.1 Shell Syntax</A> |
| <BR> |
| <UL> |
| <A NAME="TOC7" HREF="bashref.html#SEC7">3.1.1 Shell Operation</A> |
| <BR> |
| <A NAME="TOC8" HREF="bashref.html#SEC8">3.1.2 Quoting</A> |
| <BR> |
| <UL> |
| <A NAME="TOC9" HREF="bashref.html#SEC9">3.1.2.1 Escape Character</A> |
| <BR> |
| <A NAME="TOC10" HREF="bashref.html#SEC10">3.1.2.2 Single Quotes</A> |
| <BR> |
| <A NAME="TOC11" HREF="bashref.html#SEC11">3.1.2.3 Double Quotes</A> |
| <BR> |
| <A NAME="TOC12" HREF="bashref.html#SEC12">3.1.2.4 ANSI-C Quoting</A> |
| <BR> |
| <A NAME="TOC13" HREF="bashref.html#SEC13">3.1.2.5 Locale-Specific Translation</A> |
| <BR> |
| </UL> |
| <A NAME="TOC14" HREF="bashref.html#SEC14">3.1.3 Comments</A> |
| <BR> |
| </UL> |
| <A NAME="TOC15" HREF="bashref.html#SEC15">3.2 Shell Commands</A> |
| <BR> |
| <UL> |
| <A NAME="TOC16" HREF="bashref.html#SEC16">3.2.1 Simple Commands</A> |
| <BR> |
| <A NAME="TOC17" HREF="bashref.html#SEC17">3.2.2 Pipelines</A> |
| <BR> |
| <A NAME="TOC18" HREF="bashref.html#SEC18">3.2.3 Lists of Commands</A> |
| <BR> |
| <A NAME="TOC19" HREF="bashref.html#SEC19">3.2.4 Compound Commands</A> |
| <BR> |
| <UL> |
| <A NAME="TOC20" HREF="bashref.html#SEC20">3.2.4.1 Looping Constructs</A> |
| <BR> |
| <A NAME="TOC21" HREF="bashref.html#SEC21">3.2.4.2 Conditional Constructs</A> |
| <BR> |
| <A NAME="TOC22" HREF="bashref.html#SEC22">3.2.4.3 Grouping Commands</A> |
| <BR> |
| </UL> |
| <A NAME="TOC23" HREF="bashref.html#SEC23">3.2.5 Coprocesses</A> |
| <BR> |
| <A NAME="TOC24" HREF="bashref.html#SEC24">3.2.6 GNU Parallel</A> |
| <BR> |
| </UL> |
| <A NAME="TOC25" HREF="bashref.html#SEC25">3.3 Shell Functions</A> |
| <BR> |
| <A NAME="TOC26" HREF="bashref.html#SEC26">3.4 Shell Parameters</A> |
| <BR> |
| <UL> |
| <A NAME="TOC27" HREF="bashref.html#SEC27">3.4.1 Positional Parameters</A> |
| <BR> |
| <A NAME="TOC28" HREF="bashref.html#SEC28">3.4.2 Special Parameters</A> |
| <BR> |
| </UL> |
| <A NAME="TOC29" HREF="bashref.html#SEC29">3.5 Shell Expansions</A> |
| <BR> |
| <UL> |
| <A NAME="TOC30" HREF="bashref.html#SEC30">3.5.1 Brace Expansion</A> |
| <BR> |
| <A NAME="TOC31" HREF="bashref.html#SEC31">3.5.2 Tilde Expansion</A> |
| <BR> |
| <A NAME="TOC32" HREF="bashref.html#SEC32">3.5.3 Shell Parameter Expansion</A> |
| <BR> |
| <A NAME="TOC33" HREF="bashref.html#SEC33">3.5.4 Command Substitution</A> |
| <BR> |
| <A NAME="TOC34" HREF="bashref.html#SEC34">3.5.5 Arithmetic Expansion</A> |
| <BR> |
| <A NAME="TOC35" HREF="bashref.html#SEC35">3.5.6 Process Substitution</A> |
| <BR> |
| <A NAME="TOC36" HREF="bashref.html#SEC36">3.5.7 Word Splitting</A> |
| <BR> |
| <A NAME="TOC37" HREF="bashref.html#SEC37">3.5.8 Filename Expansion</A> |
| <BR> |
| <UL> |
| <A NAME="TOC38" HREF="bashref.html#SEC38">3.5.8.1 Pattern Matching</A> |
| <BR> |
| </UL> |
| <A NAME="TOC39" HREF="bashref.html#SEC39">3.5.9 Quote Removal</A> |
| <BR> |
| </UL> |
| <A NAME="TOC40" HREF="bashref.html#SEC40">3.6 Redirections</A> |
| <BR> |
| <UL> |
| <A NAME="TOC41" HREF="bashref.html#SEC41">3.6.1 Redirecting Input</A> |
| <BR> |
| <A NAME="TOC42" HREF="bashref.html#SEC42">3.6.2 Redirecting Output</A> |
| <BR> |
| <A NAME="TOC43" HREF="bashref.html#SEC43">3.6.3 Appending Redirected Output</A> |
| <BR> |
| <A NAME="TOC44" HREF="bashref.html#SEC44">3.6.4 Redirecting Standard Output and Standard Error</A> |
| <BR> |
| <A NAME="TOC45" HREF="bashref.html#SEC45">3.6.5 Appending Standard Output and Standard Error</A> |
| <BR> |
| <A NAME="TOC46" HREF="bashref.html#SEC46">3.6.6 Here Documents</A> |
| <BR> |
| <A NAME="TOC47" HREF="bashref.html#SEC47">3.6.7 Here Strings</A> |
| <BR> |
| <A NAME="TOC48" HREF="bashref.html#SEC48">3.6.8 Duplicating File Descriptors</A> |
| <BR> |
| <A NAME="TOC49" HREF="bashref.html#SEC49">3.6.9 Moving File Descriptors</A> |
| <BR> |
| <A NAME="TOC50" HREF="bashref.html#SEC50">3.6.10 Opening File Descriptors for Reading and Writing</A> |
| <BR> |
| </UL> |
| <A NAME="TOC51" HREF="bashref.html#SEC51">3.7 Executing Commands</A> |
| <BR> |
| <UL> |
| <A NAME="TOC52" HREF="bashref.html#SEC52">3.7.1 Simple Command Expansion</A> |
| <BR> |
| <A NAME="TOC53" HREF="bashref.html#SEC53">3.7.2 Command Search and Execution</A> |
| <BR> |
| <A NAME="TOC54" HREF="bashref.html#SEC54">3.7.3 Command Execution Environment</A> |
| <BR> |
| <A NAME="TOC55" HREF="bashref.html#SEC55">3.7.4 Environment</A> |
| <BR> |
| <A NAME="TOC56" HREF="bashref.html#SEC56">3.7.5 Exit Status</A> |
| <BR> |
| <A NAME="TOC57" HREF="bashref.html#SEC57">3.7.6 Signals</A> |
| <BR> |
| </UL> |
| <A NAME="TOC58" HREF="bashref.html#SEC58">3.8 Shell Scripts</A> |
| <BR> |
| </UL> |
| <A NAME="TOC59" HREF="bashref.html#SEC59">4. Shell Builtin Commands</A> |
| <BR> |
| <UL> |
| <A NAME="TOC60" HREF="bashref.html#SEC60">4.1 Bourne Shell Builtins</A> |
| <BR> |
| <A NAME="TOC61" HREF="bashref.html#SEC61">4.2 Bash Builtin Commands</A> |
| <BR> |
| <A NAME="TOC62" HREF="bashref.html#SEC62">4.3 Modifying Shell Behavior</A> |
| <BR> |
| <UL> |
| <A NAME="TOC63" HREF="bashref.html#SEC63">4.3.1 The Set Builtin</A> |
| <BR> |
| <A NAME="TOC64" HREF="bashref.html#SEC64">4.3.2 The Shopt Builtin</A> |
| <BR> |
| </UL> |
| <A NAME="TOC65" HREF="bashref.html#SEC65">4.4 Special Builtins</A> |
| <BR> |
| </UL> |
| <A NAME="TOC66" HREF="bashref.html#SEC66">5. Shell Variables</A> |
| <BR> |
| <UL> |
| <A NAME="TOC67" HREF="bashref.html#SEC67">5.1 Bourne Shell Variables</A> |
| <BR> |
| <A NAME="TOC68" HREF="bashref.html#SEC68">5.2 Bash Variables</A> |
| <BR> |
| </UL> |
| <A NAME="TOC69" HREF="bashref.html#SEC69">6. Bash Features</A> |
| <BR> |
| <UL> |
| <A NAME="TOC70" HREF="bashref.html#SEC70">6.1 Invoking Bash</A> |
| <BR> |
| <A NAME="TOC71" HREF="bashref.html#SEC71">6.2 Bash Startup Files</A> |
| <BR> |
| <A NAME="TOC79" HREF="bashref.html#SEC79">6.3 Interactive Shells</A> |
| <BR> |
| <UL> |
| <A NAME="TOC80" HREF="bashref.html#SEC80">6.3.1 What is an Interactive Shell?</A> |
| <BR> |
| <A NAME="TOC81" HREF="bashref.html#SEC81">6.3.2 Is this Shell Interactive?</A> |
| <BR> |
| <A NAME="TOC82" HREF="bashref.html#SEC82">6.3.3 Interactive Shell Behavior</A> |
| <BR> |
| </UL> |
| <A NAME="TOC83" HREF="bashref.html#SEC83">6.4 Bash Conditional Expressions</A> |
| <BR> |
| <A NAME="TOC84" HREF="bashref.html#SEC84">6.5 Shell Arithmetic</A> |
| <BR> |
| <A NAME="TOC85" HREF="bashref.html#SEC85">6.6 Aliases</A> |
| <BR> |
| <A NAME="TOC86" HREF="bashref.html#SEC86">6.7 Arrays</A> |
| <BR> |
| <A NAME="TOC87" HREF="bashref.html#SEC87">6.8 The Directory Stack</A> |
| <BR> |
| <UL> |
| <A NAME="TOC88" HREF="bashref.html#SEC88">6.8.1 Directory Stack Builtins</A> |
| <BR> |
| </UL> |
| <A NAME="TOC89" HREF="bashref.html#SEC89">6.9 Controlling the Prompt</A> |
| <BR> |
| <A NAME="TOC90" HREF="bashref.html#SEC90">6.10 The Restricted Shell</A> |
| <BR> |
| <A NAME="TOC91" HREF="bashref.html#SEC91">6.11 Bash POSIX Mode</A> |
| <BR> |
| </UL> |
| <A NAME="TOC92" HREF="bashref.html#SEC92">7. Job Control</A> |
| <BR> |
| <UL> |
| <A NAME="TOC93" HREF="bashref.html#SEC93">7.1 Job Control Basics</A> |
| <BR> |
| <A NAME="TOC94" HREF="bashref.html#SEC94">7.2 Job Control Builtins</A> |
| <BR> |
| <A NAME="TOC95" HREF="bashref.html#SEC95">7.3 Job Control Variables</A> |
| <BR> |
| </UL> |
| <A NAME="TOC96" HREF="bashref.html#SEC96">8. Command Line Editing</A> |
| <BR> |
| <UL> |
| <A NAME="TOC97" HREF="bashref.html#SEC97">8.1 Introduction to Line Editing</A> |
| <BR> |
| <A NAME="TOC98" HREF="bashref.html#SEC98">8.2 Readline Interaction</A> |
| <BR> |
| <UL> |
| <A NAME="TOC99" HREF="bashref.html#SEC99">8.2.1 Readline Bare Essentials</A> |
| <BR> |
| <A NAME="TOC100" HREF="bashref.html#SEC100">8.2.2 Readline Movement Commands</A> |
| <BR> |
| <A NAME="TOC101" HREF="bashref.html#SEC101">8.2.3 Readline Killing Commands</A> |
| <BR> |
| <A NAME="TOC102" HREF="bashref.html#SEC102">8.2.4 Readline Arguments</A> |
| <BR> |
| <A NAME="TOC103" HREF="bashref.html#SEC103">8.2.5 Searching for Commands in the History</A> |
| <BR> |
| </UL> |
| <A NAME="TOC104" HREF="bashref.html#SEC104">8.3 Readline Init File</A> |
| <BR> |
| <UL> |
| <A NAME="TOC105" HREF="bashref.html#SEC105">8.3.1 Readline Init File Syntax</A> |
| <BR> |
| <A NAME="TOC106" HREF="bashref.html#SEC106">8.3.2 Conditional Init Constructs</A> |
| <BR> |
| <A NAME="TOC107" HREF="bashref.html#SEC107">8.3.3 Sample Init File</A> |
| <BR> |
| </UL> |
| <A NAME="TOC108" HREF="bashref.html#SEC108">8.4 Bindable Readline Commands</A> |
| <BR> |
| <UL> |
| <A NAME="TOC109" HREF="bashref.html#SEC109">8.4.1 Commands For Moving</A> |
| <BR> |
| <A NAME="TOC110" HREF="bashref.html#SEC110">8.4.2 Commands For Manipulating The History</A> |
| <BR> |
| <A NAME="TOC111" HREF="bashref.html#SEC111">8.4.3 Commands For Changing Text</A> |
| <BR> |
| <A NAME="TOC112" HREF="bashref.html#SEC112">8.4.4 Killing And Yanking</A> |
| <BR> |
| <A NAME="TOC113" HREF="bashref.html#SEC113">8.4.5 Specifying Numeric Arguments</A> |
| <BR> |
| <A NAME="TOC114" HREF="bashref.html#SEC114">8.4.6 Letting Readline Type For You</A> |
| <BR> |
| <A NAME="TOC115" HREF="bashref.html#SEC115">8.4.7 Keyboard Macros</A> |
| <BR> |
| <A NAME="TOC116" HREF="bashref.html#SEC116">8.4.8 Some Miscellaneous Commands</A> |
| <BR> |
| </UL> |
| <A NAME="TOC117" HREF="bashref.html#SEC117">8.5 Readline vi Mode</A> |
| <BR> |
| <A NAME="TOC118" HREF="bashref.html#SEC118">8.6 Programmable Completion</A> |
| <BR> |
| <A NAME="TOC119" HREF="bashref.html#SEC119">8.7 Programmable Completion Builtins</A> |
| <BR> |
| <A NAME="TOC120" HREF="bashref.html#SEC120">8.8 A Programmable Completion Example</A> |
| <BR> |
| </UL> |
| <A NAME="TOC121" HREF="bashref.html#SEC121">9. Using History Interactively</A> |
| <BR> |
| <UL> |
| <A NAME="TOC122" HREF="bashref.html#SEC122">9.1 Bash History Facilities</A> |
| <BR> |
| <A NAME="TOC123" HREF="bashref.html#SEC123">9.2 Bash History Builtins</A> |
| <BR> |
| <A NAME="TOC124" HREF="bashref.html#SEC124">9.3 History Expansion</A> |
| <BR> |
| <UL> |
| <A NAME="TOC125" HREF="bashref.html#SEC125">9.3.1 Event Designators</A> |
| <BR> |
| <A NAME="TOC126" HREF="bashref.html#SEC126">9.3.2 Word Designators</A> |
| <BR> |
| <A NAME="TOC127" HREF="bashref.html#SEC127">9.3.3 Modifiers</A> |
| <BR> |
| </UL> |
| </UL> |
| <A NAME="TOC128" HREF="bashref.html#SEC128">10. Installing Bash</A> |
| <BR> |
| <UL> |
| <A NAME="TOC129" HREF="bashref.html#SEC129">10.1 Basic Installation</A> |
| <BR> |
| <A NAME="TOC130" HREF="bashref.html#SEC130">10.2 Compilers and Options</A> |
| <BR> |
| <A NAME="TOC131" HREF="bashref.html#SEC131">10.3 Compiling For Multiple Architectures</A> |
| <BR> |
| <A NAME="TOC132" HREF="bashref.html#SEC132">10.4 Installation Names</A> |
| <BR> |
| <A NAME="TOC133" HREF="bashref.html#SEC133">10.5 Specifying the System Type</A> |
| <BR> |
| <A NAME="TOC134" HREF="bashref.html#SEC134">10.6 Sharing Defaults</A> |
| <BR> |
| <A NAME="TOC135" HREF="bashref.html#SEC135">10.7 Operation Controls</A> |
| <BR> |
| <A NAME="TOC136" HREF="bashref.html#SEC136">10.8 Optional Features</A> |
| <BR> |
| </UL> |
| <A NAME="TOC137" HREF="bashref.html#SEC137">A. Reporting Bugs</A> |
| <BR> |
| <A NAME="TOC138" HREF="bashref.html#SEC138">B. Major Differences From The Bourne Shell</A> |
| <BR> |
| <UL> |
| <A NAME="TOC139" HREF="bashref.html#SEC139">B.1 Implementation Differences From The SVR4.2 Shell</A> |
| <BR> |
| </UL> |
| <A NAME="TOC140" HREF="bashref.html#SEC140">C. GNU Free Documentation License</A> |
| <BR> |
| <A NAME="TOC142" HREF="bashref.html#SEC142">D. Indexes</A> |
| <BR> |
| <UL> |
| <A NAME="TOC143" HREF="bashref.html#SEC143">D.1 Index of Shell Builtin Commands</A> |
| <BR> |
| <A NAME="TOC144" HREF="bashref.html#SEC144">D.2 Index of Shell Reserved Words</A> |
| <BR> |
| <A NAME="TOC145" HREF="bashref.html#SEC145">D.3 Parameter and Variable Index</A> |
| <BR> |
| <A NAME="TOC146" HREF="bashref.html#SEC146">D.4 Function Index</A> |
| <BR> |
| <A NAME="TOC147" HREF="bashref.html#SEC147">D.5 Concept Index</A> |
| <BR> |
| </UL> |
| </UL> |
| <HR SIZE=1> |
| <A NAME="SEC_OVERVIEW"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1>Short Table of Contents</H1> |
| <BLOCKQUOTE> |
| <A NAME="TOC1" HREF="bashref.html#SEC1">1. Introduction</A> |
| <BR> |
| <A NAME="TOC4" HREF="bashref.html#SEC4">2. Definitions</A> |
| <BR> |
| <A NAME="TOC5" HREF="bashref.html#SEC5">3. Basic Shell Features</A> |
| <BR> |
| <A NAME="TOC59" HREF="bashref.html#SEC59">4. Shell Builtin Commands</A> |
| <BR> |
| <A NAME="TOC66" HREF="bashref.html#SEC66">5. Shell Variables</A> |
| <BR> |
| <A NAME="TOC69" HREF="bashref.html#SEC69">6. Bash Features</A> |
| <BR> |
| <A NAME="TOC92" HREF="bashref.html#SEC92">7. Job Control</A> |
| <BR> |
| <A NAME="TOC96" HREF="bashref.html#SEC96">8. Command Line Editing</A> |
| <BR> |
| <A NAME="TOC121" HREF="bashref.html#SEC121">9. Using History Interactively</A> |
| <BR> |
| <A NAME="TOC128" HREF="bashref.html#SEC128">10. Installing Bash</A> |
| <BR> |
| <A NAME="TOC137" HREF="bashref.html#SEC137">A. Reporting Bugs</A> |
| <BR> |
| <A NAME="TOC138" HREF="bashref.html#SEC138">B. Major Differences From The Bourne Shell</A> |
| <BR> |
| <A NAME="TOC140" HREF="bashref.html#SEC140">C. GNU Free Documentation License</A> |
| <BR> |
| <A NAME="TOC142" HREF="bashref.html#SEC142">D. Indexes</A> |
| <BR> |
| |
| </BLOCKQUOTE> |
| <HR SIZE=1> |
| <A NAME="SEC_About"></A> |
| <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0> |
| <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top">Top</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Contents">Contents</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC142">Index</A>]</TD> |
| <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD> |
| </TR></TABLE> |
| <H1>About this document</H1> |
| This document was generated by <I>Chet Ramey</I> on <I>February, 24 2014</I> |
| using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html |
| "><I>texi2html</I></A> |
| <P></P> |
| The buttons in the navigation panels have the following meaning: |
| <P></P> |
| <table border = "1"> |
| <TR> |
| <TH> Button </TH> |
| <TH> Name </TH> |
| <TH> Go to </TH> |
| <TH> From 1.2.3 go to</TH> |
| </TR> |
| <TR> |
| <TD ALIGN="CENTER"> |
| [ < ] </TD> |
| <TD ALIGN="CENTER"> |
| Back |
| </TD> |
| <TD> |
| previous section in reading order |
| </TD> |
| <TD> |
| 1.2.2 |
| </TD> |
| </TR> |
| <TR> |
| <TD ALIGN="CENTER"> |
| [ > ] </TD> |
| <TD ALIGN="CENTER"> |
| Forward |
| </TD> |
| <TD> |
| next section in reading order |
| </TD> |
| <TD> |
| 1.2.4 |
| </TD> |
| </TR> |
| <TR> |
| <TD ALIGN="CENTER"> |
| [ << ] </TD> |
| <TD ALIGN="CENTER"> |
| FastBack |
| </TD> |
| <TD> |
| previous or up-and-previous section |
| </TD> |
| <TD> |
| 1.1 |
| </TD> |
| </TR> |
| <TR> |
| <TD ALIGN="CENTER"> |
| [ Up ] </TD> |
| <TD ALIGN="CENTER"> |
| Up |
| </TD> |
| <TD> |
| up section |
| </TD> |
| <TD> |
| 1.2 |
| </TD> |
| </TR> |
| <TR> |
| <TD ALIGN="CENTER"> |
| [ >> ] </TD> |
| <TD ALIGN="CENTER"> |
| FastForward |
| </TD> |
| <TD> |
| next or up-and-next section |
| </TD> |
| <TD> |
| 1.3 |
| </TD> |
| </TR> |
| <TR> |
| <TD ALIGN="CENTER"> |
| [Top] </TD> |
| <TD ALIGN="CENTER"> |
| Top |
| </TD> |
| <TD> |
| cover (top) of document |
| </TD> |
| <TD> |
| |
| </TD> |
| </TR> |
| <TR> |
| <TD ALIGN="CENTER"> |
| [Contents] </TD> |
| <TD ALIGN="CENTER"> |
| Contents |
| </TD> |
| <TD> |
| table of contents |
| </TD> |
| <TD> |
| |
| </TD> |
| </TR> |
| <TR> |
| <TD ALIGN="CENTER"> |
| [Index] </TD> |
| <TD ALIGN="CENTER"> |
| Index |
| </TD> |
| <TD> |
| concept index |
| </TD> |
| <TD> |
| |
| </TD> |
| </TR> |
| <TR> |
| <TD ALIGN="CENTER"> |
| [ ? ] </TD> |
| <TD ALIGN="CENTER"> |
| About |
| </TD> |
| <TD> |
| this page |
| </TD> |
| <TD> |
| |
| </TD> |
| </TR> |
| </TABLE> |
| <P></P> |
| where the <STRONG> Example </STRONG> assumes that the current position |
| is at <STRONG> Subsubsection One-Two-Three </STRONG> of a document of |
| the following structure: |
| <UL> |
| <LI> 1. Section One </LI> |
| <UL> |
| <LI>1.1 Subsection One-One</LI> |
| <UL> |
| <LI> ... </LI> |
| </UL> |
| <LI>1.2 Subsection One-Two</LI> |
| <UL> |
| <LI>1.2.1 Subsubsection One-Two-One |
| </LI><LI>1.2.2 Subsubsection One-Two-Two |
| </LI><LI>1.2.3 Subsubsection One-Two-Three <STRONG> |
| <== Current Position </STRONG> |
| </LI><LI>1.2.4 Subsubsection One-Two-Four |
| </LI></UL> |
| <LI>1.3 Subsection One-Three</LI> |
| <UL> |
| <LI> ... </LI> |
| </UL> |
| <LI>1.4 Subsection One-Four</LI> |
| </UL> |
| </UL> |
| |
| <HR SIZE=1> |
| <BR> |
| <FONT SIZE="-1"> |
| This document was generated |
| by <I>Chet Ramey</I> on <I>February, 24 2014</I> |
| using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html |
| "><I>texi2html</I></A> |
| |
| </BODY> |
| </HTML> |