15955 lines
754 KiB
HTML
15955 lines
754 KiB
HTML
<HTML>
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<!-- Created on February, 5 2009 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#SEC140">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.0, 29 December 2008).
|
|
</P><P>
|
|
|
|
This is Edition 4.0, last updated 29 December 2008,
|
|
of <CITE>The GNU Bash Reference Manual</CITE>,
|
|
for <CODE>Bash</CODE>, Version 4.0.
|
|
</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 based upon which one of these other shells inspired the
|
|
feature.
|
|
</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#SEC58">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#SEC65">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#SEC68">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#SEC91">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#SEC95">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#SEC119">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#SEC126">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#SEC135">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#SEC136">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#SEC138">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#SEC140">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#SEC140">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#SEC140">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#SEC140">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#SEC140">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#SEC39">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#SEC58"> << </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#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#SEC140">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#SEC24">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#SEC25">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#SEC28">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#SEC39">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#SEC50">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#SEC57">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#SEC140">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#SEC140">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#SEC57">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#SEC69">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#SEC84">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#SEC28">3.5 Shell Expansions</A>), breaking
|
|
the expanded tokens into lists of filenames (see section <A HREF="bashref.html#SEC36">3.5.8 Filename Expansion</A>)
|
|
and commands and arguments.
|
|
<P>
|
|
|
|
<LI>
|
|
Performs any necessary redirections (see section <A HREF="bashref.html#SEC39">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#SEC50">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#SEC55">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#SEC140">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#SEC122">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#SEC120">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#SEC140">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#SEC140">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#SEC140">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#SEC28">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#SEC31">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#SEC140">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>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>\<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>\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#SEC140">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#SEC140">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#SEC63">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#SEC78">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#SEC24"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC24"> >> </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#SEC140">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>
|
|
</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#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#SEC24"> >> </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#SEC140">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#SEC55">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#SEC24"> >> </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#SEC140">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>[<CODE>time</CODE> [<CODE>-p</CODE>]] [<CODE>!</CODE>] <VAR>command1</VAR> [ [<CODE>|</CODE> or <CODE>|&</CODE>] <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, the standard error of <VAR>command1</VAR> 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 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.
|
|
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#SEC67">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>
|
|
|
|
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#SEC53">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#SEC62">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#SEC24"> >> </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#SEC140">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#SEC91">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#SEC140">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#SEC39">3.6 Redirections</A>) associated with a compound command
|
|
apply to all commands within that compound command unless explicitly overridden.
|
|
</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#SEC140">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:
|
|
<TABLE><tr><td> </td><td class=example><pre>until <VAR>test-commands</VAR>; do <VAR>consequent-commands</VAR>; done
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>while</CODE>
|
|
<DD><A NAME="IDX30"></A>
|
|
The syntax of the <CODE>while</CODE> command is:
|
|
<TABLE><tr><td> </td><td class=example><pre>while <VAR>test-commands</VAR>; do <VAR>consequent-commands</VAR>; done
|
|
</pre></td></tr></table><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>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#SEC27">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>First, the arithmetic expression <VAR>expr1</VAR> is evaluated according
|
|
to the rules described below (see section <A HREF="bashref.html#SEC83">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>list</VAR>
|
|
that is executed, or false if any of the expressions is invalid.
|
|
</P><P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
The <CODE>break</CODE> and <CODE>continue</CODE> builtins (see section <A HREF="bashref.html#SEC59">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#SEC140">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><CODE>case <VAR>word</VAR> in [ [(] <VAR>pattern</VAR> [| <VAR>pattern</VAR>]<small>...</small>) <VAR>command-list</VAR> ;;]<small>...</small> esac</CODE>
|
|
</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#SEC63">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.
|
|
</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#SEC83">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#SEC60">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#SEC82">6.4 Bash Conditional Expressions</A>.
|
|
Word splitting and filename expansion are not performed on the words
|
|
between the <SAMP>`[['</SAMP> and <SAMP>`]]'</SAMP>; 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 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#SEC37">3.5.8.1 Pattern Matching</A>.
|
|
If the shell option <CODE>nocasematch</CODE>
|
|
(see the description of <CODE>shopt</CODE> in <A HREF="bashref.html#SEC63">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 it 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#SEC63">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 it 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>
|
|
|
|
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>
|
|
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.
|
|
<P>
|
|
|
|
</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#SEC140">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#SEC53">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#SEC24"> >> </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#SEC140">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><CODE>coproc</CODE> [<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 coproc is executed, the shell creates an array variable
|
|
(see section <A HREF="bashref.html#SEC85">6.7 Arrays</A>)
|
|
named <VAR>NAME</VAR> in the context of the executing shell.
|
|
The standard output of <VAR>command</VAR>
|
|
is connected via a pipe to a file descriptor in the executing shell,
|
|
and that file descriptor is assigned to <VAR>NAME</VAR>[0].
|
|
The standard input of <VAR>command</VAR>
|
|
is connected via a pipe to a file descriptor in the executing shell,
|
|
and that file descriptor is assigned to <VAR>NAME</VAR>[1].
|
|
This pipe is established before any redirections specified by the
|
|
command (see section <A HREF="bashref.html#SEC39">3.6 Redirections</A>).
|
|
The file descriptors can be utilized as arguments to shell commands
|
|
and redirections using standard word expansions.
|
|
</P><P>
|
|
|
|
The process id of the shell spawned to execute the coprocess is
|
|
available as the value of the variable <VAR>NAME</VAR>_PID.
|
|
The <CODE>wait</CODE>
|
|
builtin command may be used to wait for the coprocess to terminate.
|
|
</P><P>
|
|
|
|
The return status of a coprocess is the exit status of <VAR>command</VAR>.
|
|
</P><P>
|
|
|
|
<A NAME="Shell Functions"></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#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#SEC140">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::SEC24::-->
|
|
<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>[ <CODE>function</CODE> ] <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.
|
|
Any redirections (see section <A HREF="bashref.html#SEC39">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#SEC59">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#SEC26">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.
|
|
All other aspects of the shell execution
|
|
environment are identical between a function and its caller
|
|
with the exception that 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).
|
|
See section <A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A>, for the description of the
|
|
<CODE>trap</CODE> builtin.
|
|
</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> or <CODE>typeset</CODE>
|
|
builtin commands (see section <A HREF="bashref.html#SEC60">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#SEC59">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. No limit is placed on the number of
|
|
recursive calls.
|
|
</P><P>
|
|
|
|
<A NAME="Shell Parameters"></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#SEC28"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC28"> >> </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#SEC140">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::SEC25::-->
|
|
<P>
|
|
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC26">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#SEC27">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#SEC60">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#SEC33">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.
|
|
</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#SEC85">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 integer 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#SEC85">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 NAME="Positional 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#SEC28"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC28"> >> </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#SEC140">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::SEC26::-->
|
|
<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#SEC58">4. Shell Builtin Commands</A>).
|
|
The positional parameters are
|
|
temporarily replaced when a shell function is executed
|
|
(see section <A HREF="bashref.html#SEC24">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="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#SEC28"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC25"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC28"> >> </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#SEC140">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::SEC27::-->
|
|
<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>
|
|
Expands to the positional parameters, starting from one. 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="IDX48"></A>
|
|
<DT><CODE>@</CODE>
|
|
<DD><A NAME="IDX49"></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="IDX50"></A>
|
|
<DT><CODE>#</CODE>
|
|
<DD><A NAME="IDX51"></A>
|
|
Expands to the number of positional parameters in decimal.
|
|
<P>
|
|
|
|
<A NAME="IDX52"></A>
|
|
<DT><CODE>?</CODE>
|
|
<DD><A NAME="IDX53"></A>
|
|
Expands to the exit status of the most recently executed foreground
|
|
pipeline.
|
|
<P>
|
|
|
|
<A NAME="IDX54"></A>
|
|
<DT><CODE>-</CODE>
|
|
<DD><A NAME="IDX55"></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="IDX56"></A>
|
|
<DT><CODE>$</CODE>
|
|
<DD><A NAME="IDX57"></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="IDX58"></A>
|
|
<DT><CODE>!</CODE>
|
|
<DD><A NAME="IDX59"></A>
|
|
Expands to the process ID of the most recently executed background
|
|
(asynchronous) command.
|
|
<P>
|
|
|
|
<A NAME="IDX60"></A>
|
|
<DT><CODE>0</CODE>
|
|
<DD><A NAME="IDX61"></A>
|
|
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#SEC57">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#SEC69">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="IDX62"></A>
|
|
<DT><CODE>_</CODE>
|
|
<DD><A NAME="IDX63"></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="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#SEC39"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> 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#SEC140">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::SEC28::-->
|
|
<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:
|
|
<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#SEC29">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#SEC30">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#SEC31">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#SEC32">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#SEC33">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#SEC34">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#SEC35">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#SEC36">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#SEC38">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, variable, and 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 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#SEC27">3.4.2 Special Parameters</A>) and <CODE>"${<VAR>name</VAR>[@]}"</CODE>
|
|
(see section <A HREF="bashref.html#SEC85">6.7 Arrays</A>).
|
|
</P><P>
|
|
|
|
After all expansions, <CODE>quote removal</CODE> (see section <A HREF="bashref.html#SEC38">3.5.9 Quote Removal</A>)
|
|
is performed.
|
|
</P><P>
|
|
|
|
<A NAME="Brace Expansion"></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#SEC39"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC28"> 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#SEC140">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::SEC29::-->
|
|
<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#SEC36">3.5.8 Filename Expansion</A>),
|
|
but the file names 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 seqeunce 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. 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="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#SEC31"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC28"> 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#SEC140">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::SEC30::-->
|
|
<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#SEC86">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 file names 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>
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="Shell Parameter 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#SEC28"> 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#SEC140">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::SEC31::-->
|
|
<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 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,
|
|
a level of variable indirection is introduced.
|
|
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, 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>Expands to up to <VAR>length</VAR> characters of <VAR>parameter</VAR>
|
|
starting at the character specified by <VAR>offset</VAR>.
|
|
If <VAR>length</VAR> is omitted, expands to the substring of
|
|
<VAR>parameter</VAR> starting at the character specified by <VAR>offset</VAR>.
|
|
<VAR>length</VAR> and <VAR>offset</VAR> are arithmetic expressions
|
|
(see section <A HREF="bashref.html#SEC83">6.5 Shell Arithmetic</A>).
|
|
This is referred to as Substring Expansion.
|
|
<P>
|
|
|
|
<VAR>length</VAR> must evaluate to a number greater than or equal to zero.
|
|
If <VAR>offset</VAR> evaluates to a number less than zero, the value
|
|
is used as an offset from the end of the value of <VAR>parameter</VAR>.
|
|
If <VAR>parameter</VAR> is <SAMP>`@'</SAMP>, the result is <VAR>length</VAR> positional
|
|
parameters beginning at <VAR>offset</VAR>.
|
|
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.
|
|
Substring expansion applied to an associative array produces undefined
|
|
results.
|
|
</P><P>
|
|
|
|
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.
|
|
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.
|
|
<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#SEC36">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
|
|
pathname expansion.
|
|
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.
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="Command Substitution"></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#SEC28"> 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#SEC140">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::SEC32::-->
|
|
<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="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#SEC28"> 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#SEC140">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::SEC33::-->
|
|
<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 expansion, command
|
|
substitution, and quote removal.
|
|
Arithmetic expansions may be nested.
|
|
</P><P>
|
|
|
|
The evaluation is performed according to the rules listed below
|
|
(see section <A HREF="bashref.html#SEC83">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="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#SEC28"> 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#SEC140">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::SEC34::-->
|
|
<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="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#SEC28"> 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#SEC140">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::SEC35::-->
|
|
<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 on these characters.
|
|
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="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#SEC38"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC28"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC38"> >> </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#SEC140">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::SEC36::-->
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC37">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="IDX64"></A>
|
|
<A NAME="IDX65"></A>
|
|
<A NAME="IDX66"></A>
|
|
<A NAME="IDX67"></A>
|
|
<P>
|
|
|
|
After word splitting, unless the <SAMP>`-f'</SAMP> option has been set
|
|
(see section <A HREF="bashref.html#SEC62">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
|
|
file names matching the pattern. If no matching file names 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 generation, 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 file name, 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#SEC63">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="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#SEC38"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC36"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC38"> >> </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#SEC140">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::SEC37::-->
|
|
<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 sorts 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 value of the <CODE>LC_COLLATE</CODE> shell variable,
|
|
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>.
|
|
</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="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#SEC28"> 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#SEC140">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::SEC38::-->
|
|
<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="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#SEC50"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">Index</A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
|
|
</TR></TABLE>
|
|
<H2> 3.6 Redirections </H2>
|
|
<!--docid::SEC39::-->
|
|
<P>
|
|
|
|
Before a command is executed, its input and output
|
|
may be <VAR>redirected</VAR>
|
|
using a special notation interpreted by the shell.
|
|
Redirection may also be used to open and close files for 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>
|
|
|
|
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 duplicated as 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 a TCP
|
|
connection to the corresponding 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 a UDP
|
|
connection to the corresponding socket.
|
|
<P>
|
|
|
|
</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="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#SEC50"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC39"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">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::SEC40::-->
|
|
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="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#SEC42"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC39"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">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::SEC41::-->
|
|
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="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#SEC39"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">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::SEC42::-->
|
|
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="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#SEC39"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">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::SEC43::-->
|
|
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></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#SEC39"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">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::SEC44::-->
|
|
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></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#SEC39"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">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::SEC45::-->
|
|
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 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. In the latter
|
|
case, 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="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#SEC39"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">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::SEC46::-->
|
|
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> is expanded and supplied to the command on its standard
|
|
input.
|
|
</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#SEC39"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">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::SEC47::-->
|
|
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.
|
|
As a special case, if <VAR>n</VAR> is omitted, and <VAR>word</VAR> does not
|
|
expand to one or more digits, the standard output and standard
|
|
error are redirected as described previously.
|
|
</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#SEC50"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC39"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">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::SEC48::-->
|
|
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="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#SEC41"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC39"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> >> </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#SEC140">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::SEC49::-->
|
|
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="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#SEC57"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC5"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC57"> >> </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#SEC140">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::SEC50::-->
|
|
<P>
|
|
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC51">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#SEC52">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#SEC53">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#SEC54">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#SEC55">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#SEC56">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="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#SEC57"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC57"> >> </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#SEC140">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::SEC51::-->
|
|
<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#SEC28">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#SEC39">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="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#SEC53"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC50"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC57"> >> </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#SEC140">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::SEC52::-->
|
|
<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#SEC24">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#SEC59">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#SEC57">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="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#SEC50"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC57"> >> </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#SEC140">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::SEC53::-->
|
|
<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#SEC63">4.3.2 The Shopt Builtin</A>)
|
|
<P>
|
|
|
|
<LI>
|
|
shell aliases defined with <CODE>alias</CODE> (see section <A HREF="bashref.html#SEC84">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#SEC54">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="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#SEC50"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC57"> >> </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#SEC140">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::SEC54::-->
|
|
<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#SEC25">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#SEC62">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 path name of the command and passed to that
|
|
command in its environment.
|
|
</P><P>
|
|
|
|
<A NAME="Exit Status"></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#SEC50"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC57"> >> </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#SEC140">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::SEC55::-->
|
|
<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="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#SEC50"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC57"> >> </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#SEC140">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::SEC56::-->
|
|
<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#SEC91">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#SEC93">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#SEC63">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="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#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#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#SEC140">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::SEC57::-->
|
|
<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#SEC69">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#SEC59">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="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#SEC65"> << </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#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#SEC140">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::SEC58::-->
|
|
<P>
|
|
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC59">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#SEC60">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#SEC61">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#SEC64">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#SEC93">7.2 Job Control Builtins</A>), the directory stack
|
|
(see section <A HREF="bashref.html#SEC87">6.8.1 Directory Stack Builtins</A>), the command history
|
|
(see section <A HREF="bashref.html#SEC121">9.2 Bash History Builtins</A>), and the programmable completion
|
|
facilities (see section <A HREF="bashref.html#SEC118">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.
|
|
For example, the <CODE>:</CODE>, <CODE>true</CODE>, <CODE>false</CODE>, and <CODE>test</CODE>
|
|
builtins do not accept options.
|
|
</P><P>
|
|
|
|
<A NAME="Bourne Shell Builtins"></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#SEC58"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> 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#SEC140">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::SEC59::-->
|
|
<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="IDX68"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>: [<VAR>arguments</VAR>]
|
|
</pre></td></tr></table>Do nothing beyond expanding <VAR>arguments</VAR> and performing redirections.
|
|
The return status is zero.
|
|
<P>
|
|
|
|
<DT><CODE>. (a period)</CODE>
|
|
<DD><A NAME="IDX69"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>. <VAR>filename</VAR> [<VAR>arguments</VAR>]
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>break</CODE>
|
|
<DD><A NAME="IDX70"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>break [<VAR>n</VAR>]
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>cd</CODE>
|
|
<DD><A NAME="IDX71"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>cd [-L|-P] [<VAR>directory</VAR>]
|
|
</pre></td></tr></table>Change the current working directory to <VAR>directory</VAR>.
|
|
If <VAR>directory</VAR> is not given, the value of the <CODE>HOME</CODE> shell
|
|
variable is used.
|
|
If the shell variable <CODE>CDPATH</CODE> exists, it is used as a search path.
|
|
If <VAR>directory</VAR> begins with a slash, <CODE>CDPATH</CODE> is not used.
|
|
<P>
|
|
|
|
The <SAMP>`-P'</SAMP> option means to not follow symbolic links; symbolic
|
|
links are followed by default or with the <SAMP>`-L'</SAMP> option.
|
|
If <VAR>directory</VAR> is <SAMP>`-'</SAMP>, it is equivalent to <CODE>$OLDPWD</CODE>.
|
|
</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="IDX72"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>continue [<VAR>n</VAR>]
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>eval</CODE>
|
|
<DD><A NAME="IDX73"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>eval [<VAR>arguments</VAR>]
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>exec</CODE>
|
|
<DD><A NAME="IDX74"></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>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 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>
|
|
|
|
<DT><CODE>exit</CODE>
|
|
<DD><A NAME="IDX75"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>exit [<VAR>n</VAR>]
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>export</CODE>
|
|
<DD><A NAME="IDX76"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>export [-fn] [-p] [<VAR>name</VAR>[=<VAR>value</VAR>]]
|
|
</pre></td></tr></table>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 exported names 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>
|
|
|
|
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="IDX77"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>getopts <VAR>optstring</VAR> <VAR>name</VAR> [<VAR>args</VAR>]
|
|
</pre></td></tr></table><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 white space.
|
|
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>
|
|
|
|
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 <CODE>name</CODE> 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="IDX78"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>hash [-r] [-p <VAR>filename</VAR>] [-dt] [<VAR>name</VAR>]
|
|
</pre></td></tr></table>Remember the full pathnames of 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>.
|
|
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>
|
|
|
|
<DT><CODE>pwd</CODE>
|
|
<DD><A NAME="IDX79"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>pwd [-LP]
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>readonly</CODE>
|
|
<DD><A NAME="IDX80"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>readonly [-aApf] [<VAR>name</VAR>[=<VAR>value</VAR>]] <small>...</small>
|
|
</pre></td></tr></table>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 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 <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>
|
|
|
|
<DT><CODE>return</CODE>
|
|
<DD><A NAME="IDX81"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>return [<VAR>n</VAR>]
|
|
</pre></td></tr></table>Cause a shell function to exit with the return value <VAR>n</VAR>.
|
|
If <VAR>n</VAR> is not supplied, the return value is the exit status of the
|
|
last command executed in the function.
|
|
This may also be used to terminate execution of a script being executed
|
|
with the <CODE>.</CODE> (or <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.
|
|
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 used outside a function
|
|
and not during the execution of a script by <CODE>.</CODE> or <CODE>source</CODE>.
|
|
<P>
|
|
|
|
<DT><CODE>shift</CODE>
|
|
<DD><A NAME="IDX82"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>shift [<VAR>n</VAR>]
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>test</CODE>
|
|
<DD><DT><CODE>[</CODE>
|
|
<DD><A NAME="IDX83"></A>
|
|
<A NAME="IDX84"></A>
|
|
Evaluate a conditional expression <VAR>expr</VAR>.
|
|
Each operator and operand must be a separate argument.
|
|
Expressions are composed of the primaries described below in
|
|
<A HREF="bashref.html#SEC82">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>
|
|
|
|
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.
|
|
</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#SEC82">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>If the second argument is one of the binary conditional
|
|
operators (see section <A HREF="bashref.html#SEC82">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>
|
|
|
|
<DT><CODE>times</CODE>
|
|
<DD><A NAME="IDX85"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>times
|
|
</pre></td></tr></table>Print out the user and system times used by the shell and its children.
|
|
The return status is zero.
|
|
<P>
|
|
|
|
<DT><CODE>trap</CODE>
|
|
<DD><A NAME="IDX86"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>trap [-lp] [<VAR>arg</VAR>] [<VAR>sigspec</VAR> <small>...</small>]
|
|
</pre></td></tr></table>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.
|
|
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>extglob</CODE> option to the
|
|
<CODE>shopt</CODE> builtin (see section <A HREF="bashref.html#SEC63">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>ERR</CODE>, the command <VAR>arg</VAR>
|
|
is executed whenever a simple command has 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 in an <CODE>if</CODE> statement,
|
|
part of a command executed in a <CODE>&&</CODE> or <CODE>||</CODE> list,
|
|
or if the command's return
|
|
status is being inverted using <CODE>!</CODE>.
|
|
These are the same conditions obeyed by the <CODE>errexit</CODE> option.
|
|
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>
|
|
|
|
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 child process when it 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="IDX87"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>umask [-p] [-S] [<VAR>mode</VAR>]
|
|
</pre></td></tr></table>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>
|
|
|
|
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="IDX88"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>unset [-fv] [<VAR>name</VAR>]
|
|
</pre></td></tr></table>Each variable or function <VAR>name</VAR> is removed.
|
|
If no options are supplied, or the <SAMP>`-v'</SAMP> option is given, each
|
|
<VAR>name</VAR> refers to a shell variable.
|
|
If the <SAMP>`-f'</SAMP> option is given, the <VAR>name</VAR>s refer to shell
|
|
functions, and the function definition is removed.
|
|
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="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#SEC61"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> 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#SEC140">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::SEC60::-->
|
|
<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="IDX89"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>alias [<CODE>-p</CODE>] [<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#SEC84">6.6 Aliases</A>.
|
|
</P><P>
|
|
|
|
<DT><CODE>bind</CODE>
|
|
<DD><A NAME="IDX90"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>bind [-m <VAR>keymap</VAR>] [-lpsvPSV]
|
|
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#SEC95">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#SEC103">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.
|
|
</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="IDX91"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>builtin [<VAR>shell-builtin</VAR> [<VAR>args</VAR>]]
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>caller</CODE>
|
|
<DD><A NAME="IDX92"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>caller [<VAR>expr</VAR>]
|
|
</pre></td></tr></table>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>
|
|
|
|
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="IDX93"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>command [-pVv] <VAR>command</VAR> [<VAR>arguments</VAR> <small>...</small>]
|
|
</pre></td></tr></table>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>
|
|
|
|
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="IDX94"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>declare [-aAfFilrtux] [-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
|
|
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#SEC63">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>.
|
|
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#SEC85">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#SEC85">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#SEC83">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>-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. 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 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#SEC85">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="IDX95"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>echo [-neE] [<VAR>arg</VAR> <small>...</small>]
|
|
</pre></td></tr></table>Output the <VAR>arg</VAR>s, separated by spaces, terminated with a
|
|
newline.
|
|
The return status is always 0.
|
|
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>
|
|
|
|
<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>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)
|
|
</DL>
|
|
<P>
|
|
|
|
<DT><CODE>enable</CODE>
|
|
<DD><A NAME="IDX96"></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>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>
|
|
|
|
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#SEC64">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="IDX97"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>help [-dms] [<VAR>pattern</VAR>]
|
|
</pre></td></tr></table>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>
|
|
|
|
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="IDX98"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>let <VAR>expression</VAR> [<VAR>expression</VAR>]
|
|
</pre></td></tr></table>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#SEC83">6.5 Shell Arithmetic</A>. If the
|
|
last <VAR>expression</VAR> evaluates to 0, <CODE>let</CODE> returns 1;
|
|
otherwise 0 is returned.
|
|
<P>
|
|
|
|
<DT><CODE>local</CODE>
|
|
<DD><A NAME="IDX99"></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>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>
|
|
|
|
<DT><CODE>logout</CODE>
|
|
<DD><A NAME="IDX100"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>logout [<VAR>n</VAR>]
|
|
</pre></td></tr></table>Exit a login shell, returning a status of <VAR>n</VAR> to the shell's
|
|
parent.
|
|
<P>
|
|
|
|
<DT><CODE>mapfile</CODE>
|
|
<DD><A NAME="IDX101"></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>Read lines from the standard input into 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:
|
|
<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 line 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 as an additional argument.
|
|
<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, or <VAR>array</VAR> is invalid or unassignable.
|
|
</P><P>
|
|
|
|
<DT><CODE>printf</CODE>
|
|
<DD><A NAME="IDX102"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>printf [-v <VAR>var</VAR>] <VAR>format</VAR> [<VAR>arguments</VAR>]
|
|
</pre></td></tr></table>Write the formatted <VAR>arguments</VAR> to the standard output under the
|
|
control of the <VAR>format</VAR>.
|
|
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, <SAMP>`%b'</SAMP> 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),
|
|
and <SAMP>`%q'</SAMP> causes <CODE>printf</CODE> to output the
|
|
corresponding <VAR>argument</VAR> in a format that can be reused as shell input.
|
|
<P>
|
|
|
|
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 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="IDX103"></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>] [-p <VAR>prompt</VAR>] [-t <VAR>timeout</VAR>] [-u <VAR>fd</VAR>] [<VAR>name</VAR> <small>...</small>]
|
|
</pre></td></tr></table>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.
|
|
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), or an
|
|
invalid file descriptor is supplied as the argument to <SAMP>`-u'</SAMP>.
|
|
<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#SEC95">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.
|
|
<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 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 <VAR>timeout</VAR> is 0, <CODE>read</CODE> returns success if input is available on
|
|
the specified file descriptor, failure 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>.
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<DT><CODE>readarray</CODE>
|
|
<DD><A NAME="IDX104"></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>Read lines from the standard input into array variable <VAR>array</VAR>,
|
|
or from file descriptor <VAR>fd</VAR>
|
|
if the <SAMP>`-u'</SAMP> option is supplied.
|
|
<P>
|
|
|
|
A synonym for <CODE>mapfile</CODE>.
|
|
</P><P>
|
|
|
|
<DT><CODE>source</CODE>
|
|
<DD><A NAME="IDX105"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>source <VAR>filename</VAR>
|
|
</pre></td></tr></table>A synonym for <CODE>.</CODE> (see section <A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A>).
|
|
<P>
|
|
|
|
<DT><CODE>type</CODE>
|
|
<DD><A NAME="IDX106"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>type [-afptP] [<VAR>name</VAR> <small>...</small>]
|
|
</pre></td></tr></table>For each <VAR>name</VAR>, indicate how it would be interpreted if used as a
|
|
command name.
|
|
<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,
|
|
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="IDX107"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>typeset [-afFrxi] [-p] [<VAR>name</VAR>[=<VAR>value</VAR>] <small>...</small>]
|
|
</pre></td></tr></table>The <CODE>typeset</CODE> command is supplied for compatibility with the Korn
|
|
shell; however, it has been deprecated in favor of the <CODE>declare</CODE>
|
|
builtin command.
|
|
<P>
|
|
|
|
<DT><CODE>ulimit</CODE>
|
|
<DD><A NAME="IDX108"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>ulimit [-abcdefilmnpqrstuvxHST] [<VAR>limit</VAR>]
|
|
</pre></td></tr></table><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:
|
|
<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.
|
|
<P>
|
|
|
|
<DT><CODE>-n</CODE>
|
|
<DD>The maximum number of open file descriptors.
|
|
<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 process.
|
|
<P>
|
|
|
|
<DT><CODE>-x</CODE>
|
|
<DD>The maximum number of file locks.
|
|
<P>
|
|
|
|
<DT><CODE>-T</CODE>
|
|
<DD>The maximum number of threads.
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
If <VAR>limit</VAR> is given, it 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>`-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="IDX109"></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#SEC84">6.6 Aliases</A>.
|
|
</P><P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="Modifying Shell Behavior"></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#SEC64"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC64"> >> </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#SEC140">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::SEC61::-->
|
|
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC62">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#SEC63">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="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#SEC64"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC61"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC64"> >> </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#SEC140">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::SEC62::-->
|
|
<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="IDX110"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>set [--abefhkmnptuvxBCEHPT] [-o <VAR>option</VAR>] [<VAR>argument</VAR> <small>...</small>]
|
|
set [+abefhkmnptuvxBCEHPT] [+o <VAR>option</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 simple command (see section <A HREF="bashref.html#SEC16">3.2.1 Simple Commands</A>) exits
|
|
with a non-zero status, unless 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 a command executed in a <CODE>&&</CODE> or <CODE>||b</CODE> list,
|
|
any command in a pipeline but the last,
|
|
or if the command's return status is being inverted using <CODE>!</CODE>.
|
|
Failing simple commands that are part of shell functions or command lists
|
|
enclosed in braces or parentheses satisfying the above conditions do not
|
|
cause the shell to exit.
|
|
A trap on <CODE>ERR</CODE>, if set, is executed before the shell exits.
|
|
<P>
|
|
|
|
<DT><CODE>-f</CODE>
|
|
<DD>Disable file name generation (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#SEC91">7. Job Control</A>).
|
|
<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#SEC95">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#SEC120">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#SEC90">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>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 <CODE>-p</CODE> option is not supplied, these actions
|
|
are taken and the effective user id is set to the real user id.
|
|
If the <CODE>-p</CODE> 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 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#SEC29">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#SEC122">9.3 History Expansion</A>).
|
|
This option is on by default for interactive shells.
|
|
<P>
|
|
|
|
<DT><CODE>-P</CODE>
|
|
<DD>If set, do not follow 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="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#SEC64"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC61"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC64"> >> </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#SEC140">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::SEC63::-->
|
|
<P>
|
|
|
|
This builtin allows you to change additional shell optional behavior.
|
|
</P><P>
|
|
|
|
<DL COMPACT>
|
|
|
|
<DT><CODE>shopt</CODE>
|
|
<DD><A NAME="IDX111"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>shopt [-pqsu] [-o] [<VAR>optname</VAR> <small>...</small>]
|
|
</pre></td></tr></table>Toggle the values of variables controlling optional shell behavior.
|
|
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>
|
|
|
|
<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#SEC62">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, the display is limited to
|
|
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#SEC91">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 =~ operator.
|
|
<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#SEC84">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#SEC60">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#SEC67">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>ERROR</CODE> trap.
|
|
</OL>
|
|
<P>
|
|
|
|
<DT><CODE>extglob</CODE>
|
|
<DD>If set, the extended pattern matching features described above
|
|
(see section <A HREF="bashref.html#SEC37">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 pathname 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#SEC67">5.2 Bash Variables</A>, for a description of <CODE>FIGNORE</CODE>.
|
|
This option is enabled by default.
|
|
<P>
|
|
|
|
<DT><CODE>globstar</CODE>
|
|
<DD>If set, the pattern <SAMP>`**'</SAMP> used in a filename expansion context will
|
|
match a 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#SEC113">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#SEC56">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>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#SEC69">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#SEC117">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#SEC88">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#SEC89">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.
|
|
</P><P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="Special Builtins"></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#SEC58"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC58"> 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#SEC140">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::SEC64::-->
|
|
<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#SEC90">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="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#SEC68"> << </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#SEC68"> >> </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#SEC140">Index</A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
|
|
</TR></TABLE>
|
|
<H1> 5. Shell Variables </H1>
|
|
<!--docid::SEC65::-->
|
|
<P>
|
|
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC66">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#SEC67">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="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#SEC65"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC65"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> >> </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#SEC140">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::SEC66::-->
|
|
<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="IDX112"></A>
|
|
<DT><CODE>CDPATH</CODE>
|
|
<DD><A NAME="IDX113"></A>
|
|
A colon-separated list of directories used as a search path for
|
|
the <CODE>cd</CODE> builtin command.
|
|
<P>
|
|
|
|
<A NAME="IDX114"></A>
|
|
<DT><CODE>HOME</CODE>
|
|
<DD><A NAME="IDX115"></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#SEC30">3.5.2 Tilde Expansion</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX116"></A>
|
|
<DT><CODE>IFS</CODE>
|
|
<DD><A NAME="IDX117"></A>
|
|
A list of characters that separate fields; used when the shell splits
|
|
words as part of expansion.
|
|
<P>
|
|
|
|
<A NAME="IDX118"></A>
|
|
<DT><CODE>MAIL</CODE>
|
|
<DD><A NAME="IDX119"></A>
|
|
If this parameter is set to a filename and the <CODE>MAILPATH</CODE> variable
|
|
is not set, Bash informs the user of the arrival of mail in
|
|
the specified file.
|
|
<P>
|
|
|
|
<A NAME="IDX120"></A>
|
|
<DT><CODE>MAILPATH</CODE>
|
|
<DD><A NAME="IDX121"></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 file name 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="IDX122"></A>
|
|
<DT><CODE>OPTARG</CODE>
|
|
<DD><A NAME="IDX123"></A>
|
|
The value of the last option argument processed by the <CODE>getopts</CODE> builtin.
|
|
<P>
|
|
|
|
<A NAME="IDX124"></A>
|
|
<DT><CODE>OPTIND</CODE>
|
|
<DD><A NAME="IDX125"></A>
|
|
The index of the last option argument processed by the <CODE>getopts</CODE> builtin.
|
|
<P>
|
|
|
|
<A NAME="IDX126"></A>
|
|
<DT><CODE>PATH</CODE>
|
|
<DD><A NAME="IDX127"></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="IDX128"></A>
|
|
<DT><CODE>PS1</CODE>
|
|
<DD><A NAME="IDX129"></A>
|
|
The primary prompt string. The default value is <SAMP>`\s-\v\$ '</SAMP>.
|
|
See section <A HREF="bashref.html#SEC88">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="IDX130"></A>
|
|
<DT><CODE>PS2</CODE>
|
|
<DD><A NAME="IDX131"></A>
|
|
The secondary prompt string. The default value is <SAMP>`> '</SAMP>.
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="Bash 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#SEC65"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC65"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> >> </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#SEC140">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::SEC67::-->
|
|
<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#SEC94">7.3 Job Control Variables</A>).
|
|
</P><P>
|
|
|
|
<DL COMPACT>
|
|
|
|
<A NAME="IDX132"></A>
|
|
<DT><CODE>BASH</CODE>
|
|
<DD><A NAME="IDX133"></A>
|
|
The full pathname used to execute the current instance of Bash.
|
|
<P>
|
|
|
|
<A NAME="IDX134"></A>
|
|
<DT><CODE>BASHPID</CODE>
|
|
<DD><A NAME="IDX135"></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="IDX136"></A>
|
|
<DT><CODE>BASH_ALIASES</CODE>
|
|
<DD><A NAME="IDX137"></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#SEC59">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="IDX138"></A>
|
|
<DT><CODE>BASH_ARGC</CODE>
|
|
<DD><A NAME="IDX139"></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#SEC63">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="IDX140"></A>
|
|
<DT><CODE>BASH_ARGV</CODE>
|
|
<DD><A NAME="IDX141"></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#SEC63">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="IDX142"></A>
|
|
<DT><CODE>BASH_CMDS</CODE>
|
|
<DD><A NAME="IDX143"></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#SEC59">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="IDX144"></A>
|
|
<DT><CODE>BASH_COMMAND</CODE>
|
|
<DD><A NAME="IDX145"></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="IDX146"></A>
|
|
<DT><CODE>BASH_ENV</CODE>
|
|
<DD><A NAME="IDX147"></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#SEC70">6.2 Bash Startup Files</A>.
|
|
<P>
|
|
|
|
<A NAME="IDX148"></A>
|
|
<DT><CODE>BASH_EXECUTION_STRING</CODE>
|
|
<DD><A NAME="IDX149"></A>
|
|
The command argument to the <SAMP>`-c'</SAMP> invocation option.
|
|
<P>
|
|
|
|
<A NAME="IDX150"></A>
|
|
<DT><CODE>BASH_LINENO</CODE>
|
|
<DD><A NAME="IDX151"></A>
|
|
An array variable whose members are the line numbers in source files
|
|
corresponding to each member of <VAR>FUNCNAME</VAR>.
|
|
<CODE>${BASH_LINENO[$i]}</CODE> is the line number in the source file where
|
|
<CODE>${FUNCNAME[$i]}</CODE> was called (or <CODE>${BASH_LINENO[$i-1]}</CODE> if
|
|
referenced within another shell function).
|
|
The corresponding source file name is <CODE>${BASH_SOURCE[$i]}</CODE>.
|
|
Use <CODE>LINENO</CODE> to obtain the current line number.
|
|
<P>
|
|
|
|
<A NAME="IDX152"></A>
|
|
<DT><CODE>BASH_REMATCH</CODE>
|
|
<DD><A NAME="IDX153"></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="IDX154"></A>
|
|
<DT><CODE>BASH_SOURCE</CODE>
|
|
<DD><A NAME="IDX155"></A>
|
|
An array variable whose members are the source filenames corresponding
|
|
to the elements in the <CODE>FUNCNAME</CODE> array variable.
|
|
<P>
|
|
|
|
<A NAME="IDX156"></A>
|
|
<DT><CODE>BASH_SUBSHELL</CODE>
|
|
<DD><A NAME="IDX157"></A>
|
|
Incremented by one each time a subshell or subshell environment is spawned.
|
|
The initial value is 0.
|
|
<P>
|
|
|
|
<A NAME="IDX158"></A>
|
|
<DT><CODE>BASH_VERSINFO</CODE>
|
|
<DD><A NAME="IDX159"></A>
|
|
A readonly array variable (see section <A HREF="bashref.html#SEC85">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>.
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="IDX160"></A>
|
|
<DT><CODE>BASH_VERSION</CODE>
|
|
<DD><A NAME="IDX161"></A>
|
|
The version number of the current instance of Bash.
|
|
<P>
|
|
|
|
<A NAME="IDX162"></A>
|
|
<DT><CODE>COLUMNS</CODE>
|
|
<DD><A NAME="IDX163"></A>
|
|
Used by the <CODE>select</CODE> builtin command to determine the terminal width
|
|
when printing selection lists. Automatically set upon receipt of a
|
|
<CODE>SIGWINCH</CODE>.
|
|
<P>
|
|
|
|
<A NAME="IDX164"></A>
|
|
<DT><CODE>COMP_CWORD</CODE>
|
|
<DD><A NAME="IDX165"></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#SEC117">8.6 Programmable Completion</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX166"></A>
|
|
<DT><CODE>COMP_LINE</CODE>
|
|
<DD><A NAME="IDX167"></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#SEC117">8.6 Programmable Completion</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX168"></A>
|
|
<DT><CODE>COMP_POINT</CODE>
|
|
<DD><A NAME="IDX169"></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#SEC117">8.6 Programmable Completion</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX170"></A>
|
|
<DT><CODE>COMP_TYPE</CODE>
|
|
<DD><A NAME="IDX171"></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#SEC117">8.6 Programmable Completion</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX172"></A>
|
|
<DT><CODE>COMP_KEY</CODE>
|
|
<DD><A NAME="IDX173"></A>
|
|
The key (or final key of a key sequence) used to invoke the current
|
|
completion function.
|
|
<P>
|
|
|
|
<A NAME="IDX174"></A>
|
|
<DT><CODE>COMP_WORDBREAKS</CODE>
|
|
<DD><A NAME="IDX175"></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="IDX176"></A>
|
|
<DT><CODE>COMP_WORDS</CODE>
|
|
<DD><A NAME="IDX177"></A>
|
|
An array variable consisting of the individual
|
|
words in the current command line.
|
|
The words are split on shell metacharacters as the shell parser would
|
|
separate them.
|
|
This variable is available only in shell functions invoked by the
|
|
programmable completion facilities (see section <A HREF="bashref.html#SEC117">8.6 Programmable Completion</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX178"></A>
|
|
<DT><CODE>COMPREPLY</CODE>
|
|
<DD><A NAME="IDX179"></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#SEC117">8.6 Programmable Completion</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX180"></A>
|
|
<DT><CODE>DIRSTACK</CODE>
|
|
<DD><A NAME="IDX181"></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="IDX182"></A>
|
|
<DT><CODE>EMACS</CODE>
|
|
<DD><A NAME="IDX183"></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="IDX184"></A>
|
|
<DT><CODE>EUID</CODE>
|
|
<DD><A NAME="IDX185"></A>
|
|
The numeric effective user id of the current user. This variable
|
|
is readonly.
|
|
<P>
|
|
|
|
<A NAME="IDX186"></A>
|
|
<DT><CODE>FCEDIT</CODE>
|
|
<DD><A NAME="IDX187"></A>
|
|
The editor used as a default by the <SAMP>`-e'</SAMP> option to the <CODE>fc</CODE>
|
|
builtin command.
|
|
<P>
|
|
|
|
<A NAME="IDX188"></A>
|
|
<DT><CODE>FIGNORE</CODE>
|
|
<DD><A NAME="IDX189"></A>
|
|
A colon-separated list of suffixes to ignore when performing
|
|
filename completion.
|
|
A file name whose suffix matches one of the entries in
|
|
<CODE>FIGNORE</CODE>
|
|
is excluded from the list of matched file names. A sample
|
|
value is <SAMP>`.o:~'</SAMP>
|
|
<P>
|
|
|
|
<A NAME="IDX190"></A>
|
|
<DT><CODE>FUNCNAME</CODE>
|
|
<DD><A NAME="IDX191"></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 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>
|
|
|
|
<A NAME="IDX192"></A>
|
|
<DT><CODE>GLOBIGNORE</CODE>
|
|
<DD><A NAME="IDX193"></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="IDX194"></A>
|
|
<DT><CODE>GROUPS</CODE>
|
|
<DD><A NAME="IDX195"></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="IDX196"></A>
|
|
<DT><CODE>histchars</CODE>
|
|
<DD><A NAME="IDX197"></A>
|
|
Up to three characters which control history expansion, quick
|
|
substitution, and tokenization (see section <A HREF="bashref.html#SEC122">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="IDX198"></A>
|
|
<DT><CODE>HISTCMD</CODE>
|
|
<DD><A NAME="IDX199"></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="IDX200"></A>
|
|
<DT><CODE>HISTCONTROL</CODE>
|
|
<DD><A NAME="IDX201"></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="IDX202"></A>
|
|
<DT><CODE>HISTFILE</CODE>
|
|
<DD><A NAME="IDX203"></A>
|
|
The name of the file to which the command history is saved. The
|
|
default value is <TT>`~/.bash_history'</TT>.
|
|
<P>
|
|
|
|
<A NAME="IDX204"></A>
|
|
<DT><CODE>HISTFILESIZE</CODE>
|
|
<DD><A NAME="IDX205"></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, by removing the oldest entries,
|
|
to contain no more than that number of lines.
|
|
The history file is also truncated to this size after
|
|
writing it when an interactive shell exits.
|
|
The default value is 500.
|
|
<P>
|
|
|
|
<A NAME="IDX206"></A>
|
|
<DT><CODE>HISTIGNORE</CODE>
|
|
<DD><A NAME="IDX207"></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="IDX208"></A>
|
|
<DT><CODE>HISTSIZE</CODE>
|
|
<DD><A NAME="IDX209"></A>
|
|
The maximum number of commands to remember on the history list.
|
|
The default value is 500.
|
|
<P>
|
|
|
|
<A NAME="IDX210"></A>
|
|
<DT><CODE>HISTTIMEFORMAT</CODE>
|
|
<DD><A NAME="IDX211"></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="IDX212"></A>
|
|
<DT><CODE>HOSTFILE</CODE>
|
|
<DD><A NAME="IDX213"></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, 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="IDX214"></A>
|
|
<DT><CODE>HOSTNAME</CODE>
|
|
<DD><A NAME="IDX215"></A>
|
|
The name of the current host.
|
|
<P>
|
|
|
|
<A NAME="IDX216"></A>
|
|
<DT><CODE>HOSTTYPE</CODE>
|
|
<DD><A NAME="IDX217"></A>
|
|
A string describing the machine Bash is running on.
|
|
<P>
|
|
|
|
<A NAME="IDX218"></A>
|
|
<DT><CODE>IGNOREEOF</CODE>
|
|
<DD><A NAME="IDX219"></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="IDX220"></A>
|
|
<DT><CODE>INPUTRC</CODE>
|
|
<DD><A NAME="IDX221"></A>
|
|
The name of the Readline initialization file, overriding the default
|
|
of <TT>`~/.inputrc'</TT>.
|
|
<P>
|
|
|
|
<A NAME="IDX222"></A>
|
|
<DT><CODE>LANG</CODE>
|
|
<DD><A NAME="IDX223"></A>
|
|
Used to determine the locale category for any category not specifically
|
|
selected with a variable starting with <CODE>LC_</CODE>.
|
|
<P>
|
|
|
|
<A NAME="IDX224"></A>
|
|
<DT><CODE>LC_ALL</CODE>
|
|
<DD><A NAME="IDX225"></A>
|
|
This variable overrides the value of <CODE>LANG</CODE> and any other
|
|
<CODE>LC_</CODE> variable specifying a locale category.
|
|
<P>
|
|
|
|
<A NAME="IDX226"></A>
|
|
<DT><CODE>LC_COLLATE</CODE>
|
|
<DD><A NAME="IDX227"></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#SEC36">3.5.8 Filename Expansion</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX228"></A>
|
|
<DT><CODE>LC_CTYPE</CODE>
|
|
<DD><A NAME="IDX229"></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#SEC36">3.5.8 Filename Expansion</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX230"></A>
|
|
<DT><CODE>LC_MESSAGES</CODE>
|
|
<DD><A NAME="IDX231"></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="IDX232"></A>
|
|
<DT><CODE>LC_NUMERIC</CODE>
|
|
<DD><A NAME="IDX233"></A>
|
|
This variable determines the locale category used for number formatting.
|
|
<P>
|
|
|
|
<A NAME="IDX234"></A>
|
|
<DT><CODE>LINENO</CODE>
|
|
<DD><A NAME="IDX235"></A>
|
|
The line number in the script or shell function currently executing.
|
|
<P>
|
|
|
|
<A NAME="IDX236"></A>
|
|
<DT><CODE>LINES</CODE>
|
|
<DD><A NAME="IDX237"></A>
|
|
Used by the <CODE>select</CODE> builtin command to determine the column length
|
|
for printing selection lists. Automatically set upon receipt of a
|
|
<CODE>SIGWINCH</CODE>.
|
|
<P>
|
|
|
|
<A NAME="IDX238"></A>
|
|
<DT><CODE>MACHTYPE</CODE>
|
|
<DD><A NAME="IDX239"></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="IDX240"></A>
|
|
<DT><CODE>MAILCHECK</CODE>
|
|
<DD><A NAME="IDX241"></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="IDX242"></A>
|
|
<DT><CODE>OLDPWD</CODE>
|
|
<DD><A NAME="IDX243"></A>
|
|
The previous working directory as set by the <CODE>cd</CODE> builtin.
|
|
<P>
|
|
|
|
<A NAME="IDX244"></A>
|
|
<DT><CODE>OPTERR</CODE>
|
|
<DD><A NAME="IDX245"></A>
|
|
If set to the value 1, Bash displays error messages
|
|
generated by the <CODE>getopts</CODE> builtin command.
|
|
<P>
|
|
|
|
<A NAME="IDX246"></A>
|
|
<DT><CODE>OSTYPE</CODE>
|
|
<DD><A NAME="IDX247"></A>
|
|
A string describing the operating system Bash is running on.
|
|
<P>
|
|
|
|
<A NAME="IDX248"></A>
|
|
<DT><CODE>PIPESTATUS</CODE>
|
|
<DD><A NAME="IDX249"></A>
|
|
An array variable (see section <A HREF="bashref.html#SEC85">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="IDX250"></A>
|
|
<DT><CODE>POSIXLY_CORRECT</CODE>
|
|
<DD><A NAME="IDX251"></A>
|
|
If this variable is in the environment when <CODE>bash</CODE> starts, the shell
|
|
enters POSIX mode (see section <A HREF="bashref.html#SEC90">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, <CODE>bash</CODE> 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="IDX252"></A>
|
|
<DT><CODE>PPID</CODE>
|
|
<DD><A NAME="IDX253"></A>
|
|
The process ID of the shell's parent process. This variable
|
|
is readonly.
|
|
<P>
|
|
|
|
<A NAME="IDX254"></A>
|
|
<DT><CODE>PROMPT_COMMAND</CODE>
|
|
<DD><A NAME="IDX255"></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="IDX256"></A>
|
|
<DT><CODE>PROMPT_DIRTRIM</CODE>
|
|
<DD><A NAME="IDX257"></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#SEC88">6.9 Controlling the Prompt</A>).
|
|
Characters removed are replaced with an ellipsis.
|
|
<P>
|
|
|
|
<A NAME="IDX258"></A>
|
|
<DT><CODE>PS3</CODE>
|
|
<DD><A NAME="IDX259"></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="IDX260"></A>
|
|
<DT><CODE>PS4</CODE>
|
|
<DD><A NAME="IDX261"></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#SEC62">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="IDX262"></A>
|
|
<DT><CODE>PWD</CODE>
|
|
<DD><A NAME="IDX263"></A>
|
|
The current working directory as set by the <CODE>cd</CODE> builtin.
|
|
<P>
|
|
|
|
<A NAME="IDX264"></A>
|
|
<DT><CODE>RANDOM</CODE>
|
|
<DD><A NAME="IDX265"></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="IDX266"></A>
|
|
<DT><CODE>REPLY</CODE>
|
|
<DD><A NAME="IDX267"></A>
|
|
The default variable for the <CODE>read</CODE> builtin.
|
|
<P>
|
|
|
|
<A NAME="IDX268"></A>
|
|
<DT><CODE>SECONDS</CODE>
|
|
<DD><A NAME="IDX269"></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="IDX270"></A>
|
|
<DT><CODE>SHELL</CODE>
|
|
<DD><A NAME="IDX271"></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="IDX272"></A>
|
|
<DT><CODE>SHELLOPTS</CODE>
|
|
<DD><A NAME="IDX273"></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#SEC62">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="IDX274"></A>
|
|
<DT><CODE>SHLVL</CODE>
|
|
<DD><A NAME="IDX275"></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="IDX276"></A>
|
|
<DT><CODE>TIMEFORMAT</CODE>
|
|
<DD><A NAME="IDX277"></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="IDX278"></A>
|
|
<DT><CODE>TMOUT</CODE>
|
|
<DD><A NAME="IDX279"></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#SEC60">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 input after issuing the primary
|
|
prompt when the shell is interactive.
|
|
Bash terminates after that number of seconds if input does
|
|
not arrive.
|
|
</P><P>
|
|
|
|
<A NAME="IDX280"></A>
|
|
<DT><CODE>TMPDIR</CODE>
|
|
<DD><A NAME="IDX281"></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="IDX282"></A>
|
|
<DT><CODE>UID</CODE>
|
|
<DD><A NAME="IDX283"></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="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#SEC91"> << </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#SEC91"> >> </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#SEC140">Index</A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
|
|
</TR></TABLE>
|
|
<H1> 6. Bash Features </H1>
|
|
<!--docid::SEC68::-->
|
|
<P>
|
|
|
|
This section describes features unique to Bash.
|
|
</P><P>
|
|
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC69">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#SEC70">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#SEC78">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#SEC82">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#SEC83">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#SEC84">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#SEC85">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#SEC86">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#SEC88">6.9 Controlling the Prompt</A></TD><TD> </TD><TD ALIGN="left" VALIGN="TOP">Controlling the PS1 string.</TD></TR>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC89">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#SEC90">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="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#SEC68"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> >> </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#SEC140">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::SEC69::-->
|
|
<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>
|
|
|
|
In addition to the single-character shell command-line options
|
|
(see section <A HREF="bashref.html#SEC62">4.3.1 The Set Builtin</A>), 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#SEC63">4.3.2 The Shopt Builtin</A>
|
|
for a description of the <CODE>extdebug</CODE> option to the <CODE>shopt</CODE>
|
|
builtin) and shell function tracing
|
|
(see <A HREF="bashref.html#SEC62">4.3.1 The Set Builtin</A> for a description of the <CODE>-o functrace</CODE>
|
|
option).
|
|
<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#SEC95">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#SEC90">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#SEC89">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.
|
|
<P>
|
|
|
|
</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 <VAR>string</VAR></CODE>
|
|
<DD>Read and execute commands from <VAR>string</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#SEC78">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#SEC70">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#SEC89">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#SEC63">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.
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="IDX284"></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="IDX285"></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#SEC78">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#SEC57">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="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#SEC78"> > </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC78"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> >> </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#SEC140">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::SEC70::-->
|
|
<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 file names as described above under
|
|
Tilde Expansion (see section <A HREF="bashref.html#SEC30">3.5.2 Tilde Expansion</A>).
|
|
</P><P>
|
|
|
|
Interactive shells are described in <A HREF="bashref.html#SEC78">6.3 Interactive Shells</A>.
|
|
</P><P>
|
|
|
|
<A NAME="SEC71"></A>
|
|
<H4> Invoked as an interactive login shell, or with <SAMP>`--login'</SAMP> </H4>
|
|
<!--docid::SEC71::-->
|
|
<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="SEC72"></A>
|
|
<H4> Invoked as an interactive non-login shell </H4>
|
|
<!--docid::SEC72::-->
|
|
<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="SEC73"></A>
|
|
<H4> Invoked non-interactively </H4>
|
|
<!--docid::SEC73::-->
|
|
<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
|
|
file name.
|
|
</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="SEC74"></A>
|
|
<H4> Invoked with name <CODE>sh</CODE> </H4>
|
|
<!--docid::SEC74::-->
|
|
<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="SEC75"></A>
|
|
<H4> Invoked in POSIX mode </H4>
|
|
<!--docid::SEC75::-->
|
|
<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="SEC76"></A>
|
|
<H4> Invoked by remote shell daemon </H4>
|
|
<!--docid::SEC76::-->
|
|
<P>
|
|
|
|
Bash attempts to determine when it is being run with its standard input
|
|
connected to a a network connection, as if 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
|
|
<CODE>rshd</CODE> does not generally invoke the shell with those options or
|
|
allow them to be specified.
|
|
</P><P>
|
|
|
|
<A NAME="SEC77"></A>
|
|
<H4> Invoked with unequal effective and real UID/GIDs </H4>
|
|
<!--docid::SEC77::-->
|
|
<P>
|
|
|
|
If Bash is started with the effective user (group) id not equal to the
|
|
real user (group) id, and the <CODE>-p</CODE> option is not supplied, no startup
|
|
files are read, shell functions are not inherited from the environment,
|
|
the <CODE>SHELLOPTS</CODE> variable, if it appears in the environment, is ignored,
|
|
and the effective user id is set to the real user id.
|
|
If the <CODE>-p</CODE> 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="SEC78"></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#SEC82"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC82"> >> </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#SEC140">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::SEC78::-->
|
|
<P>
|
|
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC79">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#SEC80">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#SEC81">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="SEC79"></A>
|
|
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
|
|
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC78"> < </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#SEC82"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC78"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC82"> >> </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#SEC140">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::SEC79::-->
|
|
<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="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#SEC81"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC78"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC82"> >> </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#SEC140">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::SEC80::-->
|
|
<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="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#SEC78"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC82"> >> </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#SEC140">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::SEC81::-->
|
|
<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#SEC70">6.2 Bash Startup Files</A>.
|
|
<P>
|
|
|
|
<LI>
|
|
Job Control (see section <A HREF="bashref.html#SEC91">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#SEC67">5.2 Bash Variables</A>).
|
|
<P>
|
|
|
|
<LI>
|
|
Readline (see section <A HREF="bashref.html#SEC95">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#SEC62">4.3.1 The Set Builtin</A>).
|
|
<P>
|
|
|
|
<LI>
|
|
Command history (see section <A HREF="bashref.html#SEC120">9.1 Bash History Facilities</A>)
|
|
and history expansion (see section <A HREF="bashref.html#SEC122">9.3 History Expansion</A>)
|
|
are enabled by default.
|
|
Bash will save the command history to the file named by <CODE>$HISTFILE</CODE>
|
|
when an interactive shell exits.
|
|
<P>
|
|
|
|
<LI>
|
|
Alias expansion (see section <A HREF="bashref.html#SEC84">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#SEC56">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#SEC56">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#SEC56">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#SEC62">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#SEC67">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#SEC62">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#SEC31">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#SEC90">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#SEC59">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#SEC63">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#SEC67">5.2 Bash Variables</A>).
|
|
<P>
|
|
|
|
</OL>
|
|
<P>
|
|
|
|
<A NAME="Bash Conditional Expressions"></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#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> >> </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#SEC140">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::SEC82::-->
|
|
<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>
|
|
|
|
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>-O <VAR>file</VAR></CODE>
|
|
<DD>True if <VAR>file</VAR> exists and is owned by the effective user id.
|
|
<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>-S <VAR>file</VAR></CODE>
|
|
<DD>True if <VAR>file</VAR> exists and is a socket.
|
|
<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><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><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>-o <VAR>optname</VAR></CODE>
|
|
<DD>True if 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#SEC62">4.3.1 The Set Builtin</A>).
|
|
<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>True if the strings are equal.
|
|
<SAMP>`='</SAMP> may be used in place of <SAMP>`=='</SAMP> for strict POSIX compliance.
|
|
<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
|
|
in the current locale.
|
|
<P>
|
|
|
|
<DT><CODE><VAR>string1</VAR> > <VAR>string2</VAR></CODE>
|
|
<DD>True if <VAR>string1</VAR> sorts after <VAR>string2</VAR> lexicographically
|
|
in the current locale.
|
|
<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.
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="Shell Arithmetic"></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#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> >> </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#SEC140">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::SEC83::-->
|
|
<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 integer 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 <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.
|
|
The 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="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#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> >> </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#SEC140">Index</A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
|
|
</TR></TABLE>
|
|
<H2> 6.6 Aliases </H2>
|
|
<!--docid::SEC84::-->
|
|
<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
|
|
space or tab character, 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#SEC24">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#SEC63">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="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#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> >> </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#SEC140">Index</A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
|
|
</TR></TABLE>
|
|
<H2> 6.7 Arrays </H2>
|
|
<!--docid::SEC85::-->
|
|
<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#SEC83">6.5 Shell Arithmetic</A>) and are zero-based;
|
|
associative arrays use arbitrary strings.
|
|
</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>name[<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
|
|
greater than or equal to zero. 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>name=(value<VAR>1</VAR> <small>...</small> value<VAR>n</VAR>)
|
|
</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 the bracket and subscript.
|
|
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>name[</CODE><VAR>subscript</VAR><CODE>]=</CODE><VAR>value</VAR> syntax introduced above.
|
|
</P><P>
|
|
|
|
Any element of an array may be referenced using
|
|
<CODE>${name[</CODE><VAR>subscript</VAR><CODE>]}</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>${name[*]}</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>${name[@]}</CODE> expands each element of
|
|
<VAR>name</VAR> to a separate word. When there are no array members,
|
|
<CODE>${name[@]}</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>${#name[</CODE><VAR>subscript</VAR><CODE>]}</CODE> expands to the length of
|
|
<CODE>${name[</CODE><VAR>subscript</VAR><CODE>]}</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.
|
|
</P><P>
|
|
|
|
The <CODE>unset</CODE> builtin is used to destroy arrays.
|
|
<CODE>unset</CODE> <VAR>name</VAR>[<VAR>subscript</VAR>]
|
|
destroys the array element at index <VAR>subscript</VAR>.
|
|
Care must be taken to avoid unwanted side effects caused by filename
|
|
generation.
|
|
<CODE>unset</CODE> <VAR>name</VAR>, 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.
|
|
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="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#SEC88"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC88"> >> </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#SEC140">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::SEC86::-->
|
|
<P>
|
|
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC87">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="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#SEC88"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC86"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC88"> >> </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#SEC140">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::SEC87::-->
|
|
<P>
|
|
|
|
<DL COMPACT>
|
|
|
|
<DT><CODE>dirs</CODE>
|
|
<DD><A NAME="IDX286"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>dirs [+<VAR>N</VAR> | -<VAR>N</VAR>] [-clpv]
|
|
</pre></td></tr></table>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.
|
|
<DL COMPACT>
|
|
<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.
|
|
<DT><CODE>-c</CODE>
|
|
<DD>Clears the directory stack by deleting all of the elements.
|
|
<DT><CODE>-l</CODE>
|
|
<DD>Produces a longer listing; 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.
|
|
</DL>
|
|
<P>
|
|
|
|
<DT><CODE>popd</CODE>
|
|
<DD><A NAME="IDX287"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>popd [+<VAR>N</VAR> | -<VAR>N</VAR>] [-n]
|
|
</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>; i.e., <CODE>popd</CODE> is equivalent to <CODE>popd +0</CODE>.
|
|
<DL COMPACT>
|
|
<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.
|
|
<DT><CODE>-n</CODE>
|
|
<DD>Suppresses the normal change of directory when removing directories
|
|
from the stack, so that only the stack is manipulated.
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="IDX288"></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, and then
|
|
executes the equivalent of `<CODE>cd</CODE> <VAR>dir</VAR>'.
|
|
<CODE>cd</CODE>s to <VAR>dir</VAR>.
|
|
</DL>
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="Printing a Prompt"></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#SEC68"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> >> </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#SEC140">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::SEC88::-->
|
|
<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:
|
|
</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#SEC120">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#SEC60">4.2 Bash Builtin Commands</A>).
|
|
</P><P>
|
|
|
|
<A NAME="The Restricted Shell"></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#SEC70"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> >> </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#SEC140">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::SEC89::-->
|
|
<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#SEC57">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="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#SEC70"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC68"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> >> </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#SEC140">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::SEC90::-->
|
|
<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 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>
|
|
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>
|
|
POSIX special builtins are found before shell functions
|
|
during command lookup.
|
|
<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>
|
|
If <CODE>CDPATH</CODE> is set, the <CODE>cd</CODE> builtin will not implicitly
|
|
append the current directory to it. This means that <CODE>cd</CODE> will
|
|
fail if no valid directory name can be constructed from
|
|
any of the entries in <CODE>$CDPATH</CODE>, even if the a directory with
|
|
the same name as the name given as an argument to <CODE>cd</CODE> exists
|
|
in the current directory.
|
|
<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 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>
|
|
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>
|
|
When the <CODE>pwd</CODE> builtin is supplied the <SAMP>`-P'</SAMP> option, it resets
|
|
<CODE>$PWD</CODE> to a pathname containing no symlinks.
|
|
<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>
|
|
|
|
</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#SEC134">10.8 Optional Features</A>).
|
|
</P><P>
|
|
|
|
<A NAME="Job Control"></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#SEC95"> << </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#SEC95"> >> </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#SEC140">Index</A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
|
|
</TR></TABLE>
|
|
<H1> 7. Job Control </H1>
|
|
<!--docid::SEC91::-->
|
|
<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#SEC92">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#SEC93">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#SEC94">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="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#SEC91"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> >> </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#SEC140">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::SEC92::-->
|
|
<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 system'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
|
|
write to the terminal. Background processes which attempt to
|
|
read from (write to) the terminal are sent a <CODE>SIGTTIN</CODE>
|
|
(<CODE>SIGTTOU</CODE>) signal by the 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#SEC62">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#SEC63">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="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#SEC94"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> >> </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#SEC140">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::SEC93::-->
|
|
<P>
|
|
|
|
<DL COMPACT>
|
|
|
|
<DT><CODE>bg</CODE>
|
|
<DD><A NAME="IDX289"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>bg [<VAR>jobspec</VAR> <small>...</small>]
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>fg</CODE>
|
|
<DD><A NAME="IDX290"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>fg [<VAR>jobspec</VAR>]
|
|
</pre></td></tr></table>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>
|
|
|
|
<DT><CODE>jobs</CODE>
|
|
<DD><A NAME="IDX291"></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>Restrict output to running jobs.
|
|
<P>
|
|
|
|
<DT><CODE>-s</CODE>
|
|
<DD>Restrict output to 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="IDX292"></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>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>
|
|
|
|
<DT><CODE>wait</CODE>
|
|
<DD><A NAME="IDX293"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>wait [<VAR>jobspec</VAR> or <VAR>pid</VAR> ...]
|
|
</pre></td></tr></table>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 neither <VAR>jobspec</VAR> nor <VAR>pid</VAR> specifies an active child process
|
|
of the shell, the return status is 127.
|
|
<P>
|
|
|
|
<DT><CODE>disown</CODE>
|
|
<DD><A NAME="IDX294"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>disown [-ar] [-h] [<VAR>jobspec</VAR> <small>...</small>]
|
|
</pre></td></tr></table>Without options, each <VAR>jobspec</VAR> is removed 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 <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>
|
|
|
|
<DT><CODE>suspend</CODE>
|
|
<DD><A NAME="IDX295"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre>suspend [-f]
|
|
</pre></td></tr></table>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.
|
|
<P>
|
|
|
|
</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="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#SEC91"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC91"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> >> </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#SEC140">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::SEC94::-->
|
|
<P>
|
|
|
|
<DL COMPACT>
|
|
|
|
<A NAME="IDX296"></A>
|
|
<DT><CODE>auto_resume</CODE>
|
|
<DD><A NAME="IDX297"></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#SEC92">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="IDX298"></A>
|
|
</P><P>
|
|
|
|
<A NAME="Command Line Editing"></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#SEC119"> << </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#SEC119"> >> </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#SEC140">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::SEC95::-->
|
|
<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#SEC60">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#SEC62">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#SEC96">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#SEC97">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#SEC103">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#SEC107">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#SEC116">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#SEC117">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#SEC118">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>
|
|
</TABLE></BLOCKQUOTE>
|
|
<P>
|
|
|
|
<A NAME="Introduction and Notation"></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#SEC95"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC119"> >> </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#SEC140">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::SEC96::-->
|
|
<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#SEC103">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="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#SEC103"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> >> </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#SEC140">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::SEC97::-->
|
|
<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#SEC98">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#SEC99">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#SEC100">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#SEC101">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#SEC102">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="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#SEC103"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC97"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> >> </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#SEC140">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::SEC98::-->
|
|
<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="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#SEC100"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC97"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> >> </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#SEC140">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::SEC99::-->
|
|
<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="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#SEC97"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> >> </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#SEC140">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::SEC100::-->
|
|
<P>
|
|
|
|
<A NAME="IDX299"></A>
|
|
<A NAME="IDX300"></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="IDX301"></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="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#SEC97"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> >> </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#SEC140">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::SEC101::-->
|
|
<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="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#SEC97"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> >> </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#SEC140">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::SEC102::-->
|
|
<P>
|
|
|
|
Readline provides commands for searching through the command history
|
|
(see section <A HREF="bashref.html#SEC120">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="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#SEC107"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC107"> >> </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#SEC140">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::SEC103::-->
|
|
<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#SEC104">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#SEC105">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#SEC106">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="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#SEC107"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC107"> >> </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#SEC140">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::SEC104::-->
|
|
<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#SEC105">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#SEC60">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="IDX302"></A>
|
|
<DL COMPACT>
|
|
|
|
<DT><CODE>bell-style</CODE>
|
|
<DD><A NAME="IDX303"></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="IDX304"></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>comment-begin</CODE>
|
|
<DD><A NAME="IDX305"></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-ignore-case</CODE>
|
|
<DD>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-prefix-display-length</CODE>
|
|
<DD><A NAME="IDX306"></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="IDX307"></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="IDX308"></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="IDX309"></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="IDX310"></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>enable-keypad</CODE>
|
|
<DD><A NAME="IDX311"></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>expand-tilde</CODE>
|
|
<DD><A NAME="IDX312"></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="IDX313"></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="IDX314"></A>
|
|
Set the maximum number of history entries saved in the history list. If
|
|
set to zero, the number of entries in the history list is not limited.
|
|
<P>
|
|
|
|
<DT><CODE>horizontal-scroll-mode</CODE>
|
|
<DD><A NAME="IDX315"></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="IDX316"></A>
|
|
<A NAME="IDX317"></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="IDX318"></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#SEC102">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="IDX319"></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>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="IDX320"></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="IDX321"></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="IDX322"></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, unless the leading <SAMP>`.'</SAMP> is
|
|
supplied by the user in the filename to be completed.
|
|
This variable is <SAMP>`on'</SAMP> by default.
|
|
<P>
|
|
|
|
<DT><CODE>output-meta</CODE>
|
|
<DD><A NAME="IDX323"></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="IDX324"></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="IDX325"></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="IDX326"></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="IDX327"></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>visible-stats</CODE>
|
|
<DD><A NAME="IDX328"></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#SEC60">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="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#SEC106"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC103"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC107"> >> </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#SEC140">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::SEC105::-->
|
|
<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="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#SEC103"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC107"> >> </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#SEC140">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::SEC106::-->
|
|
<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 systemwide 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="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#SEC116"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> >> </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#SEC140">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::SEC107::-->
|
|
<P>
|
|
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC108">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#SEC109">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#SEC110">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#SEC111">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#SEC112">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#SEC113">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#SEC114">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#SEC115">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#SEC60">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="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#SEC116"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC107"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> >> </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#SEC140">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::SEC108::-->
|
|
<DL COMPACT>
|
|
<A NAME="IDX329"></A>
|
|
<DT><CODE>beginning-of-line (C-a)</CODE>
|
|
<DD><A NAME="IDX330"></A>
|
|
Move to the start of the current line.
|
|
<P>
|
|
|
|
<A NAME="IDX331"></A>
|
|
<DT><CODE>end-of-line (C-e)</CODE>
|
|
<DD><A NAME="IDX332"></A>
|
|
Move to the end of the line.
|
|
<P>
|
|
|
|
<A NAME="IDX333"></A>
|
|
<DT><CODE>forward-char (C-f)</CODE>
|
|
<DD><A NAME="IDX334"></A>
|
|
Move forward a character.
|
|
<P>
|
|
|
|
<A NAME="IDX335"></A>
|
|
<DT><CODE>backward-char (C-b)</CODE>
|
|
<DD><A NAME="IDX336"></A>
|
|
Move back a character.
|
|
<P>
|
|
|
|
<A NAME="IDX337"></A>
|
|
<DT><CODE>forward-word (M-f)</CODE>
|
|
<DD><A NAME="IDX338"></A>
|
|
Move forward to the end of the next word.
|
|
Words are composed of letters and digits.
|
|
<P>
|
|
|
|
<A NAME="IDX339"></A>
|
|
<DT><CODE>backward-word (M-b)</CODE>
|
|
<DD><A NAME="IDX340"></A>
|
|
Move back to the start of the current or previous word.
|
|
Words are composed of letters and digits.
|
|
<P>
|
|
|
|
<A NAME="IDX341"></A>
|
|
<DT><CODE>shell-forward-word ()</CODE>
|
|
<DD><A NAME="IDX342"></A>
|
|
Move forward to the end of the next word.
|
|
Words are delimited by non-quoted shell metacharacters.
|
|
<P>
|
|
|
|
<A NAME="IDX343"></A>
|
|
<DT><CODE>shell-backward-word ()</CODE>
|
|
<DD><A NAME="IDX344"></A>
|
|
Move back to the start of the current or previous word.
|
|
Words are delimited by non-quoted shell metacharacters.
|
|
<P>
|
|
|
|
<A NAME="IDX345"></A>
|
|
<DT><CODE>clear-screen (C-l)</CODE>
|
|
<DD><A NAME="IDX346"></A>
|
|
Clear the screen and redraw the current line,
|
|
leaving the current line at the top of the screen.
|
|
<P>
|
|
|
|
<A NAME="IDX347"></A>
|
|
<DT><CODE>redraw-current-line ()</CODE>
|
|
<DD><A NAME="IDX348"></A>
|
|
Refresh the current line. By default, this is unbound.
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="Commands For History"></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#SEC110"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC107"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> >> </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#SEC140">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::SEC109::-->
|
|
<P>
|
|
|
|
<DL COMPACT>
|
|
<A NAME="IDX349"></A>
|
|
<DT><CODE>accept-line (Newline or Return)</CODE>
|
|
<DD><A NAME="IDX350"></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="IDX351"></A>
|
|
<DT><CODE>previous-history (C-p)</CODE>
|
|
<DD><A NAME="IDX352"></A>
|
|
Move `back' through the history list, fetching the previous command.
|
|
<P>
|
|
|
|
<A NAME="IDX353"></A>
|
|
<DT><CODE>next-history (C-n)</CODE>
|
|
<DD><A NAME="IDX354"></A>
|
|
Move `forward' through the history list, fetching the next command.
|
|
<P>
|
|
|
|
<A NAME="IDX355"></A>
|
|
<DT><CODE>beginning-of-history (M-<)</CODE>
|
|
<DD><A NAME="IDX356"></A>
|
|
Move to the first line in the history.
|
|
<P>
|
|
|
|
<A NAME="IDX357"></A>
|
|
<DT><CODE>end-of-history (M->)</CODE>
|
|
<DD><A NAME="IDX358"></A>
|
|
Move to the end of the input history, i.e., the line currently
|
|
being entered.
|
|
<P>
|
|
|
|
<A NAME="IDX359"></A>
|
|
<DT><CODE>reverse-search-history (C-r)</CODE>
|
|
<DD><A NAME="IDX360"></A>
|
|
Search backward starting at the current line and moving `up' through
|
|
the history as necessary. This is an incremental search.
|
|
<P>
|
|
|
|
<A NAME="IDX361"></A>
|
|
<DT><CODE>forward-search-history (C-s)</CODE>
|
|
<DD><A NAME="IDX362"></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="IDX363"></A>
|
|
<DT><CODE>non-incremental-reverse-search-history (M-p)</CODE>
|
|
<DD><A NAME="IDX364"></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="IDX365"></A>
|
|
<DT><CODE>non-incremental-forward-search-history (M-n)</CODE>
|
|
<DD><A NAME="IDX366"></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="IDX367"></A>
|
|
<DT><CODE>history-search-forward ()</CODE>
|
|
<DD><A NAME="IDX368"></A>
|
|
Search forward through the history for the string of characters
|
|
between the start of the current line and the point.
|
|
This is a non-incremental search.
|
|
By default, this command is unbound.
|
|
<P>
|
|
|
|
<A NAME="IDX369"></A>
|
|
<DT><CODE>history-search-backward ()</CODE>
|
|
<DD><A NAME="IDX370"></A>
|
|
Search backward through the history for the string of characters
|
|
between the start of the current line and the point. This
|
|
is a non-incremental search. By default, this command is unbound.
|
|
<P>
|
|
|
|
<A NAME="IDX371"></A>
|
|
<DT><CODE>yank-nth-arg (M-C-y)</CODE>
|
|
<DD><A NAME="IDX372"></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="IDX373"></A>
|
|
<DT><CODE>yank-last-arg (M-. or M-_)</CODE>
|
|
<DD><A NAME="IDX374"></A>
|
|
Insert last argument to the previous command (the last word of the
|
|
previous history entry). With an
|
|
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 argument of each line in turn.
|
|
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="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#SEC107"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> >> </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#SEC140">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::SEC110::-->
|
|
<P>
|
|
|
|
<DL COMPACT>
|
|
<A NAME="IDX375"></A>
|
|
<DT><CODE>delete-char (C-d)</CODE>
|
|
<DD><A NAME="IDX376"></A>
|
|
Delete the character at point. If point is at the
|
|
beginning of the line, there are no characters in the line, and
|
|
the last character typed was not bound to <CODE>delete-char</CODE>, then
|
|
return EOF.
|
|
<P>
|
|
|
|
<A NAME="IDX377"></A>
|
|
<DT><CODE>backward-delete-char (Rubout)</CODE>
|
|
<DD><A NAME="IDX378"></A>
|
|
Delete the character behind the cursor. A numeric argument means
|
|
to kill the characters instead of deleting them.
|
|
<P>
|
|
|
|
<A NAME="IDX379"></A>
|
|
<DT><CODE>forward-backward-delete-char ()</CODE>
|
|
<DD><A NAME="IDX380"></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="IDX381"></A>
|
|
<DT><CODE>quoted-insert (C-q or C-v)</CODE>
|
|
<DD><A NAME="IDX382"></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="IDX383"></A>
|
|
<DT><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE>
|
|
<DD><A NAME="IDX384"></A>
|
|
Insert yourself.
|
|
<P>
|
|
|
|
<A NAME="IDX385"></A>
|
|
<DT><CODE>transpose-chars (C-t)</CODE>
|
|
<DD><A NAME="IDX386"></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="IDX387"></A>
|
|
<DT><CODE>transpose-words (M-t)</CODE>
|
|
<DD><A NAME="IDX388"></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="IDX389"></A>
|
|
<DT><CODE>upcase-word (M-u)</CODE>
|
|
<DD><A NAME="IDX390"></A>
|
|
Uppercase the current (or following) word. With a negative argument,
|
|
uppercase the previous word, but do not move the cursor.
|
|
<P>
|
|
|
|
<A NAME="IDX391"></A>
|
|
<DT><CODE>downcase-word (M-l)</CODE>
|
|
<DD><A NAME="IDX392"></A>
|
|
Lowercase the current (or following) word. With a negative argument,
|
|
lowercase the previous word, but do not move the cursor.
|
|
<P>
|
|
|
|
<A NAME="IDX393"></A>
|
|
<DT><CODE>capitalize-word (M-c)</CODE>
|
|
<DD><A NAME="IDX394"></A>
|
|
Capitalize the current (or following) word. With a negative argument,
|
|
capitalize the previous word, but do not move the cursor.
|
|
<P>
|
|
|
|
<A NAME="IDX395"></A>
|
|
<DT><CODE>overwrite-mode ()</CODE>
|
|
<DD><A NAME="IDX396"></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="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#SEC107"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> >> </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#SEC140">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::SEC111::-->
|
|
<P>
|
|
|
|
<DL COMPACT>
|
|
|
|
<A NAME="IDX397"></A>
|
|
<DT><CODE>kill-line (C-k)</CODE>
|
|
<DD><A NAME="IDX398"></A>
|
|
Kill the text from point to the end of the line.
|
|
<P>
|
|
|
|
<A NAME="IDX399"></A>
|
|
<DT><CODE>backward-kill-line (C-x Rubout)</CODE>
|
|
<DD><A NAME="IDX400"></A>
|
|
Kill backward to the beginning of the line.
|
|
<P>
|
|
|
|
<A NAME="IDX401"></A>
|
|
<DT><CODE>unix-line-discard (C-u)</CODE>
|
|
<DD><A NAME="IDX402"></A>
|
|
Kill backward from the cursor to the beginning of the current line.
|
|
<P>
|
|
|
|
<A NAME="IDX403"></A>
|
|
<DT><CODE>kill-whole-line ()</CODE>
|
|
<DD><A NAME="IDX404"></A>
|
|
Kill all characters on the current line, no matter where point is.
|
|
By default, this is unbound.
|
|
<P>
|
|
|
|
<A NAME="IDX405"></A>
|
|
<DT><CODE>kill-word (M-d)</CODE>
|
|
<DD><A NAME="IDX406"></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="IDX407"></A>
|
|
<DT><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE>
|
|
<DD><A NAME="IDX408"></A>
|
|
Kill the word behind point.
|
|
Word boundaries are the same as <CODE>backward-word</CODE>.
|
|
<P>
|
|
|
|
<A NAME="IDX409"></A>
|
|
<DT><CODE>shell-kill-word ()</CODE>
|
|
<DD><A NAME="IDX410"></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="IDX411"></A>
|
|
<DT><CODE>backward-kill-word ()</CODE>
|
|
<DD><A NAME="IDX412"></A>
|
|
Kill the word behind point.
|
|
Word boundaries are the same as <CODE>shell-backward-word</CODE>.
|
|
<P>
|
|
|
|
<A NAME="IDX413"></A>
|
|
<DT><CODE>unix-word-rubout (C-w)</CODE>
|
|
<DD><A NAME="IDX414"></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="IDX415"></A>
|
|
<DT><CODE>unix-filename-rubout ()</CODE>
|
|
<DD><A NAME="IDX416"></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="IDX417"></A>
|
|
<DT><CODE>delete-horizontal-space ()</CODE>
|
|
<DD><A NAME="IDX418"></A>
|
|
Delete all spaces and tabs around point. By default, this is unbound.
|
|
<P>
|
|
|
|
<A NAME="IDX419"></A>
|
|
<DT><CODE>kill-region ()</CODE>
|
|
<DD><A NAME="IDX420"></A>
|
|
Kill the text in the current region.
|
|
By default, this command is unbound.
|
|
<P>
|
|
|
|
<A NAME="IDX421"></A>
|
|
<DT><CODE>copy-region-as-kill ()</CODE>
|
|
<DD><A NAME="IDX422"></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="IDX423"></A>
|
|
<DT><CODE>copy-backward-word ()</CODE>
|
|
<DD><A NAME="IDX424"></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="IDX425"></A>
|
|
<DT><CODE>copy-forward-word ()</CODE>
|
|
<DD><A NAME="IDX426"></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="IDX427"></A>
|
|
<DT><CODE>yank (C-y)</CODE>
|
|
<DD><A NAME="IDX428"></A>
|
|
Yank the top of the kill ring into the buffer at point.
|
|
<P>
|
|
|
|
<A NAME="IDX429"></A>
|
|
<DT><CODE>yank-pop (M-y)</CODE>
|
|
<DD><A NAME="IDX430"></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="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#SEC107"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> >> </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#SEC140">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::SEC112::-->
|
|
<DL COMPACT>
|
|
|
|
<A NAME="IDX431"></A>
|
|
<DT><CODE>digit-argument (<KBD>M-0</KBD>, <KBD>M-1</KBD>, <small>...</small> <KBD>M--</KBD>)</CODE>
|
|
<DD><A NAME="IDX432"></A>
|
|
Add this digit to the argument already accumulating, or start a new
|
|
argument. <KBD>M--</KBD> starts a negative argument.
|
|
<P>
|
|
|
|
<A NAME="IDX433"></A>
|
|
<DT><CODE>universal-argument ()</CODE>
|
|
<DD><A NAME="IDX434"></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="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#SEC107"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> >> </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#SEC140">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::SEC113::-->
|
|
<P>
|
|
|
|
<DL COMPACT>
|
|
<A NAME="IDX435"></A>
|
|
<DT><CODE>complete (<KBD>TAB</KBD>)</CODE>
|
|
<DD><A NAME="IDX436"></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="IDX437"></A>
|
|
<DT><CODE>possible-completions (M-?)</CODE>
|
|
<DD><A NAME="IDX438"></A>
|
|
List the possible completions of the text before point.
|
|
<P>
|
|
|
|
<A NAME="IDX439"></A>
|
|
<DT><CODE>insert-completions (M-*)</CODE>
|
|
<DD><A NAME="IDX440"></A>
|
|
Insert all completions of the text before point that would have
|
|
been generated by <CODE>possible-completions</CODE>.
|
|
<P>
|
|
|
|
<A NAME="IDX441"></A>
|
|
<DT><CODE>menu-complete ()</CODE>
|
|
<DD><A NAME="IDX442"></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="IDX443"></A>
|
|
<DT><CODE>delete-char-or-list ()</CODE>
|
|
<DD><A NAME="IDX444"></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="IDX445"></A>
|
|
<DT><CODE>complete-filename (M-/)</CODE>
|
|
<DD><A NAME="IDX446"></A>
|
|
Attempt filename completion on the text before point.
|
|
<P>
|
|
|
|
<A NAME="IDX447"></A>
|
|
<DT><CODE>possible-filename-completions (C-x /)</CODE>
|
|
<DD><A NAME="IDX448"></A>
|
|
List the possible completions of the text before point,
|
|
treating it as a filename.
|
|
<P>
|
|
|
|
<A NAME="IDX449"></A>
|
|
<DT><CODE>complete-username (M-~)</CODE>
|
|
<DD><A NAME="IDX450"></A>
|
|
Attempt completion on the text before point, treating
|
|
it as a username.
|
|
<P>
|
|
|
|
<A NAME="IDX451"></A>
|
|
<DT><CODE>possible-username-completions (C-x ~)</CODE>
|
|
<DD><A NAME="IDX452"></A>
|
|
List the possible completions of the text before point,
|
|
treating it as a username.
|
|
<P>
|
|
|
|
<A NAME="IDX453"></A>
|
|
<DT><CODE>complete-variable (M-$)</CODE>
|
|
<DD><A NAME="IDX454"></A>
|
|
Attempt completion on the text before point, treating
|
|
it as a shell variable.
|
|
<P>
|
|
|
|
<A NAME="IDX455"></A>
|
|
<DT><CODE>possible-variable-completions (C-x $)</CODE>
|
|
<DD><A NAME="IDX456"></A>
|
|
List the possible completions of the text before point,
|
|
treating it as a shell variable.
|
|
<P>
|
|
|
|
<A NAME="IDX457"></A>
|
|
<DT><CODE>complete-hostname (M-@)</CODE>
|
|
<DD><A NAME="IDX458"></A>
|
|
Attempt completion on the text before point, treating
|
|
it as a hostname.
|
|
<P>
|
|
|
|
<A NAME="IDX459"></A>
|
|
<DT><CODE>possible-hostname-completions (C-x @)</CODE>
|
|
<DD><A NAME="IDX460"></A>
|
|
List the possible completions of the text before point,
|
|
treating it as a hostname.
|
|
<P>
|
|
|
|
<A NAME="IDX461"></A>
|
|
<DT><CODE>complete-command (M-!)</CODE>
|
|
<DD><A NAME="IDX462"></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="IDX463"></A>
|
|
<DT><CODE>possible-command-completions (C-x !)</CODE>
|
|
<DD><A NAME="IDX464"></A>
|
|
List the possible completions of the text before point,
|
|
treating it as a command name.
|
|
<P>
|
|
|
|
<A NAME="IDX465"></A>
|
|
<DT><CODE>dynamic-complete-history (M-<KBD>TAB</KBD>)</CODE>
|
|
<DD><A NAME="IDX466"></A>
|
|
Attempt completion on the text before point, comparing
|
|
the text against lines from the history list for possible
|
|
completion matches.
|
|
<P>
|
|
|
|
<A NAME="IDX467"></A>
|
|
<DT><CODE>dabbrev-expand ()</CODE>
|
|
<DD><A NAME="IDX468"></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="IDX469"></A>
|
|
<DT><CODE>complete-into-braces (M-{)</CODE>
|
|
<DD><A NAME="IDX470"></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#SEC29">3.5.1 Brace Expansion</A>).
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="Keyboard Macros"></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#SEC107"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> >> </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#SEC140">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::SEC114::-->
|
|
<DL COMPACT>
|
|
|
|
<A NAME="IDX471"></A>
|
|
<DT><CODE>start-kbd-macro (C-x ()</CODE>
|
|
<DD><A NAME="IDX472"></A>
|
|
Begin saving the characters typed into the current keyboard macro.
|
|
<P>
|
|
|
|
<A NAME="IDX473"></A>
|
|
<DT><CODE>end-kbd-macro (C-x ))</CODE>
|
|
<DD><A NAME="IDX474"></A>
|
|
Stop saving the characters typed into the current keyboard macro
|
|
and save the definition.
|
|
<P>
|
|
|
|
<A NAME="IDX475"></A>
|
|
<DT><CODE>call-last-kbd-macro (C-x e)</CODE>
|
|
<DD><A NAME="IDX476"></A>
|
|
Re-execute the last keyboard macro defined, by making the characters
|
|
in the macro appear as if typed at the keyboard.
|
|
<P>
|
|
|
|
</DL>
|
|
<P>
|
|
|
|
<A NAME="Miscellaneous Commands"></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#SEC107"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC116"> >> </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#SEC140">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::SEC115::-->
|
|
<DL COMPACT>
|
|
|
|
<A NAME="IDX477"></A>
|
|
<DT><CODE>re-read-init-file (C-x C-r)</CODE>
|
|
<DD><A NAME="IDX478"></A>
|
|
Read in the contents of the <VAR>inputrc</VAR> file, and incorporate
|
|
any bindings or variable assignments found there.
|
|
<P>
|
|
|
|
<A NAME="IDX479"></A>
|
|
<DT><CODE>abort (C-g)</CODE>
|
|
<DD><A NAME="IDX480"></A>
|
|
Abort the current editing command and
|
|
ring the terminal's bell (subject to the setting of
|
|
<CODE>bell-style</CODE>).
|
|
<P>
|
|
|
|
<A NAME="IDX481"></A>
|
|
<DT><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE>
|
|
<DD><A NAME="IDX482"></A>
|
|
If the metafied character <VAR>x</VAR> is lowercase, run the command
|
|
that is bound to the corresponding uppercase character.
|
|
<P>
|
|
|
|
<A NAME="IDX483"></A>
|
|
<DT><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE>
|
|
<DD><A NAME="IDX484"></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="IDX485"></A>
|
|
<DT><CODE>undo (C-_ or C-x C-u)</CODE>
|
|
<DD><A NAME="IDX486"></A>
|
|
Incremental undo, separately remembered for each line.
|
|
<P>
|
|
|
|
<A NAME="IDX487"></A>
|
|
<DT><CODE>revert-line (M-r)</CODE>
|
|
<DD><A NAME="IDX488"></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="IDX489"></A>
|
|
<DT><CODE>tilde-expand (M-&)</CODE>
|
|
<DD><A NAME="IDX490"></A>
|
|
Perform tilde expansion on the current word.
|
|
<P>
|
|
|
|
<A NAME="IDX491"></A>
|
|
<DT><CODE>set-mark (C-@)</CODE>
|
|
<DD><A NAME="IDX492"></A>
|
|
Set the mark to the point. If a
|
|
numeric argument is supplied, the mark is set to that position.
|
|
<P>
|
|
|
|
<A NAME="IDX493"></A>
|
|
<DT><CODE>exchange-point-and-mark (C-x C-x)</CODE>
|
|
<DD><A NAME="IDX494"></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="IDX495"></A>
|
|
<DT><CODE>character-search (C-])</CODE>
|
|
<DD><A NAME="IDX496"></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="IDX497"></A>
|
|
<DT><CODE>character-search-backward (M-C-])</CODE>
|
|
<DD><A NAME="IDX498"></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="IDX499"></A>
|
|
<DT><CODE>insert-comment (M-#)</CODE>
|
|
<DD><A NAME="IDX500"></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="IDX501"></A>
|
|
<DT><CODE>dump-functions ()</CODE>
|
|
<DD><A NAME="IDX502"></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="IDX503"></A>
|
|
<DT><CODE>dump-variables ()</CODE>
|
|
<DD><A NAME="IDX504"></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="IDX505"></A>
|
|
<DT><CODE>dump-macros ()</CODE>
|
|
<DD><A NAME="IDX506"></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="IDX507"></A>
|
|
<DT><CODE>glob-complete-word (M-g)</CODE>
|
|
<DD><A NAME="IDX508"></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="IDX509"></A>
|
|
<DT><CODE>glob-expand-word (C-x *)</CODE>
|
|
<DD><A NAME="IDX510"></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="IDX511"></A>
|
|
<DT><CODE>glob-list-expansions (C-x g)</CODE>
|
|
<DD><A NAME="IDX512"></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="IDX513"></A>
|
|
<DT><CODE>display-shell-version (C-x C-v)</CODE>
|
|
<DD><A NAME="IDX514"></A>
|
|
Display version information about the current instance of Bash.
|
|
<P>
|
|
|
|
<A NAME="IDX515"></A>
|
|
<DT><CODE>shell-expand-line (M-C-e)</CODE>
|
|
<DD><A NAME="IDX516"></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#SEC28">3.5 Shell Expansions</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX517"></A>
|
|
<DT><CODE>history-expand-line (M-^)</CODE>
|
|
<DD><A NAME="IDX518"></A>
|
|
Perform history expansion on the current line.
|
|
<P>
|
|
|
|
<A NAME="IDX519"></A>
|
|
<DT><CODE>magic-space ()</CODE>
|
|
<DD><A NAME="IDX520"></A>
|
|
Perform history expansion on the current line and insert a space
|
|
(see section <A HREF="bashref.html#SEC122">9.3 History Expansion</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX521"></A>
|
|
<DT><CODE>alias-expand-line ()</CODE>
|
|
<DD><A NAME="IDX522"></A>
|
|
Perform alias expansion on the current line (see section <A HREF="bashref.html#SEC84">6.6 Aliases</A>).
|
|
<P>
|
|
|
|
<A NAME="IDX523"></A>
|
|
<DT><CODE>history-and-alias-expand-line ()</CODE>
|
|
<DD><A NAME="IDX524"></A>
|
|
Perform history and alias expansion on the current line.
|
|
<P>
|
|
|
|
<A NAME="IDX525"></A>
|
|
<DT><CODE>insert-last-argument (M-. or M-_)</CODE>
|
|
<DD><A NAME="IDX526"></A>
|
|
A synonym for <CODE>yank-last-arg</CODE>.
|
|
<P>
|
|
|
|
<A NAME="IDX527"></A>
|
|
<DT><CODE>operate-and-get-next (C-o)</CODE>
|
|
<DD><A NAME="IDX528"></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="IDX529"></A>
|
|
<DT><CODE>edit-and-execute-command (C-xC-e)</CODE>
|
|
<DD><A NAME="IDX530"></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="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#SEC95"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC119"> >> </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#SEC140">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::SEC116::-->
|
|
<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 1003.2 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#SEC62">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="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#SEC95"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC119"> >> </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#SEC140">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::SEC117::-->
|
|
<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#SEC118">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 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.
|
|
</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#SEC113">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#SEC67">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#SEC28">3.5 Shell Expansions</A>).
|
|
The results are split using the rules described above
|
|
(see section <A HREF="bashref.html#SEC35">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#SEC67">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 is the
|
|
name of the command whose arguments are being completed, the
|
|
second argument is the word being completed, and the third argument
|
|
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#SEC118">8.7 Programmable Completion Builtins</A>), to generate the matches.
|
|
It must put the possible completions in the <CODE>COMPREPLY</CODE> array
|
|
variable.
|
|
</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>
|
|
|
|
<A NAME="Programmable Completion Builtins"></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#SEC95"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC95"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC119"> >> </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#SEC140">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::SEC118::-->
|
|
<P>
|
|
|
|
Two builtin commands are available to manipulate the programmable completion
|
|
facilities.
|
|
</P><P>
|
|
|
|
<DL COMPACT>
|
|
<DT><CODE>compgen</CODE>
|
|
<DD><A NAME="IDX531"></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="IDX532"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre><CODE>complete [-abcdefgjksuv] [-o <VAR>comp-option</VAR>] [-E] [-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 [-E] [<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>`-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#SEC117">8.6 Programmable Completion</A>).
|
|
</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>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#SEC107">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#SEC60">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#SEC67">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#SEC62">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#SEC60">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>-G <VAR>globpat</VAR></CODE>
|
|
<DD>The filename expansion pattern <VAR>globpat</VAR> is expanded to generate
|
|
the possible completions.
|
|
<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>-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 finishes, the possible completions are retrieved from the value
|
|
of the <CODE>COMPREPLY</CODE> array variable.
|
|
<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.
|
|
<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.
|
|
</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="IDX533"></A>
|
|
<TABLE><tr><td> </td><td class=example><pre><CODE>compopt</CODE> [-o <VAR>option</VAR>] [+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-execution 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.
|
|
<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="IDX534"></A>
|
|
</P><P>
|
|
|
|
<A NAME="Using History Interactively"></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">[ << ]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_Top"> Up </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 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#SEC140">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::SEC119::-->
|
|
<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#SEC120">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#SEC121">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#SEC122">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="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">[ << ]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC119"> Up </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 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#SEC140">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::SEC120::-->
|
|
<P>
|
|
|
|
When the <SAMP>`-o history'</SAMP> option to the <CODE>set</CODE> builtin
|
|
is enabled (see section <A HREF="bashref.html#SEC62">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 an interactive shell 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#SEC60">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 not set, no truncation is performed.
|
|
</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#SEC109">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#SEC60">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="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">[<A HREF="bashref.html#SEC122"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC119"> Up </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 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#SEC140">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::SEC121::-->
|
|
<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="IDX535"></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>
|
|
|
|
Fix Command. In the first form, a range of commands from <VAR>first</VAR> to
|
|
<VAR>last</VAR> is selected from the history list. 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>.
|
|
</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#SEC84">6.6 Aliases</A>).
|
|
</P><P>
|
|
|
|
<DT><CODE>history</CODE>
|
|
<DD><A NAME="IDX536"></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 current history file and append its contents to
|
|
the history list.
|
|
<P>
|
|
|
|
<DT><CODE>-w</CODE>
|
|
<DD>Write out the current history 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="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#SEC119"> Up </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 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#SEC140">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::SEC122::-->
|
|
<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#SEC60">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#SEC67">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#SEC123">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#SEC124">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#SEC125">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="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">[ << ]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC122"> Up </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 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#SEC140">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::SEC123::-->
|
|
<P>
|
|
|
|
An event designator is a reference to a command line entry in the
|
|
history list.
|
|
<A NAME="IDX537"></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 starting with <VAR>string</VAR>.
|
|
<P>
|
|
|
|
<DT><CODE>!?<VAR>string</VAR>[?]</CODE>
|
|
<DD>Refer to the most recent command 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="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">[<A HREF="bashref.html#SEC125"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC122"> Up </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 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#SEC140">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::SEC124::-->
|
|
<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="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#SEC122"> Up </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 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#SEC140">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::SEC125::-->
|
|
<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="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#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#SEC135"> >> </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#SEC140">Index</A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
|
|
</TR></TABLE>
|
|
<H1> 10. Installing Bash </H1>
|
|
<!--docid::SEC126::-->
|
|
<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#SEC127">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#SEC128">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#SEC129">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#SEC130">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#SEC131">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#SEC132">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#SEC133">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#SEC134">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="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">[<A HREF="bashref.html#SEC126"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC126"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> >> </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#SEC140">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::SEC127::-->
|
|
<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.in'</TT> is used to create <CODE>configure</CODE>
|
|
by a program called Autoconf. You only need
|
|
<TT>`configure.in'</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="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#SEC129"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC126"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> >> </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#SEC140">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::SEC128::-->
|
|
<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="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#SEC130"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC126"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> >> </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#SEC140">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::SEC129::-->
|
|
<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="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#SEC126"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> >> </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#SEC140">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::SEC130::-->
|
|
<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="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#SEC126"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> >> </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#SEC140">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::SEC131::-->
|
|
<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="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#SEC126"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> >> </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#SEC140">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::SEC132::-->
|
|
<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="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#SEC126"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> >> </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#SEC140">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::SEC133::-->
|
|
<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="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#SEC126"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC126"> Up </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC135"> >> </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#SEC140">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::SEC134::-->
|
|
<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> 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#SEC84">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#SEC85">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#SEC122">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#SEC29">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-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#SEC86">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#SEC60">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#SEC37">3.5.8.1 Pattern Matching</A>.
|
|
<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#SEC60">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#SEC120">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#SEC91">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#SEC39">3.6 Redirections</A>).
|
|
<P>
|
|
|
|
<DT><CODE>--enable-process-substitution</CODE>
|
|
<DD>This enables process substitution (see section <A HREF="bashref.html#SEC34">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#SEC117">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#SEC88">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#SEC95">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#SEC89">6.10 The Restricted Shell</A>, for a description of restricted mode.
|
|
<P>
|
|
|
|
<DT><CODE>--enable-select</CODE>
|
|
<DD>Include the <CODE>select</CODE> builtin, 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#SEC90">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#SEC60">4.2 Bash Builtin Commands</A>, for a description of the escape sequences that
|
|
<CODE>echo</CODE> recognizes.
|
|
<P>
|
|
|
|
</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="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#SEC126"> << </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#SEC136"> >> </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#SEC140">Index</A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
|
|
</TR></TABLE>
|
|
<H1> A. Reporting Bugs </H1>
|
|
<!--docid::SEC135::-->
|
|
<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/bash/">ftp://ftp.gnu.org/pub/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:chet@po.CWRU.Edu">chet@po.CWRU.Edu</A>.
|
|
</P><P>
|
|
|
|
<A NAME="Major Differences From The Bourne Shell"></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#SEC138"> << </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#SEC140">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::SEC136::-->
|
|
<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#SEC90">6.11 Bash POSIX Mode</A>).
|
|
<P>
|
|
|
|
<LI>
|
|
Bash has multi-character invocation options (see section <A HREF="bashref.html#SEC69">6.1 Invoking Bash</A>).
|
|
<P>
|
|
|
|
<LI>
|
|
Bash has command-line editing (see section <A HREF="bashref.html#SEC95">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#SEC117">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#SEC120">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#SEC122">9.3 History Expansion</A>).
|
|
<P>
|
|
|
|
<LI>
|
|
Bash has one-dimensional array variables (see section <A HREF="bashref.html#SEC85">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#SEC29">3.5.1 Brace Expansion</A>) and tilde
|
|
expansion (see section <A HREF="bashref.html#SEC30">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#SEC84">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#SEC83">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#SEC31">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#SEC31">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#SEC31">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#SEC31">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#SEC31">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#SEC31">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#SEC32">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#SEC34">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#SEC67">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#SEC35">3.5.7 Word Splitting</A>).
|
|
This closes a longstanding shell security hole.
|
|
<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#SEC36">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#SEC37">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#SEC60">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#SEC54">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#SEC39">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#SEC39">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#SEC39">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#SEC39">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#SEC62">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#SEC59">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#SEC60">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#SEC60">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#SEC60">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#SEC59">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#SEC24">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#SEC59">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#SEC60">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#SEC60">4.2 Bash Builtin Commands</A>).
|
|
<P>
|
|
|
|
<LI>
|
|
The Bash <CODE>read</CODE> builtin (see section <A HREF="bashref.html#SEC60">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#SEC59">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#SEC63">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#SEC69">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#SEC62">4.3.1 The Set Builtin</A>).
|
|
<P>
|
|
|
|
<LI>
|
|
The <SAMP>`-x'</SAMP> (<CODE>xtrace</CODE>) option displays commands other than
|
|
simple commands when performing an execution trace
|
|
(see section <A HREF="bashref.html#SEC62">4.3.1 The Set Builtin</A>).
|
|
<P>
|
|
|
|
<LI>
|
|
The <CODE>test</CODE> builtin (see section <A HREF="bashref.html#SEC59">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#SEC59">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#SEC59">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#SEC59">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#SEC60">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#SEC59">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#SEC86">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#SEC88">6.9 Controlling the Prompt</A>).
|
|
<P>
|
|
|
|
<LI>
|
|
The Bash restricted mode is more useful (see section <A HREF="bashref.html#SEC89">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#SEC93">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#SEC68">6. Bash Features</A>.
|
|
</P><P>
|
|
|
|
<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#SEC136"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC136"> 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#SEC140">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::SEC137::-->
|
|
<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="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#SEC140"> > </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#SEC140">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::SEC138::-->
|
|
<P>
|
|
|
|
<center>
|
|
Version 1.2, November 2002
|
|
</center>
|
|
</P><P>
|
|
|
|
<TABLE><tr><td> </td><td class=display><pre style="font-family: serif">Copyright (C) 2000,2001,2002 Free Software Foundation, Inc.
|
|
51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
|
|
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>
|
|
|
|
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 for under this License. Any other attempt to
|
|
copy, modify, sublicense or distribute the Document is void, and will
|
|
automatically terminate your rights under this License. However,
|
|
parties who have received copies, or rights, from you under this
|
|
License will not have their licenses terminated so long as such
|
|
parties remain in full compliance.
|
|
</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.
|
|
</OL>
|
|
<P>
|
|
|
|
<A NAME="SEC139"></A>
|
|
<H2> ADDENDUM: How to use this License for your documents </H2>
|
|
<!--docid::SEC139::-->
|
|
<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.2
|
|
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="SEC140"></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#SEC141"> > </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#SEC140">Index</A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
|
|
</TR></TABLE>
|
|
<H1> D. Indexes </H1>
|
|
<!--docid::SEC140::-->
|
|
<P>
|
|
|
|
<BLOCKQUOTE><TABLE BORDER=0 CELLSPACING=0>
|
|
<TR><TD ALIGN="left" VALIGN="TOP"><A HREF="bashref.html#SEC141">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#SEC142">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#SEC143">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#SEC144">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#SEC145">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="SEC141"></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#SEC142"> > </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC140"> 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#SEC140">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::SEC141::-->
|
|
<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#IDX69"><CODE>.</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">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#IDX68"><CODE>:</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">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#IDX84"><CODE>[</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">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#IDX89"><CODE>alias</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">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#IDX289"><CODE>bg</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC93">7.2 Job Control Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX90"><CODE>bind</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX70"><CODE>break</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX91"><CODE>builtin</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">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#IDX92"><CODE>caller</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX71"><CODE>cd</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX93"><CODE>command</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX531"><CODE>compgen</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC118">8.7 Programmable Completion Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX532"><CODE>complete</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC118">8.7 Programmable Completion Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX533"><CODE>compopt</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC118">8.7 Programmable Completion Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX72"><CODE>continue</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">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#IDX94"><CODE>declare</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX286"><CODE>dirs</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC87">6.8.1 Directory Stack Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX294"><CODE>disown</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC93">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#IDX95"><CODE>echo</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX96"><CODE>enable</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX73"><CODE>eval</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX74"><CODE>exec</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX75"><CODE>exit</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX76"><CODE>export</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">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#IDX535"><CODE>fc</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC121">9.2 Bash History Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX290"><CODE>fg</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC93">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#IDX77"><CODE>getopts</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">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#IDX78"><CODE>hash</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX97"><CODE>help</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX536"><CODE>history</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC121">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#IDX291"><CODE>jobs</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC93">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#IDX292"><CODE>kill</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC93">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#IDX98"><CODE>let</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX99"><CODE>local</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX100"><CODE>logout</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">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#IDX101"><CODE>mapfile</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">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#IDX287"><CODE>popd</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC87">6.8.1 Directory Stack Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX102"><CODE>printf</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX288"><CODE>pushd</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC87">6.8.1 Directory Stack Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX79"><CODE>pwd</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">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#IDX103"><CODE>read</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX104"><CODE>readarray</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX80"><CODE>readonly</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX81"><CODE>return</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">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#IDX110"><CODE>set</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC62">4.3.1 The Set Builtin</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX82"><CODE>shift</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX111"><CODE>shopt</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC63">4.3.2 The Shopt Builtin</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX105"><CODE>source</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX295"><CODE>suspend</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC93">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#IDX83"><CODE>test</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX85"><CODE>times</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX86"><CODE>trap</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX106"><CODE>type</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX107"><CODE>typeset</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">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#IDX108"><CODE>ulimit</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX87"><CODE>umask</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX109"><CODE>unalias</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX88"><CODE>unset</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC59">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#IDX293"><CODE>wait</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC93">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="SEC142"></A>
|
|
<TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
|
|
<TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC141"> < </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC143"> > </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC143"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC140"> 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#SEC140">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::SEC142::-->
|
|
<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#SEC24">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="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">[<A HREF="bashref.html#SEC144"> << </A>]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC140"> 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#SEC140">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::SEC143::-->
|
|
<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#IDX58"><CODE>!</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC27">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#SEC27">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#IDX50"><CODE>#</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC27">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#SEC27">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#IDX56"><CODE>$</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC27">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#SEC27">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#SEC27">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#SEC27">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#IDX54"><CODE>-</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC27">3.4.2 Special Parameters</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX55"><CODE>-</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC27">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#IDX60"><CODE>0</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC27">3.4.2 Special Parameters</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX61"><CODE>0</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC27">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#SEC27">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#SEC27">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#IDX48"><CODE>@</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC27">3.4.2 Special Parameters</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX49"><CODE>@</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC27">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#IDX62"><CODE>_</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC27">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#SEC27">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#IDX296"><CODE>auto_resume</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.3 Job Control Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX297"><CODE>auto_resume</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC94">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#IDX132"><CODE>BASH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX133"><CODE>BASH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX136"><CODE>BASH_ALIASES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX137"><CODE>BASH_ALIASES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX138"><CODE>BASH_ARGC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX139"><CODE>BASH_ARGC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX140"><CODE>BASH_ARGV</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX141"><CODE>BASH_ARGV</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX142"><CODE>BASH_CMDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX143"><CODE>BASH_CMDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX144"><CODE>BASH_COMMAND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX145"><CODE>BASH_COMMAND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX146"><CODE>BASH_ENV</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX147"><CODE>BASH_ENV</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX148"><CODE>BASH_EXECUTION_STRING</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX149"><CODE>BASH_EXECUTION_STRING</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX150"><CODE>BASH_LINENO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX151"><CODE>BASH_LINENO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX152"><CODE>BASH_REMATCH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX153"><CODE>BASH_REMATCH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX154"><CODE>BASH_SOURCE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX155"><CODE>BASH_SOURCE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX156"><CODE>BASH_SUBSHELL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX157"><CODE>BASH_SUBSHELL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX158"><CODE>BASH_VERSINFO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX159"><CODE>BASH_VERSINFO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX160"><CODE>BASH_VERSION</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX161"><CODE>BASH_VERSION</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX134"><CODE>BASHPID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX135"><CODE>BASHPID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX303"><CODE>bell-style</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX304"><CODE>bind-tty-special-chars</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">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#IDX112"><CODE>CDPATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX113"><CODE>CDPATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX162"><CODE>COLUMNS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX163"><CODE>COLUMNS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX305"><CODE>comment-begin</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX164"><CODE>COMP_CWORD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX165"><CODE>COMP_CWORD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX172"><CODE>COMP_KEY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX173"><CODE>COMP_KEY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX166"><CODE>COMP_LINE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX167"><CODE>COMP_LINE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX168"><CODE>COMP_POINT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX169"><CODE>COMP_POINT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX170"><CODE>COMP_TYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX171"><CODE>COMP_TYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX174"><CODE>COMP_WORDBREAKS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX175"><CODE>COMP_WORDBREAKS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX176"><CODE>COMP_WORDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX177"><CODE>COMP_WORDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX306"><CODE>completion-prefix-display-length</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX307"><CODE>completion-query-items</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX178"><CODE>COMPREPLY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX179"><CODE>COMPREPLY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX308"><CODE>convert-meta</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</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#IDX180"><CODE>DIRSTACK</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX181"><CODE>DIRSTACK</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX309"><CODE>disable-completion</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">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#IDX310"><CODE>editing-mode</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX182"><CODE>EMACS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX183"><CODE>EMACS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX311"><CODE>enable-keypad</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX184"><CODE>EUID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX185"><CODE>EUID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX312"><CODE>expand-tilde</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">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#IDX186"><CODE>FCEDIT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX187"><CODE>FCEDIT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX188"><CODE>FIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX189"><CODE>FIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX190"><CODE>FUNCNAME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX191"><CODE>FUNCNAME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">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#IDX192"><CODE>GLOBIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX193"><CODE>GLOBIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX194"><CODE>GROUPS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX195"><CODE>GROUPS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">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#IDX196"><CODE>histchars</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX197"><CODE>histchars</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX198"><CODE>HISTCMD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX199"><CODE>HISTCMD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX200"><CODE>HISTCONTROL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX201"><CODE>HISTCONTROL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX202"><CODE>HISTFILE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX203"><CODE>HISTFILE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX204"><CODE>HISTFILESIZE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX205"><CODE>HISTFILESIZE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX206"><CODE>HISTIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX207"><CODE>HISTIGNORE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX313"><CODE>history-preserve-point</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX314"><CODE>history-size</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX208"><CODE>HISTSIZE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX209"><CODE>HISTSIZE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX210"><CODE>HISTTIMEFORMAT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX211"><CODE>HISTTIMEFORMAT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX114"><CODE>HOME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX115"><CODE>HOME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX315"><CODE>horizontal-scroll-mode</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX212"><CODE>HOSTFILE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX213"><CODE>HOSTFILE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX214"><CODE>HOSTNAME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX215"><CODE>HOSTNAME</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX216"><CODE>HOSTTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX217"><CODE>HOSTTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">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#IDX116"><CODE>IFS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX117"><CODE>IFS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX218"><CODE>IGNOREEOF</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX219"><CODE>IGNOREEOF</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX316"><CODE>input-meta</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX220"><CODE>INPUTRC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX221"><CODE>INPUTRC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX318"><CODE>isearch-terminators</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">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#IDX319"><CODE>keymap</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">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#IDX222"><CODE>LANG</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX223"><CODE>LANG</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX224"><CODE>LC_ALL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX225"><CODE>LC_ALL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX226"><CODE>LC_COLLATE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX227"><CODE>LC_COLLATE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX228"><CODE>LC_CTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX229"><CODE>LC_CTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">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#IDX230"><CODE>LC_MESSAGES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX231"><CODE>LC_MESSAGES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX232"><CODE>LC_NUMERIC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX233"><CODE>LC_NUMERIC</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX234"><CODE>LINENO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX235"><CODE>LINENO</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX236"><CODE>LINES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX237"><CODE>LINES</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">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#IDX238"><CODE>MACHTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX239"><CODE>MACHTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX118"><CODE>MAIL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX119"><CODE>MAIL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX240"><CODE>MAILCHECK</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX241"><CODE>MAILCHECK</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX120"><CODE>MAILPATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX121"><CODE>MAILPATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX320"><CODE>mark-modified-lines</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX321"><CODE>mark-symlinked-directories</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX322"><CODE>match-hidden-files</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX317"><CODE>meta-flag</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">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#IDX242"><CODE>OLDPWD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX243"><CODE>OLDPWD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX122"><CODE>OPTARG</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX123"><CODE>OPTARG</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX244"><CODE>OPTERR</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX245"><CODE>OPTERR</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX124"><CODE>OPTIND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX125"><CODE>OPTIND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX246"><CODE>OSTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX247"><CODE>OSTYPE</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX323"><CODE>output-meta</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">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#IDX324"><CODE>page-completions</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX126"><CODE>PATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX127"><CODE>PATH</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX248"><CODE>PIPESTATUS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX249"><CODE>PIPESTATUS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX250"><CODE>POSIXLY_CORRECT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX251"><CODE>POSIXLY_CORRECT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX252"><CODE>PPID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX253"><CODE>PPID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX254"><CODE>PROMPT_COMMAND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX255"><CODE>PROMPT_COMMAND</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX256"><CODE>PROMPT_DIRTRIM</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX257"><CODE>PROMPT_DIRTRIM</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX128"><CODE>PS1</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX129"><CODE>PS1</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX130"><CODE>PS2</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX131"><CODE>PS2</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX258"><CODE>PS3</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX259"><CODE>PS3</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX260"><CODE>PS4</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX261"><CODE>PS4</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX262"><CODE>PWD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX263"><CODE>PWD</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">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#IDX264"><CODE>RANDOM</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX265"><CODE>RANDOM</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX266"><CODE>REPLY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX267"><CODE>REPLY</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX325"><CODE>revert-all-at-newline</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">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#IDX268"><CODE>SECONDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX269"><CODE>SECONDS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX270"><CODE>SHELL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX271"><CODE>SHELL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX272"><CODE>SHELLOPTS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX273"><CODE>SHELLOPTS</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX274"><CODE>SHLVL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX275"><CODE>SHLVL</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX326"><CODE>show-all-if-ambiguous</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX327"><CODE>show-all-if-unmodified</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">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#IDX276"><CODE>TIMEFORMAT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX277"><CODE>TIMEFORMAT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX278"><CODE>TMOUT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX279"><CODE>TMOUT</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX280"><CODE>TMPDIR</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX281"><CODE>TMPDIR</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">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#IDX282"><CODE>UID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">5.2 Bash Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX283"><CODE>UID</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC67">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#IDX328"><CODE>visible-stats</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC104">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="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#SEC140"> 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#SEC140">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::SEC144::-->
|
|
<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#IDX479"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX480"><CODE>abort (C-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX349"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX350"><CODE>accept-line (Newline or Return)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX521"><CODE>alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX522"><CODE>alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">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#IDX335"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX336"><CODE>backward-char (C-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX377"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX378"><CODE>backward-delete-char (Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX399"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX400"><CODE>backward-kill-line (C-x Rubout)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX411"><CODE>backward-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX412"><CODE>backward-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX407"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX408"><CODE>backward-kill-word (M-<KBD>DEL</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX339"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX340"><CODE>backward-word (M-b)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX355"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX356"><CODE>beginning-of-history (M-&#60;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX329"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX330"><CODE>beginning-of-line (C-a)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">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#IDX475"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.7 Keyboard Macros</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX476"><CODE>call-last-kbd-macro (C-x e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.7 Keyboard Macros</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX393"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX394"><CODE>capitalize-word (M-c)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX495"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX496"><CODE>character-search (C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX497"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX498"><CODE>character-search-backward (M-C-])</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX345"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX346"><CODE>clear-screen (C-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX435"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX436"><CODE>complete (<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX461"><CODE>complete-command (M-!)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX462"><CODE>complete-command (M-!)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX445"><CODE>complete-filename (M-/)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX446"><CODE>complete-filename (M-/)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX457"><CODE>complete-hostname (M-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX458"><CODE>complete-hostname (M-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX469"><CODE>complete-into-braces (M-{)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX470"><CODE>complete-into-braces (M-{)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX449"><CODE>complete-username (M-~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX450"><CODE>complete-username (M-~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX453"><CODE>complete-variable (M-$)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX454"><CODE>complete-variable (M-$)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX423"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX424"><CODE>copy-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX425"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX426"><CODE>copy-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX421"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX422"><CODE>copy-region-as-kill ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">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#IDX467"><CODE>dabbrev-expand ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX468"><CODE>dabbrev-expand ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX375"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX376"><CODE>delete-char (C-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX443"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX444"><CODE>delete-char-or-list ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX417"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX418"><CODE>delete-horizontal-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX431"><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#SEC112">8.4.5 Specifying Numeric Arguments</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX432"><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#SEC112">8.4.5 Specifying Numeric Arguments</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX513"><CODE>display-shell-version (C-x C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX514"><CODE>display-shell-version (C-x C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX481"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX482"><CODE>do-uppercase-version (M-a, M-b, M-<VAR>x</VAR>, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX391"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX392"><CODE>downcase-word (M-l)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX501"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX502"><CODE>dump-functions ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX505"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX506"><CODE>dump-macros ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX503"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX504"><CODE>dump-variables ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX465"><CODE>dynamic-complete-history (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX466"><CODE>dynamic-complete-history (M-<KBD>TAB</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">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#IDX529"><CODE>edit-and-execute-command (C-xC-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX530"><CODE>edit-and-execute-command (C-xC-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX473"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.7 Keyboard Macros</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX474"><CODE>end-kbd-macro (C-x ))</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.7 Keyboard Macros</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX357"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX358"><CODE>end-of-history (M-&#62;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX331"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX332"><CODE>end-of-line (C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX493"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX494"><CODE>exchange-point-and-mark (C-x C-x)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">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#IDX379"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX380"><CODE>forward-backward-delete-char ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX333"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX334"><CODE>forward-char (C-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX361"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX362"><CODE>forward-search-history (C-s)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX337"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX338"><CODE>forward-word (M-f)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">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#IDX507"><CODE>glob-complete-word (M-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX508"><CODE>glob-complete-word (M-g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX509"><CODE>glob-expand-word (C-x *)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX510"><CODE>glob-expand-word (C-x *)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX511"><CODE>glob-list-expansions (C-x g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX512"><CODE>glob-list-expansions (C-x g)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">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#IDX523"><CODE>history-and-alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX524"><CODE>history-and-alias-expand-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX517"><CODE>history-expand-line (M-^)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX518"><CODE>history-expand-line (M-^)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX369"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX370"><CODE>history-search-backward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX367"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX368"><CODE>history-search-forward ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">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#IDX499"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX500"><CODE>insert-comment (M-#)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX439"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX440"><CODE>insert-completions (M-*)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX525"><CODE>insert-last-argument (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX526"><CODE>insert-last-argument (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">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#IDX397"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX398"><CODE>kill-line (C-k)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX419"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX420"><CODE>kill-region ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX403"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX404"><CODE>kill-whole-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX405"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX406"><CODE>kill-word (M-d)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">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#IDX519"><CODE>magic-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX520"><CODE>magic-space ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX441"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX442"><CODE>menu-complete ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">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#IDX353"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX354"><CODE>next-history (C-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX365"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX366"><CODE>non-incremental-forward-search-history (M-n)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX363"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX364"><CODE>non-incremental-reverse-search-history (M-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">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#IDX527"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX528"><CODE>operate-and-get-next (C-o)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX395"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX396"><CODE>overwrite-mode ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">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#IDX463"><CODE>possible-command-completions (C-x !)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX464"><CODE>possible-command-completions (C-x !)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX437"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX438"><CODE>possible-completions (M-?)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX447"><CODE>possible-filename-completions (C-x /)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX448"><CODE>possible-filename-completions (C-x /)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX459"><CODE>possible-hostname-completions (C-x @)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX460"><CODE>possible-hostname-completions (C-x @)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX451"><CODE>possible-username-completions (C-x ~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX452"><CODE>possible-username-completions (C-x ~)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX455"><CODE>possible-variable-completions (C-x $)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX456"><CODE>possible-variable-completions (C-x $)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX483"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX484"><CODE>prefix-meta (<KBD>ESC</KBD>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX351"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX352"><CODE>previous-history (C-p)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</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#IDX381"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX382"><CODE>quoted-insert (C-q or C-v)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">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#IDX477"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX478"><CODE>re-read-init-file (C-x C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX347"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX348"><CODE>redraw-current-line ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX359"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX360"><CODE>reverse-search-history (C-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX487"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX488"><CODE>revert-line (M-r)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">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#IDX383"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX384"><CODE>self-insert (a, b, A, 1, !, <small>...</small>)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX491"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX492"><CODE>set-mark (C-@)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX343"><CODE>shell-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX344"><CODE>shell-backward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX515"><CODE>shell-expand-line (M-C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX516"><CODE>shell-expand-line (M-C-e)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX341"><CODE>shell-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX342"><CODE>shell-forward-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX409"><CODE>shell-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX410"><CODE>shell-kill-word ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX471"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">8.4.7 Keyboard Macros</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX472"><CODE>start-kbd-macro (C-x ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC114">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#IDX489"><CODE>tilde-expand (M-&#38;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX490"><CODE>tilde-expand (M-&#38;)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX385"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX386"><CODE>transpose-chars (C-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX387"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX388"><CODE>transpose-words (M-t)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">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#IDX485"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX486"><CODE>undo (C-_ or C-x C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX433"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.5 Specifying Numeric Arguments</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX434"><CODE>universal-argument ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC112">8.4.5 Specifying Numeric Arguments</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX415"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX416"><CODE>unix-filename-rubout ()</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX401"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX402"><CODE>unix-line-discard (C-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX413"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX414"><CODE>unix-word-rubout (C-w)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX389"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX390"><CODE>upcase-word (M-u)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC110">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#IDX427"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX428"><CODE>yank (C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX373"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX374"><CODE>yank-last-arg (M-. or M-_)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX371"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX372"><CODE>yank-nth-arg (M-C-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX429"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX430"><CODE>yank-pop (M-y)</CODE></A></TD><TD valign=top><A HREF="bashref.html#SEC111">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="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">[ > ]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT"> <TD VALIGN="MIDDLE" ALIGN="LEFT">[ << ]</TD>
|
|
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC140"> 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#SEC140">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::SEC145::-->
|
|
<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#SEC84">alias expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC84">6.6 Aliases</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC83">arithmetic evaluation</A></TD><TD valign=top><A HREF="bashref.html#SEC83">6.5 Shell Arithmetic</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC33">arithmetic expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC33">3.5.5 Arithmetic Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC83">arithmetic, shell</A></TD><TD valign=top><A HREF="bashref.html#SEC83">6.5 Shell Arithmetic</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC85">arrays</A></TD><TD valign=top><A HREF="bashref.html#SEC85">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#SEC92">background</A></TD><TD valign=top><A HREF="bashref.html#SEC92">7.1 Job Control Basics</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC127">Bash configuration</A></TD><TD valign=top><A HREF="bashref.html#SEC127">10.1 Basic Installation</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC127">Bash installation</A></TD><TD valign=top><A HREF="bashref.html#SEC127">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#SEC29">brace expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC29">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#SEC98">command editing</A></TD><TD valign=top><A HREF="bashref.html#SEC98">8.2.1 Readline Bare Essentials</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC52">command execution</A></TD><TD valign=top><A HREF="bashref.html#SEC52">3.7.2 Command Search and Execution</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC51">command expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC51">3.7.1 Simple Command Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC120">command history</A></TD><TD valign=top><A HREF="bashref.html#SEC120">9.1 Bash History Facilities</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC52">command search</A></TD><TD valign=top><A HREF="bashref.html#SEC52">3.7.2 Command Search and Execution</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC32">command substitution</A></TD><TD valign=top><A HREF="bashref.html#SEC32">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#SEC118">completion builtins</A></TD><TD valign=top><A HREF="bashref.html#SEC118">8.7 Programmable Completion Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC127">configuration</A></TD><TD valign=top><A HREF="bashref.html#SEC127">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#SEC86">directory stack</A></TD><TD valign=top><A HREF="bashref.html#SEC86">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#SEC98">editing command lines</A></TD><TD valign=top><A HREF="bashref.html#SEC98">8.2.1 Readline Bare Essentials</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC54">environment</A></TD><TD valign=top><A HREF="bashref.html#SEC54">3.7.4 Environment</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC83">evaluation, arithmetic</A></TD><TD valign=top><A HREF="bashref.html#SEC83">6.5 Shell Arithmetic</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC123">event designators</A></TD><TD valign=top><A HREF="bashref.html#SEC123">9.3.1 Event Designators</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC53">execution environment</A></TD><TD valign=top><A HREF="bashref.html#SEC53">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#SEC55">exit status</A></TD><TD valign=top><A HREF="bashref.html#SEC55">3.7.5 Exit Status</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC28">expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC28">3.5 Shell Expansions</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC33">expansion, arithmetic</A></TD><TD valign=top><A HREF="bashref.html#SEC33">3.5.5 Arithmetic Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC29">expansion, brace</A></TD><TD valign=top><A HREF="bashref.html#SEC29">3.5.1 Brace Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX64">expansion, filename</A></TD><TD valign=top><A HREF="bashref.html#SEC36">3.5.8 Filename Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC31">expansion, parameter</A></TD><TD valign=top><A HREF="bashref.html#SEC31">3.5.3 Shell Parameter Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX65">expansion, pathname</A></TD><TD valign=top><A HREF="bashref.html#SEC36">3.5.8 Filename Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC30">expansion, tilde</A></TD><TD valign=top><A HREF="bashref.html#SEC30">3.5.2 Tilde Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC83">expressions, arithmetic</A></TD><TD valign=top><A HREF="bashref.html#SEC83">6.5 Shell Arithmetic</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC82">expressions, conditional</A></TD><TD valign=top><A HREF="bashref.html#SEC82">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#IDX66">filename expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC36">3.5.8 Filename Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC92">foreground</A></TD><TD valign=top><A HREF="bashref.html#SEC92">7.1 Job Control Basics</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC24">functions, shell</A></TD><TD valign=top><A HREF="bashref.html#SEC24">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#SEC121">history builtins</A></TD><TD valign=top><A HREF="bashref.html#SEC121">9.2 Bash History Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX537">history events</A></TD><TD valign=top><A HREF="bashref.html#SEC123">9.3.1 Event Designators</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC122">history expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC122">9.3 History Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC120">history list</A></TD><TD valign=top><A HREF="bashref.html#SEC120">9.1 Bash History Facilities</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX534">History, how to use</A></TD><TD valign=top><A HREF="bashref.html#SEC118">8.7 Programmable Completion Builtins</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#SEC103">initialization file, readline</A></TD><TD valign=top><A HREF="bashref.html#SEC103">8.3 Readline Init File</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC127">installation</A></TD><TD valign=top><A HREF="bashref.html#SEC127">10.1 Basic Installation</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC97">interaction, readline</A></TD><TD valign=top><A HREF="bashref.html#SEC97">8.2 Readline Interaction</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX285">interactive shell</A></TD><TD valign=top><A HREF="bashref.html#SEC69">6.1 Invoking Bash</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC78">interactive shell</A></TD><TD valign=top><A HREF="bashref.html#SEC78">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#SEC92">job control</A></TD><TD valign=top><A HREF="bashref.html#SEC92">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#IDX301">kill ring</A></TD><TD valign=top><A HREF="bashref.html#SEC100">8.2.3 Readline Killing Commands</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX299">killing text</A></TD><TD valign=top><A HREF="bashref.html#SEC100">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#IDX284">login shell</A></TD><TD valign=top><A HREF="bashref.html#SEC69">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#SEC37">matching, pattern</A></TD><TD valign=top><A HREF="bashref.html#SEC37">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#SEC98">notation, readline</A></TD><TD valign=top><A HREF="bashref.html#SEC98">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#SEC31">parameter expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC31">3.5.3 Shell Parameter Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC25">parameters</A></TD><TD valign=top><A HREF="bashref.html#SEC25">3.4 Shell Parameters</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC26">parameters, positional</A></TD><TD valign=top><A HREF="bashref.html#SEC26">3.4.1 Positional Parameters</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC27">parameters, special</A></TD><TD valign=top><A HREF="bashref.html#SEC27">3.4.2 Special Parameters</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX67">pathname expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC36">3.5.8 Filename Expansion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC37">pattern matching</A></TD><TD valign=top><A HREF="bashref.html#SEC37">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#SEC90">POSIX Mode</A></TD><TD valign=top><A HREF="bashref.html#SEC90">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#SEC34">process substitution</A></TD><TD valign=top><A HREF="bashref.html#SEC34">3.5.6 Process Substitution</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC117">programmable completion</A></TD><TD valign=top><A HREF="bashref.html#SEC117">8.6 Programmable Completion</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC88">prompting</A></TD><TD valign=top><A HREF="bashref.html#SEC88">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#IDX298">Readline, how to use</A></TD><TD valign=top><A HREF="bashref.html#SEC94">7.3 Job Control Variables</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC39">redirection</A></TD><TD valign=top><A HREF="bashref.html#SEC39">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#SEC89">restricted shell</A></TD><TD valign=top><A HREF="bashref.html#SEC89">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#SEC83">shell arithmetic</A></TD><TD valign=top><A HREF="bashref.html#SEC83">6.5 Shell Arithmetic</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC24">shell function</A></TD><TD valign=top><A HREF="bashref.html#SEC24">3.3 Shell Functions</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC57">shell script</A></TD><TD valign=top><A HREF="bashref.html#SEC57">3.8 Shell Scripts</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC25">shell variable</A></TD><TD valign=top><A HREF="bashref.html#SEC25">3.4 Shell Parameters</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC78">shell, interactive</A></TD><TD valign=top><A HREF="bashref.html#SEC78">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#SEC56">signal handling</A></TD><TD valign=top><A HREF="bashref.html#SEC56">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#SEC64">special builtin</A></TD><TD valign=top><A HREF="bashref.html#SEC64">4.4 Special Builtins</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC70">startup files</A></TD><TD valign=top><A HREF="bashref.html#SEC70">6.2 Bash Startup Files</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#SEC92">suspending jobs</A></TD><TD valign=top><A HREF="bashref.html#SEC92">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#SEC30">tilde expansion</A></TD><TD valign=top><A HREF="bashref.html#SEC30">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#SEC25">variable, shell</A></TD><TD valign=top><A HREF="bashref.html#SEC25">3.4 Shell Parameters</A></TD></TR>
|
|
<TR><TD></TD><TD valign=top><A HREF="bashref.html#IDX302">variables, readline</A></TD><TD valign=top><A HREF="bashref.html#SEC104">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#SEC35">word splitting</A></TD><TD valign=top><A HREF="bashref.html#SEC35">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#IDX300">yanking text</A></TD><TD valign=top><A HREF="bashref.html#SEC100">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#SEC140">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>
|
|
</UL>
|
|
<A NAME="TOC24" HREF="bashref.html#SEC24">3.3 Shell Functions</A>
|
|
<BR>
|
|
<A NAME="TOC25" HREF="bashref.html#SEC25">3.4 Shell Parameters</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC26" HREF="bashref.html#SEC26">3.4.1 Positional Parameters</A>
|
|
<BR>
|
|
<A NAME="TOC27" HREF="bashref.html#SEC27">3.4.2 Special Parameters</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC28" HREF="bashref.html#SEC28">3.5 Shell Expansions</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC29" HREF="bashref.html#SEC29">3.5.1 Brace Expansion</A>
|
|
<BR>
|
|
<A NAME="TOC30" HREF="bashref.html#SEC30">3.5.2 Tilde Expansion</A>
|
|
<BR>
|
|
<A NAME="TOC31" HREF="bashref.html#SEC31">3.5.3 Shell Parameter Expansion</A>
|
|
<BR>
|
|
<A NAME="TOC32" HREF="bashref.html#SEC32">3.5.4 Command Substitution</A>
|
|
<BR>
|
|
<A NAME="TOC33" HREF="bashref.html#SEC33">3.5.5 Arithmetic Expansion</A>
|
|
<BR>
|
|
<A NAME="TOC34" HREF="bashref.html#SEC34">3.5.6 Process Substitution</A>
|
|
<BR>
|
|
<A NAME="TOC35" HREF="bashref.html#SEC35">3.5.7 Word Splitting</A>
|
|
<BR>
|
|
<A NAME="TOC36" HREF="bashref.html#SEC36">3.5.8 Filename Expansion</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC37" HREF="bashref.html#SEC37">3.5.8.1 Pattern Matching</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC38" HREF="bashref.html#SEC38">3.5.9 Quote Removal</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC39" HREF="bashref.html#SEC39">3.6 Redirections</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC40" HREF="bashref.html#SEC40">3.6.1 Redirecting Input</A>
|
|
<BR>
|
|
<A NAME="TOC41" HREF="bashref.html#SEC41">3.6.2 Redirecting Output</A>
|
|
<BR>
|
|
<A NAME="TOC42" HREF="bashref.html#SEC42">3.6.3 Appending Redirected Output</A>
|
|
<BR>
|
|
<A NAME="TOC43" HREF="bashref.html#SEC43">3.6.4 Redirecting Standard Output and Standard Error</A>
|
|
<BR>
|
|
<A NAME="TOC44" HREF="bashref.html#SEC44">3.6.5 Appending Standard Output and Standard Error</A>
|
|
<BR>
|
|
<A NAME="TOC45" HREF="bashref.html#SEC45">3.6.6 Here Documents</A>
|
|
<BR>
|
|
<A NAME="TOC46" HREF="bashref.html#SEC46">3.6.7 Here Strings</A>
|
|
<BR>
|
|
<A NAME="TOC47" HREF="bashref.html#SEC47">3.6.8 Duplicating File Descriptors</A>
|
|
<BR>
|
|
<A NAME="TOC48" HREF="bashref.html#SEC48">3.6.9 Moving File Descriptors</A>
|
|
<BR>
|
|
<A NAME="TOC49" HREF="bashref.html#SEC49">3.6.10 Opening File Descriptors for Reading and Writing</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC50" HREF="bashref.html#SEC50">3.7 Executing Commands</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC51" HREF="bashref.html#SEC51">3.7.1 Simple Command Expansion</A>
|
|
<BR>
|
|
<A NAME="TOC52" HREF="bashref.html#SEC52">3.7.2 Command Search and Execution</A>
|
|
<BR>
|
|
<A NAME="TOC53" HREF="bashref.html#SEC53">3.7.3 Command Execution Environment</A>
|
|
<BR>
|
|
<A NAME="TOC54" HREF="bashref.html#SEC54">3.7.4 Environment</A>
|
|
<BR>
|
|
<A NAME="TOC55" HREF="bashref.html#SEC55">3.7.5 Exit Status</A>
|
|
<BR>
|
|
<A NAME="TOC56" HREF="bashref.html#SEC56">3.7.6 Signals</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC57" HREF="bashref.html#SEC57">3.8 Shell Scripts</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC58" HREF="bashref.html#SEC58">4. Shell Builtin Commands</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC59" HREF="bashref.html#SEC59">4.1 Bourne Shell Builtins</A>
|
|
<BR>
|
|
<A NAME="TOC60" HREF="bashref.html#SEC60">4.2 Bash Builtin Commands</A>
|
|
<BR>
|
|
<A NAME="TOC61" HREF="bashref.html#SEC61">4.3 Modifying Shell Behavior</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC62" HREF="bashref.html#SEC62">4.3.1 The Set Builtin</A>
|
|
<BR>
|
|
<A NAME="TOC63" HREF="bashref.html#SEC63">4.3.2 The Shopt Builtin</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC64" HREF="bashref.html#SEC64">4.4 Special Builtins</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC65" HREF="bashref.html#SEC65">5. Shell Variables</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC66" HREF="bashref.html#SEC66">5.1 Bourne Shell Variables</A>
|
|
<BR>
|
|
<A NAME="TOC67" HREF="bashref.html#SEC67">5.2 Bash Variables</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC68" HREF="bashref.html#SEC68">6. Bash Features</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC69" HREF="bashref.html#SEC69">6.1 Invoking Bash</A>
|
|
<BR>
|
|
<A NAME="TOC70" HREF="bashref.html#SEC70">6.2 Bash Startup Files</A>
|
|
<BR>
|
|
<A NAME="TOC78" HREF="bashref.html#SEC78">6.3 Interactive Shells</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC79" HREF="bashref.html#SEC79">6.3.1 What is an Interactive Shell?</A>
|
|
<BR>
|
|
<A NAME="TOC80" HREF="bashref.html#SEC80">6.3.2 Is this Shell Interactive?</A>
|
|
<BR>
|
|
<A NAME="TOC81" HREF="bashref.html#SEC81">6.3.3 Interactive Shell Behavior</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC82" HREF="bashref.html#SEC82">6.4 Bash Conditional Expressions</A>
|
|
<BR>
|
|
<A NAME="TOC83" HREF="bashref.html#SEC83">6.5 Shell Arithmetic</A>
|
|
<BR>
|
|
<A NAME="TOC84" HREF="bashref.html#SEC84">6.6 Aliases</A>
|
|
<BR>
|
|
<A NAME="TOC85" HREF="bashref.html#SEC85">6.7 Arrays</A>
|
|
<BR>
|
|
<A NAME="TOC86" HREF="bashref.html#SEC86">6.8 The Directory Stack</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC87" HREF="bashref.html#SEC87">6.8.1 Directory Stack Builtins</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC88" HREF="bashref.html#SEC88">6.9 Controlling the Prompt</A>
|
|
<BR>
|
|
<A NAME="TOC89" HREF="bashref.html#SEC89">6.10 The Restricted Shell</A>
|
|
<BR>
|
|
<A NAME="TOC90" HREF="bashref.html#SEC90">6.11 Bash POSIX Mode</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC91" HREF="bashref.html#SEC91">7. Job Control</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC92" HREF="bashref.html#SEC92">7.1 Job Control Basics</A>
|
|
<BR>
|
|
<A NAME="TOC93" HREF="bashref.html#SEC93">7.2 Job Control Builtins</A>
|
|
<BR>
|
|
<A NAME="TOC94" HREF="bashref.html#SEC94">7.3 Job Control Variables</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC95" HREF="bashref.html#SEC95">8. Command Line Editing</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC96" HREF="bashref.html#SEC96">8.1 Introduction to Line Editing</A>
|
|
<BR>
|
|
<A NAME="TOC97" HREF="bashref.html#SEC97">8.2 Readline Interaction</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC98" HREF="bashref.html#SEC98">8.2.1 Readline Bare Essentials</A>
|
|
<BR>
|
|
<A NAME="TOC99" HREF="bashref.html#SEC99">8.2.2 Readline Movement Commands</A>
|
|
<BR>
|
|
<A NAME="TOC100" HREF="bashref.html#SEC100">8.2.3 Readline Killing Commands</A>
|
|
<BR>
|
|
<A NAME="TOC101" HREF="bashref.html#SEC101">8.2.4 Readline Arguments</A>
|
|
<BR>
|
|
<A NAME="TOC102" HREF="bashref.html#SEC102">8.2.5 Searching for Commands in the History</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC103" HREF="bashref.html#SEC103">8.3 Readline Init File</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC104" HREF="bashref.html#SEC104">8.3.1 Readline Init File Syntax</A>
|
|
<BR>
|
|
<A NAME="TOC105" HREF="bashref.html#SEC105">8.3.2 Conditional Init Constructs</A>
|
|
<BR>
|
|
<A NAME="TOC106" HREF="bashref.html#SEC106">8.3.3 Sample Init File</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC107" HREF="bashref.html#SEC107">8.4 Bindable Readline Commands</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC108" HREF="bashref.html#SEC108">8.4.1 Commands For Moving</A>
|
|
<BR>
|
|
<A NAME="TOC109" HREF="bashref.html#SEC109">8.4.2 Commands For Manipulating The History</A>
|
|
<BR>
|
|
<A NAME="TOC110" HREF="bashref.html#SEC110">8.4.3 Commands For Changing Text</A>
|
|
<BR>
|
|
<A NAME="TOC111" HREF="bashref.html#SEC111">8.4.4 Killing And Yanking</A>
|
|
<BR>
|
|
<A NAME="TOC112" HREF="bashref.html#SEC112">8.4.5 Specifying Numeric Arguments</A>
|
|
<BR>
|
|
<A NAME="TOC113" HREF="bashref.html#SEC113">8.4.6 Letting Readline Type For You</A>
|
|
<BR>
|
|
<A NAME="TOC114" HREF="bashref.html#SEC114">8.4.7 Keyboard Macros</A>
|
|
<BR>
|
|
<A NAME="TOC115" HREF="bashref.html#SEC115">8.4.8 Some Miscellaneous Commands</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC116" HREF="bashref.html#SEC116">8.5 Readline vi Mode</A>
|
|
<BR>
|
|
<A NAME="TOC117" HREF="bashref.html#SEC117">8.6 Programmable Completion</A>
|
|
<BR>
|
|
<A NAME="TOC118" HREF="bashref.html#SEC118">8.7 Programmable Completion Builtins</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC119" HREF="bashref.html#SEC119">9. Using History Interactively</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC120" HREF="bashref.html#SEC120">9.1 Bash History Facilities</A>
|
|
<BR>
|
|
<A NAME="TOC121" HREF="bashref.html#SEC121">9.2 Bash History Builtins</A>
|
|
<BR>
|
|
<A NAME="TOC122" HREF="bashref.html#SEC122">9.3 History Expansion</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC123" HREF="bashref.html#SEC123">9.3.1 Event Designators</A>
|
|
<BR>
|
|
<A NAME="TOC124" HREF="bashref.html#SEC124">9.3.2 Word Designators</A>
|
|
<BR>
|
|
<A NAME="TOC125" HREF="bashref.html#SEC125">9.3.3 Modifiers</A>
|
|
<BR>
|
|
</UL>
|
|
</UL>
|
|
<A NAME="TOC126" HREF="bashref.html#SEC126">10. Installing Bash</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC127" HREF="bashref.html#SEC127">10.1 Basic Installation</A>
|
|
<BR>
|
|
<A NAME="TOC128" HREF="bashref.html#SEC128">10.2 Compilers and Options</A>
|
|
<BR>
|
|
<A NAME="TOC129" HREF="bashref.html#SEC129">10.3 Compiling For Multiple Architectures</A>
|
|
<BR>
|
|
<A NAME="TOC130" HREF="bashref.html#SEC130">10.4 Installation Names</A>
|
|
<BR>
|
|
<A NAME="TOC131" HREF="bashref.html#SEC131">10.5 Specifying the System Type</A>
|
|
<BR>
|
|
<A NAME="TOC132" HREF="bashref.html#SEC132">10.6 Sharing Defaults</A>
|
|
<BR>
|
|
<A NAME="TOC133" HREF="bashref.html#SEC133">10.7 Operation Controls</A>
|
|
<BR>
|
|
<A NAME="TOC134" HREF="bashref.html#SEC134">10.8 Optional Features</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC135" HREF="bashref.html#SEC135">A. Reporting Bugs</A>
|
|
<BR>
|
|
<A NAME="TOC136" HREF="bashref.html#SEC136">B. Major Differences From The Bourne Shell</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC137" HREF="bashref.html#SEC137">B.1 Implementation Differences From The SVR4.2 Shell</A>
|
|
<BR>
|
|
</UL>
|
|
<A NAME="TOC138" HREF="bashref.html#SEC138">C. GNU Free Documentation License</A>
|
|
<BR>
|
|
<A NAME="TOC140" HREF="bashref.html#SEC140">D. Indexes</A>
|
|
<BR>
|
|
<UL>
|
|
<A NAME="TOC141" HREF="bashref.html#SEC141">D.1 Index of Shell Builtin Commands</A>
|
|
<BR>
|
|
<A NAME="TOC142" HREF="bashref.html#SEC142">D.2 Index of Shell Reserved Words</A>
|
|
<BR>
|
|
<A NAME="TOC143" HREF="bashref.html#SEC143">D.3 Parameter and Variable Index</A>
|
|
<BR>
|
|
<A NAME="TOC144" HREF="bashref.html#SEC144">D.4 Function Index</A>
|
|
<BR>
|
|
<A NAME="TOC145" HREF="bashref.html#SEC145">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#SEC140">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="TOC58" HREF="bashref.html#SEC58">4. Shell Builtin Commands</A>
|
|
<BR>
|
|
<A NAME="TOC65" HREF="bashref.html#SEC65">5. Shell Variables</A>
|
|
<BR>
|
|
<A NAME="TOC68" HREF="bashref.html#SEC68">6. Bash Features</A>
|
|
<BR>
|
|
<A NAME="TOC91" HREF="bashref.html#SEC91">7. Job Control</A>
|
|
<BR>
|
|
<A NAME="TOC95" HREF="bashref.html#SEC95">8. Command Line Editing</A>
|
|
<BR>
|
|
<A NAME="TOC119" HREF="bashref.html#SEC119">9. Using History Interactively</A>
|
|
<BR>
|
|
<A NAME="TOC126" HREF="bashref.html#SEC126">10. Installing Bash</A>
|
|
<BR>
|
|
<A NAME="TOC135" HREF="bashref.html#SEC135">A. Reporting Bugs</A>
|
|
<BR>
|
|
<A NAME="TOC136" HREF="bashref.html#SEC136">B. Major Differences From The Bourne Shell</A>
|
|
<BR>
|
|
<A NAME="TOC138" HREF="bashref.html#SEC138">C. GNU Free Documentation License</A>
|
|
<BR>
|
|
<A NAME="TOC140" HREF="bashref.html#SEC140">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#SEC140">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, 5 2009</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, 5 2009</I>
|
|
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
|
|
"><I>texi2html</I></A>
|
|
|
|
</BODY>
|
|
</HTML>
|