+++ /dev/null
-#Date: Mon, 14 Dec 1998 23:10:43 -0800
-#From: John Kinsella <jlk@digex.net>
-#To: chet@po.cwru.edu
-#Subject: Re: bash patch
-
-diff -c bash-2.02.1-old/bashhist.c bash-2.02.1/bashhist.c
-*** bash-2.02.1-old/bashhist.c Fri Feb 27 09:34:33 1998
---- bash-2.02.1/bashhist.c Mon Dec 14 22:39:23 1998
-***************
-*** 50,55 ****
---- 50,65 ----
- # include "bashline.h"
- #endif
-
-+ /* SYSLOG_HISTORY - define this if you want all commands entered into
-+ * the shell to be echoed to syslog.
-+ * (feature added by John Kinsella<jlk@digex.net>)
-+ */
-+ #define SYSLOG_HISTORY 1
-+
-+ #if defined (SYSLOG_HISTORY)
-+ # include <syslog.h>
-+ #endif
-+
- #if !defined (errno)
- extern int errno;
- #endif
-***************
-*** 566,571 ****
---- 576,587 ----
- {
- hist_last_line_added = 1;
- add_history (line);
-+ /* next 3 lines added by John Kinsella<jlk@digex.net>
-+ * Sends history line to syslog.
-+ */
-+ #if defined( SYSLOG_HISTORY )
-+ syslog( LOG_INFO, "%d - %s", current_user.euid, line );
-+ #endif
- history_lines_this_session++;
- }
- using_history ();
-#
-#--
-#John Kinsella UNIX ISA
-#jlk@digex.net DIGEX West Coast Facility
-#voice 408-873-4278 pager 888-751-7595
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
- <dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleIdentifier</key>
- <string>com.apple.xcode.dsym.sigs</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>dSYM</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- </dict>
-</plist>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
- <dict>
- <key>CFBundleDevelopmentRegion</key>
- <string>English</string>
- <key>CFBundleIdentifier</key>
- <string>com.apple.xcode.dsym.sigstat</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>dSYM</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- </dict>
-</plist>
+++ /dev/null
-#else
- /* This code implements the `rest of the fields and their intervening
- separators' portion of the Posix spec. The latest interpretation says
- that the last non-IFS white space separator (and any adjacent IFS
- white space) is removed. We repeatedly parse fields, stopping when the
- last results in us hitting the end of INPUT_STRING. */
- savei = t = input_string;
- while (*input_string)
- {
- /* This call updates INPUT_STRING. */
- t1 = get_word_from_string (&input_string, ifs_chars, &e);
- if (*input_string)
- t = input_string;
- }
- *t = '\0';
- input_string = savei;
-#endif
+++ /dev/null
-# This Makefile is for the Bash/documentation directory -*- text -*-.
-#
-# Copyright (C) 2003 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
-
-PACKAGE = bash
-VERSION = 3.2-maint
-
-PACKAGE_BUGREPORT = bug-bash@gnu.org
-PACKAGE_NAME = bash
-PACKAGE_STRING = bash 3.2-maint
-PACKAGE_VERSION = 3.2-maint
-
-#
-SHELL = /bin/sh
-RM = rm -f
-
-topdir = /Users/chet/src/bash/src
-srcdir = /Users/chet/src/bash/src/doc
-VPATH = .:/Users/chet/src/bash/src/doc
-
-prefix = /usr/local
-exec_prefix = ${prefix}
-
-infodir = ${prefix}/share/info
-
-# set this to a directory name to have the HTML files installed
-htmldir = ${docdir}
-
-# Support an alternate destination root directory for package building
-DESTDIR =
-
-mandir = ${prefix}/share/man
-manpfx = man
-
-man1ext = .1
-man1dir = $(mandir)/$(manpfx)1
-man3ext = .3
-man3dir = $(mandir)/$(manpfx)3
-
-INSTALL = /usr/bin/install -c
-INSTALL_DATA = ${INSTALL} -m 644
-BUILD_DIR = /usr/local/build/chet/bash/bash-current
-
-SUPPORT_SRCDIR = $(topdir)/support
-
-# bad style
-RL_LIBDIR = $(topdir)/lib/readline
-
-# unused
-TEXINDEX = texindex
-TEX = tex
-
-MAKEINFO = makeinfo
-TEXI2DVI = ${SUPPORT_SRCDIR}/texi2dvi
-TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html
-MAN2HTML = ${BUILD_DIR}/support/man2html
-HTMLPOST = ${srcdir}/htmlpost.sh
-INFOPOST = ${srcdir}/infopost.sh
-QUIETPS = #set this to -q to shut up dvips
-PAPERSIZE = letter # change to a4 for A4-size paper
-PSDPI = 600 # could be 300 if you like
-DVIPS = dvips -D ${PSDPI} $(QUIETPS) -t ${PAPERSIZE} -o $@ # tricky
-
-TEXINPUTDIR = $(RL_LIBDIR)/doc
-SET_TEXINPUTS = TEXINPUTS=.:$(TEXINPUTDIR):$$TEXINPUTS
-
-# These tools might not be available; they're not required
-DVIPDF = dvipdfm -o $@ -p ${PAPERSIZE}
-PSPDF = gs -sPAPERSIZE=${PAPERSIZE} -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@
-
-MKDIRS = ${SUPPORT_SRCDIR}/mkdirs
-
-# This should be a program that converts troff to an ascii-readable format
-NROFF = groff -Tascii
-
-# This should be a program that converts troff to postscript
-GROFF = groff
-
-HSUSER = $(RL_LIBDIR)/doc/hsuser.texi
-RLUSER = $(RL_LIBDIR)/doc/rluser.texi
-
-BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/version.texi
-
-.SUFFIXES: .0 .1 .3 .ms .ps .txt .dvi .html .pdf
-
-.1.ps:
- $(RM) $@
- -${GROFF} -man $< > $@
-
-.1.0:
- $(RM) $@
- -${NROFF} -man $< > $@
-
-.1.html:
- $(RM) $@
- -${MAN2HTML} $< | ${HTMLPOST} > $@
-
-.ms.ps:
- $(RM) $@
- -${GROFF} -ms $< > $@
-
-.ms.txt:
- $(RM) $@
- -${NROFF} -ms $< > $@
-
-.3.ps:
- $(RM) $@
- -${GROFF} -man $< > $@
-
-.3.0:
- $(RM) $@
- -${NROFF} -man $< > $@
-
-.3.html:
- $(RM) $@
- -${MAN2HTML} $< > $@
-
-.ps.pdf:
- $(RM) $@
- -${PSPDF} $<
-
-.dvi.pdf:
- $(RM) $@
- -${DVIPDF} $<
-
-.dvi.ps:
- ${RM} $@
- -${DVIPS} $<
-
-all: ps info dvi text html
-nodvi: ps info text html
-
-PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps
-DVIFILES = bashref.dvi bashref.ps
-INFOFILES = bashref.info
-MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0
-HTMLFILES = bashref.html bash.html
-PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf
-
-ps: ${PSFILES}
-dvi: ${DVIFILES}
-info: ${INFOFILES}
-text: ${MAN0FILES}
-html: ${HTMLFILES}
-pdf: ${PDFFILES}
-
-bashref.dvi: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
- ${SET_TEXINPUTS} $(TEXI2DVI) $(srcdir)/bashref.texi
-
-bashref.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
- $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi
-
-bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
- $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi
-
-b.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
- ./texi2html.debug -o $@ -verbose -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi
-
-bash.info: bashref.info
- ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \
-
-bash.txt: bash.1
-bash.ps: bash.1
-bash.html: bash.1 $(MAN2HTML)
-bashbug.ps: bashbug.1
-builtins.ps: builtins.1 bash.1
-rbash.ps: rbash.1 bash.1
-bash.0: bash.1
-bashbug.0: bashbug.1
-builtins.0: builtins.1 bash.1
-rbash.0: rbash.1 bash.1
-article.ps: article.ms
-
-bashref.ps: bashref.dvi
-
-article.pdf: article.ps
-bashref.pdf: bashref.dvi
-bash.pdf: bash.ps
-rose94.pdf: rose94.ps
-
-$(MAN2HTML): ${topdir}/support/man2html.c
- -( cd ${BUILD_DIR}/support ; ${MAKE} ${MFLAGS} man2html)
-
-clean:
- $(RM) *.aux *.bak *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \
- *.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o
- ${RM} core *.core
-
-mostlyclean: clean
- $(RM) Makefile
-
-distclean: clean maybe-clean
- $(RM) Makefile
-
-maintainer-clean: clean
- ${RM} ${PSFILES} ${DVIFILES} ${INFOFILES} ${MAN0FILES} ${HTMLFILES}
- ${RM} ${CREATED_FAQ}
- $(RM) Makefile
-
-maybe-clean:
- -if test "X$(topdir)" != "X$(BUILD_DIR)"; then \
- $(RM) ${PSFILES} ${DVIFILES} ${INFOFILES} ${MAN0FILES} ${HTMLFILES}; \
- fi
-
-installdirs:
- -$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(man1dir)
- -$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(infodir)
- -if test -n "$(htmldir)" ; then \
- $(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(htmldir) ; \
- fi
-
-install: info installdirs bash.info
- -$(INSTALL_DATA) $(srcdir)/bash.1 $(DESTDIR)$(man1dir)/bash${man1ext}
- -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext}
-# uncomment the next line to install the builtins man page
-# -$(INSTALL_DATA) $(srcdir)/builtins.1 $(DESTDIR)$(man1dir)/bash_builtins${man1ext}
- -$(INSTALL_DATA) $(srcdir)/bash.info $(DESTDIR)$(infodir)/bash.info
-# run install-info if it is present to update the info directory
- if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
- install-info --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/bash.info; \
- else true; fi
-# if htmldir is set, install the html files into that directory
- -if test -n "${htmldir}" ; then \
- $(INSTALL_DATA) $(srcdir)/bash.html $(DESTDIR)$(htmldir) ; \
- $(INSTALL_DATA) $(srcdir)/bashref.html $(DESTDIR)$(htmldir) ; \
- fi
-
-uninstall:
- -$(RM) $(DESTDIR)$(man1dir)/bash${man1ext} $(DESTDIR)$(man1dir)/bashbug${man1ext}
- $(RM) $(DESTDIR)$(infodir)/bash.info
- -if test -n "$(htmldir)" ; then \
- $(RM) $(DESTDIR)$(htmldir)/bash.html ; \
- $(RM) $(DESTDIR)$(htmldir)/bashref.html ; \
- fi
-
-# for use by chet
-CREATED_FAQ = faq.news faq.news2 faq.mail faq.version
-
-faq: ${CREATED_FAQ}
-
-faq.version: FAQ.version FAQ
- sh mkfaqvers FAQ.version > $@
-
-faq.headers.mail: FAQ.headers.mail FAQ
- sh mkfaqvers FAQ.headers.mail > $@
-
-faq.headers.news: FAQ.headers.news FAQ
- sh mkfaqvers FAQ.headers.news > $@
-
-faq.headers.news2: FAQ.headers.news2 FAQ
- sh mkfaqvers FAQ.headers.news2 > $@
-
-faq.news: FAQ faq.headers.news faq.version
- $(RM) $@
- cat faq.headers.news faq.version FAQ > $@
-
-faq.news2: FAQ faq.headers.news2 faq.version
- $(RM) $@
- cat faq.headers.news2 faq.version FAQ > $@
-
-faq.mail: FAQ faq.headers.mail faq.version
- $(RM) $@
- cat faq.headers.mail faq.version FAQ > $@
-
-inst: bashref.texi
- $(SHELL) ./mkinstall
- cmp -s INSTALL ../INSTALL || mv INSTALL ../INSTALL
- $(RM) INSTALL
-
-posix: bashref.texi
- $(SHELL) ./mkposix
- cmp -s POSIX ../POSIX || mv POSIX ../POSIX
- $(RM) POSIX
-
-rbash: bashref.texi
- $(SH) ./mkrbash
- cmp -s RBASH ../RBASH || mv RBASH ../RBASH
- $(RM) RBASH
-
-xdist: pdf inst posix rbash
+++ /dev/null
-<html lang="en">
-<head>
-<title>Bash Reference Manual</title>
-<meta http-equiv="Content-Type" content="text/html">
-<meta name="description" content="Bash Reference Manual">
-<meta name="generator" content="makeinfo 4.8">
-<link title="Top" rel="top" href="#Top">
-<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
-<!--
-This text is a brief description of the features that are present in
-the Bash shell (version 3.2, 30 December 2006).
-
-This is Edition 3.2, last updated 30 December 2006,
-of `The GNU Bash Reference Manual',
-for `Bash', Version 3.2.
-
-Copyright (C) 1988-2005 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
- 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, with the Front-Cover texts
- being "A GNU Manual," and with the Back-Cover Texts as in (a)
- below. A copy of the license is included in the section entitled
- "GNU Free Documentation License."
-
- (a) The FSF's Back-Cover Text is: "You have freedom to copy and
- modify this GNU Manual, like GNU software. Copies published by
- the Free Software Foundation raise funds for GNU development."
- -->
-<meta http-equiv="Content-Style-Type" content="text/css">
-<style type="text/css"><!--
- pre.display { font-family:inherit }
- pre.format { font-family:inherit }
- pre.smalldisplay { font-family:inherit; font-size:smaller }
- pre.smallformat { font-family:inherit; font-size:smaller }
- pre.smallexample { font-size:smaller }
- pre.smalllisp { font-size:smaller }
- span.sc { font-variant:small-caps }
- span.roman { font-family:serif; font-weight:normal; }
- span.sansserif { font-family:sans-serif; font-weight:normal; }
---></style>
-</head>
-<body>
-<h1 class="settitle">Bash Reference Manual</h1>
-<div class="contents">
-<h2>Table of Contents</h2>
-<ul>
-<li><a name="toc_Top" href="#Top">Bash Features</a>
-<li><a name="toc_Introduction" href="#Introduction">1 Introduction</a>
-<ul>
-<li><a href="#What-is-Bash_003f">1.1 What is Bash?</a>
-<li><a href="#What-is-a-shell_003f">1.2 What is a shell?</a>
-</li></ul>
-<li><a name="toc_Definitions" href="#Definitions">2 Definitions</a>
-<li><a name="toc_Basic-Shell-Features" href="#Basic-Shell-Features">3 Basic Shell Features</a>
-<ul>
-<li><a href="#Shell-Syntax">3.1 Shell Syntax</a>
-<ul>
-<li><a href="#Shell-Operation">3.1.1 Shell Operation</a>
-<li><a href="#Quoting">3.1.2 Quoting</a>
-<ul>
-<li><a href="#Escape-Character">3.1.2.1 Escape Character</a>
-<li><a href="#Single-Quotes">3.1.2.2 Single Quotes</a>
-<li><a href="#Double-Quotes">3.1.2.3 Double Quotes</a>
-<li><a href="#ANSI_002dC-Quoting">3.1.2.4 ANSI-C Quoting</a>
-<li><a href="#Locale-Translation">3.1.2.5 Locale-Specific Translation</a>
-</li></ul>
-<li><a href="#Comments">3.1.3 Comments</a>
-</li></ul>
-<li><a href="#Shell-Commands">3.2 Shell Commands</a>
-<ul>
-<li><a href="#Simple-Commands">3.2.1 Simple Commands</a>
-<li><a href="#Pipelines">3.2.2 Pipelines</a>
-<li><a href="#Lists">3.2.3 Lists of Commands</a>
-<li><a href="#Compound-Commands">3.2.4 Compound Commands</a>
-<ul>
-<li><a href="#Looping-Constructs">3.2.4.1 Looping Constructs</a>
-<li><a href="#Conditional-Constructs">3.2.4.2 Conditional Constructs</a>
-<li><a href="#Command-Grouping">3.2.4.3 Grouping Commands</a>
-</li></ul>
-</li></ul>
-<li><a href="#Shell-Functions">3.3 Shell Functions</a>
-<li><a href="#Shell-Parameters">3.4 Shell Parameters</a>
-<ul>
-<li><a href="#Positional-Parameters">3.4.1 Positional Parameters</a>
-<li><a href="#Special-Parameters">3.4.2 Special Parameters</a>
-</li></ul>
-<li><a href="#Shell-Expansions">3.5 Shell Expansions</a>
-<ul>
-<li><a href="#Brace-Expansion">3.5.1 Brace Expansion</a>
-<li><a href="#Tilde-Expansion">3.5.2 Tilde Expansion</a>
-<li><a href="#Shell-Parameter-Expansion">3.5.3 Shell Parameter Expansion</a>
-<li><a href="#Command-Substitution">3.5.4 Command Substitution</a>
-<li><a href="#Arithmetic-Expansion">3.5.5 Arithmetic Expansion</a>
-<li><a href="#Process-Substitution">3.5.6 Process Substitution</a>
-<li><a href="#Word-Splitting">3.5.7 Word Splitting</a>
-<li><a href="#Filename-Expansion">3.5.8 Filename Expansion</a>
-<ul>
-<li><a href="#Pattern-Matching">3.5.8.1 Pattern Matching</a>
-</li></ul>
-<li><a href="#Quote-Removal">3.5.9 Quote Removal</a>
-</li></ul>
-<li><a href="#Redirections">3.6 Redirections</a>
-<ul>
-<li><a href="#Redirections">3.6.1 Redirecting Input</a>
-<li><a href="#Redirections">3.6.2 Redirecting Output</a>
-<li><a href="#Redirections">3.6.3 Appending Redirected Output</a>
-<li><a href="#Redirections">3.6.4 Redirecting Standard Output and Standard Error</a>
-<li><a href="#Redirections">3.6.5 Here Documents</a>
-<li><a href="#Redirections">3.6.6 Here Strings</a>
-<li><a href="#Redirections">3.6.7 Duplicating File Descriptors</a>
-<li><a href="#Redirections">3.6.8 Moving File Descriptors</a>
-<li><a href="#Redirections">3.6.9 Opening File Descriptors for Reading and Writing</a>
-</li></ul>
-<li><a href="#Executing-Commands">3.7 Executing Commands</a>
-<ul>
-<li><a href="#Simple-Command-Expansion">3.7.1 Simple Command Expansion</a>
-<li><a href="#Command-Search-and-Execution">3.7.2 Command Search and Execution</a>
-<li><a href="#Command-Execution-Environment">3.7.3 Command Execution Environment</a>
-<li><a href="#Environment">3.7.4 Environment</a>
-<li><a href="#Exit-Status">3.7.5 Exit Status</a>
-<li><a href="#Signals">3.7.6 Signals</a>
-</li></ul>
-<li><a href="#Shell-Scripts">3.8 Shell Scripts</a>
-</li></ul>
-<li><a name="toc_Shell-Builtin-Commands" href="#Shell-Builtin-Commands">4 Shell Builtin Commands</a>
-<ul>
-<li><a href="#Bourne-Shell-Builtins">4.1 Bourne Shell Builtins</a>
-<li><a href="#Bash-Builtins">4.2 Bash Builtin Commands</a>
-<li><a href="#Modifying-Shell-Behavior">4.3 Modifying Shell Behavior</a>
-<ul>
-<li><a href="#The-Set-Builtin">4.3.1 The Set Builtin</a>
-<li><a href="#The-Shopt-Builtin">4.3.2 The Shopt Builtin</a>
-</li></ul>
-<li><a href="#Special-Builtins">4.4 Special Builtins</a>
-</li></ul>
-<li><a name="toc_Shell-Variables" href="#Shell-Variables">5 Shell Variables</a>
-<ul>
-<li><a href="#Bourne-Shell-Variables">5.1 Bourne Shell Variables</a>
-<li><a href="#Bash-Variables">5.2 Bash Variables</a>
-</li></ul>
-<li><a name="toc_Bash-Features" href="#Bash-Features">6 Bash Features</a>
-<ul>
-<li><a href="#Invoking-Bash">6.1 Invoking Bash</a>
-<li><a href="#Bash-Startup-Files">6.2 Bash Startup Files</a>
-<li><a href="#Interactive-Shells">6.3 Interactive Shells</a>
-<ul>
-<li><a href="#What-is-an-Interactive-Shell_003f">6.3.1 What is an Interactive Shell?</a>
-<li><a href="#Is-this-Shell-Interactive_003f">6.3.2 Is this Shell Interactive?</a>
-<li><a href="#Interactive-Shell-Behavior">6.3.3 Interactive Shell Behavior</a>
-</li></ul>
-<li><a href="#Bash-Conditional-Expressions">6.4 Bash Conditional Expressions</a>
-<li><a href="#Shell-Arithmetic">6.5 Shell Arithmetic</a>
-<li><a href="#Aliases">6.6 Aliases</a>
-<li><a href="#Arrays">6.7 Arrays</a>
-<li><a href="#The-Directory-Stack">6.8 The Directory Stack</a>
-<ul>
-<li><a href="#Directory-Stack-Builtins">6.8.1 Directory Stack Builtins</a>
-</li></ul>
-<li><a href="#Printing-a-Prompt">6.9 Controlling the Prompt</a>
-<li><a href="#The-Restricted-Shell">6.10 The Restricted Shell</a>
-<li><a href="#Bash-POSIX-Mode">6.11 Bash POSIX Mode</a>
-</li></ul>
-<li><a name="toc_Job-Control" href="#Job-Control">7 Job Control</a>
-<ul>
-<li><a href="#Job-Control-Basics">7.1 Job Control Basics</a>
-<li><a href="#Job-Control-Builtins">7.2 Job Control Builtins</a>
-<li><a href="#Job-Control-Variables">7.3 Job Control Variables</a>
-</li></ul>
-<li><a name="toc_Command-Line-Editing" href="#Command-Line-Editing">8 Command Line Editing</a>
-<ul>
-<li><a href="#Introduction-and-Notation">8.1 Introduction to Line Editing</a>
-<li><a href="#Readline-Interaction">8.2 Readline Interaction</a>
-<ul>
-<li><a href="#Readline-Bare-Essentials">8.2.1 Readline Bare Essentials</a>
-<li><a href="#Readline-Movement-Commands">8.2.2 Readline Movement Commands</a>
-<li><a href="#Readline-Killing-Commands">8.2.3 Readline Killing Commands</a>
-<li><a href="#Readline-Arguments">8.2.4 Readline Arguments</a>
-<li><a href="#Searching">8.2.5 Searching for Commands in the History</a>
-</li></ul>
-<li><a href="#Readline-Init-File">8.3 Readline Init File</a>
-<ul>
-<li><a href="#Readline-Init-File-Syntax">8.3.1 Readline Init File Syntax</a>
-<li><a href="#Conditional-Init-Constructs">8.3.2 Conditional Init Constructs</a>
-<li><a href="#Sample-Init-File">8.3.3 Sample Init File</a>
-</li></ul>
-<li><a href="#Bindable-Readline-Commands">8.4 Bindable Readline Commands</a>
-<ul>
-<li><a href="#Commands-For-Moving">8.4.1 Commands For Moving</a>
-<li><a href="#Commands-For-History">8.4.2 Commands For Manipulating The History</a>
-<li><a href="#Commands-For-Text">8.4.3 Commands For Changing Text</a>
-<li><a href="#Commands-For-Killing">8.4.4 Killing And Yanking</a>
-<li><a href="#Numeric-Arguments">8.4.5 Specifying Numeric Arguments</a>
-<li><a href="#Commands-For-Completion">8.4.6 Letting Readline Type For You</a>
-<li><a href="#Keyboard-Macros">8.4.7 Keyboard Macros</a>
-<li><a href="#Miscellaneous-Commands">8.4.8 Some Miscellaneous Commands</a>
-</li></ul>
-<li><a href="#Readline-vi-Mode">8.5 Readline vi Mode</a>
-<li><a href="#Programmable-Completion">8.6 Programmable Completion</a>
-<li><a href="#Programmable-Completion-Builtins">8.7 Programmable Completion Builtins</a>
-</li></ul>
-<li><a name="toc_Using-History-Interactively" href="#Using-History-Interactively">9 Using History Interactively</a>
-<ul>
-<li><a href="#Bash-History-Facilities">9.1 Bash History Facilities</a>
-<li><a href="#Bash-History-Builtins">9.2 Bash History Builtins</a>
-<li><a href="#History-Interaction">9.3 History Expansion</a>
-<ul>
-<li><a href="#Event-Designators">9.3.1 Event Designators</a>
-<li><a href="#Word-Designators">9.3.2 Word Designators</a>
-<li><a href="#Modifiers">9.3.3 Modifiers</a>
-</li></ul>
-</li></ul>
-<li><a name="toc_Installing-Bash" href="#Installing-Bash">10 Installing Bash</a>
-<ul>
-<li><a href="#Basic-Installation">10.1 Basic Installation</a>
-<li><a href="#Compilers-and-Options">10.2 Compilers and Options</a>
-<li><a href="#Compiling-For-Multiple-Architectures">10.3 Compiling For Multiple Architectures</a>
-<li><a href="#Installation-Names">10.4 Installation Names</a>
-<li><a href="#Specifying-the-System-Type">10.5 Specifying the System Type</a>
-<li><a href="#Sharing-Defaults">10.6 Sharing Defaults</a>
-<li><a href="#Operation-Controls">10.7 Operation Controls</a>
-<li><a href="#Optional-Features">10.8 Optional Features</a>
-</li></ul>
-<li><a name="toc_Reporting-Bugs" href="#Reporting-Bugs">Appendix A Reporting Bugs</a>
-<li><a name="toc_Major-Differences-From-The-Bourne-Shell" href="#Major-Differences-From-The-Bourne-Shell">Appendix B Major Differences From The Bourne Shell</a>
-<ul>
-<li><a href="#Major-Differences-From-The-Bourne-Shell">B.1 Implementation Differences From The SVR4.2 Shell</a>
-</li></ul>
-<li><a name="toc_Copying-This-Manual" href="#Copying-This-Manual">Appendix C Copying This Manual</a>
-<ul>
-<li><a href="#GNU-Free-Documentation-License">C.1 GNU Free Documentation License</a>
-<ul>
-<li><a href="#GNU-Free-Documentation-License">C.1.1 ADDENDUM: How to use this License for your documents</a>
-</li></ul>
-</li></ul>
-<li><a name="toc_Builtin-Index" href="#Builtin-Index">Index of Shell Builtin Commands</a>
-<li><a name="toc_Reserved-Word-Index" href="#Reserved-Word-Index">Index of Shell Reserved Words</a>
-<li><a name="toc_Variable-Index" href="#Variable-Index">Parameter and Variable Index</a>
-<li><a name="toc_Function-Index" href="#Function-Index">Function Index</a>
-<li><a name="toc_Concept-Index" href="#Concept-Index">Concept Index</a>
-</li></ul>
-</div>
-
-
-
-<div class="node">
-<p><hr>
-<a name="Top"></a>
-Next: <a rel="next" accesskey="n" href="#Introduction">Introduction</a>,
-Previous: <a rel="previous" accesskey="p" href="#dir">(dir)</a>,
-Up: <a rel="up" accesskey="u" href="#dir">(dir)</a>
-
-</div>
-
-<h2 class="unnumbered">Bash Features</h2>
-
-<p>This text is a brief description of the features that are present in
-the Bash shell (version 3.2, 30 December 2006).
-
- <p>This is Edition 3.2, last updated 30 December 2006,
-of <cite>The GNU Bash Reference Manual</cite>,
-for <code>Bash</code>, Version 3.2.
-
- <p>Bash contains features that appear in other popular shells, and some
-features that only appear in Bash. Some of the shells that Bash has
-borrowed concepts from are the Bourne Shell (<samp><span class="file">sh</span></samp>), the Korn Shell
-(<samp><span class="file">ksh</span></samp>), and the C-shell (<samp><span class="file">csh</span></samp> and its successor,
-<samp><span class="file">tcsh</span></samp>). The following menu breaks the features up into
-categories based upon which one of these other shells inspired the
-feature.
-
- <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.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Introduction">Introduction</a>: An introduction to the shell.
-<li><a accesskey="2" href="#Definitions">Definitions</a>: Some definitions used in the rest of this
- manual.
-<li><a accesskey="3" href="#Basic-Shell-Features">Basic Shell Features</a>: The shell "building blocks".
-<li><a accesskey="4" href="#Shell-Builtin-Commands">Shell Builtin Commands</a>: Commands that are a part of the shell.
-<li><a accesskey="5" href="#Shell-Variables">Shell Variables</a>: Variables used or set by Bash.
-<li><a accesskey="6" href="#Bash-Features">Bash Features</a>: Features found only in Bash.
-<li><a accesskey="7" href="#Job-Control">Job Control</a>: What job control is and how Bash allows you
- to use it.
-<li><a accesskey="8" href="#Using-History-Interactively">Using History Interactively</a>: Command History Expansion
-<li><a accesskey="9" href="#Command-Line-Editing">Command Line Editing</a>: Chapter describing the command line
- editing features.
-<li><a href="#Installing-Bash">Installing Bash</a>: How to build and install Bash on your system.
-<li><a href="#Reporting-Bugs">Reporting Bugs</a>: How to report bugs in Bash.
-<li><a href="#Major-Differences-From-The-Bourne-Shell">Major Differences From The Bourne Shell</a>: A terse list of the differences
- between Bash and historical
- versions of /bin/sh.
-<li><a href="#Copying-This-Manual">Copying This Manual</a>: Copying this manual.
-<li><a href="#Builtin-Index">Builtin Index</a>: Index of Bash builtin commands.
-<li><a href="#Reserved-Word-Index">Reserved Word Index</a>: Index of Bash reserved words.
-<li><a href="#Variable-Index">Variable Index</a>: Quick reference helps you find the
- variable you want.
-<li><a href="#Function-Index">Function Index</a>: Index of bindable Readline functions.
-<li><a href="#Concept-Index">Concept Index</a>: General index for concepts described in
- this manual.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Introduction"></a>
-Next: <a rel="next" accesskey="n" href="#Definitions">Definitions</a>,
-Previous: <a rel="previous" accesskey="p" href="#Top">Top</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">1 Introduction</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#What-is-Bash_003f">What is Bash?</a>: A short description of Bash.
-<li><a accesskey="2" href="#What-is-a-shell_003f">What is a shell?</a>: A brief introduction to shells.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="What-is-Bash%3f"></a>
-<a name="What-is-Bash_003f"></a>
-Next: <a rel="next" accesskey="n" href="#What-is-a-shell_003f">What is a shell?</a>,
-Up: <a rel="up" accesskey="u" href="#Introduction">Introduction</a>
-
-</div>
-
-<h3 class="section">1.1 What is Bash?</h3>
-
-<p>Bash is the shell, or command language interpreter,
-for the <span class="sc">gnu</span> operating system.
-The name is an acronym for the `<samp><span class="samp">Bourne-Again SHell</span></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>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 <span class="sc">ieee</span>
-<span class="sc">posix</span> Shell and Tools portion of the <span class="sc">ieee</span> <span class="sc">posix</span>
-specification (<span class="sc">ieee</span> Standard 1003.1).
-It offers functional improvements over <code>sh</code> for both interactive and
-programming use.
-
- <p>While the <span class="sc">gnu</span> operating system provides other shells, including
-a version of <code>csh</code>, Bash is the default shell.
-Like other <span class="sc">gnu</span> 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 <span class="sc">ms-dos</span>, <span class="sc">os/2</span>,
-and Windows platforms.
-
-<div class="node">
-<p><hr>
-<a name="What-is-a-shell%3f"></a>
-<a name="What-is-a-shell_003f"></a>
-Previous: <a rel="previous" accesskey="p" href="#What-is-Bash_003f">What is Bash?</a>,
-Up: <a rel="up" accesskey="u" href="#Introduction">Introduction</a>
-
-</div>
-
-<h3 class="section">1.2 What is a shell?</h3>
-
-<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>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 <span class="sc">gnu</span> 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 <samp><span class="file">/bin</span></samp>, allowing users
-or groups to establish custom environments to automate their common
-tasks.
-
- <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>A shell allows execution of <span class="sc">gnu</span> 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 <dfn>redirection</dfn> 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>Shells also provide a small set of built-in
-commands (<dfn>builtins</dfn>) 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>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>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.
-
-<div class="node">
-<p><hr>
-<a name="Definitions"></a>
-Next: <a rel="next" accesskey="n" href="#Basic-Shell-Features">Basic Shell Features</a>,
-Previous: <a rel="previous" accesskey="p" href="#Introduction">Introduction</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">2 Definitions</h2>
-
-<p>These definitions are used throughout the remainder of this manual.
-
- <dl>
-<dt><code>POSIX</code><dd><a name="index-POSIX-1"></a>A family of open system standards based on Unix. Bash
-is primarily concerned with the Shell and Utilities portion of the
-<span class="sc">posix</span> 1003.1 standard.
-
- <br><dt><code>blank</code><dd>A space or tab character.
-
- <br><dt><code>builtin</code><dd><a name="index-builtin-2"></a>A command that is implemented internally by the shell itself, rather
-than by an executable program somewhere in the file system.
-
- <br><dt><code>control operator</code><dd><a name="index-control-operator-3"></a>A <code>word</code> that performs a control function. It is a <code>newline</code>
-or one of the following:
-`<samp><span class="samp">||</span></samp>', `<samp><span class="samp">&&</span></samp>', `<samp><span class="samp">&</span></samp>', `<samp><span class="samp">;</span></samp>', `<samp><span class="samp">;;</span></samp>',
-`<samp><span class="samp">|</span></samp>', `<samp><span class="samp">(</span></samp>', or `<samp><span class="samp">)</span></samp>'.
-
- <br><dt><code>exit status</code><dd><a name="index-exit-status-4"></a>The value returned by a command to its caller. The value is restricted
-to eight bits, so the maximum value is 255.
-
- <br><dt><code>field</code><dd><a name="index-field-5"></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.
-
- <br><dt><code>filename</code><dd><a name="index-filename-6"></a>A string of characters used to identify a file.
-
- <br><dt><code>job</code><dd><a name="index-job-7"></a>A set of processes comprising a pipeline, and any processes descended
-from it, that are all in the same process group.
-
- <br><dt><code>job control</code><dd><a name="index-job-control-8"></a>A mechanism by which users can selectively stop (suspend) and restart
-(resume) execution of processes.
-
- <br><dt><code>metacharacter</code><dd><a name="index-metacharacter-9"></a>A character that, when unquoted, separates words. A metacharacter is
-a <code>blank</code> or one of the following characters:
-`<samp><span class="samp">|</span></samp>', `<samp><span class="samp">&</span></samp>', `<samp><span class="samp">;</span></samp>', `<samp><span class="samp">(</span></samp>', `<samp><span class="samp">)</span></samp>', `<samp><span class="samp"><</span></samp>', or
-`<samp><span class="samp">></span></samp>'.
-
- <br><dt><code>name</code><dd><a name="index-name-10"></a><a name="index-identifier-11"></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>.
-
- <br><dt><code>operator</code><dd><a name="index-operator_002c-shell-12"></a>A <code>control operator</code> or a <code>redirection operator</code>.
-See <a href="#Redirections">Redirections</a>, for a list of redirection operators.
-
- <br><dt><code>process group</code><dd><a name="index-process-group-13"></a>A collection of related processes each having the same process
-group <span class="sc">id</span>.
-
- <br><dt><code>process group ID</code><dd><a name="index-process-group-ID-14"></a>A unique identifier that represents a <code>process group</code>
-during its lifetime.
-
- <br><dt><code>reserved word</code><dd><a name="index-reserved-word-15"></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>.
-
- <br><dt><code>return status</code><dd><a name="index-return-status-16"></a>A synonym for <code>exit status</code>.
-
- <br><dt><code>signal</code><dd><a name="index-signal-17"></a>A mechanism by which a process may be notified by the kernel
-of an event occurring in the system.
-
- <br><dt><code>special builtin</code><dd><a name="index-special-builtin-18"></a>A shell builtin command that has been classified as special by the
-<span class="sc">posix</span> standard.
-
- <br><dt><code>token</code><dd><a name="index-token-19"></a>A sequence of characters considered a single unit by the shell. It is
-either a <code>word</code> or an <code>operator</code>.
-
- <br><dt><code>word</code><dd><a name="index-word-20"></a>A <code>token</code> that is not an <code>operator</code>.
-</dl>
-
-<div class="node">
-<p><hr>
-<a name="Basic-Shell-Features"></a>
-Next: <a rel="next" accesskey="n" href="#Shell-Builtin-Commands">Shell Builtin Commands</a>,
-Previous: <a rel="previous" accesskey="p" href="#Definitions">Definitions</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">3 Basic Shell Features</h2>
-
-<p><a name="index-Bourne-shell-21"></a>
-Bash is an acronym for `<samp><span class="samp">Bourne-Again SHell</span></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 <span class="sc">posix</span>
-specification for the `standard' Unix shell.
-
- <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.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Shell-Syntax">Shell Syntax</a>: What your input means to the shell.
-<li><a accesskey="2" href="#Shell-Commands">Shell Commands</a>: The types of commands you can use.
-<li><a accesskey="3" href="#Shell-Functions">Shell Functions</a>: Grouping commands by name.
-<li><a accesskey="4" href="#Shell-Parameters">Shell Parameters</a>: How the shell stores values.
-<li><a accesskey="5" href="#Shell-Expansions">Shell Expansions</a>: How Bash expands parameters and the various
- expansions available.
-<li><a accesskey="6" href="#Redirections">Redirections</a>: A way to control where input and output go.
-<li><a accesskey="7" href="#Executing-Commands">Executing Commands</a>: What happens when you run a command.
-<li><a accesskey="8" href="#Shell-Scripts">Shell Scripts</a>: Executing files of shell commands.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Shell-Syntax"></a>
-Next: <a rel="next" accesskey="n" href="#Shell-Commands">Shell Commands</a>,
-Up: <a rel="up" accesskey="u" href="#Basic-Shell-Features">Basic Shell Features</a>
-
-</div>
-
-<h3 class="section">3.1 Shell Syntax</h3>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Shell-Operation">Shell Operation</a>: The basic operation of the shell.
-<li><a accesskey="2" href="#Quoting">Quoting</a>: How to remove the special meaning from characters.
-<li><a accesskey="3" href="#Comments">Comments</a>: How to specify comments.
-</ul>
-
-<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><span class="samp">#</span></samp>'), and the rest
-of that line.
-
- <p>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>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.
-
-<div class="node">
-<p><hr>
-<a name="Shell-Operation"></a>
-Next: <a rel="next" accesskey="n" href="#Quoting">Quoting</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Syntax">Shell Syntax</a>
-
-</div>
-
-<h4 class="subsection">3.1.1 Shell Operation</h4>
-
-<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:
-
- <ol type=1 start=1>
-<li>Reads its input from a file (see <a href="#Shell-Scripts">Shell Scripts</a>), from a string
-supplied as an argument to the <samp><span class="option">-c</span></samp> invocation option
-(see <a href="#Invoking-Bash">Invoking Bash</a>), or from the user's terminal.
-
- <li>Breaks the input into words and operators, obeying the quoting rules
-described in <a href="#Quoting">Quoting</a>. These tokens are separated by
-<code>metacharacters</code>. Alias expansion is performed by this step
-(see <a href="#Aliases">Aliases</a>).
-
- <li>Parses the tokens into simple and compound commands
-(see <a href="#Shell-Commands">Shell Commands</a>).
-
- <li>Performs the various shell expansions (see <a href="#Shell-Expansions">Shell Expansions</a>), breaking
-the expanded tokens into lists of filenames (see <a href="#Filename-Expansion">Filename Expansion</a>)
-and commands and arguments.
-
- <li>Performs any necessary redirections (see <a href="#Redirections">Redirections</a>) and removes
-the redirection operators and their operands from the argument list.
-
- <li>Executes the command (see <a href="#Executing-Commands">Executing Commands</a>).
-
- <li>Optionally waits for the command to complete and collects its exit
-status (see <a href="#Exit-Status">Exit Status</a>).
-
- </ol>
-
-<div class="node">
-<p><hr>
-<a name="Quoting"></a>
-Next: <a rel="next" accesskey="n" href="#Comments">Comments</a>,
-Previous: <a rel="previous" accesskey="p" href="#Shell-Operation">Shell Operation</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Syntax">Shell Syntax</a>
-
-</div>
-
-<h4 class="subsection">3.1.2 Quoting</h4>
-
-<p><a name="index-quoting-22"></a>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Escape-Character">Escape Character</a>: How to remove the special meaning from a single
- character.
-<li><a accesskey="2" href="#Single-Quotes">Single Quotes</a>: How to inhibit all interpretation of a sequence
- of characters.
-<li><a accesskey="3" href="#Double-Quotes">Double Quotes</a>: How to suppress most of the interpretation of a
- sequence of characters.
-<li><a accesskey="4" href="#ANSI_002dC-Quoting">ANSI-C Quoting</a>: How to expand ANSI-C sequences in quoted strings.
-<li><a accesskey="5" href="#Locale-Translation">Locale Translation</a>: How to translate strings into different languages.
-</ul>
-
- <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>Each of the shell metacharacters (see <a href="#Definitions">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 <a href="#History-Interaction">History Interaction</a>), the
-<var>history expansion</var> character, usually `<samp><span class="samp">!</span></samp>', must be quoted
-to prevent history expansion. See <a href="#Bash-History-Facilities">Bash History Facilities</a>, for
-more details concerning history expansion.
-
- <p>There are three quoting mechanisms: the
-<var>escape character</var>, single quotes, and double quotes.
-
-<div class="node">
-<p><hr>
-<a name="Escape-Character"></a>
-Next: <a rel="next" accesskey="n" href="#Single-Quotes">Single Quotes</a>,
-Up: <a rel="up" accesskey="u" href="#Quoting">Quoting</a>
-
-</div>
-
-<h5 class="subsubsection">3.1.2.1 Escape Character</h5>
-
-<p>A non-quoted backslash `<samp><span class="samp">\</span></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).
-
-<div class="node">
-<p><hr>
-<a name="Single-Quotes"></a>
-Next: <a rel="next" accesskey="n" href="#Double-Quotes">Double Quotes</a>,
-Previous: <a rel="previous" accesskey="p" href="#Escape-Character">Escape Character</a>,
-Up: <a rel="up" accesskey="u" href="#Quoting">Quoting</a>
-
-</div>
-
-<h5 class="subsubsection">3.1.2.2 Single Quotes</h5>
-
-<p>Enclosing characters in single quotes (`<samp><span class="samp">'</span></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.
-
-<div class="node">
-<p><hr>
-<a name="Double-Quotes"></a>
-Next: <a rel="next" accesskey="n" href="#ANSI_002dC-Quoting">ANSI-C Quoting</a>,
-Previous: <a rel="previous" accesskey="p" href="#Single-Quotes">Single Quotes</a>,
-Up: <a rel="up" accesskey="u" href="#Quoting">Quoting</a>
-
-</div>
-
-<h5 class="subsubsection">3.1.2.3 Double Quotes</h5>
-
-<p>Enclosing characters in double quotes (`<samp><span class="samp">"</span></samp>') preserves the literal value
-of all characters within the quotes, with the exception of
-`<samp><span class="samp">$</span></samp>', `<samp><span class="samp">`</span></samp>', `<samp><span class="samp">\</span></samp>',
-and, when history expansion is enabled, `<samp><span class="samp">!</span></samp>'.
-The characters `<samp><span class="samp">$</span></samp>' and `<samp><span class="samp">`</span></samp>'
-retain their special meaning within double quotes (see <a href="#Shell-Expansions">Shell Expansions</a>).
-The backslash retains its special meaning only when followed by one of
-the following characters:
-`<samp><span class="samp">$</span></samp>', `<samp><span class="samp">`</span></samp>', `<samp><span class="samp">"</span></samp>', `<samp><span class="samp">\</span></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><span class="samp">!</span></samp>'
-appearing in double quotes is escaped using a backslash.
-The backslash preceding the `<samp><span class="samp">!</span></samp>' is not removed.
-
- <p>The special parameters `<samp><span class="samp">*</span></samp>' and `<samp><span class="samp">@</span></samp>' have special meaning
-when in double quotes (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
-
-<div class="node">
-<p><hr>
-<a name="ANSI-C-Quoting"></a>
-<a name="ANSI_002dC-Quoting"></a>
-Next: <a rel="next" accesskey="n" href="#Locale-Translation">Locale Translation</a>,
-Previous: <a rel="previous" accesskey="p" href="#Double-Quotes">Double Quotes</a>,
-Up: <a rel="up" accesskey="u" href="#Quoting">Quoting</a>
-
-</div>
-
-<h5 class="subsubsection">3.1.2.4 ANSI-C Quoting</h5>
-
-<p><a name="index-quoting_002c-ANSI-23"></a>
-Words of the form <code>$'</code><var>string</var><code>'</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:
-
- <dl>
-<dt><code>\a</code><dd>alert (bell)
-<br><dt><code>\b</code><dd>backspace
-<br><dt><code>\e</code><dd>an escape character (not ANSI C)
-<br><dt><code>\f</code><dd>form feed
-<br><dt><code>\n</code><dd>newline
-<br><dt><code>\r</code><dd>carriage return
-<br><dt><code>\t</code><dd>horizontal tab
-<br><dt><code>\v</code><dd>vertical tab
-<br><dt><code>\\</code><dd>backslash
-<br><dt><code>\'</code><dd>single quote
-<br><dt><code>\</code><var>nnn</var><dd>the eight-bit character whose value is the octal value <var>nnn</var>
-(one to three digits)
-<br><dt><code>\x</code><var>HH</var><dd>the eight-bit character whose value is the hexadecimal value <var>HH</var>
-(one or two hex digits)
-<br><dt><code>\c</code><var>x</var><dd>a control-<var>x</var> character
-</dl>
-
-<p class="noindent">The expanded result is single-quoted, as if the dollar sign had not
-been present.
-
-<div class="node">
-<p><hr>
-<a name="Locale-Translation"></a>
-Previous: <a rel="previous" accesskey="p" href="#ANSI_002dC-Quoting">ANSI-C Quoting</a>,
-Up: <a rel="up" accesskey="u" href="#Quoting">Quoting</a>
-
-</div>
-
-<h5 class="subsubsection">3.1.2.5 Locale-Specific Translation</h5>
-
-<p><a name="index-localization-24"></a><a name="index-internationalization-25"></a><a name="index-native-languages-26"></a><a name="index-translation_002c-native-languages-27"></a>
-A double-quoted string preceded by a dollar sign (`<samp><span class="samp">$</span></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><a name="index-LC_005fMESSAGES-28"></a><a name="index-TEXTDOMAIN-29"></a><a name="index-TEXTDOMAINDIR-30"></a>Some systems use the message catalog selected by the <samp><span class="env">LC_MESSAGES</span></samp>
-shell variable. Others create the name of the message catalog from the
-value of the <samp><span class="env">TEXTDOMAIN</span></samp> shell variable, possibly adding a
-suffix of `<samp><span class="samp">.mo</span></samp>'. If you use the <samp><span class="env">TEXTDOMAIN</span></samp> variable, you
-may need to set the <samp><span class="env">TEXTDOMAINDIR</span></samp> variable to the location of
-the message catalog files. Still others use both variables in this
-fashion:
-<samp><span class="env">TEXTDOMAINDIR</span></samp>/<samp><span class="env">LC_MESSAGES</span></samp>/LC_MESSAGES/<samp><span class="env">TEXTDOMAIN</span></samp>.mo.
-
-<div class="node">
-<p><hr>
-<a name="Comments"></a>
-Previous: <a rel="previous" accesskey="p" href="#Quoting">Quoting</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Syntax">Shell Syntax</a>
-
-</div>
-
-<h4 class="subsection">3.1.3 Comments</h4>
-
-<p><a name="index-comments_002c-shell-31"></a>
-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 <a href="#The-Shopt-Builtin">The Shopt Builtin</a>),
-a word beginning with `<samp><span class="samp">#</span></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 <a href="#Interactive-Shells">Interactive Shells</a>, for a description of what makes
-a shell interactive.
-
-<div class="node">
-<p><hr>
-<a name="Shell-Commands"></a>
-Next: <a rel="next" accesskey="n" href="#Shell-Functions">Shell Functions</a>,
-Previous: <a rel="previous" accesskey="p" href="#Shell-Syntax">Shell Syntax</a>,
-Up: <a rel="up" accesskey="u" href="#Basic-Shell-Features">Basic Shell Features</a>
-
-</div>
-
-<h3 class="section">3.2 Shell Commands</h3>
-
-<p><a name="index-commands_002c-shell-32"></a>
-A simple shell command such as <code>echo a b c</code> consists of the command
-itself followed by arguments, separated by spaces.
-
- <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.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Simple-Commands">Simple Commands</a>: The most common type of command.
-<li><a accesskey="2" href="#Pipelines">Pipelines</a>: Connecting the input and output of several
- commands.
-<li><a accesskey="3" href="#Lists">Lists</a>: How to execute commands sequentially.
-<li><a accesskey="4" href="#Compound-Commands">Compound Commands</a>: Shell commands for control flow.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Simple-Commands"></a>
-Next: <a rel="next" accesskey="n" href="#Pipelines">Pipelines</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Commands">Shell Commands</a>
-
-</div>
-
-<h4 class="subsection">3.2.1 Simple Commands</h4>
-
-<p><a name="index-commands_002c-simple-33"></a>
-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 <a href="#Definitions">Definitions</a>). The
-first word generally specifies a command to be executed, with the
-rest of the words being that command's arguments.
-
- <p>The return status (see <a href="#Exit-Status">Exit Status</a>) of a simple command is
-its exit status as provided
-by the <span class="sc">posix</span> 1003.1 <code>waitpid</code> function, or 128+<var>n</var> if
-the command was terminated by signal <var>n</var>.
-
-<div class="node">
-<p><hr>
-<a name="Pipelines"></a>
-Next: <a rel="next" accesskey="n" href="#Lists">Lists</a>,
-Previous: <a rel="previous" accesskey="p" href="#Simple-Commands">Simple Commands</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Commands">Shell Commands</a>
-
-</div>
-
-<h4 class="subsection">3.2.2 Pipelines</h4>
-
-<p><a name="index-pipeline-34"></a><a name="index-commands_002c-pipelines-35"></a>
-A <code>pipeline</code> is a sequence of simple commands separated by
-`<samp><span class="samp">|</span></samp>'.
-
- <p><a name="index-time-36"></a><a name="index-g_t_0021-37"></a><a name="index-command-timing-38"></a>The format for a pipeline is
-<pre class="example"> [<code>time</code> [<code>-p</code>]] [<code>!</code>] <var>command1</var> [<code>|</code> <var>command2</var> ...]
-</pre>
- <p class="noindent">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.
-
- <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><span class="option">-p</span></samp> option changes the output format to that specified
-by <span class="sc">posix</span>.
-The <samp><span class="env">TIMEFORMAT</span></samp> variable may be set to a format string that
-specifies how the timing information should be displayed.
-See <a href="#Bash-Variables">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>If the pipeline is not executed asynchronously (see <a href="#Lists">Lists</a>), the
-shell waits for all commands in the pipeline to complete.
-
- <p>Each command in a pipeline is executed in its own subshell
-(see <a href="#Command-Execution-Environment">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 <a href="#The-Set-Builtin">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><span class="samp">!</span></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.
-
-<div class="node">
-<p><hr>
-<a name="Lists"></a>
-Next: <a rel="next" accesskey="n" href="#Compound-Commands">Compound Commands</a>,
-Previous: <a rel="previous" accesskey="p" href="#Pipelines">Pipelines</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Commands">Shell Commands</a>
-
-</div>
-
-<h4 class="subsection">3.2.3 Lists of Commands</h4>
-
-<p><a name="index-commands_002c-lists-39"></a>
-A <code>list</code> is a sequence of one or more pipelines separated by one
-of the operators `<samp><span class="samp">;</span></samp>', `<samp><span class="samp">&</span></samp>', `<samp><span class="samp">&&</span></samp>', or `<samp><span class="samp">||</span></samp>',
-and optionally terminated by one of `<samp><span class="samp">;</span></samp>', `<samp><span class="samp">&</span></samp>', or a
-<code>newline</code>.
-
- <p>Of these list operators, `<samp><span class="samp">&&</span></samp>' and `<samp><span class="samp">||</span></samp>'
-have equal precedence, followed by `<samp><span class="samp">;</span></samp>' and `<samp><span class="samp">&</span></samp>',
-which have equal precedence.
-
- <p>A sequence of one or more newlines may appear in a <code>list</code>
-to delimit commands, equivalent to a semicolon.
-
- <p>If a command is terminated by the control operator `<samp><span class="samp">&</span></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 <a href="#Job-Control">Job Control</a>),
-the standard input for asynchronous commands, in the absence of any
-explicit redirections, is redirected from <code>/dev/null</code>.
-
- <p>Commands separated by a `<samp><span class="samp">;</span></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>The control operators `<samp><span class="samp">&&</span></samp>' and `<samp><span class="samp">||</span></samp>'
-denote <span class="sc">and</span> lists and <span class="sc">or</span> lists, respectively.
-An <span class="sc">and</span> list has the form
-<pre class="example"> <var>command1</var> && <var>command2</var>
-</pre>
- <p class="noindent"><var>command2</var> is executed if, and only if, <var>command1</var>
-returns an exit status of zero.
-
- <p>An <span class="sc">or</span> list has the form
-<pre class="example"> <var>command1</var> || <var>command2</var>
-</pre>
- <p class="noindent"><var>command2</var> is executed if, and only if, <var>command1</var>
-returns a non-zero exit status.
-
- <p>The return status of
-<span class="sc">and</span> and <span class="sc">or</span> lists is the exit status of the last command
-executed in the list.
-
-<div class="node">
-<p><hr>
-<a name="Compound-Commands"></a>
-Previous: <a rel="previous" accesskey="p" href="#Lists">Lists</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Commands">Shell Commands</a>
-
-</div>
-
-<h4 class="subsection">3.2.4 Compound Commands</h4>
-
-<p><a name="index-commands_002c-compound-40"></a>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Looping-Constructs">Looping Constructs</a>: Shell commands for iterative action.
-<li><a accesskey="2" href="#Conditional-Constructs">Conditional Constructs</a>: Shell commands for conditional execution.
-<li><a accesskey="3" href="#Command-Grouping">Command Grouping</a>: Ways to group commands.
-</ul>
-
- <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 <a href="#Redirections">Redirections</a>) associated with a compound command
-apply to all commands within that compound command unless explicitly overridden.
-
- <p>Bash provides looping constructs, conditional commands, and mechanisms
-to group commands and execute them as a unit.
-
-<div class="node">
-<p><hr>
-<a name="Looping-Constructs"></a>
-Next: <a rel="next" accesskey="n" href="#Conditional-Constructs">Conditional Constructs</a>,
-Up: <a rel="up" accesskey="u" href="#Compound-Commands">Compound Commands</a>
-
-</div>
-
-<h5 class="subsubsection">3.2.4.1 Looping Constructs</h5>
-
-<p><a name="index-commands_002c-looping-41"></a>
-Bash supports the following looping constructs.
-
- <p>Note that wherever a `<samp><span class="samp">;</span></samp>' appears in the description of a
-command's syntax, it may be replaced with one or more newlines.
-
- <dl>
-<dt><code>until</code><dd><a name="index-until-42"></a><a name="index-do-43"></a><a name="index-done-44"></a>The syntax of the <code>until</code> command is:
- <pre class="example"> until <var>test-commands</var>; do <var>consequent-commands</var>; done
- </pre>
- <p>Execute <var>consequent-commands</var> as long as
-<var>test-commands</var> has an exit status which is not zero.
-The return status is the exit status of the last command executed
-in <var>consequent-commands</var>, or zero if none was executed.
-
- <br><dt><code>while</code><dd><a name="index-while-45"></a>The syntax of the <code>while</code> command is:
- <pre class="example"> while <var>test-commands</var>; do <var>consequent-commands</var>; done
- </pre>
- <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.
-
- <br><dt><code>for</code><dd><a name="index-for-46"></a>The syntax of the <code>for</code> command is:
-
- <pre class="example"> for <var>name</var> [in <var>words</var> ...]; do <var>commands</var>; done
- </pre>
- <p>Expand <var>words</var>, and execute <var>commands</var> once for each member
-in the resultant list, with <var>name</var> bound to the current member.
-If `<samp><span class="samp">in </span><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><span class="samp">in "$@"</span></samp>' had been specified
-(see <a href="#Special-Parameters">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>An alternate form of the <code>for</code> command is also supported:
-
- <pre class="example"> for (( <var>expr1</var> ; <var>expr2</var> ; <var>expr3</var> )) ; do <var>commands</var> ; done
- </pre>
- <p>First, the arithmetic expression <var>expr1</var> is evaluated according
-to the rules described below (see <a href="#Shell-Arithmetic">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.
-
- </dl>
-
- <p>The <code>break</code> and <code>continue</code> builtins (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>)
-may be used to control loop execution.
-
-<div class="node">
-<p><hr>
-<a name="Conditional-Constructs"></a>
-Next: <a rel="next" accesskey="n" href="#Command-Grouping">Command Grouping</a>,
-Previous: <a rel="previous" accesskey="p" href="#Looping-Constructs">Looping Constructs</a>,
-Up: <a rel="up" accesskey="u" href="#Compound-Commands">Compound Commands</a>
-
-</div>
-
-<h5 class="subsubsection">3.2.4.2 Conditional Constructs</h5>
-
-<p><a name="index-commands_002c-conditional-47"></a>
- <dl>
-<dt><code>if</code><dd><a name="index-if-48"></a><a name="index-then-49"></a><a name="index-else-50"></a><a name="index-elif-51"></a><a name="index-fi-52"></a>The syntax of the <code>if</code> command is:
-
- <pre class="example"> 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>
- <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><span class="samp">else </span><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.
-
- <br><dt><code>case</code><dd><a name="index-case-53"></a><a name="index-in-54"></a><a name="index-esac-55"></a>The syntax of the <code>case</code> command is:
-
- <pre class="example"> <code>case </code><var>word</var><code> in [ [(] </code><var>pattern</var><code> [| </code><var>pattern</var><code>]...) </code><var>command-list</var><code> ;;]... esac</code>
- </pre>
- <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="#The-Shopt-Builtin">The Shopt Builtin</a>)
-is enabled, the match is performed without regard to the case
-of alphabetic characters.
-The `<samp><span class="samp">|</span></samp>' is used to separate multiple patterns, and the `<samp><span class="samp">)</span></samp>'
-operator terminates a pattern list.
-A list of patterns and an associated command-list is known
-as a <var>clause</var>. Each clause must be terminated with `<samp><span class="samp">;;</span></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>There may be an arbitrary number of <code>case</code> clauses, each terminated
-by a `<samp><span class="samp">;;</span></samp>'. The first pattern that matches determines the
-command-list that is executed.
-
- <p>Here is an example using <code>case</code> in a script that could be used to
-describe one interesting feature of an animal:
-
- <pre class="example"> 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>
- <p class="noindent">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.
-
- <br><dt><code>select</code><dd><a name="index-select-56"></a>
-The <code>select</code> construct allows the easy generation of menus.
-It has almost the same syntax as the <code>for</code> command:
-
- <pre class="example"> select <var>name</var> [in <var>words</var> ...]; do <var>commands</var>; done
- </pre>
- <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><span class="samp">in </span><var>words</var></samp>' is omitted, the positional parameters are printed,
-as if `<samp><span class="samp">in "$@"</span></samp>' had been specified.
-The <samp><span class="env">PS3</span></samp> 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 <samp><span class="env">REPLY</span></samp>.
-
- <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>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.
-
- <pre class="example"> select fname in *;
- do
- echo you picked $fname \($REPLY\)
- break;
- done
- </pre>
- <br><dt><code>((...))</code><dd>
- <pre class="example"> (( <var>expression</var> ))
- </pre>
- <p>The arithmetic <var>expression</var> is evaluated according to the rules
-described below (see <a href="#Shell-Arithmetic">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
- <pre class="example"> let "<var>expression</var>"
- </pre>
- <p class="noindent">See <a href="#Bash-Builtins">Bash Builtins</a>, for a full description of the <code>let</code> builtin.
-
- <br><dt><code>[[...]]</code><dd><a name="index-g_t_005b_005b-57"></a><a name="index-g_t_005d_005d-58"></a>
- <pre class="example"> [[ <var>expression</var> ]]
- </pre>
- <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="#Bash-Conditional-Expressions">Bash Conditional Expressions</a>.
-Word splitting and filename expansion are not performed on the words
-between the `<samp><span class="samp">[[</span></samp>' and `<samp><span class="samp">]]</span></samp>'; tilde expansion, parameter and
-variable expansion, arithmetic expansion, command substitution, process
-substitution, and quote removal are performed.
-Conditional operators such as `<samp><span class="samp">-f</span></samp>' must be unquoted to be recognized
-as primaries.
-
- <p>When the `<samp><span class="samp">==</span></samp>' and `<samp><span class="samp">!=</span></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="#Pattern-Matching">Pattern Matching</a>.
-If the shell option <code>nocasematch</code>
-(see the description of <code>shopt</code> in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
-is enabled, the match is performed without regard to the case
-of alphabetic characters.
-The return value is 0 if the string matches (`<samp><span class="samp">==</span></samp>') or does not
-match (`<samp><span class="samp">!=</span></samp>')the pattern, and 1 otherwise.
-Any part of the pattern may be quoted to force it to be matched as a
-string.
-
- <p>An additional binary operator, `<samp><span class="samp">=~</span></samp>', is available, with the same
-precedence as `<samp><span class="samp">==</span></samp>' and `<samp><span class="samp">!=</span></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="#The-Shopt-Builtin">The Shopt Builtin</a>)
-is enabled, the match is performed without regard to the case
-of alphabetic characters.
-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>Expressions may be combined using the following operators, listed
-in decreasing order of precedence:
-
- <dl>
-<dt><code>( </code><var>expression</var><code> )</code><dd>Returns the value of <var>expression</var>.
-This may be used to override the normal precedence of operators.
-
- <br><dt><code>! </code><var>expression</var><dd>True if <var>expression</var> is false.
-
- <br><dt><var>expression1</var><code> && </code><var>expression2</var><dd>True if both <var>expression1</var> and <var>expression2</var> are true.
-
- <br><dt><var>expression1</var><code> || </code><var>expression2</var><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.
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Command-Grouping"></a>
-Previous: <a rel="previous" accesskey="p" href="#Conditional-Constructs">Conditional Constructs</a>,
-Up: <a rel="up" accesskey="u" href="#Compound-Commands">Compound Commands</a>
-
-</div>
-
-<h5 class="subsubsection">3.2.4.3 Grouping Commands</h5>
-
-<p><a name="index-commands_002c-grouping-59"></a>
-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.
-
- <dl>
-<dt><code>()</code><dd>
- <pre class="example"> ( <var>list</var> )
- </pre>
- <p>Placing a list of commands between parentheses causes a subshell
-environment to be created (see <a href="#Command-Execution-Environment">Command Execution Environment</a>), and each
-of the commands in <var>list</var> to be executed in that subshell. Since the
-<var>list</var> is executed in a subshell, variable assignments do not remain in
-effect after the subshell completes.
-
- <br><dt><code>{}</code><dd><a name="index-g_t_0040_007b-60"></a><a name="index-g_t_0040_007d-61"></a>
- <pre class="example"> { <var>list</var>; }
- </pre>
- <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. 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>The exit status of both of these constructs is the exit status of
-<var>list</var>.
-
-<div class="node">
-<p><hr>
-<a name="Shell-Functions"></a>
-Next: <a rel="next" accesskey="n" href="#Shell-Parameters">Shell Parameters</a>,
-Previous: <a rel="previous" accesskey="p" href="#Shell-Commands">Shell Commands</a>,
-Up: <a rel="up" accesskey="u" href="#Basic-Shell-Features">Basic Shell Features</a>
-
-</div>
-
-<h3 class="section">3.3 Shell Functions</h3>
-
-<p><a name="index-shell-function-62"></a><a name="index-functions_002c-shell-63"></a>
-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>Functions are declared using this syntax:
-<a name="index-function-64"></a>
-<pre class="example"> [ <code>function</code> ] <var>name</var> () <var>compound-command</var> [ <var>redirections</var> ]
-</pre>
- <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 <a href="#Compound-Commands">Compound Commands</a>).
-That command is usually a <var>list</var> enclosed between { and }, but
-may be any compound command listed above.
-<var>compound-command</var> is executed whenever <var>name</var> is specified as the
-name of a command.
-Any redirections (see <a href="#Redirections">Redirections</a>) associated with the shell function
-are performed when the function is executed.
-
- <p>A function definition may be deleted using the <samp><span class="option">-f</span></samp> option to the
-<code>unset</code> builtin (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
-
- <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>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 by whitespace.
-Also, when using the braces, the <var>list</var> must be terminated by a semicolon,
-a `<samp><span class="samp">&</span></samp>', or a newline.
-
- <p>When a function is executed, the arguments to the
-function become the positional parameters
-during its execution (see <a href="#Positional-Parameters">Positional Parameters</a>).
-The special parameter `<samp><span class="samp">#</span></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 <samp><span class="env">FUNCNAME</span></samp> 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 <samp><span class="env">DEBUG</span></samp> and <samp><span class="env">RETURN</span></samp> 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 <samp><span class="env">DEBUG</span></samp> and <samp><span class="env">RETURN</span></samp> traps).
-See <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>, for the description of the
-<code>trap</code> builtin.
-
- <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><span class="samp">#</span></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>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>Function names and definitions may be listed with the
-<samp><span class="option">-f</span></samp> option to the <code>declare</code> or <code>typeset</code>
-builtin commands (see <a href="#Bash-Builtins">Bash Builtins</a>).
-The <samp><span class="option">-F</span></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><span class="option">-f</span></samp> option to the <code>export</code> builtin
-(see <a href="#Bourne-Shell-Builtins">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>Functions may be recursive. No limit is placed on the number of
-recursive calls.
-
-<div class="node">
-<p><hr>
-<a name="Shell-Parameters"></a>
-Next: <a rel="next" accesskey="n" href="#Shell-Expansions">Shell Expansions</a>,
-Previous: <a rel="previous" accesskey="p" href="#Shell-Functions">Shell Functions</a>,
-Up: <a rel="up" accesskey="u" href="#Basic-Shell-Features">Basic Shell Features</a>
-
-</div>
-
-<h3 class="section">3.4 Shell Parameters</h3>
-
-<p><a name="index-parameters-65"></a><a name="index-variable_002c-shell-66"></a><a name="index-shell-variable-67"></a>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Positional-Parameters">Positional Parameters</a>: The shell's command-line arguments.
-<li><a accesskey="2" href="#Special-Parameters">Special Parameters</a>: Parameters denoted by special characters.
-</ul>
-
- <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="#Bash-Builtins">Bash Builtins</a>).
-
- <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>A variable may be assigned to by a statement of the form
-<pre class="example"> <var>name</var>=[<var>value</var>]
-</pre>
- <p class="noindent">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>$((...))</code>
-expansion is not used (see <a href="#Arithmetic-Expansion">Arithmetic Expansion</a>).
-Word splitting is not performed, with the exception
-of <code>"$@"</code> as explained below.
-Filename expansion is not performed.
-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>In the context where an assignment statement is assigning a value
-to a shell variable or array index (see <a href="#Arrays">Arrays</a>), the `<samp><span class="samp">+=</span></samp>'
-operator can be used to
-append to or add to the variable's previous value.
-When `<samp><span class="samp">+=</span></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><span class="samp">+=</span></samp>' is applied to an array variable using compound assignment
-(see <a href="#Arrays">Arrays</a>), the
-variable's value is not unset (as it is when using `<samp><span class="samp">=</span></samp>'), and new
-values are appended to the array beginning at one greater than the array's
-maximum index.
-When applied to a string-valued variable, <var>value</var> is expanded and
-appended to the variable's value.
-
-<div class="node">
-<p><hr>
-<a name="Positional-Parameters"></a>
-Next: <a rel="next" accesskey="n" href="#Special-Parameters">Special Parameters</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Parameters">Shell Parameters</a>
-
-</div>
-
-<h4 class="subsection">3.4.1 Positional Parameters</h4>
-
-<p><a name="index-parameters_002c-positional-68"></a>
-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 <a href="#Shell-Builtin-Commands">Shell Builtin Commands</a>).
-The positional parameters are
-temporarily replaced when a shell function is executed
-(see <a href="#Shell-Functions">Shell Functions</a>).
-
- <p>When a positional parameter consisting of more than a single
-digit is expanded, it must be enclosed in braces.
-
-<div class="node">
-<p><hr>
-<a name="Special-Parameters"></a>
-Previous: <a rel="previous" accesskey="p" href="#Positional-Parameters">Positional Parameters</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Parameters">Shell Parameters</a>
-
-</div>
-
-<h4 class="subsection">3.4.2 Special Parameters</h4>
-
-<p><a name="index-parameters_002c-special-69"></a>
-The shell treats several parameters specially. These parameters may
-only be referenced; assignment to them is not allowed.
-
- <dl>
-<dt><code>*</code><a name="index-g_t_002a-70"></a><dd>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 <samp><span class="env">IFS</span></samp>
-special variable. That is, <code>"$*"</code> is equivalent
-to <code>"$1</code><var>c</var><code>$2</code><var>c</var><code>..."</code>, where <var>c</var>
-is the first character of the value of the <code>IFS</code>
-variable.
-If <samp><span class="env">IFS</span></samp> is unset, the parameters are separated by spaces.
-If <samp><span class="env">IFS</span></samp> is null, the parameters are joined without intervening
-separators.
-
- <br><dt><code>@</code><a name="index-g_t_0040_0040-71"></a><dd>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" ...</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).
-
- <br><dt><code>#</code><a name="index-g_t_0023-72"></a><dd>Expands to the number of positional parameters in decimal.
-
- <br><dt><code>?</code><a name="index-g_t_003f-73"></a><dd>Expands to the exit status of the most recently executed foreground
-pipeline.
-
- <br><dt><code>-</code><a name="index-g_t_002d-74"></a><dd>(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><span class="option">-i</span></samp> option).
-
- <br><dt><code>$</code><a name="index-g_t_0024-75"></a><dd>Expands to the process <span class="sc">id</span> of the shell. In a <code>()</code> subshell, it
-expands to the process <span class="sc">id</span> of the invoking shell, not the subshell.
-
- <br><dt><code>!</code><a name="index-g_t_0021-76"></a><dd>Expands to the process <span class="sc">id</span> of the most recently executed background
-(asynchronous) command.
-
- <br><dt><code>0</code><a name="index-g_t0-77"></a><dd>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 <a href="#Shell-Scripts">Shell Scripts</a>), <code>$0</code> is set to the name of that file.
-If Bash is started with the <samp><span class="option">-c</span></samp> option (see <a href="#Invoking-Bash">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.
-
- <br><dt><code>_</code><a name="index-g_t_005f-78"></a><dd>(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>
-
-<div class="node">
-<p><hr>
-<a name="Shell-Expansions"></a>
-Next: <a rel="next" accesskey="n" href="#Redirections">Redirections</a>,
-Previous: <a rel="previous" accesskey="p" href="#Shell-Parameters">Shell Parameters</a>,
-Up: <a rel="up" accesskey="u" href="#Basic-Shell-Features">Basic Shell Features</a>
-
-</div>
-
-<h3 class="section">3.5 Shell Expansions</h3>
-
-<p><a name="index-expansion-79"></a>
-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>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Brace-Expansion">Brace Expansion</a>: Expansion of expressions within braces.
-<li><a accesskey="2" href="#Tilde-Expansion">Tilde Expansion</a>: Expansion of the ~ character.
-<li><a accesskey="3" href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>: How Bash expands variables to their values.
-<li><a accesskey="4" href="#Command-Substitution">Command Substitution</a>: Using the output of a command as an argument.
-<li><a accesskey="5" href="#Arithmetic-Expansion">Arithmetic Expansion</a>: How to use arithmetic in shell expansions.
-<li><a accesskey="6" href="#Process-Substitution">Process Substitution</a>: A way to write and read to and from a
- command.
-<li><a accesskey="7" href="#Word-Splitting">Word Splitting</a>: How the results of expansion are split into separate
- arguments.
-<li><a accesskey="8" href="#Filename-Expansion">Filename Expansion</a>: A shorthand for specifying filenames matching patterns.
-<li><a accesskey="9" href="#Quote-Removal">Quote Removal</a>: How and when quote characters are removed from
- words.
-</ul>
-
- <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>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>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 <a href="#Special-Parameters">Special Parameters</a>) and <code>"${</code><var>name</var><code>[@]}"</code>
-(see <a href="#Arrays">Arrays</a>).
-
- <p>After all expansions, <code>quote removal</code> (see <a href="#Quote-Removal">Quote Removal</a>)
-is performed.
-
-<div class="node">
-<p><hr>
-<a name="Brace-Expansion"></a>
-Next: <a rel="next" accesskey="n" href="#Tilde-Expansion">Tilde Expansion</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Expansions">Shell Expansions</a>
-
-</div>
-
-<h4 class="subsection">3.5.1 Brace Expansion</h4>
-
-<p><a name="index-brace-expansion-80"></a><a name="index-expansion_002c-brace-81"></a>
-Brace expansion is a mechanism by which arbitrary strings may be generated.
-This mechanism is similar to
-<var>filename expansion</var> (see <a href="#Filename-Expansion">Filename Expansion</a>),
-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>Brace expansions may be nested.
-The results of each expanded string are not sorted; left to right order
-is preserved.
-For example,
-<pre class="example"> bash$ echo a{d,c,b}e
- ade ace abe
-</pre>
- <p>A sequence expression takes the form <code>{</code><var>x</var><code>..</code><var>y</var><code>}</code>,
-where <var>x</var> and <var>y</var> are either integers or single characters.
-When integers are supplied, the expression expands to each number between
-<var>x</var> and <var>y</var>, inclusive.
-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.
-
- <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><span class="samp">${</span></samp>'
-is not considered eligible for brace expansion.
-
- <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>A { or `<samp><span class="samp">,</span></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><span class="samp">${</span></samp>'
-is not considered eligible for brace expansion.
-
- <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:
-<pre class="example"> mkdir /usr/local/src/bash/{old,new,dist,bugs}
-</pre>
- <p>or
-<pre class="example"> chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
-</pre>
- <div class="node">
-<p><hr>
-<a name="Tilde-Expansion"></a>
-Next: <a rel="next" accesskey="n" href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>,
-Previous: <a rel="previous" accesskey="p" href="#Brace-Expansion">Brace Expansion</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Expansions">Shell Expansions</a>
-
-</div>
-
-<h4 class="subsection">3.5.2 Tilde Expansion</h4>
-
-<p><a name="index-tilde-expansion-82"></a><a name="index-expansion_002c-tilde-83"></a>
-If a word begins with an unquoted tilde character (`<samp><span class="samp">~</span></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 <samp><span class="env">HOME</span></samp> shell variable.
-If <samp><span class="env">HOME</span></samp> 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>If the tilde-prefix is `<samp><span class="samp">~+</span></samp>', the value of
-the shell variable <samp><span class="env">PWD</span></samp> replaces the tilde-prefix.
-If the tilde-prefix is `<samp><span class="samp">~-</span></samp>', the value of the shell variable
-<samp><span class="env">OLDPWD</span></samp>, if it is set, is substituted.
-
- <p>If the characters following the tilde in the tilde-prefix consist of a
-number <var>N</var>, optionally prefixed by a `<samp><span class="samp">+</span></samp>' or a `<samp><span class="samp">-</span></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 <a href="#The-Directory-Stack">The Directory Stack</a>).
-If the tilde-prefix, sans the tilde, consists of a number without a
-leading `<samp><span class="samp">+</span></samp>' or `<samp><span class="samp">-</span></samp>', `<samp><span class="samp">+</span></samp>' is assumed.
-
- <p>If the login name is invalid, or the tilde expansion fails, the word is
-left unchanged.
-
- <p>Each variable assignment is checked for unquoted tilde-prefixes immediately
-following a `<samp><span class="samp">:</span></samp>' or the first `<samp><span class="samp">=</span></samp>'.
-In these cases, tilde expansion is also performed.
-Consequently, one may use file names with tildes in assignments to
-<samp><span class="env">PATH</span></samp>, <samp><span class="env">MAILPATH</span></samp>, and <samp><span class="env">CDPATH</span></samp>,
-and the shell assigns the expanded value.
-
- <p>The following table shows how Bash treats unquoted tilde-prefixes:
-
- <dl>
-<dt><code>~</code><dd>The value of <code>$HOME</code>
-<br><dt><code>~/foo</code><dd><samp><span class="file">$HOME/foo</span></samp>
-
- <br><dt><code>~fred/foo</code><dd>The subdirectory <code>foo</code> of the home directory of the user
-<code>fred</code>
-
- <br><dt><code>~+/foo</code><dd><samp><span class="file">$PWD/foo</span></samp>
-
- <br><dt><code>~-/foo</code><dd><samp><span class="file">${OLDPWD-'~-'}/foo</span></samp>
-
- <br><dt><code>~</code><var>N</var><dd>The string that would be displayed by `<samp><span class="samp">dirs +</span><var>N</var></samp>'
-
- <br><dt><code>~+</code><var>N</var><dd>The string that would be displayed by `<samp><span class="samp">dirs +</span><var>N</var></samp>'
-
- <br><dt><code>~-</code><var>N</var><dd>The string that would be displayed by `<samp><span class="samp">dirs -</span><var>N</var></samp>'
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Shell-Parameter-Expansion"></a>
-Next: <a rel="next" accesskey="n" href="#Command-Substitution">Command Substitution</a>,
-Previous: <a rel="previous" accesskey="p" href="#Tilde-Expansion">Tilde Expansion</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Expansions">Shell Expansions</a>
-
-</div>
-
-<h4 class="subsection">3.5.3 Shell Parameter Expansion</h4>
-
-<p><a name="index-parameter-expansion-84"></a><a name="index-expansion_002c-parameter-85"></a>
-The `<samp><span class="samp">$</span></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>When braces are used, the matching ending brace is the first `<samp><span class="samp">}</span></samp>'
-not escaped by a backslash or within a quoted string, and not within an
-embedded arithmetic expansion, command substitution, or parameter
-expansion.
-
- <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>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>In each of the cases below, <var>word</var> is subject to tilde expansion,
-parameter expansion, command substitution, and arithmetic expansion.
-
- <p>When not performing substring expansion, 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 existence and that the value is not null;
-if the colon is omitted, the operator tests only for existence.
-
- <dl>
-<dt><code>${</code><var>parameter</var><code>:−</code><var>word</var><code>}</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.
-
- <br><dt><code>${</code><var>parameter</var><code>:=</code><var>word</var><code>}</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.
-
- <br><dt><code>${</code><var>parameter</var><code>:?</code><var>word</var><code>}</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.
-
- <br><dt><code>${</code><var>parameter</var><code>:+</code><var>word</var><code>}</code><dd>If <var>parameter</var>
-is null or unset, nothing is substituted, otherwise the expansion of
-<var>word</var> is substituted.
-
- <br><dt><code>${</code><var>parameter</var><code>:</code><var>offset</var><code>}</code><dt><code>${</code><var>parameter</var><code>:</code><var>offset</var><code>:</code><var>length</var><code>}</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 <a href="#Shell-Arithmetic">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><span class="samp">@</span></samp>', the result is <var>length</var> positional
-parameters beginning at <var>offset</var>.
-If <var>parameter</var> is an array name indexed by `<samp><span class="samp">@</span></samp>' or `<samp><span class="samp">*</span></samp>',
-the result is the <var>length</var>
-members of the array beginning with <code>${</code><var>parameter</var><code>[</code><var>offset</var><code>]}</code>.
-A negative <var>offset</var> is taken relative to one greater than the maximum
-index of the specified array.
-Note that a negative offset must be separated from the colon by at least
-one space to avoid being confused with the `<samp><span class="samp">:-</span></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.
-
- <br><dt><code>${!</code><var>prefix</var><code>*}</code><dt><code>${!</code><var>prefix</var><code>@}</code><dd>Expands to the names of variables whose names begin with <var>prefix</var>,
-separated by the first character of the <samp><span class="env">IFS</span></samp> special variable.
-When `<samp><span class="samp">@</span></samp>' is used and the expansion appears within double quotes, each
-variable name expands to a separate word.
-
- <br><dt><code>${!</code><var>name</var><code>[@]}</code><dt><code>${!</code><var>name</var><code>[*]}</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><span class="samp">@</span></samp>' is used and the expansion appears within double quotes, each
-key expands to a separate word.
-
- <br><dt><code>${#</code><var>parameter</var><code>}</code><dd>The length in characters of the expanded value of <var>parameter</var> is
-substituted.
-If <var>parameter</var> is `<samp><span class="samp">*</span></samp>' or `<samp><span class="samp">@</span></samp>', the value substituted
-is the number of positional parameters.
-If <var>parameter</var> is an array name subscripted by `<samp><span class="samp">*</span></samp>' or `<samp><span class="samp">@</span></samp>',
-the value substituted is the number of elements in the array.
-
- <br><dt><code>${</code><var>parameter</var><code>#</code><var>word</var><code>}</code><dt><code>${</code><var>parameter</var><code>##</code><var>word</var><code>}</code><dd>The <var>word</var>
-is expanded to produce a pattern just as in filename
-expansion (see <a href="#Filename-Expansion">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><span class="samp">#</span></samp>' case) or the
-longest matching pattern (the `<samp><span class="samp">##</span></samp>' case) deleted.
-If <var>parameter</var> is `<samp><span class="samp">@</span></samp>' or `<samp><span class="samp">*</span></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><span class="samp">@</span></samp>' or `<samp><span class="samp">*</span></samp>',
-the pattern removal operation is applied to each member of the
-array in turn, and the expansion is the resultant list.
-
- <br><dt><code>${</code><var>parameter</var><code>%</code><var>word</var><code>}</code><dt><code>${</code><var>parameter</var><code>%%</code><var>word</var><code>}</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><span class="samp">%</span></samp>' case)
-or the longest matching pattern (the `<samp><span class="samp">%%</span></samp>' case) deleted.
-If <var>parameter</var> is `<samp><span class="samp">@</span></samp>' or `<samp><span class="samp">*</span></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><span class="samp">@</span></samp>' or `<samp><span class="samp">*</span></samp>',
-the pattern removal operation is applied to each member of the
-array in turn, and the expansion is the resultant list.
-
- <br><dt><code>${</code><var>parameter</var><code>/</code><var>pattern</var><code>/</code><var>string</var><code>}</code><dd>
-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><span class="samp">/</span></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><span class="samp">#</span></samp>', it must match at the beginning
-of the expanded value of <var>parameter</var>.
-If <var>pattern</var> begins with `<samp><span class="samp">%</span></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><span class="samp">@</span></samp>' or `<samp><span class="samp">*</span></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><span class="samp">@</span></samp>' or `<samp><span class="samp">*</span></samp>',
-the substitution operation is applied to each member of the
-array in turn, and the expansion is the resultant list.
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Command-Substitution"></a>
-Next: <a rel="next" accesskey="n" href="#Arithmetic-Expansion">Arithmetic Expansion</a>,
-Previous: <a rel="previous" accesskey="p" href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Expansions">Shell Expansions</a>
-
-</div>
-
-<h4 class="subsection">3.5.4 Command Substitution</h4>
-
-<p><a name="index-command-substitution-86"></a>
-Command substitution allows the output of a command to replace
-the command itself.
-Command substitution occurs when a command is enclosed as follows:
-<pre class="example"> $(<var>command</var>)
-</pre>
- <p class="noindent">or
-<pre class="example"> `<var>command</var>`
-</pre>
- <p class="noindent">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 </code><var>file</var><code>)</code> can be
-replaced by the equivalent but faster <code>$(< </code><var>file</var><code>)</code>.
-
- <p>When the old-style backquote form of substitution is used,
-backslash retains its literal meaning except when followed by
-`<samp><span class="samp">$</span></samp>', `<samp><span class="samp">`</span></samp>', or `<samp><span class="samp">\</span></samp>'.
-The first backquote not preceded by a backslash terminates the
-command substitution.
-When using the <code>$(</code><var>command</var><code>)</code> form, all characters between
-the parentheses make up the command; none are treated specially.
-
- <p>Command substitutions may be nested. To nest when using the backquoted
-form, escape the inner backquotes with backslashes.
-
- <p>If the substitution appears within double quotes, word splitting and
-filename expansion are not performed on the results.
-
-<div class="node">
-<p><hr>
-<a name="Arithmetic-Expansion"></a>
-Next: <a rel="next" accesskey="n" href="#Process-Substitution">Process Substitution</a>,
-Previous: <a rel="previous" accesskey="p" href="#Command-Substitution">Command Substitution</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Expansions">Shell Expansions</a>
-
-</div>
-
-<h4 class="subsection">3.5.5 Arithmetic Expansion</h4>
-
-<p><a name="index-expansion_002c-arithmetic-87"></a><a name="index-arithmetic-expansion-88"></a>
-Arithmetic expansion allows the evaluation of an arithmetic expression
-and the substitution of the result. The format for arithmetic expansion is:
-
-<pre class="example"> $(( <var>expression</var> ))
-</pre>
- <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>The evaluation is performed according to the rules listed below
-(see <a href="#Shell-Arithmetic">Shell Arithmetic</a>).
-If the expression is invalid, Bash prints a message indicating
-failure to the standard error and no substitution occurs.
-
-<div class="node">
-<p><hr>
-<a name="Process-Substitution"></a>
-Next: <a rel="next" accesskey="n" href="#Word-Splitting">Word Splitting</a>,
-Previous: <a rel="previous" accesskey="p" href="#Arithmetic-Expansion">Arithmetic Expansion</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Expansions">Shell Expansions</a>
-
-</div>
-
-<h4 class="subsection">3.5.6 Process Substitution</h4>
-
-<p><a name="index-process-substitution-89"></a>
-Process substitution is supported on systems that support named
-pipes (<span class="sc">fifo</span>s) or the <samp><span class="file">/dev/fd</span></samp> method of naming open files.
-It takes the form of
-<pre class="example"> <(<var>list</var>)
-</pre>
- <p class="noindent">or
-<pre class="example"> >(<var>list</var>)
-</pre>
- <p class="noindent">The process <var>list</var> is run with its input or output connected to a
-<span class="sc">fifo</span> or some file in <samp><span class="file">/dev/fd</span></samp>. The name of this file is
-passed as an argument to the current command as the result of the
-expansion. If the <code>>(</code><var>list</var><code>)</code> form is used, writing to
-the file will provide input for <var>list</var>. If the
-<code><(</code><var>list</var><code>)</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>When available, process substitution is performed simultaneously with
-parameter and variable expansion, command substitution, and arithmetic
-expansion.
-
-<div class="node">
-<p><hr>
-<a name="Word-Splitting"></a>
-Next: <a rel="next" accesskey="n" href="#Filename-Expansion">Filename Expansion</a>,
-Previous: <a rel="previous" accesskey="p" href="#Process-Substitution">Process Substitution</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Expansions">Shell Expansions</a>
-
-</div>
-
-<h4 class="subsection">3.5.7 Word Splitting</h4>
-
-<p><a name="index-word-splitting-90"></a>
-The shell scans the results of parameter expansion, command substitution,
-and arithmetic expansion that did not occur within double quotes for
-word splitting.
-
- <p>The shell treats each character of <samp><span class="env">$IFS</span></samp> as a delimiter, and splits
-the results of the other expansions into words on these characters.
-If <samp><span class="env">IFS</span></samp> 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 <samp><span class="env">IFS</span></samp>
-characters not at the beginning or end serves to delimit words.
-If <samp><span class="env">IFS</span></samp> 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 <samp><span class="env">IFS</span></samp> (an <samp><span class="env">IFS</span></samp> whitespace character).
-Any character in <samp><span class="env">IFS</span></samp> that is not <samp><span class="env">IFS</span></samp>
-whitespace, along with any adjacent <samp><span class="env">IFS</span></samp>
-whitespace characters, delimits a field. A sequence of <samp><span class="env">IFS</span></samp>
-whitespace characters is also treated as a delimiter.
-If the value of <samp><span class="env">IFS</span></samp> is null, no word splitting occurs.
-
- <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>Note that if no expansion occurs, no splitting
-is performed.
-
-<div class="node">
-<p><hr>
-<a name="Filename-Expansion"></a>
-Next: <a rel="next" accesskey="n" href="#Quote-Removal">Quote Removal</a>,
-Previous: <a rel="previous" accesskey="p" href="#Word-Splitting">Word Splitting</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Expansions">Shell Expansions</a>
-
-</div>
-
-<h4 class="subsection">3.5.8 Filename Expansion</h4>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Pattern-Matching">Pattern Matching</a>: How the shell matches patterns.
-</ul>
-<a name="index-expansion_002c-filename-91"></a><a name="index-expansion_002c-pathname-92"></a><a name="index-filename-expansion-93"></a><a name="index-pathname-expansion-94"></a>
-After word splitting, unless the <samp><span class="option">-f</span></samp> option has been set
-(see <a href="#The-Set-Builtin">The Set Builtin</a>), Bash scans each word for the characters
-`<samp><span class="samp">*</span></samp>', `<samp><span class="samp">?</span></samp>', and `<samp><span class="samp">[</span></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>When a pattern is used for filename generation, the character `<samp><span class="samp">.</span></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><span class="samp">.</span></samp>' character is not treated specially.
-
- <p>See the description of <code>shopt</code> in <a href="#The-Shopt-Builtin">The Shopt Builtin</a>,
-for a description of the <code>nocaseglob</code>, <code>nullglob</code>,
-<code>failglob</code>, and <code>dotglob</code> options.
-
- <p>The <samp><span class="env">GLOBIGNORE</span></samp>
-shell variable may be used to restrict the set of filenames matching a
-pattern. If <samp><span class="env">GLOBIGNORE</span></samp>
-is set, each matching filename that also matches one of the patterns in
-<samp><span class="env">GLOBIGNORE</span></samp> is removed from the list of matches. The filenames
-<samp><span class="file">.</span></samp> and <samp><span class="file">..</span></samp>
-are always ignored when <samp><span class="env">GLOBIGNORE</span></samp>
-is set and not null.
-However, setting <samp><span class="env">GLOBIGNORE</span></samp> to a non-null value has the effect of
-enabling the <code>dotglob</code>
-shell option, so all other filenames beginning with a
-`<samp><span class="samp">.</span></samp>' will match.
-To get the old behavior of ignoring filenames beginning with a
-`<samp><span class="samp">.</span></samp>', make `<samp><span class="samp">.*</span></samp>' one of the patterns in <samp><span class="env">GLOBIGNORE</span></samp>.
-The <code>dotglob</code> option is disabled when <samp><span class="env">GLOBIGNORE</span></samp>
-is unset.
-
-<div class="node">
-<p><hr>
-<a name="Pattern-Matching"></a>
-Up: <a rel="up" accesskey="u" href="#Filename-Expansion">Filename Expansion</a>
-
-</div>
-
-<h5 class="subsubsection">3.5.8.1 Pattern Matching</h5>
-
-<p><a name="index-pattern-matching-95"></a><a name="index-matching_002c-pattern-96"></a>
-Any character that appears in a pattern, other than the special pattern
-characters described below, matches itself.
-The <span class="sc">nul</span> 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>The special pattern characters have the following meanings:
- <dl>
-<dt><code>*</code><dd>Matches any string, including the null string.
-<br><dt><code>?</code><dd>Matches any single character.
-<br><dt><code>[...]</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><span class="samp">[</span></samp>' is a `<samp><span class="samp">!</span></samp>' or a `<samp><span class="samp">^</span></samp>'
-then any character not enclosed is matched. A `<samp><span class="samp">−</span></samp>'
-may be matched by including it as the first or last character
-in the set. A `<samp><span class="samp">]</span></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 <samp><span class="env">LC_COLLATE</span></samp> shell variable,
-if set.
-
- <p>For example, in the default C locale, `<samp><span class="samp">[a-dx-z]</span></samp>' is equivalent to
-`<samp><span class="samp">[abcdxyz]</span></samp>'. Many locales sort characters in dictionary order, and in
-these locales `<samp><span class="samp">[a-dx-z]</span></samp>' is typically not equivalent to `<samp><span class="samp">[abcdxyz]</span></samp>';
-it might be equivalent to `<samp><span class="samp">[aBbCcDdxXyYz]</span></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 <samp><span class="env">LC_COLLATE</span></samp> or
-<samp><span class="env">LC_ALL</span></samp> environment variable to the value `<samp><span class="samp">C</span></samp>'.
-
- <p>Within `<samp><span class="samp">[</span></samp>' and `<samp><span class="samp">]</span></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 <span class="sc">posix</span> standard:
- <pre class="example"> alnum alpha ascii blank cntrl digit graph lower
- print punct space upper word xdigit
- </pre>
- <p class="noindent">A character class matches any character belonging to that class.
-The <code>word</code> character class matches letters, digits, and the character
-`<samp><span class="samp">_</span></samp>'.
-
- <p>Within `<samp><span class="samp">[</span></samp>' and `<samp><span class="samp">]</span></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>Within `<samp><span class="samp">[</span></samp>' and `<samp><span class="samp">]</span></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><span class="samp">|</span></samp>'.
-Composite patterns may be formed using one or more of the following
-sub-patterns:
-
- <dl>
-<dt><code>?(</code><var>pattern-list</var><code>)</code><dd>Matches zero or one occurrence of the given patterns.
-
- <br><dt><code>*(</code><var>pattern-list</var><code>)</code><dd>Matches zero or more occurrences of the given patterns.
-
- <br><dt><code>+(</code><var>pattern-list</var><code>)</code><dd>Matches one or more occurrences of the given patterns.
-
- <br><dt><code>@(</code><var>pattern-list</var><code>)</code><dd>Matches one of the given patterns.
-
- <br><dt><code>!(</code><var>pattern-list</var><code>)</code><dd>Matches anything except one of the given patterns.
-</dl>
-
-<div class="node">
-<p><hr>
-<a name="Quote-Removal"></a>
-Previous: <a rel="previous" accesskey="p" href="#Filename-Expansion">Filename Expansion</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Expansions">Shell Expansions</a>
-
-</div>
-
-<h4 class="subsection">3.5.9 Quote Removal</h4>
-
-<p>After the preceding expansions, all unquoted occurrences of the
-characters `<samp><span class="samp">\</span></samp>', `<samp><span class="samp">'</span></samp>', and `<samp><span class="samp">"</span></samp>' that did not
-result from one of the above expansions are removed.
-
-<div class="node">
-<p><hr>
-<a name="Redirections"></a>
-Next: <a rel="next" accesskey="n" href="#Executing-Commands">Executing Commands</a>,
-Previous: <a rel="previous" accesskey="p" href="#Shell-Expansions">Shell Expansions</a>,
-Up: <a rel="up" accesskey="u" href="#Basic-Shell-Features">Basic Shell Features</a>
-
-</div>
-
-<h3 class="section">3.6 Redirections</h3>
-
-<p><a name="index-redirection-97"></a>
-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>In the following descriptions, if the file descriptor number is
-omitted, and the first character of the redirection operator is
-`<samp><span class="samp"><</span></samp>', the redirection refers to the standard input (file
-descriptor 0). If the first character of the redirection operator
-is `<samp><span class="samp">></span></samp>', the redirection refers to the standard output (file
-descriptor 1).
-
- <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>Note that the order of redirections is significant. For example,
-the command
-<pre class="example"> ls > <var>dirlist</var> 2>&1
-</pre>
- <p class="noindent">directs both standard output (file descriptor 1) and standard error
-(file descriptor 2) to the file <var>dirlist</var>, while the command
-<pre class="example"> ls 2>&1 > <var>dirlist</var>
-</pre>
- <p class="noindent">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>Bash handles several filenames specially when they are used in
-redirections, as described in the following table:
-
- <dl>
-<dt><code>/dev/fd/</code><var>fd</var><dd>If <var>fd</var> is a valid integer, file descriptor <var>fd</var> is duplicated.
-
- <br><dt><code>/dev/stdin</code><dd>File descriptor 0 is duplicated.
-
- <br><dt><code>/dev/stdout</code><dd>File descriptor 1 is duplicated.
-
- <br><dt><code>/dev/stderr</code><dd>File descriptor 2 is duplicated.
-
- <br><dt><code>/dev/tcp/</code><var>host</var><code>/</code><var>port</var><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.
-
- <br><dt><code>/dev/udp/</code><var>host</var><code>/</code><var>port</var><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.
-
- </dl>
-
- <p>A failure to open or create a file causes the redirection to fail.
-
- <p>Redirections using file descriptors greater than 9 should be used with
-care, as they may conflict with file descriptors the shell uses
-internally.
-
-<h4 class="subsection">3.6.1 Redirecting Input</h4>
-
-<p>Redirection of input causes the file whose name results from
-the expansion of <var>word</var>
-to be opened for reading on file descriptor <code>n</code>,
-or the standard input (file descriptor 0) if <code>n</code>
-is not specified.
-
- <p>The general format for redirecting input is:
-<pre class="example"> [<var>n</var>]<<var>word</var>
-</pre>
- <h4 class="subsection">3.6.2 Redirecting Output</h4>
-
-<p>Redirection of output causes the file whose name results from
-the expansion of <var>word</var>
-to be opened for writing on file descriptor <var>n</var>,
-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:
-<pre class="example"> [<var>n</var>]>[|]<var>word</var>
-</pre>
- <p>If the redirection operator is `<samp><span class="samp">></span></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><span class="samp">>|</span></samp>', or the redirection operator is
-`<samp><span class="samp">></span></samp>' and the <code>noclobber</code> option is not enabled, the redirection
-is attempted even if the file named by <var>word</var> exists.
-
-<h4 class="subsection">3.6.3 Appending Redirected Output</h4>
-
-<p>Redirection of output in this fashion
-causes the file whose name results from
-the expansion of <var>word</var>
-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:
-<pre class="example"> [<var>n</var>]>><var>word</var>
-</pre>
- <h4 class="subsection">3.6.4 Redirecting Standard Output and Standard Error</h4>
-
-<p>Bash 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> with this construct.
-
- <p>There are two formats for redirecting standard output and
-standard error:
-<pre class="example"> &><var>word</var>
-</pre>
- <p class="noindent">and
-<pre class="example"> >&<var>word</var>
-</pre>
- <p class="noindent">Of the two forms, the first is preferred.
-This is semantically equivalent to
-<pre class="example"> ><var>word</var> 2>&1
-</pre>
- <h4 class="subsection">3.6.5 Here Documents</h4>
-
-<p>This type of redirection instructs the shell to read input from the
-current source until a line containing only <var>word</var>
-(with no trailing blanks) is seen. All of
-the lines read up to that point are then used as the standard
-input for a command.
-
- <p>The format of here-documents is:
-<pre class="example"> <<[−]<var>word</var>
- <var>here-document</var>
- <var>delimiter</var>
-</pre>
- <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><span class="samp">\</span></samp>'
-must be used to quote the characters
-`<samp><span class="samp">\</span></samp>', `<samp><span class="samp">$</span></samp>', and `<samp><span class="samp">`</span></samp>'.
-
- <p>If the redirection operator is `<samp><span class="samp"><<-</span></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.
-
-<h4 class="subsection">3.6.6 Here Strings</h4>
-
-<p>A variant of here documents, the format is:
-<pre class="example"> <<< <var>word</var>
-</pre>
- <p>The <var>word</var> is expanded and supplied to the command on its standard
-input.
-
-<h4 class="subsection">3.6.7 Duplicating File Descriptors</h4>
-
-<p>The redirection operator
-<pre class="example"> [<var>n</var>]<&<var>word</var>
-</pre>
- <p class="noindent">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><span class="samp">-</span></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
-<pre class="example"> [<var>n</var>]>&<var>word</var>
-</pre>
- <p class="noindent">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.
-
-<h4 class="subsection">3.6.8 Moving File Descriptors</h4>
-
-<p>The redirection operator
-<pre class="example"> [<var>n</var>]<&<var>digit</var>-
-</pre>
- <p class="noindent">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
-<pre class="example"> [<var>n</var>]>&<var>digit</var>-
-</pre>
- <p class="noindent">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.
-
-<h4 class="subsection">3.6.9 Opening File Descriptors for Reading and Writing</h4>
-
-<p>The redirection operator
-<pre class="example"> [<var>n</var>]<><var>word</var>
-</pre>
- <p class="noindent">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.
-
-<div class="node">
-<p><hr>
-<a name="Executing-Commands"></a>
-Next: <a rel="next" accesskey="n" href="#Shell-Scripts">Shell Scripts</a>,
-Previous: <a rel="previous" accesskey="p" href="#Redirections">Redirections</a>,
-Up: <a rel="up" accesskey="u" href="#Basic-Shell-Features">Basic Shell Features</a>
-
-</div>
-
-<h3 class="section">3.7 Executing Commands</h3>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Simple-Command-Expansion">Simple Command Expansion</a>: How Bash expands simple commands before
- executing them.
-<li><a accesskey="2" href="#Command-Search-and-Execution">Command Search and Execution</a>: How Bash finds commands and runs them.
-<li><a accesskey="3" href="#Command-Execution-Environment">Command Execution Environment</a>: The environment in which Bash
- executes commands that are not
- shell builtins.
-<li><a accesskey="4" href="#Environment">Environment</a>: The environment given to a command.
-<li><a accesskey="5" href="#Exit-Status">Exit Status</a>: The status returned by commands and how Bash
- interprets it.
-<li><a accesskey="6" href="#Signals">Signals</a>: What happens when Bash or a command it runs
- receives a signal.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Simple-Command-Expansion"></a>
-Next: <a rel="next" accesskey="n" href="#Command-Search-and-Execution">Command Search and Execution</a>,
-Up: <a rel="up" accesskey="u" href="#Executing-Commands">Executing Commands</a>
-
-</div>
-
-<h4 class="subsection">3.7.1 Simple Command Expansion</h4>
-
-<p><a name="index-command-expansion-98"></a>
-When a simple command is executed, the shell performs the following
-expansions, assignments, and redirections, from left to right.
-
- <ol type=1 start=1>
-<li>The words that the parser has marked as variable assignments (those
-preceding the command name) and redirections are saved for later
-processing.
-
- <li>The words that are not variable assignments or redirections are
-expanded (see <a href="#Shell-Expansions">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.
-
- <li>Redirections are performed as described above (see <a href="#Redirections">Redirections</a>).
-
- <li>The text after the `<samp><span class="samp">=</span></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>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>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.
-
-<div class="node">
-<p><hr>
-<a name="Command-Search-and-Execution"></a>
-Next: <a rel="next" accesskey="n" href="#Command-Execution-Environment">Command Execution Environment</a>,
-Previous: <a rel="previous" accesskey="p" href="#Simple-Command-Expansion">Simple Command Expansion</a>,
-Up: <a rel="up" accesskey="u" href="#Executing-Commands">Executing Commands</a>
-
-</div>
-
-<h4 class="subsection">3.7.2 Command Search and Execution</h4>
-
-<p><a name="index-command-execution-99"></a><a name="index-command-search-100"></a>
-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.
-
- <ol type=1 start=1>
-<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="#Shell-Functions">Shell Functions</a>.
-
- <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.
-
- <li>If the name is neither a shell function nor a builtin,
-and contains no slashes, Bash searches each element of
-<samp><span class="env">$PATH</span></samp> 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 <samp><span class="env">PATH</span></samp> searches
-(see the description of <code>hash</code> in <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
-A full search of the directories in <samp><span class="env">$PATH</span></samp>
-is performed only if the command is not found in the hash table.
-If the search is unsuccessful, the shell prints an error
-message and returns an exit status of 127.
-
- <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.
-
- <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="#Shell-Scripts">Shell Scripts</a>.
-
- <li>If the command was not begun asynchronously, the shell waits for
-the command to complete and collects its exit status.
-
- </ol>
-
-<div class="node">
-<p><hr>
-<a name="Command-Execution-Environment"></a>
-Next: <a rel="next" accesskey="n" href="#Environment">Environment</a>,
-Previous: <a rel="previous" accesskey="p" href="#Command-Search-and-Execution">Command Search and Execution</a>,
-Up: <a rel="up" accesskey="u" href="#Executing-Commands">Executing Commands</a>
-
-</div>
-
-<h4 class="subsection">3.7.3 Command Execution Environment</h4>
-
-<p><a name="index-execution-environment-101"></a>
-The shell has an <var>execution environment</var>, which consists of the
-following:
-
- <ul>
-<li>open files inherited by the shell at invocation, as modified by
-redirections supplied to the <code>exec</code> builtin
-
- <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
-
- <li>the file creation mode mask as set by <code>umask</code> or inherited from
-the shell's parent
-
- <li>current traps set by <code>trap</code>
-
- <li>shell parameters that are set by variable assignment or with <code>set</code>
-or inherited from the shell's parent in the environment
-
- <li>shell functions defined during execution or inherited from the shell's
-parent in the environment
-
- <li>options enabled at invocation (either by default or with command-line
-arguments) or by <code>set</code>
-
- <li>options enabled by <code>shopt</code> (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>)
-
- <li>shell aliases defined with <code>alias</code> (see <a href="#Aliases">Aliases</a>)
-
- <li>various process <span class="sc">id</span>s, including those of background jobs
-(see <a href="#Lists">Lists</a>), the value of <code>$$</code>, and the value of
-<samp><span class="env">$PPID</span></samp>
-
- </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.
-
- <ul>
-<li>the shell's open files, plus any modifications and additions specified
-by redirections to the command
-
- <li>the current working directory
-
- <li>the file creation mode mask
-
- <li>shell variables and functions marked for export, along with variables
-exported for the command, passed in the environment (see <a href="#Environment">Environment</a>)
-
- <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
-
- </ul>
-
- <p>A command invoked in this separate environment cannot affect the
-shell's execution environment.
-
- <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>If a command is followed by a `<samp><span class="samp">&</span></samp>' and job control is not active, the
-default standard input for the command is the empty file <samp><span class="file">/dev/null</span></samp>.
-Otherwise, the invoked command inherits the file descriptors of the calling
-shell as modified by redirections.
-
-<div class="node">
-<p><hr>
-<a name="Environment"></a>
-Next: <a rel="next" accesskey="n" href="#Exit-Status">Exit Status</a>,
-Previous: <a rel="previous" accesskey="p" href="#Command-Execution-Environment">Command Execution Environment</a>,
-Up: <a rel="up" accesskey="u" href="#Executing-Commands">Executing Commands</a>
-
-</div>
-
-<h4 class="subsection">3.7.4 Environment</h4>
-
-<p><a name="index-environment-102"></a>
-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>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><span class="samp">declare -x</span></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><span class="samp">export -n</span></samp>'
-commands, plus any additions via the <code>export</code> and
-`<samp><span class="samp">declare -x</span></samp>' commands.
-
- <p>The environment for any simple command
-or function may be augmented temporarily by prefixing it with
-parameter assignments, as described in <a href="#Shell-Parameters">Shell Parameters</a>.
-These assignment statements affect only the environment seen
-by that command.
-
- <p>If the <samp><span class="option">-k</span></samp> option is set (see <a href="#The-Set-Builtin">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>When Bash invokes an external command, the variable `<samp><span class="samp">$_</span></samp>'
-is set to the full path name of the command and passed to that
-command in its environment.
-
-<div class="node">
-<p><hr>
-<a name="Exit-Status"></a>
-Next: <a rel="next" accesskey="n" href="#Signals">Signals</a>,
-Previous: <a rel="previous" accesskey="p" href="#Environment">Environment</a>,
-Up: <a rel="up" accesskey="u" href="#Executing-Commands">Executing Commands</a>
-
-</div>
-
-<h4 class="subsection">3.7.5 Exit Status</h4>
-
-<p><a name="index-exit-status-103"></a>
-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>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>If a command fails because of an error during expansion or redirection,
-the exit status is greater than zero.
-
- <p>The exit status is used by the Bash conditional commands
-(see <a href="#Conditional-Constructs">Conditional Constructs</a>) and some of the list
-constructs (see <a href="#Lists">Lists</a>).
-
- <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.
-
-<div class="node">
-<p><hr>
-<a name="Signals"></a>
-Previous: <a rel="previous" accesskey="p" href="#Exit-Status">Exit Status</a>,
-Up: <a rel="up" accesskey="u" href="#Executing-Commands">Executing Commands</a>
-
-</div>
-
-<h4 class="subsection">3.7.6 Signals</h4>
-
-<p><a name="index-signal-handling-104"></a>
-When Bash is interactive, in the absence of any traps, it ignores
-<code>SIGTERM</code> (so that `<samp><span class="samp">kill 0</span></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 <a href="#Job-Control">Job Control</a>), Bash
-ignores <code>SIGTTIN</code>, <code>SIGTTOU</code>, and <code>SIGTSTP</code>.
-
- <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>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 <a href="#Job-Control-Builtins">Job Control Builtins</a>) or marked
-to not receive <code>SIGHUP</code> using <code>disown -h</code>.
-
- <p>If the <code>huponexit</code> shell option has been set with <code>shopt</code>
-(see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>), Bash sends a <code>SIGHUP</code> to all jobs when
-an interactive login shell exits.
-
- <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.
-
-<div class="node">
-<p><hr>
-<a name="Shell-Scripts"></a>
-Previous: <a rel="previous" accesskey="p" href="#Executing-Commands">Executing Commands</a>,
-Up: <a rel="up" accesskey="u" href="#Basic-Shell-Features">Basic Shell Features</a>
-
-</div>
-
-<h3 class="section">3.8 Shell Scripts</h3>
-
-<p><a name="index-shell-script-105"></a>
-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><span class="option">-c</span></samp> nor <samp><span class="option">-s</span></samp> option is supplied
-(see <a href="#Invoking-Bash">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 <samp><span class="env">$PATH</span></samp> if not found there.
-
- <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>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 <samp><span class="env">$PATH</span></samp> for a command, it spawns a subshell to
-execute it. In other words, executing
-<pre class="example"> filename <var>arguments</var>
-</pre>
- <p class="noindent">is equivalent to executing
-<pre class="example"> bash filename <var>arguments</var>
-</pre>
- <p class="noindent">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="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>)
-are retained by the child.
-
- <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><span class="samp">#!</span></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>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>Bash scripts often begin with <code>#! /bin/bash</code> (assuming that
-Bash has been installed in <samp><span class="file">/bin</span></samp>), since this ensures that
-Bash will be used to interpret the script, even if it is executed
-under another shell.
-
-<div class="node">
-<p><hr>
-<a name="Shell-Builtin-Commands"></a>
-Next: <a rel="next" accesskey="n" href="#Shell-Variables">Shell Variables</a>,
-Previous: <a rel="previous" accesskey="p" href="#Basic-Shell-Features">Basic Shell Features</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">4 Shell Builtin Commands</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>: Builtin commands inherited from the Bourne
- Shell.
-<li><a accesskey="2" href="#Bash-Builtins">Bash Builtins</a>: Table of builtins specific to Bash.
-<li><a accesskey="3" href="#Modifying-Shell-Behavior">Modifying Shell Behavior</a>: Builtins to modify shell attributes and
- optional behavior.
-<li><a accesskey="4" href="#Special-Builtins">Special Builtins</a>: Builtin commands classified specially by
- POSIX.
-</ul>
-
-<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 <a href="#Simple-Commands">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>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>Several builtin commands are described in other chapters: builtin
-commands which provide the Bash interface to the job control
-facilities (see <a href="#Job-Control-Builtins">Job Control Builtins</a>), the directory stack
-(see <a href="#Directory-Stack-Builtins">Directory Stack Builtins</a>), the command history
-(see <a href="#Bash-History-Builtins">Bash History Builtins</a>), and the programmable completion
-facilities (see <a href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a>).
-
- <p>Many of the builtins have been extended by <span class="sc">posix</span> or Bash.
-
- <p>Unless otherwise noted, each builtin command documented as accepting
-options preceded by `<samp><span class="samp">-</span></samp>' accepts `<samp><span class="samp">--</span></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.
-
-<div class="node">
-<p><hr>
-<a name="Bourne-Shell-Builtins"></a>
-Next: <a rel="next" accesskey="n" href="#Bash-Builtins">Bash Builtins</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Builtin-Commands">Shell Builtin Commands</a>
-
-</div>
-
-<h3 class="section">4.1 Bourne Shell Builtins</h3>
-
-<p>The following shell builtin commands are inherited from the Bourne Shell.
-These commands are implemented as specified by the <span class="sc">posix</span> standard.
-
- <dl>
-<dt><code>: </code><span class="roman">(a colon)</span><dd><a name="index-g_t_003a-106"></a>
- <pre class="example"> : [<var>arguments</var>]
- </pre>
- <p>Do nothing beyond expanding <var>arguments</var> and performing redirections.
-The return status is zero.
-
- <br><dt><code>. </code><span class="roman">(a period)</span><dd><a name="index-g_t_002e-107"></a>
- <pre class="example"> . <var>filename</var> [<var>arguments</var>]
- </pre>
- <p>Read and execute commands from the <var>filename</var> argument in the
-current shell context. If <var>filename</var> does not contain a slash,
-the <samp><span class="env">PATH</span></samp> variable is used to find <var>filename</var>.
-When Bash is not in <span class="sc">posix</span> mode, the current directory is searched
-if <var>filename</var> is not found in <samp><span class="env">$PATH</span></samp>.
-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>.
-
- <br><dt><code>break</code><dd><a name="index-break-108"></a>
- <pre class="example"> break [<var>n</var>]
- </pre>
- <p>Exit from a <code>for</code>, <code>while</code>, <code>until</code>, or <code>select</code> loop.
-If <var>n</var> is supplied, the <var>n</var>th enclosing loop is exited.
-<var>n</var> must be greater than or equal to 1.
-The return status is zero unless <var>n</var> is not greater than or equal to 1.
-
- <br><dt><code>cd</code><dd><a name="index-cd-109"></a>
- <pre class="example"> cd [-L|-P] [<var>directory</var>]
- </pre>
- <p>Change the current working directory to <var>directory</var>.
-If <var>directory</var> is not given, the value of the <samp><span class="env">HOME</span></samp> shell
-variable is used.
-If the shell variable <samp><span class="env">CDPATH</span></samp> exists, it is used as a search path.
-If <var>directory</var> begins with a slash, <samp><span class="env">CDPATH</span></samp> is not used.
-
- <p>The <samp><span class="option">-P</span></samp> option means to not follow symbolic links; symbolic
-links are followed by default or with the <samp><span class="option">-L</span></samp> option.
-If <var>directory</var> is `<samp><span class="samp">-</span></samp>', it is equivalent to <samp><span class="env">$OLDPWD</span></samp>.
-
- <p>If a non-empty directory name from <samp><span class="env">CDPATH</span></samp> is used, or if
-`<samp><span class="samp">-</span></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>The return status is zero if the directory is successfully changed,
-non-zero otherwise.
-
- <br><dt><code>continue</code><dd><a name="index-continue-110"></a>
- <pre class="example"> continue [<var>n</var>]
- </pre>
- <p>Resume the next iteration of an enclosing <code>for</code>, <code>while</code>,
-<code>until</code>, or <code>select</code> loop.
-If <var>n</var> is supplied, the execution of the <var>n</var>th enclosing loop
-is resumed.
-<var>n</var> must be greater than or equal to 1.
-The return status is zero unless <var>n</var> is not greater than or equal to 1.
-
- <br><dt><code>eval</code><dd><a name="index-eval-111"></a>
- <pre class="example"> eval [<var>arguments</var>]
- </pre>
- <p>The arguments are concatenated together into a single command, which is
-then read and executed, and its exit status returned as the exit status
-of <code>eval</code>.
-If there are no arguments or only empty arguments, the return status is
-zero.
-
- <br><dt><code>exec</code><dd><a name="index-exec-112"></a>
- <pre class="example"> exec [-cl] [-a <var>name</var>] [<var>command</var> [<var>arguments</var>]]
- </pre>
- <p>If <var>command</var>
-is supplied, it replaces the shell without creating a new process.
-If the <samp><span class="option">-l</span></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><span class="option">-c</span></samp> option causes <var>command</var> to be executed with an empty
-environment.
-If <samp><span class="option">-a</span></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.
-
- <br><dt><code>exit</code><dd><a name="index-exit-113"></a>
- <pre class="example"> exit [<var>n</var>]
- </pre>
- <p>Exit the shell, returning a status of <var>n</var> to the shell's parent.
-If <var>n</var> is omitted, the exit status is that of the last command executed.
-Any trap on <code>EXIT</code> is executed before the shell terminates.
-
- <br><dt><code>export</code><dd><a name="index-export-114"></a>
- <pre class="example"> export [-fn] [-p] [<var>name</var>[=<var>value</var>]]
- </pre>
- <p>Mark each <var>name</var> to be passed to child processes
-in the environment. If the <samp><span class="option">-f</span></samp> option is supplied, the <var>name</var>s
-refer to shell functions; otherwise the names refer to shell variables.
-The <samp><span class="option">-n</span></samp> option means to no longer mark each <var>name</var> for export.
-If no <var>names</var> are supplied, or if the <samp><span class="option">-p</span></samp> option is given, a
-list of exported names is displayed.
-The <samp><span class="option">-p</span></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><span class="option">-f</span></samp> is supplied
-with a name that is not a shell function.
-
- <br><dt><code>getopts</code><dd><a name="index-getopts-115"></a>
- <pre class="example"> getopts <var>optstring</var> <var>name</var> [<var>args</var>]
- </pre>
- <p><code>getopts</code> is used by shell scripts to parse positional parameters.
-<var>optstring</var> contains the option characters to be recognized; if a
-character is followed by a colon, the option is expected to have an
-argument, which should be separated from it by white space.
-The colon (`<samp><span class="samp">:</span></samp>') and question mark (`<samp><span class="samp">?</span></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 <samp><span class="env">OPTIND</span></samp>.
-<samp><span class="env">OPTIND</span></samp> 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 <samp><span class="env">OPTARG</span></samp>.
-The shell does not reset <samp><span class="env">OPTIND</span></samp> 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.
-<samp><span class="env">OPTIND</span></samp> is set to the index of the first non-option argument,
-and <code>name</code> is set to `<samp><span class="samp">?</span></samp>'.
-
- <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><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 <samp><span class="env">OPTERR</span></samp>
-is set to 0, no error messages will be displayed, even if the first
-character of <code>optstring</code> is not a colon.
-
- <p>If an invalid option is seen,
-<code>getopts</code> places `<samp><span class="samp">?</span></samp>' into <var>name</var> and, if not silent,
-prints an error message and unsets <samp><span class="env">OPTARG</span></samp>.
-If <code>getopts</code> is silent, the option character found is placed in
-<samp><span class="env">OPTARG</span></samp> and no diagnostic message is printed.
-
- <p>If a required argument is not found, and <code>getopts</code>
-is not silent, a question mark (`<samp><span class="samp">?</span></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><span class="samp">:</span></samp>') is placed in
-<var>name</var> and <samp><span class="env">OPTARG</span></samp> is set to the option character found.
-
- <br><dt><code>hash</code><dd><a name="index-hash-116"></a>
- <pre class="example"> hash [-r] [-p <var>filename</var>] [-dt] [<var>name</var>]
- </pre>
- <p>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
-<samp><span class="env">$PATH</span></samp>.
-The <samp><span class="option">-p</span></samp> option inhibits the path search, and <var>filename</var> is
-used as the location of <var>name</var>.
-The <samp><span class="option">-r</span></samp> option causes the shell to forget all remembered locations.
-The <samp><span class="option">-d</span></samp> option causes the shell to forget the remembered location
-of each <var>name</var>.
-If the <samp><span class="option">-t</span></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><span class="option">-t</span></samp> the <var>name</var> is printed before the hashed
-full pathname.
-The <samp><span class="option">-l</span></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><span class="option">-l</span></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.
-
- <br><dt><code>pwd</code><dd><a name="index-pwd-117"></a>
- <pre class="example"> pwd [-LP]
- </pre>
- <p>Print the absolute pathname of the current working directory.
-If the <samp><span class="option">-P</span></samp> option is supplied, the pathname printed will not
-contain symbolic links.
-If the <samp><span class="option">-L</span></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.
-
- <br><dt><code>readonly</code><dd><a name="index-readonly-118"></a>
- <pre class="example"> readonly [-apf] [<var>name</var>[=<var>value</var>]] ...
- </pre>
- <p>Mark each <var>name</var> as readonly.
-The values of these names may not be changed by subsequent assignment.
-If the <samp><span class="option">-f</span></samp> option is supplied, each <var>name</var> refers to a shell
-function.
-The <samp><span class="option">-a</span></samp> option means each <var>name</var> refers to an array variable.
-If no <var>name</var> arguments are given, or if the <samp><span class="option">-p</span></samp>
-option is supplied, a list of all readonly names is printed.
-The <samp><span class="option">-p</span></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><span class="option">-f</span></samp> option is supplied with a name that is not a shell function.
-
- <br><dt><code>return</code><dd><a name="index-return-119"></a>
- <pre class="example"> return [<var>n</var>]
- </pre>
- <p>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>.
-
- <br><dt><code>shift</code><dd><a name="index-shift-120"></a>
- <pre class="example"> shift [<var>n</var>]
- </pre>
- <p>Shift the positional parameters to the left by <var>n</var>.
-The positional parameters from <var>n</var>+1 <small class="dots">...</small> <code>$#</code> are
-renamed to <code>$1</code> <small class="dots">...</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.
-
- <br><dt><code>test</code><dt><code>[</code><dd><a name="index-test-121"></a><a name="index-g_t_005b-122"></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="#Bash-Conditional-Expressions">Bash Conditional Expressions</a>.
-<code>test</code> does not accept any options, nor does it accept and ignore
-an argument of <samp><span class="option">--</span></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>Expressions may be combined using the following operators, listed in
-decreasing order of precedence.
-
- <dl>
-<dt><code>! </code><var>expr</var><dd>True if <var>expr</var> is false.
-
- <br><dt><code>( </code><var>expr</var><code> )</code><dd>Returns the value of <var>expr</var>.
-This may be used to override the normal precedence of operators.
-
- <br><dt><var>expr1</var><code> -a </code><var>expr2</var><dd>True if both <var>expr1</var> and <var>expr2</var> are true.
-
- <br><dt><var>expr1</var><code> -o </code><var>expr2</var><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.
-
- <dl>
-<dt>0 arguments<dd>The expression is false.
-
- <br><dt>1 argument<dd>The expression is true if and only if the argument is not null.
-
- <br><dt>2 arguments<dd>If the first argument is `<samp><span class="samp">!</span></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 <a href="#Bash-Conditional-Expressions">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.
-
- <br><dt>3 arguments<dd>If the second argument is one of the binary conditional
-operators (see <a href="#Bash-Conditional-Expressions">Bash Conditional Expressions</a>), the
-result of the expression is the result of the binary test using the
-first and third arguments as operands.
-If the first argument is `<samp><span class="samp">!</span></samp>', the value is the negation of
-the two-argument test using the second and third arguments.
-If the first argument is exactly `<samp><span class="samp">(</span></samp>' and the third argument is
-exactly `<samp><span class="samp">)</span></samp>', the result is the one-argument test of the second
-argument.
-Otherwise, the expression is false.
-The `<samp><span class="samp">-a</span></samp>' and `<samp><span class="samp">-o</span></samp>' operators are considered binary operators
-in this case.
-
- <br><dt>4 arguments<dd>If the first argument is `<samp><span class="samp">!</span></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.
-
- <br><dt>5 or more arguments<dd>The expression is parsed and evaluated according to precedence
-using the rules listed above.
-</dl>
-
- <br><dt><code>times</code><dd><a name="index-times-123"></a>
- <pre class="example"> times
- </pre>
- <p>Print out the user and system times used by the shell and its children.
-The return status is zero.
-
- <br><dt><code>trap</code><dd><a name="index-trap-124"></a>
- <pre class="example"> trap [-lp] [<var>arg</var>] [<var>sigspec</var> ...]
- </pre>
- <p>The commands in <var>arg</var> are to be read and executed when the
-shell receives signal <var>sigspec</var>. If <var>arg</var> is absent (and
-there is a single <var>sigspec</var>) or
-equal to `<samp><span class="samp">-</span></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><span class="option">-p</span></samp> has been supplied,
-the shell displays the trap commands associated with each <var>sigspec</var>.
-If no arguments are supplied, or
-only <samp><span class="option">-p</span></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><span class="option">-l</span></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 <a href="#The-Shopt-Builtin">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 <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>The return status is zero unless a <var>sigspec</var> does not specify a
-valid signal.
-
- <br><dt><code>umask</code><dd><a name="index-umask-125"></a>
- <pre class="example"> umask [-p] [-S] [<var>mode</var>]
- </pre>
- <p>Set the shell process's file creation mask to <var>mode</var>. If
-<var>mode</var> begins with a digit, it is interpreted as an octal number;
-if not, it is interpreted as a symbolic mode mask similar
-to that accepted by the <code>chmod</code> command. If <var>mode</var> is
-omitted, the current value of the mask is printed. If the <samp><span class="option">-S</span></samp>
-option is supplied without a <var>mode</var> argument, the mask is printed
-in a symbolic format.
-If the <samp><span class="option">-p</span></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>.
-
- <br><dt><code>unset</code><dd><a name="index-unset-126"></a>
- <pre class="example"> unset [-fv] [<var>name</var>]
- </pre>
- <p>Each variable or function <var>name</var> is removed.
-If no options are supplied, or the <samp><span class="option">-v</span></samp> option is given, each
-<var>name</var> refers to a shell variable.
-If the <samp><span class="option">-f</span></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>
-
-<div class="node">
-<p><hr>
-<a name="Bash-Builtins"></a>
-Next: <a rel="next" accesskey="n" href="#Modifying-Shell-Behavior">Modifying Shell Behavior</a>,
-Previous: <a rel="previous" accesskey="p" href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Builtin-Commands">Shell Builtin Commands</a>
-
-</div>
-
-<h3 class="section">4.2 Bash Builtin Commands</h3>
-
-<p>This section describes builtin commands which are unique to
-or have been extended in Bash.
-Some of these commands are specified in the <span class="sc">posix</span> standard.
-
- <dl>
-<dt><code>alias</code><dd><a name="index-alias-127"></a>
- <pre class="example"> alias [<code>-p</code>] [<var>name</var>[=<var>value</var>] ...]
- </pre>
- <p>Without arguments or with the <samp><span class="option">-p</span></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="#Aliases">Aliases</a>.
-
- <br><dt><code>bind</code><dd><a name="index-bind-128"></a>
- <pre class="example"> 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>
- <p>Display current Readline (see <a href="#Command-Line-Editing">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 <a href="#Readline-Init-File">Readline Init File</a>),
-but each binding or command must be passed as a separate argument; e.g.,
-`<samp><span class="samp">"\C-x\C-r":re-read-init-file</span></samp>'.
-Options, if supplied, have the following meanings:
-
- <dl>
-<dt><code>-m </code><var>keymap</var><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>.
-
- <br><dt><code>-l</code><dd>List the names of all Readline functions.
-
- <br><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.
-
- <br><dt><code>-P</code><dd>List current Readline function names and bindings.
-
- <br><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.
-
- <br><dt><code>-V</code><dd>List current Readline variable names and values.
-
- <br><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.
-
- <br><dt><code>-S</code><dd>Display Readline key sequences bound to macros and the strings they output.
-
- <br><dt><code>-f </code><var>filename</var><dd>Read key bindings from <var>filename</var>.
-
- <br><dt><code>-q </code><var>function</var><dd>Query about which keys invoke the named <var>function</var>.
-
- <br><dt><code>-u </code><var>function</var><dd>Unbind all keys bound to the named <var>function</var>.
-
- <br><dt><code>-r </code><var>keyseq</var><dd>Remove any current binding for <var>keyseq</var>.
-
- <br><dt><code>-x </code><var>keyseq:shell-command</var><dd>Cause <var>shell-command</var> to be executed whenever <var>keyseq</var> is
-entered.
-
- </dl>
-
- <p class="noindent">The return status is zero unless an invalid option is supplied or an
-error occurs.
-
- <br><dt><code>builtin</code><dd><a name="index-builtin-129"></a>
- <pre class="example"> builtin [<var>shell-builtin</var> [<var>args</var>]]
- </pre>
- <p>Run a shell builtin, passing it <var>args</var>, and return its exit status.
-This is useful when defining a shell function with the same
-name as a shell builtin, retaining the functionality of the builtin within
-the function.
-The return status is non-zero if <var>shell-builtin</var> is not a shell
-builtin command.
-
- <br><dt><code>caller</code><dd><a name="index-caller-130"></a>
- <pre class="example"> caller [<var>expr</var>]
- </pre>
- <p>Returns the context of any active subroutine call (a shell function or
-a script executed with the <code>.</code> or <code>source</code> builtins).
-
- <p>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>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.
-
- <br><dt><code>command</code><dd><a name="index-command-131"></a>
- <pre class="example"> command [-pVv] <var>command</var> [<var>arguments</var> ...]
- </pre>
- <p>Runs <var>command</var> with <var>arguments</var> ignoring any shell function
-named <var>command</var>.
-Only shell builtin commands or commands found by searching the
-<samp><span class="env">PATH</span></samp> are executed.
-If there is a shell function named <code>ls</code>, running `<samp><span class="samp">command ls</span></samp>'
-within the function will execute the external command <code>ls</code>
-instead of calling the function recursively.
-The <samp><span class="option">-p</span></samp> option means to use a default value for <samp><span class="env">PATH</span></samp>
-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><span class="option">-V</span></samp> or <samp><span class="option">-v</span></samp> option is supplied, a
-description of <var>command</var> is printed. The <samp><span class="option">-v</span></samp> option
-causes a single word indicating the command or file name used to
-invoke <var>command</var> to be displayed; the <samp><span class="option">-V</span></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.
-
- <br><dt><code>declare</code><dd><a name="index-declare-132"></a>
- <pre class="example"> declare [-afFirtx] [-p] [<var>name</var>[=<var>value</var>] ...]
- </pre>
- <p>Declare variables and give them attributes. If no <var>name</var>s
-are given, then display the values of variables instead.
-
- <p>The <samp><span class="option">-p</span></samp> option will display the attributes and values of each
-<var>name</var>.
-When <samp><span class="option">-p</span></samp> is used, additional options are ignored.
-The <samp><span class="option">-F</span></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 <a href="#The-Shopt-Builtin">The Shopt Builtin</a>), the source file name and line number where
-the function is defined are displayed as well.
-<samp><span class="option">-F</span></samp> implies <samp><span class="option">-f</span></samp>.
-The following options can be used to restrict output to variables with
-the specified attributes or to give variables attributes:
-
- <dl>
-<dt><code>-a</code><dd>Each <var>name</var> is an array variable (see <a href="#Arrays">Arrays</a>).
-
- <br><dt><code>-f</code><dd>Use function names only.
-
- <br><dt><code>-i</code><dd>The variable is to be treated as
-an integer; arithmetic evaluation (see <a href="#Shell-Arithmetic">Shell Arithmetic</a>) is
-performed when the variable is assigned a value.
-
- <br><dt><code>-r</code><dd>Make <var>name</var>s readonly. These names cannot then be assigned values
-by subsequent assignment statements or unset.
-
- <br><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.
-
- <br><dt><code>-x</code><dd>Mark each <var>name</var> for export to subsequent commands via
-the environment.
-</dl>
-
- <p>Using `<samp><span class="samp">+</span></samp>' instead of `<samp><span class="samp">-</span></samp>' turns off the attribute instead,
-with the exceptions that `<samp><span class="samp">+a</span></samp>'
-may not be used to destroy an array variable and `<samp><span class="samp">+r</span></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>The return status is zero unless an invalid option is encountered,
-an attempt is made to define a function using `<samp><span class="samp">-f foo=bar</span></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 <a href="#Arrays">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><span class="option">-f</span></samp>.
-
- <br><dt><code>echo</code><dd><a name="index-echo-133"></a>
- <pre class="example"> echo [-neE] [<var>arg</var> ...]
- </pre>
- <p>Output the <var>arg</var>s, separated by spaces, terminated with a
-newline.
-The return status is always 0.
-If <samp><span class="option">-n</span></samp> is specified, the trailing newline is suppressed.
-If the <samp><span class="option">-e</span></samp> option is given, interpretation of the following
-backslash-escaped characters is enabled.
-The <samp><span class="option">-E</span></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><span class="option">--</span></samp> to mean the end of options.
-
- <p><code>echo</code> interprets the following escape sequences:
- <dl>
-<dt><code>\a</code><dd>alert (bell)
-<br><dt><code>\b</code><dd>backspace
-<br><dt><code>\c</code><dd>suppress trailing newline
-<br><dt><code>\e</code><dd>escape
-<br><dt><code>\f</code><dd>form feed
-<br><dt><code>\n</code><dd>new line
-<br><dt><code>\r</code><dd>carriage return
-<br><dt><code>\t</code><dd>horizontal tab
-<br><dt><code>\v</code><dd>vertical tab
-<br><dt><code>\\</code><dd>backslash
-<br><dt><code>\0</code><var>nnn</var><dd>the eight-bit character whose value is the octal value <var>nnn</var>
-(zero to three octal digits)
-<br><dt><code>\x</code><var>HH</var><dd>the eight-bit character whose value is the hexadecimal value <var>HH</var>
-(one or two hex digits)
-</dl>
-
- <br><dt><code>enable</code><dd><a name="index-enable-134"></a>
- <pre class="example"> enable [-a] [-dnps] [-f <var>filename</var>] [<var>name</var> ...]
- </pre>
- <p>Enable and disable builtin shell commands.
-Disabling a builtin allows a disk command which has the same name
-as a shell builtin to be executed without specifying a full pathname,
-even though the shell normally searches for builtins before disk commands.
-If <samp><span class="option">-n</span></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 <samp><span class="env">$PATH</span></samp> instead of the shell builtin version, type
-`<samp><span class="samp">enable -n test</span></samp>'.
-
- <p>If the <samp><span class="option">-p</span></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><span class="option">-a</span></samp> option means to list
-each builtin with an indication of whether or not it is enabled.
-
- <p>The <samp><span class="option">-f</span></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><span class="option">-d</span></samp> option will delete a builtin loaded with <samp><span class="option">-f</span></samp>.
-
- <p>If there are no options, a list of the shell builtins is displayed.
-The <samp><span class="option">-s</span></samp> option restricts <code>enable</code> to the <span class="sc">posix</span> special
-builtins. If <samp><span class="option">-s</span></samp> is used with <samp><span class="option">-f</span></samp>, the new builtin becomes
-a special builtin (see <a href="#Special-Builtins">Special Builtins</a>).
-
- <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.
-
- <br><dt><code>help</code><dd><a name="index-help-135"></a>
- <pre class="example"> help [-s] [<var>pattern</var>]
- </pre>
- <p>Display helpful information about builtin commands.
-If <var>pattern</var> is specified, <code>help</code> gives detailed help
-on all commands matching <var>pattern</var>, otherwise a list of
-the builtins is printed.
-The <samp><span class="option">-s</span></samp> option restricts the information displayed to a short
-usage synopsis.
-The return status is zero unless no command matches <var>pattern</var>.
-
- <br><dt><code>let</code><dd><a name="index-let-136"></a>
- <pre class="example"> let <var>expression</var> [<var>expression</var>]
- </pre>
- <p>The <code>let</code> builtin allows arithmetic to be performed on shell
-variables. Each <var>expression</var> is evaluated according to the
-rules given below in <a href="#Shell-Arithmetic">Shell Arithmetic</a>. If the
-last <var>expression</var> evaluates to 0, <code>let</code> returns 1;
-otherwise 0 is returned.
-
- <br><dt><code>local</code><dd><a name="index-local-137"></a>
- <pre class="example"> local [<var>option</var>] <var>name</var>[=<var>value</var>] ...
- </pre>
- <p>For each argument, a local variable named <var>name</var> is created,
-and assigned <var>value</var>.
-The <var>option</var> can be any of the options accepted by <code>declare</code>.
-<code>local</code> can only be used within a function; it makes the variable
-<var>name</var> have a visible scope restricted to that function and its
-children. The return status is zero unless <code>local</code> is used outside
-a function, an invalid <var>name</var> is supplied, or <var>name</var> is a
-readonly variable.
-
- <br><dt><code>logout</code><dd><a name="index-logout-138"></a>
- <pre class="example"> logout [<var>n</var>]
- </pre>
- <p>Exit a login shell, returning a status of <var>n</var> to the shell's
-parent.
-
- <br><dt><code>printf</code><dd><a name="index-printf-139"></a>
- <pre class="example"> <code>printf</code> [-v <var>var</var>] <var>format</var> [<var>arguments</var>]
- </pre>
- <p>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><span class="samp">%b</span></samp>' causes
-<code>printf</code> to expand backslash escape sequences in the corresponding
-<var>argument</var>,
-(except that `<samp><span class="samp">\c</span></samp>' terminates output, backslashes in
-`<samp><span class="samp">\'</span></samp>', `<samp><span class="samp">\"</span></samp>', and `<samp><span class="samp">\?</span></samp>' are not removed, and octal escapes
-beginning with `<samp><span class="samp">\0</span></samp>' may contain up to four digits),
-and `<samp><span class="samp">%q</span></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><span class="option">-v</span></samp> option causes the output to be assigned to the variable
-<var>var</var> rather than being printed to the standard output.
-
- <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.
-
- <br><dt><code>read</code><dd><a name="index-read-140"></a>
- <pre class="example"> read [-ers] [-a <var>aname</var>] [-d <var>delim</var>] [-n <var>nchars</var>] [-p <var>prompt</var>] [-t <var>timeout</var>] [-u <var>fd</var>] [<var>name</var> ...]
- </pre>
- <p>One line is read from the standard input, or from the file descriptor
-<var>fd</var> supplied as an argument to the <samp><span class="option">-u</span></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 <samp><span class="env">IFS</span></samp> variable
-are used to split the line into words.
-The backslash character `<samp><span class="samp">\</span></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 <samp><span class="env">REPLY</span></samp>.
-The return code is zero, unless end-of-file is encountered, <code>read</code>
-times out, or an invalid file descriptor is supplied as the argument to
-<samp><span class="option">-u</span></samp>.
-Options, if supplied, have the following meanings:
-
- <dl>
-<dt><code>-a </code><var>aname</var><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.
-
- <br><dt><code>-d </code><var>delim</var><dd>The first character of <var>delim</var> is used to terminate the input line,
-rather than newline.
-
- <br><dt><code>-e</code><dd>Readline (see <a href="#Command-Line-Editing">Command Line Editing</a>) is used to obtain the line.
-
- <br><dt><code>-n </code><var>nchars</var><dd><code>read</code> returns after reading <var>nchars</var> characters rather than
-waiting for a complete line of input.
-
- <br><dt><code>-p </code><var>prompt</var><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.
-
- <br><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.
-
- <br><dt><code>-s</code><dd>Silent mode. If input is coming from a terminal, characters are
-not echoed.
-
- <br><dt><code>-t </code><var>timeout</var><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.
-This option has no effect if <code>read</code> is not reading input from the
-terminal or a pipe.
-
- <br><dt><code>-u </code><var>fd</var><dd>Read input from file descriptor <var>fd</var>.
-
- </dl>
-
- <br><dt><code>source</code><dd><a name="index-source-141"></a>
- <pre class="example"> source <var>filename</var>
- </pre>
- <p>A synonym for <code>.</code> (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
-
- <br><dt><code>type</code><dd><a name="index-type-142"></a>
- <pre class="example"> type [-afptP] [<var>name</var> ...]
- </pre>
- <p>For each <var>name</var>, indicate how it would be interpreted if used as a
-command name.
-
- <p>If the <samp><span class="option">-t</span></samp> option is used, <code>type</code> prints a single word
-which is one of `<samp><span class="samp">alias</span></samp>', `<samp><span class="samp">function</span></samp>', `<samp><span class="samp">builtin</span></samp>',
-`<samp><span class="samp">file</span></samp>' or `<samp><span class="samp">keyword</span></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>If the <samp><span class="option">-p</span></samp> option is used, <code>type</code> either returns the name
-of the disk file that would be executed, or nothing if <samp><span class="option">-t</span></samp>
-would not return `<samp><span class="samp">file</span></samp>'.
-
- <p>The <samp><span class="option">-P</span></samp> option forces a path search for each <var>name</var>, even if
-<samp><span class="option">-t</span></samp> would not return `<samp><span class="samp">file</span></samp>'.
-
- <p>If a command is hashed, <samp><span class="option">-p</span></samp> and <samp><span class="option">-P</span></samp> print the hashed value,
-not necessarily the file that appears first in <code>$PATH</code>.
-
- <p>If the <samp><span class="option">-a</span></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><span class="option">-p</span></samp> option
-is not also used.
-
- <p>If the <samp><span class="option">-f</span></samp> option is used, <code>type</code> does not attempt to find
-shell functions, as with the <code>command</code> builtin.
-
- <p>The return status is zero if any of the <var>names</var> are found, non-zero
-if none are found.
-
- <br><dt><code>typeset</code><dd><a name="index-typeset-143"></a>
- <pre class="example"> typeset [-afFrxi] [-p] [<var>name</var>[=<var>value</var>] ...]
- </pre>
- <p>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.
-
- <br><dt><code>ulimit</code><dd><a name="index-ulimit-144"></a>
- <pre class="example"> ulimit [-acdefilmnpqrstuvxSH] [<var>limit</var>]
- </pre>
- <p><code>ulimit</code> provides control over the resources available to processes
-started by the shell, on systems that allow such control. If an
-option is given, it is interpreted as follows:
- <dl>
-<dt><code>-S</code><dd>Change and report the soft limit associated with a resource.
-
- <br><dt><code>-H</code><dd>Change and report the hard limit associated with a resource.
-
- <br><dt><code>-a</code><dd>All current limits are reported.
-
- <br><dt><code>-c</code><dd>The maximum size of core files created.
-
- <br><dt><code>-d</code><dd>The maximum size of a process's data segment.
-
- <br><dt><code>-e</code><dd>The maximum scheduling priority ("nice").
-
- <br><dt><code>-f</code><dd>The maximum size of files written by the shell and its children.
-
- <br><dt><code>-i</code><dd>The maximum number of pending signals.
-
- <br><dt><code>-l</code><dd>The maximum size that may be locked into memory.
-
- <br><dt><code>-m</code><dd>The maximum resident set size.
-
- <br><dt><code>-n</code><dd>The maximum number of open file descriptors.
-
- <br><dt><code>-p</code><dd>The pipe buffer size.
-
- <br><dt><code>-q</code><dd>The maximum number of bytes in POSIX message queues.
-
- <br><dt><code>-r</code><dd>The maximum real-time scheduling priority.
-
- <br><dt><code>-s</code><dd>The maximum stack size.
-
- <br><dt><code>-t</code><dd>The maximum amount of cpu time in seconds.
-
- <br><dt><code>-u</code><dd>The maximum number of processes available to a single user.
-
- <br><dt><code>-v</code><dd>The maximum amount of virtual memory available to the process.
-
- <br><dt><code>-x</code><dd>The maximum number of file locks.
-
- </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.
-Otherwise, the current value of the soft limit for the specified resource
-is printed, unless the <samp><span class="option">-H</span></samp> option is supplied.
-When setting new limits, if neither <samp><span class="option">-H</span></samp> nor <samp><span class="option">-S</span></samp> is supplied,
-both the hard and soft limits are set.
-If no option is given, then <samp><span class="option">-f</span></samp> is assumed. Values are in 1024-byte
-increments, except for <samp><span class="option">-t</span></samp>, which is in seconds, <samp><span class="option">-p</span></samp>,
-which is in units of 512-byte blocks, and <samp><span class="option">-n</span></samp> and <samp><span class="option">-u</span></samp>, which
-are unscaled values.
-
- <p>The return status is zero unless an invalid option or argument is supplied,
-or an error occurs while setting a new limit.
-
- <br><dt><code>unalias</code><dd><a name="index-unalias-145"></a>
- <pre class="example"> unalias [-a] [<var>name</var> ... ]
- </pre>
- <p>Remove each <var>name</var> from the list of aliases. If <samp><span class="option">-a</span></samp> is
-supplied, all aliases are removed.
-Aliases are described in <a href="#Aliases">Aliases</a>.
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Modifying-Shell-Behavior"></a>
-Next: <a rel="next" accesskey="n" href="#Special-Builtins">Special Builtins</a>,
-Previous: <a rel="previous" accesskey="p" href="#Bash-Builtins">Bash Builtins</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Builtin-Commands">Shell Builtin Commands</a>
-
-</div>
-
-<h3 class="section">4.3 Modifying Shell Behavior</h3>
-
-<ul class="menu">
-<li><a accesskey="1" href="#The-Set-Builtin">The Set Builtin</a>: Change the values of shell attributes and
- positional parameters.
-<li><a accesskey="2" href="#The-Shopt-Builtin">The Shopt Builtin</a>: Modify shell optional behavior.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="The-Set-Builtin"></a>
-Next: <a rel="next" accesskey="n" href="#The-Shopt-Builtin">The Shopt Builtin</a>,
-Up: <a rel="up" accesskey="u" href="#Modifying-Shell-Behavior">Modifying Shell Behavior</a>
-
-</div>
-
-<h4 class="subsection">4.3.1 The Set Builtin</h4>
-
-<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.
-
- <dl>
-<dt><code>set</code><dd><a name="index-set-146"></a>
- <pre class="example"> set [--abefhkmnptuvxBCEHPT] [-o <var>option</var>] [<var>argument</var> ...]
- set [+abefhkmnptuvxBCEHPT] [+o <var>option</var>] [<var>argument</var> ...]
- </pre>
- <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 <span class="sc">posix</span> mode, only shell variables are listed.
-
- <p>When options are supplied, they set or unset shell attributes.
-Options, if specified, have the following meanings:
-
- <dl>
-<dt><code>-a</code><dd>Mark variables and function which are modified or created for export
-to the environment of subsequent commands.
-
- <br><dt><code>-b</code><dd>Cause the status of terminated background jobs to be reported
-immediately, rather than before printing the next primary prompt.
-
- <br><dt><code>-e</code><dd>Exit immediately if a simple command (see <a href="#Simple-Commands">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 <code>&&</code> or <code>||</code> list,
-any command in a pipeline but the last,
-or if the command's return status is being inverted using <code>!</code>.
-A trap on <code>ERR</code>, if set, is executed before the shell exits.
-
- <br><dt><code>-f</code><dd>Disable file name generation (globbing).
-
- <br><dt><code>-h</code><dd>Locate and remember (hash) commands as they are looked up for execution.
-This option is enabled by default.
-
- <br><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.
-
- <br><dt><code>-m</code><dd>Job control is enabled (see <a href="#Job-Control">Job Control</a>).
-
- <br><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.
-
- <br><dt><code>-o </code><var>option-name</var><dd>
-Set the option corresponding to <var>option-name</var>:
-
- <dl>
-<dt><code>allexport</code><dd>Same as <code>-a</code>.
-
- <br><dt><code>braceexpand</code><dd>Same as <code>-B</code>.
-
- <br><dt><code>emacs</code><dd>Use an <code>emacs</code>-style line editing interface (see <a href="#Command-Line-Editing">Command Line Editing</a>).
-
- <br><dt><code>errexit</code><dd>Same as <code>-e</code>.
-
- <br><dt><code>errtrace</code><dd>Same as <code>-E</code>.
-
- <br><dt><code>functrace</code><dd>Same as <code>-T</code>.
-
- <br><dt><code>hashall</code><dd>Same as <code>-h</code>.
-
- <br><dt><code>histexpand</code><dd>Same as <code>-H</code>.
-
- <br><dt><code>history</code><dd>Enable command history, as described in <a href="#Bash-History-Facilities">Bash History Facilities</a>.
-This option is on by default in interactive shells.
-
- <br><dt><code>ignoreeof</code><dd>An interactive shell will not exit upon reading EOF.
-
- <br><dt><code>keyword</code><dd>Same as <code>-k</code>.
-
- <br><dt><code>monitor</code><dd>Same as <code>-m</code>.
-
- <br><dt><code>noclobber</code><dd>Same as <code>-C</code>.
-
- <br><dt><code>noexec</code><dd>Same as <code>-n</code>.
-
- <br><dt><code>noglob</code><dd>Same as <code>-f</code>.
-
- <br><dt><code>nolog</code><dd>Currently ignored.
-
- <br><dt><code>notify</code><dd>Same as <code>-b</code>.
-
- <br><dt><code>nounset</code><dd>Same as <code>-u</code>.
-
- <br><dt><code>onecmd</code><dd>Same as <code>-t</code>.
-
- <br><dt><code>physical</code><dd>Same as <code>-P</code>.
-
- <br><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.
-
- <br><dt><code>posix</code><dd>Change the behavior of Bash where the default operation differs
-from the <span class="sc">posix</span> standard to match the standard
-(see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
-This is intended to make Bash behave as a strict superset of that
-standard.
-
- <br><dt><code>privileged</code><dd>Same as <code>-p</code>.
-
- <br><dt><code>verbose</code><dd>Same as <code>-v</code>.
-
- <br><dt><code>vi</code><dd>Use a <code>vi</code>-style line editing interface.
-
- <br><dt><code>xtrace</code><dd>Same as <code>-x</code>.
-</dl>
-
- <br><dt><code>-p</code><dd>Turn on privileged mode.
-In this mode, the <samp><span class="env">$BASH_ENV</span></samp> and <samp><span class="env">$ENV</span></samp> files are not
-processed, shell functions are not inherited from the environment,
-and the <samp><span class="env">SHELLOPTS</span></samp> variable, if it appears in the environment,
-is 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.
-
- <br><dt><code>-t</code><dd>Exit after reading and executing one command.
-
- <br><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.
-
- <br><dt><code>-v</code><dd>Print shell input lines as they are read.
-
- <br><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 <samp><span class="env">PS4</span></samp>
-variable is expanded and the resultant value is printed before
-the command and its expanded arguments.
-
- <br><dt><code>-B</code><dd>The shell will perform brace expansion (see <a href="#Brace-Expansion">Brace Expansion</a>).
-This option is on by default.
-
- <br><dt><code>-C</code><dd>Prevent output redirection using `<samp><span class="samp">></span></samp>', `<samp><span class="samp">>&</span></samp>', and `<samp><span class="samp"><></span></samp>'
-from overwriting existing files.
-
- <br><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.
-
- <br><dt><code>-H</code><dd>Enable `<samp><span class="samp">!</span></samp>' style history substitution (see <a href="#History-Interaction">History Interaction</a>).
-This option is on by default for interactive shells.
-
- <br><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 <samp><span class="file">/usr/sys</span></samp> is a symbolic link to <samp><span class="file">/usr/local/sys</span></samp>
-then:
- <pre class="example"> $ cd /usr/sys; echo $PWD
- /usr/sys
- $ cd ..; pwd
- /usr
- </pre>
- <p class="noindent">If <code>set -P</code> is on, then:
- <pre class="example"> $ cd /usr/sys; echo $PWD
- /usr/local/sys
- $ cd ..; pwd
- /usr/local
- </pre>
- <br><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.
-
- <br><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><span class="samp">-</span></samp>'.
-
- <br><dt><code>-</code><dd>Signal the end of options, cause all remaining <var>arguments</var>
-to be assigned to the positional parameters. The <samp><span class="option">-x</span></samp>
-and <samp><span class="option">-v</span></samp> options are turned off.
-If there are no arguments, the positional parameters remain unchanged.
-</dl>
-
- <p>Using `<samp><span class="samp">+</span></samp>' rather than `<samp><span class="samp">-</span></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>The remaining N <var>arguments</var> are positional parameters and are
-assigned, in order, to <code>$1</code>, <code>$2</code>, <small class="dots">...</small> <code>$N</code>.
-The special parameter <code>#</code> is set to N.
-
- <p>The return status is always zero unless an invalid option is supplied.
-</dl>
-
-<div class="node">
-<p><hr>
-<a name="The-Shopt-Builtin"></a>
-Previous: <a rel="previous" accesskey="p" href="#The-Set-Builtin">The Set Builtin</a>,
-Up: <a rel="up" accesskey="u" href="#Modifying-Shell-Behavior">Modifying Shell Behavior</a>
-
-</div>
-
-<h4 class="subsection">4.3.2 The Shopt Builtin</h4>
-
-<p>This builtin allows you to change additional shell optional behavior.
-
- <dl>
-<dt><code>shopt</code><dd><a name="index-shopt-147"></a>
- <pre class="example"> shopt [-pqsu] [-o] [<var>optname</var> ...]
- </pre>
- <p>Toggle the values of variables controlling optional shell behavior.
-With no options, or with the <samp><span class="option">-p</span></samp> option, a list of all settable
-options is displayed, with an indication of whether or not each is set.
-The <samp><span class="option">-p</span></samp> option causes output to be displayed in a form that
-may be reused as input.
-Other options have the following meanings:
-
- <dl>
-<dt><code>-s</code><dd>Enable (set) each <var>optname</var>.
-
- <br><dt><code>-u</code><dd>Disable (unset) each <var>optname</var>.
-
- <br><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><span class="option">-q</span></samp>,
-the return status is zero if all <var>optnames</var> are enabled;
-non-zero otherwise.
-
- <br><dt><code>-o</code><dd>Restricts the values of
-<var>optname</var> to be those defined for the <samp><span class="option">-o</span></samp> option to the
-<code>set</code> builtin (see <a href="#The-Set-Builtin">The Set Builtin</a>).
-</dl>
-
- <p>If either <samp><span class="option">-s</span></samp> or <samp><span class="option">-u</span></samp>
-is used with no <var>optname</var> arguments, the display is limited to
-those options which are set or unset, respectively.
-
- <p>Unless otherwise noted, the <code>shopt</code> options are disabled (off)
-by default.
-
- <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>The list of <code>shopt</code> options is:
- <dl>
-<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.
-
- <br><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.
-
- <br><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.
-
- <br><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.
-
- <br><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 <a href="#Job-Control">Job Control</a>).
-The shell always postpones exiting if any jobs are stopped.
-
- <br><dt><code>checkwinsize</code><dd>If set, Bash checks the window size after each command
-and, if necessary, updates the values of
-<samp><span class="env">LINES</span></samp> and <samp><span class="env">COLUMNS</span></samp>.
-
- <br><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.
-
- <br><dt><code>dotglob</code><dd>If set, Bash includes filenames beginning with a `.' in
-the results of filename expansion.
-
- <br><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.
-
- <br><dt><code>expand_aliases</code><dd>If set, aliases are expanded as described below under Aliases,
-<a href="#Aliases">Aliases</a>.
-This option is enabled by default for interactive shells.
-
- <br><dt><code>extdebug</code><dd>If set, behavior intended for use by debuggers is enabled:
-
- <ol type=1 start=1>
-<li>The <samp><span class="option">-F</span></samp> option to the <code>declare</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>)
-displays the source file name and line number corresponding to each function
-name supplied as an argument.
-
- <li>If the command run by the <code>DEBUG</code> trap returns a non-zero value, the
-next command is skipped and not executed.
-
- <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.
-
- <li><code>BASH_ARGC</code> and <code>BASH_ARGV</code> are updated as described in their
-descriptions (see <a href="#Bash-Variables">Bash Variables</a>).
-
- <li>Function tracing is enabled: command substitution, shell functions, and
-subshells invoked with <code>( </code><var>command</var><code> )</code> inherit the
-<code>DEBUG</code> and <code>RETURN</code> traps.
-
- <li>Error tracing is enabled: command substitution, shell functions, and
-subshells invoked with <code>( </code><var>command</var><code> )</code> inherit the
-<code>ERROR</code> trap.
- </ol>
-
- <br><dt><code>extglob</code><dd>If set, the extended pattern matching features described above
-(see <a href="#Pattern-Matching">Pattern Matching</a>) are enabled.
-
- <br><dt><code>extquote</code><dd>If set, <code>$'</code><var>string</var><code>'</code> and <code>$"</code><var>string</var><code>"</code> quoting is
-performed within <code>${</code><var>parameter</var><code>}</code> expansions
-enclosed in double quotes. This option is enabled by default.
-
- <br><dt><code>failglob</code><dd>If set, patterns which fail to match filenames during pathname expansion
-result in an expansion error.
-
- <br><dt><code>force_fignore</code><dd>If set, the suffixes specified by the <samp><span class="env">FIGNORE</span></samp> shell variable
-cause words to be ignored when performing word completion even if
-the ignored words are the only possible completions.
-See <a href="#Bash-Variables">Bash Variables</a>, for a description of <samp><span class="env">FIGNORE</span></samp>.
-This option is enabled by default.
-
- <br><dt><code>gnu_errfmt</code><dd>If set, shell error messages are written in the standard <span class="sc">gnu</span> error
-message format.
-
- <br><dt><code>histappend</code><dd>If set, the history list is appended to the file named by the value
-of the <samp><span class="env">HISTFILE</span></samp>
-variable when the shell exits, rather than overwriting the file.
-
- <br><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.
-
- <br><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.
-
- <br><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><span class="samp">@</span></samp>' is being
-completed (see <a href="#Commands-For-Completion">Commands For Completion</a>). This option is enabled
-by default.
-
- <br><dt><code>huponexit</code><dd>If set, Bash will send <code>SIGHUP</code> to all jobs when an interactive
-login shell exits (see <a href="#Signals">Signals</a>).
-
- <br><dt><code>interactive_comments</code><dd>Allow a word beginning with `<samp><span class="samp">#</span></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.
-
- <br><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.
-
- <br><dt><code>login_shell</code><dd>The shell sets this option if it is started as a login shell
-(see <a href="#Invoking-Bash">Invoking Bash</a>).
-The value may not be changed.
-
- <br><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 </code><var>mailfile</var><code> has been read"</code> is displayed.
-
- <br><dt><code>no_empty_cmd_completion</code><dd>If set, and Readline is being used, Bash will not attempt to search
-the <samp><span class="env">PATH</span></samp> for possible completions when completion is attempted
-on an empty line.
-
- <br><dt><code>nocaseglob</code><dd>If set, Bash matches filenames in a case-insensitive fashion when
-performing filename expansion.
-
- <br><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.
-
- <br><dt><code>nullglob</code><dd>If set, Bash allows filename patterns which match no
-files to expand to a null string, rather than themselves.
-
- <br><dt><code>progcomp</code><dd>If set, the programmable completion facilities
-(see <a href="#Programmable-Completion">Programmable Completion</a>) are enabled.
-This option is enabled by default.
-
- <br><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 <a href="#Printing-a-Prompt">Printing a Prompt</a>).
-This option is enabled by default.
-
- <br><dt><code>restricted_shell</code><dd>The shell sets this option if it is started in restricted mode
-(see <a href="#The-Restricted-Shell">The Restricted Shell</a>).
-The value may not be changed.
-This is not reset when the startup files are executed, allowing
-the startup files to discover whether or not a shell is restricted.
-
- <br><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.
-
- <br><dt><code>sourcepath</code><dd>If set, the <code>source</code> builtin uses the value of <samp><span class="env">PATH</span></samp>
-to find the directory containing the file supplied as an argument.
-This option is enabled by default.
-
- <br><dt><code>xpg_echo</code><dd>If set, the <code>echo</code> builtin expands backslash-escape sequences
-by default.
-
- </dl>
-
- <p class="noindent">The return status when listing options is zero if all <var>optnames</var>
-are enabled, non-zero otherwise.
-When setting or unsetting options, the return status is zero unless an
-<var>optname</var> is not a valid shell option.
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Special-Builtins"></a>
-Previous: <a rel="previous" accesskey="p" href="#Modifying-Shell-Behavior">Modifying Shell Behavior</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Builtin-Commands">Shell Builtin Commands</a>
-
-</div>
-
-<h3 class="section">4.4 Special Builtins</h3>
-
-<p><a name="index-special-builtin-148"></a>
-For historical reasons, the <span class="sc">posix</span> standard has classified
-several builtin commands as <em>special</em>.
-When Bash is executing in <span class="sc">posix</span> mode, the special builtins
-differ from other builtin commands in three respects:
-
- <ol type=1 start=1>
-<li>Special builtins are found before shell functions during command lookup.
-
- <li>If a special builtin returns an error status, a non-interactive shell exits.
-
- <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 <span class="sc">posix</span> mode, these builtins behave no
-differently than the rest of the Bash builtin commands.
-The Bash <span class="sc">posix</span> mode is described in <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>.
-
- <p>These are the <span class="sc">posix</span> special builtins:
-<pre class="example"> break : . continue eval exec exit export readonly return set<!-- /@w -->
- shift trap unset<!-- /@w -->
-</pre>
- <div class="node">
-<p><hr>
-<a name="Shell-Variables"></a>
-Next: <a rel="next" accesskey="n" href="#Bash-Features">Bash Features</a>,
-Previous: <a rel="previous" accesskey="p" href="#Shell-Builtin-Commands">Shell Builtin Commands</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">5 Shell Variables</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Bourne-Shell-Variables">Bourne Shell Variables</a>: Variables which Bash uses in the same way
- as the Bourne Shell.
-<li><a accesskey="2" href="#Bash-Variables">Bash Variables</a>: List of variables that exist in Bash.
-</ul>
-
-<p>This chapter describes the shell variables that Bash uses.
-Bash automatically assigns default values to a number of variables.
-
-<div class="node">
-<p><hr>
-<a name="Bourne-Shell-Variables"></a>
-Next: <a rel="next" accesskey="n" href="#Bash-Variables">Bash Variables</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Variables">Shell Variables</a>
-
-</div>
-
-<h3 class="section">5.1 Bourne Shell Variables</h3>
-
-<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.
-
- <dl>
-<dt><code>CDPATH</code><a name="index-CDPATH-149"></a><dd>A colon-separated list of directories used as a search path for
-the <code>cd</code> builtin command.
-
- <br><dt><code>HOME</code><a name="index-HOME-150"></a><dd>The current user's home directory; the default for the <code>cd</code> builtin
-command.
-The value of this variable is also used by tilde expansion
-(see <a href="#Tilde-Expansion">Tilde Expansion</a>).
-
- <br><dt><code>IFS</code><a name="index-IFS-151"></a><dd>A list of characters that separate fields; used when the shell splits
-words as part of expansion.
-
- <br><dt><code>MAIL</code><a name="index-MAIL-152"></a><dd>If this parameter is set to a filename and the <samp><span class="env">MAILPATH</span></samp> variable
-is not set, Bash informs the user of the arrival of mail in
-the specified file.
-
- <br><dt><code>MAILPATH</code><a name="index-MAILPATH-153"></a><dd>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><span class="samp">?</span></samp>'.
-When used in the text of the message, <code>$_</code> expands to the name of
-the current mail file.
-
- <br><dt><code>OPTARG</code><a name="index-OPTARG-154"></a><dd>The value of the last option argument processed by the <code>getopts</code> builtin.
-
- <br><dt><code>OPTIND</code><a name="index-OPTIND-155"></a><dd>The index of the last option argument processed by the <code>getopts</code> builtin.
-
- <br><dt><code>PATH</code><a name="index-PATH-156"></a><dd>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.
-
- <br><dt><code>PS1</code><a name="index-PS1-157"></a><dd>The primary prompt string. The default value is `<samp><span class="samp">\s-\v\$ </span></samp>'.
-See <a href="#Printing-a-Prompt">Printing a Prompt</a>, for the complete list of escape
-sequences that are expanded before <samp><span class="env">PS1</span></samp> is displayed.
-
- <br><dt><code>PS2</code><a name="index-PS2-158"></a><dd>The secondary prompt string. The default value is `<samp><span class="samp">> </span></samp>'.
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Bash-Variables"></a>
-Previous: <a rel="previous" accesskey="p" href="#Bourne-Shell-Variables">Bourne Shell Variables</a>,
-Up: <a rel="up" accesskey="u" href="#Shell-Variables">Shell Variables</a>
-
-</div>
-
-<h3 class="section">5.2 Bash Variables</h3>
-
-<p>These variables are set or used by Bash, but other shells
-do not normally treat them specially.
-
- <p>A few variables used by Bash are described in different chapters:
-variables for controlling the job control facilities
-(see <a href="#Job-Control-Variables">Job Control Variables</a>).
-
- <dl>
-<dt><code>BASH</code><a name="index-BASH-159"></a><dd>The full pathname used to execute the current instance of Bash.
-
- <br><dt><code>BASHPID</code><a name="index-BASHPID-160"></a><dd>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.
-
- <br><dt><code>BASH_ARGC</code><a name="index-BASH_005fARGC-161"></a><dd>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="#The-Shopt-Builtin">The Shopt Builtin</a>
-for a description of the <code>extdebug</code> option to the <code>shopt</code>
-builtin).
-
- <br><dt><code>BASH_ARGV</code><a name="index-BASH_005fARGV-162"></a><dd>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="#The-Shopt-Builtin">The Shopt Builtin</a>
-for a description of the <code>extdebug</code> option to the <code>shopt</code>
-builtin).
-
- <br><dt><code>BASH_COMMAND</code><a name="index-BASH_005fCOMMAND-163"></a><dd>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.
-
- <br><dt><code>BASH_ENV</code><a name="index-BASH_005fENV-164"></a><dd>If this variable is set when Bash is invoked to execute a shell
-script, its value is expanded and used as the name of a startup file
-to read before executing the script. See <a href="#Bash-Startup-Files">Bash Startup Files</a>.
-
- <br><dt><code>BASH_EXECUTION_STRING</code><a name="index-BASH_005fEXECUTION_005fSTRING-165"></a><dd>The command argument to the <samp><span class="option">-c</span></samp> invocation option.
-
- <br><dt><code>BASH_LINENO</code><a name="index-BASH_005fLINENO-166"></a><dd>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.
-The corresponding source file name is <code>${BASH_SOURCE[$i]}</code>.
-Use <code>LINENO</code> to obtain the current line number.
-
- <br><dt><code>BASH_REMATCH</code><a name="index-BASH_005fREMATCH-167"></a><dd>An array variable whose members are assigned by the `<samp><span class="samp">=~</span></samp>' binary
-operator to the <code>[[</code> conditional command
-(see <a href="#Conditional-Constructs">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.
-
- <br><dt><code>BASH_SOURCE</code><a name="index-BASH_005fSOURCE-168"></a><dd>An array variable whose members are the source filenames corresponding
-to the elements in the <code>FUNCNAME</code> array variable.
-
- <br><dt><code>BASH_SUBSHELL</code><a name="index-BASH_005fSUBSHELL-169"></a><dd>Incremented by one each time a subshell or subshell environment is spawned.
-The initial value is 0.
-
- <br><dt><code>BASH_VERSINFO</code><a name="index-BASH_005fVERSINFO-170"></a><dd>A readonly array variable (see <a href="#Arrays">Arrays</a>)
-whose members hold version information for this instance of Bash.
-The values assigned to the array members are as follows:
-
- <dl>
-<dt><code>BASH_VERSINFO[0]</code><dd>The major version number (the <var>release</var>).
-
- <br><dt><code>BASH_VERSINFO[1]</code><dd>The minor version number (the <var>version</var>).
-
- <br><dt><code>BASH_VERSINFO[2]</code><dd>The patch level.
-
- <br><dt><code>BASH_VERSINFO[3]</code><dd>The build version.
-
- <br><dt><code>BASH_VERSINFO[4]</code><dd>The release status (e.g., <var>beta1</var>).
-
- <br><dt><code>BASH_VERSINFO[5]</code><dd>The value of <samp><span class="env">MACHTYPE</span></samp>.
-
- </dl>
-
- <br><dt><code>BASH_VERSION</code><a name="index-BASH_005fVERSION-171"></a><dd>The version number of the current instance of Bash.
-
- <br><dt><code>COLUMNS</code><a name="index-COLUMNS-172"></a><dd>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>.
-
- <br><dt><code>COMP_CWORD</code><a name="index-COMP_005fCWORD-173"></a><dd>An index into <samp><span class="env">${COMP_WORDS}</span></samp> of the word containing the current
-cursor position.
-This variable is available only in shell functions invoked by the
-programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
-
- <br><dt><code>COMP_LINE</code><a name="index-COMP_005fLINE-174"></a><dd>The current command line.
-This variable is available only in shell functions and external
-commands invoked by the
-programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
-
- <br><dt><code>COMP_POINT</code><a name="index-COMP_005fPOINT-175"></a><dd>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 <a href="#Programmable-Completion">Programmable Completion</a>).
-
- <br><dt><code>COMP_TYPE</code><a name="index-COMP_005fTYPE-176"></a><dd>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><span class="samp">?</span></samp>', for listing completions after successive tabs,
-`<samp><span class="samp">!</span></samp>', for listing alternatives on partial word completion,
-`<samp><span class="samp">@</span></samp>', to list completions if the word is not unmodified,
-or
-`<samp><span class="samp">%</span></samp>', for menu completion.
-This variable is available only in shell functions and external
-commands invoked by the
-programmable completion facilities (see <a href="#Programmable-Completion">Programmable Completion</a>).
-
- <br><dt><code>COMP_KEY</code><a name="index-COMP_005fKEY-177"></a><dd>The key (or final key of a key sequence) used to invoke the current
-completion function.
-
- <br><dt><code>COMP_WORDBREAKS</code><a name="index-COMP_005fWORDBREAKS-178"></a><dd>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.
-
- <br><dt><code>COMP_WORDS</code><a name="index-COMP_005fWORDS-179"></a><dd>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 <a href="#Programmable-Completion">Programmable Completion</a>).
-
- <br><dt><code>COMPREPLY</code><a name="index-COMPREPLY-180"></a><dd>An array variable from which Bash reads the possible completions
-generated by a shell function invoked by the programmable completion
-facility (see <a href="#Programmable-Completion">Programmable Completion</a>).
-
- <br><dt><code>DIRSTACK</code><a name="index-DIRSTACK-181"></a><dd>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 <samp><span class="env">DIRSTACK</span></samp> is unset, it loses its special properties, even if
-it is subsequently reset.
-
- <br><dt><code>EMACS</code><a name="index-EMACS-182"></a><dd>If Bash finds this variable in the environment when the shell
-starts with value `<samp><span class="samp">t</span></samp>', it assumes that the shell is running in an
-emacs shell buffer and disables line editing.
-
- <br><dt><code>EUID</code><a name="index-EUID-183"></a><dd>The numeric effective user id of the current user. This variable
-is readonly.
-
- <br><dt><code>FCEDIT</code><a name="index-FCEDIT-184"></a><dd>The editor used as a default by the <samp><span class="option">-e</span></samp> option to the <code>fc</code>
-builtin command.
-
- <br><dt><code>FIGNORE</code><a name="index-FIGNORE-185"></a><dd>A colon-separated list of suffixes to ignore when performing
-filename completion.
-A file name whose suffix matches one of the entries in
-<samp><span class="env">FIGNORE</span></samp>
-is excluded from the list of matched file names. A sample
-value is `<samp><span class="samp">.o:~</span></samp>'
-
- <br><dt><code>FUNCNAME</code><a name="index-FUNCNAME-186"></a><dd>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 <samp><span class="env">FUNCNAME</span></samp> have no effect and return an error status.
-If <samp><span class="env">FUNCNAME</span></samp> is unset, it loses its special properties, even if
-it is subsequently reset.
-
- <br><dt><code>GLOBIGNORE</code><a name="index-GLOBIGNORE-187"></a><dd>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 <samp><span class="env">GLOBIGNORE</span></samp>, it is removed from the list
-of matches.
-
- <br><dt><code>GROUPS</code><a name="index-GROUPS-188"></a><dd>An array variable containing the list of groups of which the current
-user is a member.
-Assignments to <samp><span class="env">GROUPS</span></samp> have no effect and return an error status.
-If <samp><span class="env">GROUPS</span></samp> is unset, it loses its special properties, even if it is
-subsequently reset.
-
- <br><dt><code>histchars</code><a name="index-histchars-189"></a><dd>Up to three characters which control history expansion, quick
-substitution, and tokenization (see <a href="#History-Interaction">History Interaction</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><span class="samp">!</span></samp>'. The second character is the
-character which signifies `quick substitution' when seen as the first
-character on a line, normally `<samp><span class="samp">^</span></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><span class="samp">#</span></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.
-
- <br><dt><code>HISTCMD</code><a name="index-HISTCMD-190"></a><dd>The history number, or index in the history list, of the current
-command. If <samp><span class="env">HISTCMD</span></samp> is unset, it loses its special properties,
-even if it is subsequently reset.
-
- <br><dt><code>HISTCONTROL</code><a name="index-HISTCONTROL-191"></a><dd>A colon-separated list of values controlling how commands are saved on
-the history list.
-If the list of values includes `<samp><span class="samp">ignorespace</span></samp>', lines which begin
-with a space character are not saved in the history list.
-A value of `<samp><span class="samp">ignoredups</span></samp>' causes lines which match the previous
-history entry to not be saved.
-A value of `<samp><span class="samp">ignoreboth</span></samp>' is shorthand for
-`<samp><span class="samp">ignorespace</span></samp>' and `<samp><span class="samp">ignoredups</span></samp>'.
-A value of `<samp><span class="samp">erasedups</span></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 <samp><span class="env">HISTCONTROL</span></samp> 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 <samp><span class="env">HISTIGNORE</span></samp>.
-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
-<samp><span class="env">HISTCONTROL</span></samp>.
-
- <br><dt><code>HISTFILE</code><a name="index-HISTFILE-192"></a><dd>The name of the file to which the command history is saved. The
-default value is <samp><span class="file">~/.bash_history</span></samp>.
-
- <br><dt><code>HISTFILESIZE</code><a name="index-HISTFILESIZE-193"></a><dd>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.
-
- <br><dt><code>HISTIGNORE</code><a name="index-HISTIGNORE-194"></a><dd>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><span class="samp">*</span></samp>' is appended). Each pattern is tested
-against the line after the checks specified by <samp><span class="env">HISTCONTROL</span></samp>
-are applied. In addition to the normal shell pattern matching
-characters, `<samp><span class="samp">&</span></samp>' matches the previous history line. `<samp><span class="samp">&</span></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
-<samp><span class="env">HISTIGNORE</span></samp>.
-
- <p><samp><span class="env">HISTIGNORE</span></samp> subsumes the function of <samp><span class="env">HISTCONTROL</span></samp>. A
-pattern of `<samp><span class="samp">&</span></samp>' is identical to <code>ignoredups</code>, and a
-pattern of `<samp><span class="samp">[ ]*</span></samp>' is identical to <code>ignorespace</code>.
-Combining these two patterns, separating them with a colon,
-provides the functionality of <code>ignoreboth</code>.
-
- <br><dt><code>HISTSIZE</code><a name="index-HISTSIZE-195"></a><dd>The maximum number of commands to remember on the history list.
-The default value is 500.
-
- <br><dt><code>HISTTIMEFORMAT</code><a name="index-HISTTIMEFORMAT-196"></a><dd>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.
-
- <br><dt><code>HOSTFILE</code><a name="index-HOSTFILE-197"></a><dd>Contains the name of a file in the same format as <samp><span class="file">/etc/hosts</span></samp> that
-should be read when the shell needs to complete a hostname.
-The list of possible hostname completions may be changed while the shell
-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 <samp><span class="env">HOSTFILE</span></samp> is set, but has no value, Bash attempts to read
-<samp><span class="file">/etc/hosts</span></samp> to obtain the list of possible hostname completions.
-When <samp><span class="env">HOSTFILE</span></samp> is unset, the hostname list is cleared.
-
- <br><dt><code>HOSTNAME</code><a name="index-HOSTNAME-198"></a><dd>The name of the current host.
-
- <br><dt><code>HOSTTYPE</code><a name="index-HOSTTYPE-199"></a><dd>A string describing the machine Bash is running on.
-
- <br><dt><code>IGNOREEOF</code><a name="index-IGNOREEOF-200"></a><dd>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.
-
- <br><dt><code>INPUTRC</code><a name="index-INPUTRC-201"></a><dd>The name of the Readline initialization file, overriding the default
-of <samp><span class="file">~/.inputrc</span></samp>.
-
- <br><dt><code>LANG</code><a name="index-LANG-202"></a><dd>Used to determine the locale category for any category not specifically
-selected with a variable starting with <code>LC_</code>.
-
- <br><dt><code>LC_ALL</code><a name="index-LC_005fALL-203"></a><dd>This variable overrides the value of <samp><span class="env">LANG</span></samp> and any other
-<code>LC_</code> variable specifying a locale category.
-
- <br><dt><code>LC_COLLATE</code><a name="index-LC_005fCOLLATE-204"></a><dd>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 <a href="#Filename-Expansion">Filename Expansion</a>).
-
- <br><dt><code>LC_CTYPE</code><a name="index-LC_005fCTYPE-205"></a><dd>This variable determines the interpretation of characters and the
-behavior of character classes within filename expansion and pattern
-matching (see <a href="#Filename-Expansion">Filename Expansion</a>).
-
- <br><dt><code>LC_MESSAGES</code><a name="index-LC_005fMESSAGES-206"></a><dd>This variable determines the locale used to translate double-quoted
-strings preceded by a `<samp><span class="samp">$</span></samp>' (see <a href="#Locale-Translation">Locale Translation</a>).
-
- <br><dt><code>LC_NUMERIC</code><a name="index-LC_005fNUMERIC-207"></a><dd>This variable determines the locale category used for number formatting.
-
- <br><dt><code>LINENO</code><a name="index-LINENO-208"></a><dd>The line number in the script or shell function currently executing.
-
- <br><dt><code>LINES</code><a name="index-LINES-209"></a><dd>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>.
-
- <br><dt><code>MACHTYPE</code><a name="index-MACHTYPE-210"></a><dd>A string that fully describes the system type on which Bash
-is executing, in the standard <span class="sc">gnu</span> <var>cpu-company-system</var> format.
-
- <br><dt><code>MAILCHECK</code><a name="index-MAILCHECK-211"></a><dd>How often (in seconds) that the shell should check for mail in the
-files specified in the <samp><span class="env">MAILPATH</span></samp> or <samp><span class="env">MAIL</span></samp> 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.
-
- <br><dt><code>OLDPWD</code><a name="index-OLDPWD-212"></a><dd>The previous working directory as set by the <code>cd</code> builtin.
-
- <br><dt><code>OPTERR</code><a name="index-OPTERR-213"></a><dd>If set to the value 1, Bash displays error messages
-generated by the <code>getopts</code> builtin command.
-
- <br><dt><code>OSTYPE</code><a name="index-OSTYPE-214"></a><dd>A string describing the operating system Bash is running on.
-
- <br><dt><code>PIPESTATUS</code><a name="index-PIPESTATUS-215"></a><dd>An array variable (see <a href="#Arrays">Arrays</a>)
-containing a list of exit status values from the processes
-in the most-recently-executed foreground pipeline (which may
-contain only a single command).
-
- <br><dt><code>POSIXLY_CORRECT</code><a name="index-POSIXLY_005fCORRECT-216"></a><dd>If this variable is in the environment when <code>bash</code> starts, the shell
-enters <span class="sc">posix</span> mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>) before reading the
-startup files, as if the <samp><span class="option">--posix</span></samp> invocation option had been supplied.
-If it is set while the shell is running, <code>bash</code> enables <span class="sc">posix</span> mode,
-as if the command
- <pre class="example"> <code>set -o posix</code>
- </pre>
- <p class="noindent">had been executed.
-
- <br><dt><code>PPID</code><a name="index-PPID-217"></a><dd>The process <span class="sc">id</span> of the shell's parent process. This variable
-is readonly.
-
- <br><dt><code>PROMPT_COMMAND</code><a name="index-PROMPT_005fCOMMAND-218"></a><dd>If set, the value is interpreted as a command to execute
-before the printing of each primary prompt (<samp><span class="env">$PS1</span></samp>).
-
- <br><dt><code>PS3</code><a name="index-PS3-219"></a><dd>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><span class="samp">#? </span></samp>'
-
- <br><dt><code>PS4</code><a name="index-PS4-220"></a><dd>The value is the prompt printed before the command line is echoed
-when the <samp><span class="option">-x</span></samp> option is set (see <a href="#The-Set-Builtin">The Set Builtin</a>).
-The first character of <samp><span class="env">PS4</span></samp> is replicated multiple times, as
-necessary, to indicate multiple levels of indirection.
-The default is `<samp><span class="samp">+ </span></samp>'.
-
- <br><dt><code>PWD</code><a name="index-PWD-221"></a><dd>The current working directory as set by the <code>cd</code> builtin.
-
- <br><dt><code>RANDOM</code><a name="index-RANDOM-222"></a><dd>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.
-
- <br><dt><code>REPLY</code><a name="index-REPLY-223"></a><dd>The default variable for the <code>read</code> builtin.
-
- <br><dt><code>SECONDS</code><a name="index-SECONDS-224"></a><dd>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.
-
- <br><dt><code>SHELL</code><a name="index-SHELL-225"></a><dd>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.
-
- <br><dt><code>SHELLOPTS</code><a name="index-SHELLOPTS-226"></a><dd>A colon-separated list of enabled shell options. Each word in
-the list is a valid argument for the <samp><span class="option">-o</span></samp> option to the
-<code>set</code> builtin command (see <a href="#The-Set-Builtin">The Set Builtin</a>).
-The options appearing in <samp><span class="env">SHELLOPTS</span></samp> are those reported
-as `<samp><span class="samp">on</span></samp>' by `<samp><span class="samp">set -o</span></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.
-
- <br><dt><code>SHLVL</code><a name="index-SHLVL-227"></a><dd>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.
-
- <br><dt><code>TIMEFORMAT</code><a name="index-TIMEFORMAT-228"></a><dd>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><span class="samp">%</span></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.
-
- <dl>
-<dt><code>%%</code><dd>A literal `<samp><span class="samp">%</span></samp>'.
-
- <br><dt><code>%[</code><var>p</var><code>][l]R</code><dd>The elapsed time in seconds.
-
- <br><dt><code>%[</code><var>p</var><code>][l]U</code><dd>The number of CPU seconds spent in user mode.
-
- <br><dt><code>%[</code><var>p</var><code>][l]S</code><dd>The number of CPU seconds spent in system mode.
-
- <br><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>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>If this variable is not set, Bash acts as if it had the value
- <pre class="example"> <code>$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'</code>
- </pre>
- <p>If the value is null, no timing information is displayed.
-A trailing newline is added when the format string is displayed.
-
- <br><dt><code>TMOUT</code><a name="index-TMOUT-229"></a><dd>If set to a value greater than zero, <code>TMOUT</code> is treated as the
-default timeout for the <code>read</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>).
-The <code>select</code> command (see <a href="#Conditional-Constructs">Conditional Constructs</a>) terminates
-if input does not arrive after <code>TMOUT</code> seconds when input is coming
-from a terminal.
-
- <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.
-
- <br><dt><code>TMPDIR</code><a name="index-TMPDIR-230"></a><dd>If set, Bash uses its value as the name of a directory in which
-Bash creates temporary files for the shell's use.
-
- <br><dt><code>UID</code><a name="index-UID-231"></a><dd>The numeric real user id of the current user. This variable is readonly.
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Bash-Features"></a>
-Next: <a rel="next" accesskey="n" href="#Job-Control">Job Control</a>,
-Previous: <a rel="previous" accesskey="p" href="#Shell-Variables">Shell Variables</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">6 Bash Features</h2>
-
-<p>This section describes features unique to Bash.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Invoking-Bash">Invoking Bash</a>: Command line options that you can give
- to Bash.
-<li><a accesskey="2" href="#Bash-Startup-Files">Bash Startup Files</a>: When and how Bash executes scripts.
-<li><a accesskey="3" href="#Interactive-Shells">Interactive Shells</a>: What an interactive shell is.
-<li><a accesskey="4" href="#Bash-Conditional-Expressions">Bash Conditional Expressions</a>: Primitives used in composing expressions for
- the <code>test</code> builtin.
-<li><a accesskey="5" href="#Shell-Arithmetic">Shell Arithmetic</a>: Arithmetic on shell variables.
-<li><a accesskey="6" href="#Aliases">Aliases</a>: Substituting one command for another.
-<li><a accesskey="7" href="#Arrays">Arrays</a>: Array Variables.
-<li><a accesskey="8" href="#The-Directory-Stack">The Directory Stack</a>: History of visited directories.
-<li><a accesskey="9" href="#Printing-a-Prompt">Printing a Prompt</a>: Controlling the PS1 string.
-<li><a href="#The-Restricted-Shell">The Restricted Shell</a>: A more controlled mode of shell execution.
-<li><a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>: Making Bash behave more closely to what
- the POSIX standard specifies.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Invoking-Bash"></a>
-Next: <a rel="next" accesskey="n" href="#Bash-Startup-Files">Bash Startup Files</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.1 Invoking Bash</h3>
-
-<pre class="example"> bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o <var>option</var>] [-O <var>shopt_option</var>] [<var>argument</var> ...]
- bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o <var>option</var>] [-O <var>shopt_option</var>] -c <var>string</var> [<var>argument</var> ...]
- bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o <var>option</var>] [-O <var>shopt_option</var>] [<var>argument</var> ...]
-</pre>
- <p>In addition to the single-character shell command-line options
-(see <a href="#The-Set-Builtin">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.
-
- <dl>
-<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="#The-Shopt-Builtin">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="#The-Set-Builtin">The Set Builtin</a> for a description of the <code>-o functrace</code>
-option).
-
- <br><dt><code>--dump-po-strings</code><dd>A list of all double-quoted strings preceded by `<samp><span class="samp">$</span></samp>'
-is printed on the standard output
-in the <span class="sc">gnu</span> <code>gettext</code> PO (portable object) file format.
-Equivalent to <samp><span class="option">-D</span></samp> except for the output format.
-
- <br><dt><code>--dump-strings</code><dd>Equivalent to <samp><span class="option">-D</span></samp>.
-
- <br><dt><code>--help</code><dd>Display a usage message on standard output and exit successfully.
-
- <br><dt><code>--init-file </code><var>filename</var><dt><code>--rcfile </code><var>filename</var><dd>Execute commands from <var>filename</var> (instead of <samp><span class="file">~/.bashrc</span></samp>)
-in an interactive shell.
-
- <br><dt><code>--login</code><dd>Equivalent to <samp><span class="option">-l</span></samp>.
-
- <br><dt><code>--noediting</code><dd>Do not use the <span class="sc">gnu</span> Readline library (see <a href="#Command-Line-Editing">Command Line Editing</a>)
-to read command lines when the shell is interactive.
-
- <br><dt><code>--noprofile</code><dd>Don't load the system-wide startup file <samp><span class="file">/etc/profile</span></samp>
-or any of the personal initialization files
-<samp><span class="file">~/.bash_profile</span></samp>, <samp><span class="file">~/.bash_login</span></samp>, or <samp><span class="file">~/.profile</span></samp>
-when Bash is invoked as a login shell.
-
- <br><dt><code>--norc</code><dd>Don't read the <samp><span class="file">~/.bashrc</span></samp> initialization file in an
-interactive shell. This is on by default if the shell is
-invoked as <code>sh</code>.
-
- <br><dt><code>--posix</code><dd>Change the behavior of Bash where the default operation differs
-from the <span class="sc">posix</span> standard to match the standard. This
-is intended to make Bash behave as a strict superset of that
-standard. See <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>, for a description of the Bash
-<span class="sc">posix</span> mode.
-
- <br><dt><code>--restricted</code><dd>Make the shell a restricted shell (see <a href="#The-Restricted-Shell">The Restricted Shell</a>).
-
- <br><dt><code>--verbose</code><dd>Equivalent to <samp><span class="option">-v</span></samp>. Print shell input lines as they're read.
-
- <br><dt><code>--version</code><dd>Show version information for this instance of
-Bash on the standard output and exit successfully.
-
- </dl>
-
- <p>There are several single-character options that may be supplied at
-invocation which are not available with the <code>set</code> builtin.
-
- <dl>
-<dt><code>-c </code><var>string</var><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>.
-
- <br><dt><code>-i</code><dd>Force the shell to run interactively. Interactive shells are
-described in <a href="#Interactive-Shells">Interactive Shells</a>.
-
- <br><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><span class="samp">exec -l bash</span></samp>'.
-When the shell is not interactive, the login shell startup files will
-be executed.
-`<samp><span class="samp">exec bash -l</span></samp>' or `<samp><span class="samp">exec bash --login</span></samp>'
-will replace the current shell with a Bash login shell.
-See <a href="#Bash-Startup-Files">Bash Startup Files</a>, for a description of the special behavior
-of a login shell.
-
- <br><dt><code>-r</code><dd>Make the shell a restricted shell (see <a href="#The-Restricted-Shell">The Restricted Shell</a>).
-
- <br><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.
-
- <br><dt><code>-D</code><dd>A list of all double-quoted strings preceded by `<samp><span class="samp">$</span></samp>'
-is printed on the standard output.
-These are the strings that
-are subject to language translation when the current locale
-is not <code>C</code> or <code>POSIX</code> (see <a href="#Locale-Translation">Locale Translation</a>).
-This implies the <samp><span class="option">-n</span></samp> option; no commands will be executed.
-
- <br><dt><code>[-+]O [</code><var>shopt_option</var><code>]</code><dd><var>shopt_option</var> is one of the shell options accepted by the
-<code>shopt</code> builtin (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
-If <var>shopt_option</var> is present, <samp><span class="option">-O</span></samp> sets the value of that option;
-<samp><span class="option">+O</span></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><span class="option">+O</span></samp>, the output is displayed in a format
-that may be reused as input.
-
- <br><dt><code>--</code><dd>A <code>--</code> signals the end of options and disables further option
-processing.
-Any arguments after the <code>--</code> are treated as filenames and arguments.
-
- </dl>
-
- <p><a name="index-login-shell-232"></a>A <em>login</em> shell is one whose first character of argument zero is
-`<samp><span class="samp">-</span></samp>', or one invoked with the <samp><span class="option">--login</span></samp> option.
-
- <p><a name="index-interactive-shell-233"></a>An <em>interactive</em> shell is one started without non-option arguments,
-unless <samp><span class="option">-s</span></samp> is specified,
-without specifying the <samp><span class="option">-c</span></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><span class="option">-i</span></samp> option. See <a href="#Interactive-Shells">Interactive Shells</a>, for more
-information.
-
- <p>If arguments remain after option processing, and neither the
-<samp><span class="option">-c</span></samp> nor the <samp><span class="option">-s</span></samp>
-option has been supplied, the first argument is assumed to
-be the name of a file containing shell commands (see <a href="#Shell-Scripts">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.
-
-<div class="node">
-<p><hr>
-<a name="Bash-Startup-Files"></a>
-Next: <a rel="next" accesskey="n" href="#Interactive-Shells">Interactive Shells</a>,
-Previous: <a rel="previous" accesskey="p" href="#Invoking-Bash">Invoking Bash</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.2 Bash Startup Files</h3>
-
-<p><a name="index-startup-files-234"></a>
-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 <a href="#Tilde-Expansion">Tilde Expansion</a>).
-
- <p>Interactive shells are described in <a href="#Interactive-Shells">Interactive Shells</a>.
-
-<h5 class="subsubheading">Invoked as an interactive login shell, or with <samp><span class="option">--login</span></samp></h5>
-
-<p>When Bash is invoked as an interactive login shell, or as a
-non-interactive shell with the <samp><span class="option">--login</span></samp> option, it first reads and
-executes commands from the file <samp><span class="file">/etc/profile</span></samp>, if that file exists.
-After reading that file, it looks for <samp><span class="file">~/.bash_profile</span></samp>,
-<samp><span class="file">~/.bash_login</span></samp>, and <samp><span class="file">~/.profile</span></samp>, in that order, and reads
-and executes commands from the first one that exists and is readable.
-The <samp><span class="option">--noprofile</span></samp> option may be used when the shell is started to
-inhibit this behavior.
-
- <p>When a login shell exits, Bash reads and executes commands from
-the file <samp><span class="file">~/.bash_logout</span></samp>, if it exists.
-
-<h5 class="subsubheading">Invoked as an interactive non-login shell</h5>
-
-<p>When an interactive shell that is not a login shell is started, Bash
-reads and executes commands from <samp><span class="file">~/.bashrc</span></samp>, if that file exists.
-This may be inhibited by using the <samp><span class="option">--norc</span></samp> option.
-The <samp><span class="option">--rcfile </span><var>file</var></samp> option will force Bash to read and
-execute commands from <var>file</var> instead of <samp><span class="file">~/.bashrc</span></samp>.
-
- <p>So, typically, your <samp><span class="file">~/.bash_profile</span></samp> contains the line
-<pre class="example"> <code>if [ -f ~/.bashrc ]; then . ~/.bashrc; fi</code>
-</pre>
- <p class="noindent">after (or before) any login-specific initializations.
-
-<h5 class="subsubheading">Invoked non-interactively</h5>
-
-<p>When Bash is started non-interactively, to run a shell script,
-for example, it looks for the variable <samp><span class="env">BASH_ENV</span></samp> 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:
-<pre class="example"> <code>if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi</code>
-</pre>
- <p class="noindent">but the value of the <samp><span class="env">PATH</span></samp> variable is not used to search for the
-file name.
-
- <p>As noted above, if a non-interactive shell is invoked with the
-<samp><span class="option">--login</span></samp> option, Bash attempts to read and execute commands from the
-login shell startup files.
-
-<h5 class="subsubheading">Invoked with name <code>sh</code></h5>
-
-<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 <span class="sc">posix</span> standard as well.
-
- <p>When invoked as an interactive login shell, or as a non-interactive
-shell with the <samp><span class="option">--login</span></samp> option, it first attempts to read
-and execute commands from <samp><span class="file">/etc/profile</span></samp> and <samp><span class="file">~/.profile</span></samp>, in
-that order.
-The <samp><span class="option">--noprofile</span></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 <samp><span class="env">ENV</span></samp>, 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><span class="option">--rcfile</span></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>When invoked as <code>sh</code>, Bash enters <span class="sc">posix</span> mode after
-the startup files are read.
-
-<h5 class="subsubheading">Invoked in <span class="sc">posix</span> mode</h5>
-
-<p>When Bash is started in <span class="sc">posix</span> mode, as with the
-<samp><span class="option">--posix</span></samp> command line option, it follows the <span class="sc">posix</span> standard
-for startup files.
-In this mode, interactive shells expand the <samp><span class="env">ENV</span></samp> variable
-and commands are read and executed from the file whose name is the
-expanded value.
-No other startup files are read.
-
-<h5 class="subsubheading">Invoked by remote shell daemon</h5>
-
-<p>Bash attempts to determine when it is being run by the remote shell
-daemon, usually <code>rshd</code>. If Bash determines it is being run by
-rshd, it reads and executes commands from <samp><span class="file">~/.bashrc</span></samp>, if that
-file exists and is readable.
-It will not do this if invoked as <code>sh</code>.
-The <samp><span class="option">--norc</span></samp> option may be used to inhibit this behavior, and the
-<samp><span class="option">--rcfile</span></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.
-
-<h5 class="subsubheading">Invoked with unequal effective and real <span class="sc">uid/gid</span>s</h5>
-
-<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 <samp><span class="env">SHELLOPTS</span></samp> 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.
-
-<div class="node">
-<p><hr>
-<a name="Interactive-Shells"></a>
-Next: <a rel="next" accesskey="n" href="#Bash-Conditional-Expressions">Bash Conditional Expressions</a>,
-Previous: <a rel="previous" accesskey="p" href="#Bash-Startup-Files">Bash Startup Files</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.3 Interactive Shells</h3>
-
-<p><a name="index-interactive-shell-235"></a><a name="index-shell_002c-interactive-236"></a>
-
-<ul class="menu">
-<li><a accesskey="1" href="#What-is-an-Interactive-Shell_003f">What is an Interactive Shell?</a>: What determines whether a shell is Interactive.
-<li><a accesskey="2" href="#Is-this-Shell-Interactive_003f">Is this Shell Interactive?</a>: How to tell if a shell is interactive.
-<li><a accesskey="3" href="#Interactive-Shell-Behavior">Interactive Shell Behavior</a>: What changes in a interactive shell?
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="What-is-an-Interactive-Shell%3f"></a>
-<a name="What-is-an-Interactive-Shell_003f"></a>
-Next: <a rel="next" accesskey="n" href="#Is-this-Shell-Interactive_003f">Is this Shell Interactive?</a>,
-Up: <a rel="up" accesskey="u" href="#Interactive-Shells">Interactive Shells</a>
-
-</div>
-
-<h4 class="subsection">6.3.1 What is an Interactive Shell?</h4>
-
-<p>An interactive shell
-is one started without non-option arguments, unless <samp><span class="option">-s</span></samp> is
-specified, without specifying the <samp><span class="option">-c</span></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><span class="option">-i</span></samp> option.
-
- <p>An interactive shell generally reads from and writes to a user's
-terminal.
-
- <p>The <samp><span class="option">-s</span></samp> invocation option may be used to set the positional parameters
-when an interactive shell is started.
-
-<div class="node">
-<p><hr>
-<a name="Is-this-Shell-Interactive%3f"></a>
-<a name="Is-this-Shell-Interactive_003f"></a>
-Next: <a rel="next" accesskey="n" href="#Interactive-Shell-Behavior">Interactive Shell Behavior</a>,
-Previous: <a rel="previous" accesskey="p" href="#What-is-an-Interactive-Shell_003f">What is an Interactive Shell?</a>,
-Up: <a rel="up" accesskey="u" href="#Interactive-Shells">Interactive Shells</a>
-
-</div>
-
-<h4 class="subsection">6.3.2 Is this Shell Interactive?</h4>
-
-<p>To determine within a startup script whether or not Bash is
-running interactively,
-test the value of the `<samp><span class="samp">-</span></samp>' special parameter.
-It contains <code>i</code> when the shell is interactive. For example:
-
-<pre class="example"> case "$-" in
- *i*) echo This shell is interactive ;;
- *) echo This shell is not interactive ;;
- esac
-</pre>
- <p>Alternatively, startup scripts may examine the variable
-<samp><span class="env">PS1</span></samp>; it is unset in non-interactive shells, and set in
-interactive shells. Thus:
-
-<pre class="example"> if [ -z "$PS1" ]; then
- echo This shell is not interactive
- else
- echo This shell is interactive
- fi
-</pre>
- <div class="node">
-<p><hr>
-<a name="Interactive-Shell-Behavior"></a>
-Previous: <a rel="previous" accesskey="p" href="#Is-this-Shell-Interactive_003f">Is this Shell Interactive?</a>,
-Up: <a rel="up" accesskey="u" href="#Interactive-Shells">Interactive Shells</a>
-
-</div>
-
-<h4 class="subsection">6.3.3 Interactive Shell Behavior</h4>
-
-<p>When the shell is running interactively, it changes its behavior in
-several ways.
-
- <ol type=1 start=1>
-<li>Startup files are read and executed as described in <a href="#Bash-Startup-Files">Bash Startup Files</a>.
-
- <li>Job Control (see <a href="#Job-Control">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>.
-
- <li>Bash expands and displays <samp><span class="env">PS1</span></samp> before reading the first line
-of a command, and expands and displays <samp><span class="env">PS2</span></samp> before reading the
-second and subsequent lines of a multi-line command.
-
- <li>Bash executes the value of the <samp><span class="env">PROMPT_COMMAND</span></samp> variable as a command
-before printing the primary prompt, <samp><span class="env">$PS1</span></samp>
-(see <a href="#Bash-Variables">Bash Variables</a>).
-
- <li>Readline (see <a href="#Command-Line-Editing">Command Line Editing</a>) is used to read commands from
-the user's terminal.
-
- <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 <a href="#The-Set-Builtin">The Set Builtin</a>).
-
- <li>Command history (see <a href="#Bash-History-Facilities">Bash History Facilities</a>)
-and history expansion (see <a href="#History-Interaction">History Interaction</a>)
-are enabled by default.
-Bash will save the command history to the file named by <samp><span class="env">$HISTFILE</span></samp>
-when an interactive shell exits.
-
- <li>Alias expansion (see <a href="#Aliases">Aliases</a>) is performed by default.
-
- <li>In the absence of any traps, Bash ignores <code>SIGTERM</code>
-(see <a href="#Signals">Signals</a>).
-
- <li>In the absence of any traps, <code>SIGINT</code> is caught and handled
-((see <a href="#Signals">Signals</a>).
-<code>SIGINT</code> will interrupt some shell builtins.
-
- <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 <a href="#Signals">Signals</a>).
-
- <li>The <samp><span class="option">-n</span></samp> invocation option is ignored, and `<samp><span class="samp">set -n</span></samp>' has
-no effect (see <a href="#The-Set-Builtin">The Set Builtin</a>).
-
- <li>Bash will check for mail periodically, depending on the values of the
-<samp><span class="env">MAIL</span></samp>, <samp><span class="env">MAILPATH</span></samp>, and <samp><span class="env">MAILCHECK</span></samp> shell variables
-(see <a href="#Bash-Variables">Bash Variables</a>).
-
- <li>Expansion errors due to references to unbound shell variables after
-`<samp><span class="samp">set -u</span></samp>' has been enabled will not cause the shell to exit
-(see <a href="#The-Set-Builtin">The Set Builtin</a>).
-
- <li>The shell will not exit on expansion errors caused by <var>var</var> being unset
-or null in <code>${</code><var>var</var><code>:?</code><var>word</var><code>}</code> expansions
-(see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
-
- <li>Redirection errors encountered by shell builtins will not cause the
-shell to exit.
-
- <li>When running in <span class="sc">posix</span> mode, a special builtin returning an error
-status will not cause the shell to exit (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
-
- <li>A failed <code>exec</code> will not cause the shell to exit
-(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
-
- <li>Parser syntax errors will not cause the shell to exit.
-
- <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="#The-Shopt-Builtin">The Shopt Builtin</a>).
-
- <li>The shell will check the value of the <samp><span class="env">TMOUT</span></samp> variable and exit
-if a command is not read within the specified number of seconds after
-printing <samp><span class="env">$PS1</span></samp> (see <a href="#Bash-Variables">Bash Variables</a>).
-
- </ol>
-
-<div class="node">
-<p><hr>
-<a name="Bash-Conditional-Expressions"></a>
-Next: <a rel="next" accesskey="n" href="#Shell-Arithmetic">Shell Arithmetic</a>,
-Previous: <a rel="previous" accesskey="p" href="#Interactive-Shells">Interactive Shells</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.4 Bash Conditional Expressions</h3>
-
-<p><a name="index-expressions_002c-conditional-237"></a>
-Conditional expressions are used by the <code>[[</code> compound command
-and the <code>test</code> and <code>[</code> builtin commands.
-
- <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
-<samp><span class="file">/dev/fd/</span><var>N</var></samp>, then file descriptor <var>N</var> is checked.
-If the <var>file</var> argument to one of the primaries is one of
-<samp><span class="file">/dev/stdin</span></samp>, <samp><span class="file">/dev/stdout</span></samp>, or <samp><span class="file">/dev/stderr</span></samp>, file
-descriptor 0, 1, or 2, respectively, is checked.
-
- <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.
-
- <dl>
-<dt><code>-a </code><var>file</var><dd>True if <var>file</var> exists.
-
- <br><dt><code>-b </code><var>file</var><dd>True if <var>file</var> exists and is a block special file.
-
- <br><dt><code>-c </code><var>file</var><dd>True if <var>file</var> exists and is a character special file.
-
- <br><dt><code>-d </code><var>file</var><dd>True if <var>file</var> exists and is a directory.
-
- <br><dt><code>-e </code><var>file</var><dd>True if <var>file</var> exists.
-
- <br><dt><code>-f </code><var>file</var><dd>True if <var>file</var> exists and is a regular file.
-
- <br><dt><code>-g </code><var>file</var><dd>True if <var>file</var> exists and its set-group-id bit is set.
-
- <br><dt><code>-h </code><var>file</var><dd>True if <var>file</var> exists and is a symbolic link.
-
- <br><dt><code>-k </code><var>file</var><dd>True if <var>file</var> exists and its "sticky" bit is set.
-
- <br><dt><code>-p </code><var>file</var><dd>True if <var>file</var> exists and is a named pipe (FIFO).
-
- <br><dt><code>-r </code><var>file</var><dd>True if <var>file</var> exists and is readable.
-
- <br><dt><code>-s </code><var>file</var><dd>True if <var>file</var> exists and has a size greater than zero.
-
- <br><dt><code>-t </code><var>fd</var><dd>True if file descriptor <var>fd</var> is open and refers to a terminal.
-
- <br><dt><code>-u </code><var>file</var><dd>True if <var>file</var> exists and its set-user-id bit is set.
-
- <br><dt><code>-w </code><var>file</var><dd>True if <var>file</var> exists and is writable.
-
- <br><dt><code>-x </code><var>file</var><dd>True if <var>file</var> exists and is executable.
-
- <br><dt><code>-O </code><var>file</var><dd>True if <var>file</var> exists and is owned by the effective user id.
-
- <br><dt><code>-G </code><var>file</var><dd>True if <var>file</var> exists and is owned by the effective group id.
-
- <br><dt><code>-L </code><var>file</var><dd>True if <var>file</var> exists and is a symbolic link.
-
- <br><dt><code>-S </code><var>file</var><dd>True if <var>file</var> exists and is a socket.
-
- <br><dt><code>-N </code><var>file</var><dd>True if <var>file</var> exists and has been modified since it was last read.
-
- <br><dt><var>file1</var><code> -nt </code><var>file2</var><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.
-
- <br><dt><var>file1</var><code> -ot </code><var>file2</var><dd>True if <var>file1</var> is older than <var>file2</var>,
-or if <var>file2</var> exists and <var>file1</var> does not.
-
- <br><dt><var>file1</var><code> -ef </code><var>file2</var><dd>True if <var>file1</var> and <var>file2</var> refer to the same device and
-inode numbers.
-
- <br><dt><code>-o </code><var>optname</var><dd>True if shell option <var>optname</var> is enabled.
-The list of options appears in the description of the <samp><span class="option">-o</span></samp>
-option to the <code>set</code> builtin (see <a href="#The-Set-Builtin">The Set Builtin</a>).
-
- <br><dt><code>-z </code><var>string</var><dd>True if the length of <var>string</var> is zero.
-
- <br><dt><code>-n </code><var>string</var><dt><var>string</var><dd>True if the length of <var>string</var> is non-zero.
-
- <br><dt><var>string1</var><code> == </code><var>string2</var><dd>True if the strings are equal.
-`<samp><span class="samp">=</span></samp>' may be used in place of `<samp><span class="samp">==</span></samp>' for strict <span class="sc">posix</span> compliance.
-
- <br><dt><var>string1</var><code> != </code><var>string2</var><dd>True if the strings are not equal.
-
- <br><dt><var>string1</var><code> < </code><var>string2</var><dd>True if <var>string1</var> sorts before <var>string2</var> lexicographically
-in the current locale.
-
- <br><dt><var>string1</var><code> > </code><var>string2</var><dd>True if <var>string1</var> sorts after <var>string2</var> lexicographically
-in the current locale.
-
- <br><dt><var>arg1</var><code> OP </code><var>arg2</var><dd><code>OP</code> is one of
-`<samp><span class="samp">-eq</span></samp>', `<samp><span class="samp">-ne</span></samp>', `<samp><span class="samp">-lt</span></samp>', `<samp><span class="samp">-le</span></samp>', `<samp><span class="samp">-gt</span></samp>', or `<samp><span class="samp">-ge</span></samp>'.
-These arithmetic binary operators return true if <var>arg1</var>
-is equal to, not equal to, less than, less than or equal to,
-greater than, or greater than or equal to <var>arg2</var>,
-respectively. <var>Arg1</var> and <var>arg2</var>
-may be positive or negative integers.
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Shell-Arithmetic"></a>
-Next: <a rel="next" accesskey="n" href="#Aliases">Aliases</a>,
-Previous: <a rel="previous" accesskey="p" href="#Bash-Conditional-Expressions">Bash Conditional Expressions</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.5 Shell Arithmetic</h3>
-
-<p><a name="index-arithmetic_002c-shell-238"></a><a name="index-shell-arithmetic-239"></a><a name="index-expressions_002c-arithmetic-240"></a><a name="index-evaluation_002c-arithmetic-241"></a><a name="index-arithmetic-evaluation-242"></a>
-The shell allows arithmetic expressions to be evaluated, as one of
-the shell expansions or by the <code>let</code> and the <samp><span class="option">-i</span></samp> option
-to the <code>declare</code> builtins.
-
- <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.
-
- <dl>
-<dt><var>id</var><code>++ </code><var>id</var><code>--</code><dd>variable post-increment and post-decrement
-
- <br><dt><code>++</code><var>id</var><code> --</code><var>id</var><dd>variable pre-increment and pre-decrement
-
- <br><dt><code>- +</code><dd>unary minus and plus
-
- <br><dt><code>! ~</code><dd>logical and bitwise negation
-
- <br><dt><code>**</code><dd>exponentiation
-
- <br><dt><code>* / %</code><dd>multiplication, division, remainder
-
- <br><dt><code>+ -</code><dd>addition, subtraction
-
- <br><dt><code><< >></code><dd>left and right bitwise shifts
-
- <br><dt><code><= >= < ></code><dd>comparison
-
- <br><dt><code>== !=</code><dd>equality and inequality
-
- <br><dt><code>&</code><dd>bitwise AND
-
- <br><dt><code>^</code><dd>bitwise exclusive OR
-
- <br><dt><code>|</code><dd>bitwise OR
-
- <br><dt><code>&&</code><dd>logical AND
-
- <br><dt><code>||</code><dd>logical OR
-
- <br><dt><code>expr ? expr : expr</code><dd>conditional operator
-
- <br><dt><code>= *= /= %= += -= <<= >>= &= ^= |=</code><dd>assignment
-
- <br><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><span class="samp">declare -i</span></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>Constants with a leading 0 are interpreted as octal numbers.
-A leading `<samp><span class="samp">0x</span></samp>' or `<samp><span class="samp">0X</span></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><span class="samp">@</span></samp>', and `<samp><span class="samp">_</span></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>Operators are evaluated in order of precedence. Sub-expressions in
-parentheses are evaluated first and may override the precedence
-rules above.
-
-<div class="node">
-<p><hr>
-<a name="Aliases"></a>
-Next: <a rel="next" accesskey="n" href="#Arrays">Arrays</a>,
-Previous: <a rel="previous" accesskey="p" href="#Shell-Arithmetic">Shell Arithmetic</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.6 Aliases</h3>
-
-<p><a name="index-alias-expansion-243"></a>
-<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>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><span class="samp">/</span></samp>', `<samp><span class="samp">$</span></samp>', `<samp><span class="samp">`</span></samp>', `<samp><span class="samp">=</span></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>Aliases are created and listed with the <code>alias</code>
-command, and removed with the <code>unalias</code> command.
-
- <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 <a href="#Shell-Functions">Shell Functions</a>).
-
- <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 <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
-
- <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>For almost every purpose, shell functions are preferred over aliases.
-
-<div class="node">
-<p><hr>
-<a name="Arrays"></a>
-Next: <a rel="next" accesskey="n" href="#The-Directory-Stack">The Directory Stack</a>,
-Previous: <a rel="previous" accesskey="p" href="#Aliases">Aliases</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.7 Arrays</h3>
-
-<p><a name="index-arrays-244"></a>
-Bash provides one-dimensional array variables. Any variable may be used as
-an 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. Arrays are zero-based.
-
- <p>An array is created automatically if any variable is assigned to using
-the syntax
-<pre class="example"> name[<var>subscript</var>]=<var>value</var>
-</pre>
- <p class="noindent">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
-<pre class="example"> declare -a <var>name</var>
-</pre>
- <p class="noindent">The syntax
-<pre class="example"> declare -a <var>name</var>[<var>subscript</var>]
-</pre>
- <p class="noindent">is also accepted; the <var>subscript</var> is ignored. 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>Arrays are assigned to using compound assignments of the form
-<pre class="example"> name=(value<var>1</var> ... value<var>n</var>)
-</pre>
- <p class="noindent">where each
-<var>value</var> is of the form <code>[[</code><var>subscript</var><code>]=]</code><var>string</var>. 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.
-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>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><span class="samp">@</span></samp>' or `<samp><span class="samp">*</span></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
-<samp><span class="env">IFS</span></samp> 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><span class="samp">@</span></samp>' and `<samp><span class="samp">*</span></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><span class="samp">@</span></samp>' or
-`<samp><span class="samp">*</span></samp>', the expansion is the number of elements in the array.
-Referencing an array variable without a subscript is equivalent to
-referencing element zero.
-
- <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><span class="samp">*</span></samp>' or `<samp><span class="samp">@</span></samp>' also removes the
-entire array.
-
- <p>The <code>declare</code>, <code>local</code>, and <code>readonly</code>
-builtins each accept a <samp><span class="option">-a</span></samp>
-option to specify an array. The <code>read</code>
-builtin accepts a <samp><span class="option">-a</span></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.
-
-<div class="node">
-<p><hr>
-<a name="The-Directory-Stack"></a>
-Next: <a rel="next" accesskey="n" href="#Printing-a-Prompt">Printing a Prompt</a>,
-Previous: <a rel="previous" accesskey="p" href="#Arrays">Arrays</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.8 The Directory Stack</h3>
-
-<p><a name="index-directory-stack-245"></a>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Directory-Stack-Builtins">Directory Stack Builtins</a>: Bash builtin commands to manipulate
- the directory stack.
-</ul>
-
- <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>The contents of the directory stack are also visible
-as the value of the <samp><span class="env">DIRSTACK</span></samp> shell variable.
-
-<div class="node">
-<p><hr>
-<a name="Directory-Stack-Builtins"></a>
-Up: <a rel="up" accesskey="u" href="#The-Directory-Stack">The Directory Stack</a>
-
-</div>
-
-<h4 class="subsection">6.8.1 Directory Stack Builtins</h4>
-
- <dl>
-<dt><code>dirs</code><dd><a name="index-dirs-246"></a>
- <pre class="example"> dirs [+<var>N</var> | -<var>N</var>] [-clpv]
- </pre>
- <p>Display the list of currently remembered directories. Directories
-are added to the list with the <code>pushd</code> command; the
-<code>popd</code> command removes directories from the list.
- <dl>
-<dt><code>+</code><var>N</var><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.
-<br><dt><code>-</code><var>N</var><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.
-<br><dt><code>-c</code><dd>Clears the directory stack by deleting all of the elements.
-<br><dt><code>-l</code><dd>Produces a longer listing; the default listing format uses a
-tilde to denote the home directory.
-<br><dt><code>-p</code><dd>Causes <code>dirs</code> to print the directory stack with one entry per
-line.
-<br><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>
-
- <br><dt><code>popd</code><dd><a name="index-popd-247"></a>
- <pre class="example"> popd [+<var>N</var> | -<var>N</var>] [-n]
- </pre>
- <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>
-<dt><code>+</code><var>N</var><dd>Removes the <var>N</var>th directory (counting from the left of the
-list printed by <code>dirs</code>), starting with zero.
-<br><dt><code>-</code><var>N</var><dd>Removes the <var>N</var>th directory (counting from the right of the
-list printed by <code>dirs</code>), starting with zero.
-<br><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="index-pushd-248"></a><br><dt><code>pushd</code><dd>
- <pre class="example"> pushd [-n] [<var>+N</var> | <var>-N</var> | <var>dir</var> ]
- </pre>
- <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.
-
- <dl>
-<dt><code>-n</code><dd>Suppresses the normal change of directory when adding directories
-to the stack, so that only the stack is manipulated.
-<br><dt><code>+</code><var>N</var><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.
-<br><dt><code>-</code><var>N</var><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.
-<br><dt><var>dir</var><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>
-
-</dl>
-
-<div class="node">
-<p><hr>
-<a name="Printing-a-Prompt"></a>
-Next: <a rel="next" accesskey="n" href="#The-Restricted-Shell">The Restricted Shell</a>,
-Previous: <a rel="previous" accesskey="p" href="#The-Directory-Stack">The Directory Stack</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.9 Controlling the Prompt</h3>
-
-<p><a name="index-prompting-249"></a>
-The value of the variable <samp><span class="env">PROMPT_COMMAND</span></samp> is examined just before
-Bash prints each primary prompt. If <samp><span class="env">PROMPT_COMMAND</span></samp> 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>In addition, the following table describes the special characters which
-can appear in the prompt variables:
-
- <dl>
-<dt><code>\a</code><dd>A bell character.
-<br><dt><code>\d</code><dd>The date, in "Weekday Month Date" format (e.g., "Tue May 26").
-<br><dt><code>\D{</code><var>format</var><code>}</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.
-<br><dt><code>\e</code><dd>An escape character.
-<br><dt><code>\h</code><dd>The hostname, up to the first `.'.
-<br><dt><code>\H</code><dd>The hostname.
-<br><dt><code>\j</code><dd>The number of jobs currently managed by the shell.
-<br><dt><code>\l</code><dd>The basename of the shell's terminal device name.
-<br><dt><code>\n</code><dd>A newline.
-<br><dt><code>\r</code><dd>A carriage return.
-<br><dt><code>\s</code><dd>The name of the shell, the basename of <code>$0</code> (the portion
-following the final slash).
-<br><dt><code>\t</code><dd>The time, in 24-hour HH:MM:SS format.
-<br><dt><code>\T</code><dd>The time, in 12-hour HH:MM:SS format.
-<br><dt><code>\@</code><dd>The time, in 12-hour am/pm format.
-<br><dt><code>\A</code><dd>The time, in 24-hour HH:MM format.
-<br><dt><code>\u</code><dd>The username of the current user.
-<br><dt><code>\v</code><dd>The version of Bash (e.g., 2.00)
-<br><dt><code>\V</code><dd>The release of Bash, version + patchlevel (e.g., 2.00.0)
-<br><dt><code>\w</code><dd>The current working directory, with <samp><span class="env">$HOME</span></samp> abbreviated with a tilde.
-<br><dt><code>\W</code><dd>The basename of <samp><span class="env">$PWD</span></samp>, with <samp><span class="env">$HOME</span></samp> abbreviated with a tilde.
-<br><dt><code>\!</code><dd>The history number of this command.
-<br><dt><code>\#</code><dd>The command number of this command.
-<br><dt><code>\$</code><dd>If the effective uid is 0, <code>#</code>, otherwise <code>$</code>.
-<br><dt><code>\</code><var>nnn</var><dd>The character whose ASCII code is the octal value <var>nnn</var>.
-<br><dt><code>\\</code><dd>A backslash.
-<br><dt><code>\[</code><dd>Begin a sequence of non-printing characters. This could be used to
-embed a terminal control sequence into the prompt.
-<br><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 <a href="#Bash-History-Facilities">Bash History Facilities</a>), while the command number is
-the position in the sequence of commands executed during the current
-shell session.
-
- <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 <a href="#Bash-Builtins">Bash Builtins</a>).
-
-<div class="node">
-<p><hr>
-<a name="The-Restricted-Shell"></a>
-Next: <a rel="next" accesskey="n" href="#Bash-POSIX-Mode">Bash POSIX Mode</a>,
-Previous: <a rel="previous" accesskey="p" href="#Printing-a-Prompt">Printing a Prompt</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.10 The Restricted Shell</h3>
-
-<p><a name="index-restricted-shell-250"></a>
-If Bash is started with the name <code>rbash</code>, or the
-<samp><span class="option">--restricted</span></samp>
-or
-<samp><span class="option">-r</span></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:
-
- <ul>
-<li>Changing directories with the <code>cd</code> builtin.
-<li>Setting or unsetting the values of the <samp><span class="env">SHELL</span></samp>, <samp><span class="env">PATH</span></samp>,
-<samp><span class="env">ENV</span></samp>, or <samp><span class="env">BASH_ENV</span></samp> 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><span class="option">-p</span></samp>
-option to the <code>hash</code> builtin command.
-<li>Importing function definitions from the shell environment at startup.
-<li>Parsing the value of <samp><span class="env">SHELLOPTS</span></samp> from the shell environment at startup.
-<li>Redirecting output using the `<samp><span class="samp">></span></samp>', `<samp><span class="samp">>|</span></samp>', `<samp><span class="samp"><></span></samp>', `<samp><span class="samp">>&</span></samp>',
-`<samp><span class="samp">&></span></samp>', and `<samp><span class="samp">>></span></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><span class="option">-f</span></samp> and <samp><span class="option">-d</span></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><span class="option">-p</span></samp> option to the <code>command</code> builtin.
-<li>Turning off restricted mode with `<samp><span class="samp">set +r</span></samp>' or `<samp><span class="samp">set +o restricted</span></samp>'.
-</ul>
-
- <p>These restrictions are enforced after any startup files are read.
-
- <p>When a command that is found to be a shell script is executed
-(see <a href="#Shell-Scripts">Shell Scripts</a>), <code>rbash</code> turns off any restrictions in
-the shell spawned to execute the script.
-
-<div class="node">
-<p><hr>
-<a name="Bash-POSIX-Mode"></a>
-Previous: <a rel="previous" accesskey="p" href="#The-Restricted-Shell">The Restricted Shell</a>,
-Up: <a rel="up" accesskey="u" href="#Bash-Features">Bash Features</a>
-
-</div>
-
-<h3 class="section">6.11 Bash POSIX Mode</h3>
-
-<p><a name="index-POSIX-Mode-251"></a>
-Starting Bash with the <samp><span class="option">--posix</span></samp> command-line option or executing
-`<samp><span class="samp">set -o posix</span></samp>' while Bash is running will cause Bash to conform more
-closely to the <span class="sc">posix</span> standard by changing the behavior to
-match that specified by <span class="sc">posix</span> in areas where the Bash default differs.
-
- <p>When invoked as <code>sh</code>, Bash enters <span class="sc">posix</span> mode after reading the
-startup files.
-
- <p>The following list is what's changed when `<span class="sc">posix</span> mode' is in effect:
-
- <ol type=1 start=1>
-<li>When a command in the hash table no longer exists, Bash will re-search
-<samp><span class="env">$PATH</span></samp> to find the new location. This is also available with
-`<samp><span class="samp">shopt -s checkhash</span></samp>'.
-
- <li>The message printed by the job control code and builtins when a job
-exits with a non-zero status is `Done(status)'.
-
- <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>.
-
- <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.
-
- <li>Reserved words appearing in a context where reserved words are recognized
-do not undergo alias expansion.
-
- <li>The <span class="sc">posix</span> <samp><span class="env">PS1</span></samp> and <samp><span class="env">PS2</span></samp> expansions of `<samp><span class="samp">!</span></samp>' to
-the history number and `<samp><span class="samp">!!</span></samp>' to `<samp><span class="samp">!</span></samp>' are enabled,
-and parameter expansion is performed on the values of <samp><span class="env">PS1</span></samp> and
-<samp><span class="env">PS2</span></samp> regardless of the setting of the <code>promptvars</code> option.
-
- <li>The <span class="sc">posix</span> startup files are executed (<samp><span class="env">$ENV</span></samp>) rather than
-the normal Bash files.
-
- <li>Tilde expansion is only performed on assignments preceding a command
-name, rather than on all assignment statements on the line.
-
- <li>The default history file is <samp><span class="file">~/.sh_history</span></samp> (this is the
-default value of <samp><span class="env">$HISTFILE</span></samp>).
-
- <li>The output of `<samp><span class="samp">kill -l</span></samp>' prints all the signal names on a single line,
-separated by spaces, without the `<samp><span class="samp">SIG</span></samp>' prefix.
-
- <li>The <code>kill</code> builtin does not accept signal names with a `<samp><span class="samp">SIG</span></samp>'
-prefix.
-
- <li>Non-interactive shells exit if <var>filename</var> in <code>.</code> <var>filename</var>
-is not found.
-
- <li>Non-interactive shells exit if a syntax error in an arithmetic expansion
-results in an invalid expression.
-
- <li>Redirection operators do not perform filename expansion on the word
-in the redirection unless the shell is interactive.
-
- <li>Redirection operators do not perform word splitting on the word in the
-redirection.
-
- <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.
-
- <li><span class="sc">posix</span> special builtins are found before shell functions
-during command lookup.
-
- <li>If a <span class="sc">posix</span> 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.
-
- <li>If <samp><span class="env">CDPATH</span></samp> 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 <samp><span class="env">$CDPATH</span></samp>, 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.
-
- <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.
-
- <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.
-
- <li>Process substitution is not available.
-
- <li>Assignment statements preceding <span class="sc">posix</span> special builtins
-persist in the shell environment after the builtin completes.
-
- <li>Assignment statements preceding shell function calls persist in the
-shell environment after the function returns, as if a <span class="sc">posix</span>
-special builtin command had been executed.
-
- <li>The <code>export</code> and <code>readonly</code> builtin commands display their
-output in the format required by <span class="sc">posix</span>.
-
- <li>The <code>trap</code> builtin displays signal names without the leading
-<code>SIG</code>.
-
- <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><span class="samp">-</span></samp>' as the
-first argument.
-
- <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 <samp><span class="env">PATH</span></samp>.
-
- <li>Subshells spawned to execute command substitutions inherit the value of
-the <samp><span class="option">-e</span></samp> option from the parent shell. When not in <span class="sc">posix</span> mode,
-Bash clears the <samp><span class="option">-e</span></samp> option in such subshells.
-
- <li>Alias expansion is always enabled, even in non-interactive shells.
-
- <li>When the <code>alias</code> builtin displays alias definitions, it does not
-display them with a leading `<samp><span class="samp">alias </span></samp>' unless the <samp><span class="option">-p</span></samp> option
-is supplied.
-
- <li>When the <code>set</code> builtin is invoked without options, it does not display
-shell function names and definitions.
-
- <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.
-
- <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.
-
- <li>When the <code>pwd</code> builtin is supplied the <samp><span class="option">-P</span></samp> option, it resets
-<code>$PWD</code> to a pathname containing no symlinks.
-
- <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><span class="option">-P</span></samp> option.
-
- <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.
-
- <li>The default editor used by <code>fc</code> is <code>ed</code>.
-
- <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>.
-
- <li>The <code>vi</code> editing mode will invoke the <code>vi</code> editor directly when
-the `<samp><span class="samp">v</span></samp>' command is run, instead of checking <code>$FCEDIT</code> and
-<code>$EDITOR</code>.
-
- <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.
-
- </ol>
-
- <p>There is other <span class="sc">posix</span> behavior that Bash does not implement by
-default even when in <span class="sc">posix</span> mode.
-Specifically:
-
- <ol type=1 start=1>
-
- <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.
-
- <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.
-
- </ol>
-
- <p>Bash can be configured to be <span class="sc">posix</span>-conformant by default, by specifying
-the <samp><span class="option">--enable-strict-posix-default</span></samp> to <code>configure</code> when building
-(see <a href="#Optional-Features">Optional Features</a>).
-
-<div class="node">
-<p><hr>
-<a name="Job-Control"></a>
-Next: <a rel="next" accesskey="n" href="#Using-History-Interactively">Using History Interactively</a>,
-Previous: <a rel="previous" accesskey="p" href="#Bash-Features">Bash Features</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">7 Job Control</h2>
-
-<p>This chapter discusses what job control is, how it works, and how
-Bash allows you to access its facilities.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Job-Control-Basics">Job Control Basics</a>: How job control works.
-<li><a accesskey="2" href="#Job-Control-Builtins">Job Control Builtins</a>: Bash builtin commands used to interact
- with job control.
-<li><a accesskey="3" href="#Job-Control-Variables">Job Control Variables</a>: Variables Bash uses to customize job
- control.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Job-Control-Basics"></a>
-Next: <a rel="next" accesskey="n" href="#Job-Control-Builtins">Job Control Builtins</a>,
-Up: <a rel="up" accesskey="u" href="#Job-Control">Job Control</a>
-
-</div>
-
-<h3 class="section">7.1 Job Control Basics</h3>
-
-<p><a name="index-job-control-252"></a><a name="index-foreground-253"></a><a name="index-background-254"></a><a name="index-suspending-jobs-255"></a>
-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>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:
-<pre class="example"> [1] 25647
-</pre>
- <p class="noindent">indicating that this job is job number 1 and that the process <span class="sc">id</span>
-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>To facilitate the implementation of the user interface to job
-control, the operating system maintains the notion of a current terminal
-process group <span class="sc">id</span>. Members of this process group (processes whose
-process group <span class="sc">id</span> is equal to the current terminal process group
-<span class="sc">id</span>) 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 <span class="sc">id</span> 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>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><span class="samp">^Z</span></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><span class="samp">^Y</span></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><span class="samp">^Z</span></samp>'
-takes effect immediately, and has the additional side effect of
-causing pending output and typeahead to be discarded.
-
- <p>There are a number of ways to refer to a job in the shell. The
-character `<samp><span class="samp">%</span></samp>' introduces a job name.
-
- <p>Job number <code>n</code> may be referred to as `<samp><span class="samp">%n</span></samp>'.
-The symbols `<samp><span class="samp">%%</span></samp>' and `<samp><span class="samp">%+</span></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><span class="samp">%</span></samp>' (with no accompanying job specification) also refers
-to the current job.
-The previous job may be referenced using `<samp><span class="samp">%-</span></samp>'. In output
-pertaining to jobs (e.g., the output of the <code>jobs</code> command),
-the current job is always flagged with a `<samp><span class="samp">+</span></samp>', and the
-previous job with a `<samp><span class="samp">-</span></samp>'.
-
- <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><span class="samp">%ce</span></samp>' refers
-to a stopped <code>ce</code> job. Using `<samp><span class="samp">%?ce</span></samp>', on the
-other hand, refers to any job containing the string `<samp><span class="samp">ce</span></samp>' in
-its command line. If the prefix or substring matches more than one job,
-Bash reports an error.
-
- <p>Simply naming a job can be used to bring it into the foreground:
-`<samp><span class="samp">%1</span></samp>' is a synonym for `<samp><span class="samp">fg %1</span></samp>', bringing job 1 from the
-background into the foreground. Similarly, `<samp><span class="samp">%1 &</span></samp>' resumes
-job 1 in the background, equivalent to `<samp><span class="samp">bg %1</span></samp>'
-
- <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><span class="option">-b</span></samp> option to the <code>set</code> builtin is enabled,
-Bash reports such changes immediately (see <a href="#The-Set-Builtin">The Set Builtin</a>).
-Any trap on <code>SIGCHLD</code> is executed for each child process
-that exits.
-
- <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="#The-Shopt-Builtin">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.
-
-<div class="node">
-<p><hr>
-<a name="Job-Control-Builtins"></a>
-Next: <a rel="next" accesskey="n" href="#Job-Control-Variables">Job Control Variables</a>,
-Previous: <a rel="previous" accesskey="p" href="#Job-Control-Basics">Job Control Basics</a>,
-Up: <a rel="up" accesskey="u" href="#Job-Control">Job Control</a>
-
-</div>
-
-<h3 class="section">7.2 Job Control Builtins</h3>
-
- <dl>
-<dt><code>bg</code><dd><a name="index-bg-256"></a>
- <pre class="example"> bg [<var>jobspec</var> ...]
- </pre>
- <p>Resume each suspended job <var>jobspec</var> in the background, as if it
-had been started with `<samp><span class="samp">&</span></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.
-
- <br><dt><code>fg</code><dd><a name="index-fg-257"></a>
- <pre class="example"> fg [<var>jobspec</var>]
- </pre>
- <p>Resume the job <var>jobspec</var> in the foreground and make it the current job.
-If <var>jobspec</var> is not supplied, the current job is used.
-The return status is that of the command placed into the foreground,
-or non-zero if run when job control is disabled or, when run with
-job control enabled, <var>jobspec</var> does not specify a valid job or
-<var>jobspec</var> specifies a job that was started without job control.
-
- <br><dt><code>jobs</code><dd><a name="index-jobs-258"></a>
- <pre class="example"> jobs [-lnprs] [<var>jobspec</var>]
- jobs -x <var>command</var> [<var>arguments</var>]
- </pre>
- <p>The first form lists the active jobs. The options have the
-following meanings:
-
- <dl>
-<dt><code>-l</code><dd>List process <span class="sc">id</span>s in addition to the normal information.
-
- <br><dt><code>-n</code><dd>Display information only about jobs that have changed status since
-the user was last notified of their status.
-
- <br><dt><code>-p</code><dd>List only the process <span class="sc">id</span> of the job's process group leader.
-
- <br><dt><code>-r</code><dd>Restrict output to running jobs.
-
- <br><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>If the <samp><span class="option">-x</span></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 <span class="sc">id</span>, and executes <var>command</var>,
-passing it <var>argument</var>s, returning its exit status.
-
- <br><dt><code>kill</code><dd><a name="index-kill-259"></a>
- <pre class="example"> 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>
- <p>Send a signal specified by <var>sigspec</var> or <var>signum</var> to the process
-named by job specification <var>jobspec</var> or process <span class="sc">id</span> <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><span class="option">-l</span></samp> option lists the signal names.
-If any arguments are supplied when <samp><span class="option">-l</span></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.
-
- <br><dt><code>wait</code><dd><a name="index-wait-260"></a>
- <pre class="example"> wait [<var>jobspec</var> or <var>pid</var> ...]
- </pre>
- <p>Wait until the child process specified by each process <span class="sc">id</span> <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.
-
- <br><dt><code>disown</code><dd><a name="index-disown-261"></a>
- <pre class="example"> disown [-ar] [-h] [<var>jobspec</var> ...]
- </pre>
- <p>Without options, each <var>jobspec</var> is removed from the table of
-active jobs.
-If the <samp><span class="option">-h</span></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><span class="option">-a</span></samp> nor <samp><span class="option">-r</span></samp>
-option is supplied, the current job is used.
-If no <var>jobspec</var> is supplied, the <samp><span class="option">-a</span></samp> option means to remove or
-mark all jobs; the <samp><span class="option">-r</span></samp> option without a <var>jobspec</var>
-argument restricts operation to running jobs.
-
- <br><dt><code>suspend</code><dd><a name="index-suspend-262"></a>
- <pre class="example"> suspend [-f]
- </pre>
- <p>Suspend the execution of this shell until it receives a
-<code>SIGCONT</code> signal. The <samp><span class="option">-f</span></samp> option means to suspend
-even if the shell is a login shell.
-
-</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 <span class="sc">id</span>s.
-
-<div class="node">
-<p><hr>
-<a name="Job-Control-Variables"></a>
-Previous: <a rel="previous" accesskey="p" href="#Job-Control-Builtins">Job Control Builtins</a>,
-Up: <a rel="up" accesskey="u" href="#Job-Control">Job Control</a>
-
-</div>
-
-<h3 class="section">7.3 Job Control Variables</h3>
-
- <dl>
-<dt><code>auto_resume</code><a name="index-auto_005fresume-263"></a><dd>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><span class="samp">exact</span></samp>',
-the string supplied must match the name of a stopped job exactly;
-if set to `<samp><span class="samp">substring</span></samp>',
-the string supplied needs to match a substring of the name of a
-stopped job. The `<samp><span class="samp">substring</span></samp>' value provides functionality
-analogous to the `<samp><span class="samp">%?</span></samp>' job <span class="sc">id</span> (see <a href="#Job-Control-Basics">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><span class="samp">%</span></samp>' job <span class="sc">id</span>.
-
-</dl>
-
- <p><a name="index-Readline_002c-how-to-use-264"></a>
-
-<!-- %**start of header (This is for running Texinfo on a region.) -->
-<!-- %**end of header (This is for running Texinfo on a region.) -->
-<!-- If you are including this manual as an appendix, then set the -->
-<!-- variable readline-appendix. -->
-<div class="node">
-<p><hr>
-<a name="Command-Line-Editing"></a>
-Next: <a rel="next" accesskey="n" href="#Installing-Bash">Installing Bash</a>,
-Previous: <a rel="previous" accesskey="p" href="#Using-History-Interactively">Using History Interactively</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">8 Command Line Editing</h2>
-
-<p>This chapter describes the basic features of the <span class="sc">gnu</span>
-command line editing interface.
-Command line editing is provided by the Readline library, which is
-used by several different programs, including Bash.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Introduction-and-Notation">Introduction and Notation</a>: Notation used in this text.
-<li><a accesskey="2" href="#Readline-Interaction">Readline Interaction</a>: The minimum set of commands for editing a line.
-<li><a accesskey="3" href="#Readline-Init-File">Readline Init File</a>: Customizing Readline from a user's view.
-<li><a accesskey="4" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>: A description of most of the Readline commands
- available for binding
-<li><a accesskey="5" href="#Readline-vi-Mode">Readline vi Mode</a>: A short description of how to make Readline
- behave like the vi editor.
-
-<li><a accesskey="6" href="#Programmable-Completion">Programmable Completion</a>: How to specify the possible completions for
- a specific command.
-<li><a accesskey="7" href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a>: Builtin commands to specify how to
- complete arguments for a particular command.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Introduction-and-Notation"></a>
-Next: <a rel="next" accesskey="n" href="#Readline-Interaction">Readline Interaction</a>,
-Up: <a rel="up" accesskey="u" href="#Command-Line-Editing">Command Line Editing</a>
-
-</div>
-
-<h3 class="section">8.1 Introduction to Line Editing</h3>
-
-<p>The following paragraphs describe the notation used to represent
-keystrokes.
-
- <p>The text <kbd>C-k</kbd> is read as `Control-K' and describes the character
-produced when the <k> key is pressed while the Control key
-is depressed.
-
- <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 <k>
-key is pressed.
-The Meta key is labeled <ALT> on many keyboards.
-On keyboards with two keys labeled <ALT> (usually to either side of
-the space bar), the <ALT> on the left side is generally set to
-work as a Meta key.
-The <ALT> 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>If you do not have a Meta or <ALT> key, or another key working as
-a Meta key, the identical keystroke can be generated by typing <ESC>
-<em>first</em>, and then typing <k>.
-Either process is known as <dfn>metafying</dfn> the <k> key.
-
- <p>The text <kbd>M-C-k</kbd> is read as `Meta-Control-k' and describes the
-character produced by <dfn>metafying</dfn> <kbd>C-k</kbd>.
-
- <p>In addition, several keys have their own names. Specifically,
-<DEL>, <ESC>, <LFD>, <SPC>, <RET>, and <TAB> all
-stand for themselves when seen in this text, or in an init file
-(see <a href="#Readline-Init-File">Readline Init File</a>).
-If your keyboard lacks a <LFD> key, typing <C-j> will
-produce the desired character.
-The <RET> key may be labeled <Return> or <Enter> on
-some keyboards.
-
-<div class="node">
-<p><hr>
-<a name="Readline-Interaction"></a>
-Next: <a rel="next" accesskey="n" href="#Readline-Init-File">Readline Init File</a>,
-Previous: <a rel="previous" accesskey="p" href="#Introduction-and-Notation">Introduction and Notation</a>,
-Up: <a rel="up" accesskey="u" href="#Command-Line-Editing">Command Line Editing</a>
-
-</div>
-
-<h3 class="section">8.2 Readline Interaction</h3>
-
-<p><a name="index-interaction_002c-readline-265"></a>
-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 <RET>. You do not have to be at the
-end of the line to press <RET>; the entire line is accepted
-regardless of the location of the cursor within the line.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Readline-Bare-Essentials">Readline Bare Essentials</a>: The least you need to know about Readline.
-<li><a accesskey="2" href="#Readline-Movement-Commands">Readline Movement Commands</a>: Moving about the input line.
-<li><a accesskey="3" href="#Readline-Killing-Commands">Readline Killing Commands</a>: How to delete text, and how to get it back!
-<li><a accesskey="4" href="#Readline-Arguments">Readline Arguments</a>: Giving numeric arguments to commands.
-<li><a accesskey="5" href="#Searching">Searching</a>: Searching through previous lines.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Readline-Bare-Essentials"></a>
-Next: <a rel="next" accesskey="n" href="#Readline-Movement-Commands">Readline Movement Commands</a>,
-Up: <a rel="up" accesskey="u" href="#Readline-Interaction">Readline Interaction</a>
-
-</div>
-
-<h4 class="subsection">8.2.1 Readline Bare Essentials</h4>
-
-<p><a name="index-notation_002c-readline-266"></a><a name="index-command-editing-267"></a><a name="index-editing-command-lines-268"></a>
-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>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>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.
-
- <dl>
-<dt><kbd>C-b</kbd><dd>Move back one character.
-<br><dt><kbd>C-f</kbd><dd>Move forward one character.
-<br><dt><DEL> or <Backspace><dd>Delete the character to the left of the cursor.
-<br><dt><kbd>C-d</kbd><dd>Delete the character underneath the cursor.
-<br><dt>Printing characters<!-- /@w --><dd>Insert the character into the line at the cursor.
-<br><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 class="noindent">(Depending on your configuration, the <Backspace> key be set to
-delete the character to the left of the cursor and the <DEL> key set
-to delete the character underneath the cursor, like <kbd>C-d</kbd>, rather
-than the character to the left of the cursor.)
-
-<div class="node">
-<p><hr>
-<a name="Readline-Movement-Commands"></a>
-Next: <a rel="next" accesskey="n" href="#Readline-Killing-Commands">Readline Killing Commands</a>,
-Previous: <a rel="previous" accesskey="p" href="#Readline-Bare-Essentials">Readline Bare Essentials</a>,
-Up: <a rel="up" accesskey="u" href="#Readline-Interaction">Readline Interaction</a>
-
-</div>
-
-<h4 class="subsection">8.2.2 Readline Movement Commands</h4>
-
-<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 <DEL>. Here are some commands for moving more rapidly
-about the line.
-
- <dl>
-<dt><kbd>C-a</kbd><dd>Move to the start of the line.
-<br><dt><kbd>C-e</kbd><dd>Move to the end of the line.
-<br><dt><kbd>M-f</kbd><dd>Move forward a word, where a word is composed of letters and digits.
-<br><dt><kbd>M-b</kbd><dd>Move backward a word.
-<br><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.
-
-<div class="node">
-<p><hr>
-<a name="Readline-Killing-Commands"></a>
-Next: <a rel="next" accesskey="n" href="#Readline-Arguments">Readline Arguments</a>,
-Previous: <a rel="previous" accesskey="p" href="#Readline-Movement-Commands">Readline Movement Commands</a>,
-Up: <a rel="up" accesskey="u" href="#Readline-Interaction">Readline Interaction</a>
-
-</div>
-
-<h4 class="subsection">8.2.3 Readline Killing Commands</h4>
-
-<p><a name="index-killing-text-269"></a><a name="index-yanking-text-270"></a>
-<dfn>Killing</dfn> text means to delete the text from the line, but to save
-it away for later use, usually by <dfn>yanking</dfn> (re-inserting)
-it back into the line.
-(`Cut' and `paste' are more recent jargon for `kill' and `yank'.)
-
- <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>When you use a kill command, the text is saved in a <dfn>kill-ring</dfn>.
-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="index-kill-ring-271"></a>
-Here is the list of commands for killing text.
-
- <dl>
-<dt><kbd>C-k</kbd><dd>Kill the text from the current cursor position to the end of the line.
-
- <br><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>.
-
- <br><dt><kbd>M-<DEL></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>.
-
- <br><dt><kbd>C-w</kbd><dd>Kill from the cursor to the previous whitespace. This is different than
-<kbd>M-<DEL></kbd> because the word boundaries differ.
-
- </dl>
-
- <p>Here is how to <dfn>yank</dfn> the text back into the line. Yanking
-means to copy the most-recently-killed text from the kill buffer.
-
- <dl>
-<dt><kbd>C-y</kbd><dd>Yank the most recently killed text back into the buffer at the cursor.
-
- <br><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>
-
-<div class="node">
-<p><hr>
-<a name="Readline-Arguments"></a>
-Next: <a rel="next" accesskey="n" href="#Searching">Searching</a>,
-Previous: <a rel="previous" accesskey="p" href="#Readline-Killing-Commands">Readline Killing Commands</a>,
-Up: <a rel="up" accesskey="u" href="#Readline-Interaction">Readline Interaction</a>
-
-</div>
-
-<h4 class="subsection">8.2.4 Readline Arguments</h4>
-
-<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><span class="samp">M-- C-k</span></samp>'.
-
- <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><span class="samp">-</span></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><span class="samp">M-1 0 C-d</span></samp>',
-which will delete the next ten characters on the input line.
-
-<div class="node">
-<p><hr>
-<a name="Searching"></a>
-Previous: <a rel="previous" accesskey="p" href="#Readline-Arguments">Readline Arguments</a>,
-Up: <a rel="up" accesskey="u" href="#Readline-Interaction">Readline Interaction</a>
-
-</div>
-
-<h4 class="subsection">8.2.5 Searching for Commands in the History</h4>
-
-<p>Readline provides commands for searching through the command history
-(see <a href="#Bash-History-Facilities">Bash History Facilities</a>)
-for lines containing a specified string.
-There are two search modes: <dfn>incremental</dfn> and <dfn>non-incremental</dfn>.
-
- <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 <ESC> 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>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 <RET> 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>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>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.
-
-<div class="node">
-<p><hr>
-<a name="Readline-Init-File"></a>
-Next: <a rel="next" accesskey="n" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>,
-Previous: <a rel="previous" accesskey="p" href="#Readline-Interaction">Readline Interaction</a>,
-Up: <a rel="up" accesskey="u" href="#Command-Line-Editing">Command Line Editing</a>
-
-</div>
-
-<h3 class="section">8.3 Readline Init File</h3>
-
-<p><a name="index-initialization-file_002c-readline-272"></a>
-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 <dfn>inputrc</dfn> file, conventionally in his home directory.
-The name of this
-file is taken from the value of the shell variable <samp><span class="env">INPUTRC</span></samp>. If
-that variable is unset, the default is <samp><span class="file">~/.inputrc</span></samp>. If that
-file does not exist or cannot be read, the ultimate default is
-<samp><span class="file">/etc/inputrc</span></samp>.
-
- <p>When a program which uses the Readline library starts up, the
-init file is read, and the key bindings are set.
-
- <p>In addition, the <code>C-x C-r</code> command re-reads this init file, thus
-incorporating any changes that you might have made to it.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>: Syntax for the commands in the inputrc file.
-
-<li><a accesskey="2" href="#Conditional-Init-Constructs">Conditional Init Constructs</a>: Conditional key bindings in the inputrc file.
-
-<li><a accesskey="3" href="#Sample-Init-File">Sample Init File</a>: An example inputrc file.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Readline-Init-File-Syntax"></a>
-Next: <a rel="next" accesskey="n" href="#Conditional-Init-Constructs">Conditional Init Constructs</a>,
-Up: <a rel="up" accesskey="u" href="#Readline-Init-File">Readline Init File</a>
-
-</div>
-
-<h4 class="subsection">8.3.1 Readline Init File Syntax</h4>
-
-<p>There are only a few basic constructs allowed in the
-Readline init file. Blank lines are ignored.
-Lines beginning with a `<samp><span class="samp">#</span></samp>' are comments.
-Lines beginning with a `<samp><span class="samp">$</span></samp>' indicate conditional
-constructs (see <a href="#Conditional-Init-Constructs">Conditional Init Constructs</a>). Other lines
-denote variable settings and key bindings.
-
- <dl>
-<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:
-
- <pre class="example"> set <var>variable</var> <var>value</var>
- </pre>
- <p class="noindent">Here, for example, is how to
-change from the default Emacs-like key binding to use
-<code>vi</code> line editing commands:
-
- <pre class="example"> set editing-mode vi
- </pre>
- <p>Variable names and values, where appropriate, are recognized without regard
-to case. Unrecognized variable names are ignored.
-
- <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>The <code>bind -V</code><!-- /@w --> command lists the current Readline variable names
-and values. See <a href="#Bash-Builtins">Bash Builtins</a>.
-
- <p>A great deal of run-time behavior is changeable with the following
-variables.
-
- <p><a name="index-variables_002c-readline-273"></a>
- <dl>
-<dt><code>bell-style</code><dd><a name="index-bell_002dstyle-274"></a>Controls what happens when Readline wants to ring the terminal bell.
-If set to `<samp><span class="samp">none</span></samp>', Readline never rings the bell. If set to
-`<samp><span class="samp">visible</span></samp>', Readline uses a visible bell if one is available.
-If set to `<samp><span class="samp">audible</span></samp>' (the default), Readline attempts to ring
-the terminal's bell.
-
- <br><dt><code>bind-tty-special-chars</code><dd><a name="index-bind_002dtty_002dspecial_002dchars-275"></a>If set to `<samp><span class="samp">on</span></samp>', Readline attempts to bind the control characters
-treated specially by the kernel's terminal driver to their Readline
-equivalents.
-
- <br><dt><code>comment-begin</code><dd><a name="index-comment_002dbegin-276"></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>.
-
- <br><dt><code>completion-ignore-case</code><dd>If set to `<samp><span class="samp">on</span></samp>', Readline performs filename matching and completion
-in a case-insensitive fashion.
-The default value is `<samp><span class="samp">off</span></samp>'.
-
- <br><dt><code>completion-query-items</code><dd><a name="index-completion_002dquery_002ditems-277"></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>.
-
- <br><dt><code>convert-meta</code><dd><a name="index-convert_002dmeta-278"></a>If set to `<samp><span class="samp">on</span></samp>', Readline will convert characters with the
-eighth bit set to an <span class="sc">ascii</span> key sequence by stripping the eighth
-bit and prefixing an <ESC> character, converting them to a
-meta-prefixed key sequence. The default value is `<samp><span class="samp">on</span></samp>'.
-
- <br><dt><code>disable-completion</code><dd><a name="index-disable_002dcompletion-279"></a>If set to `<samp><span class="samp">On</span></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><span class="samp">off</span></samp>'.
-
- <br><dt><code>editing-mode</code><dd><a name="index-editing_002dmode-280"></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><span class="samp">emacs</span></samp>' or `<samp><span class="samp">vi</span></samp>'.
-
- <br><dt><code>enable-keypad</code><dd><a name="index-enable_002dkeypad-281"></a>When set to `<samp><span class="samp">on</span></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><span class="samp">off</span></samp>'.
-
- <br><dt><code>expand-tilde</code><dd><a name="index-expand_002dtilde-282"></a>If set to `<samp><span class="samp">on</span></samp>', tilde expansion is performed when Readline
-attempts word completion. The default is `<samp><span class="samp">off</span></samp>'.
-
- <br><dt><code>history-preserve-point</code><dd><a name="index-history_002dpreserve_002dpoint-283"></a>If set to `<samp><span class="samp">on</span></samp>', the history code attempts to place point at the
-same location on each history line retrieved with <code>previous-history</code>
-or <code>next-history</code>. The default is `<samp><span class="samp">off</span></samp>'.
-
- <br><dt><code>horizontal-scroll-mode</code><dd><a name="index-horizontal_002dscroll_002dmode-284"></a>This variable can be set to either `<samp><span class="samp">on</span></samp>' or `<samp><span class="samp">off</span></samp>'. Setting it
-to `<samp><span class="samp">on</span></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><span class="samp">off</span></samp>'.
-
- <br><dt><code>input-meta</code><dd><a name="index-input_002dmeta-285"></a><a name="index-meta_002dflag-286"></a>If set to `<samp><span class="samp">on</span></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><span class="samp">off</span></samp>'. The name <code>meta-flag</code> is a
-synonym for this variable.
-
- <br><dt><code>isearch-terminators</code><dd><a name="index-isearch_002dterminators-287"></a>The string of characters that should terminate an incremental search without
-subsequently executing the character as a command (see <a href="#Searching">Searching</a>).
-If this variable has not been given a value, the characters <ESC> and
-<kbd>C-J</kbd> will terminate an incremental search.
-
- <br><dt><code>keymap</code><dd><a name="index-keymap-288"></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.
-
- <br><dt><code>mark-directories</code><dd>If set to `<samp><span class="samp">on</span></samp>', completed directory names have a slash
-appended. The default is `<samp><span class="samp">on</span></samp>'.
-
- <br><dt><code>mark-modified-lines</code><dd><a name="index-mark_002dmodified_002dlines-289"></a>This variable, when set to `<samp><span class="samp">on</span></samp>', causes Readline to display an
-asterisk (`<samp><span class="samp">*</span></samp>') at the start of history lines which have been modified.
-This variable is `<samp><span class="samp">off</span></samp>' by default.
-
- <br><dt><code>mark-symlinked-directories</code><dd><a name="index-mark_002dsymlinked_002ddirectories-290"></a>If set to `<samp><span class="samp">on</span></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><span class="samp">off</span></samp>'.
-
- <br><dt><code>match-hidden-files</code><dd><a name="index-match_002dhidden_002dfiles-291"></a>This variable, when set to `<samp><span class="samp">on</span></samp>', causes Readline to match files whose
-names begin with a `<samp><span class="samp">.</span></samp>' (hidden files) when performing filename
-completion, unless the leading `<samp><span class="samp">.</span></samp>' is
-supplied by the user in the filename to be completed.
-This variable is `<samp><span class="samp">on</span></samp>' by default.
-
- <br><dt><code>output-meta</code><dd><a name="index-output_002dmeta-292"></a>If set to `<samp><span class="samp">on</span></samp>', Readline will display characters with the
-eighth bit set directly rather than as a meta-prefixed escape
-sequence. The default is `<samp><span class="samp">off</span></samp>'.
-
- <br><dt><code>page-completions</code><dd><a name="index-page_002dcompletions-293"></a>If set to `<samp><span class="samp">on</span></samp>', Readline uses an internal <code>more</code>-like pager
-to display a screenful of possible completions at a time.
-This variable is `<samp><span class="samp">on</span></samp>' by default.
-
- <br><dt><code>print-completions-horizontally</code><dd>If set to `<samp><span class="samp">on</span></samp>', Readline will display completions with matches
-sorted horizontally in alphabetical order, rather than down the screen.
-The default is `<samp><span class="samp">off</span></samp>'.
-
- <br><dt><code>show-all-if-ambiguous</code><dd><a name="index-show_002dall_002dif_002dambiguous-294"></a>This alters the default behavior of the completion functions. If
-set to `<samp><span class="samp">on</span></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><span class="samp">off</span></samp>'.
-
- <br><dt><code>show-all-if-unmodified</code><dd><a name="index-show_002dall_002dif_002dunmodified-295"></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><span class="samp">on</span></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><span class="samp">off</span></samp>'.
-
- <br><dt><code>visible-stats</code><dd><a name="index-visible_002dstats-296"></a>If set to `<samp><span class="samp">on</span></samp>', a character denoting a file's type
-is appended to the filename when listing possible
-completions. The default is `<samp><span class="samp">off</span></samp>'.
-
- </dl>
-
- <br><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>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>The <code>bind -p</code><!-- /@w --> command displays Readline function names and
-bindings in a format that can put directly into an initialization file.
-See <a href="#Bash-Builtins">Bash Builtins</a>.
-
- <dl>
-<dt><var>keyname</var>: <var>function-name</var> or <var>macro</var><!-- /@w --><dd><var>keyname</var> is the name of a key spelled out in English. For example:
- <pre class="example"> Control-u: universal-argument
- Meta-Rubout: backward-kill-word
- Control-o: "> output"
- </pre>
- <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><span class="samp">> output</span></samp>' into the line).
-
- <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>.
-
- <br><dt>"<var>keyseq</var>": <var>function-name</var> or <var>macro</var><!-- /@w --><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 <span class="sc">gnu</span> Emacs style key
-escapes can be used, as in the following example, but the
-special character names are not recognized.
-
- <pre class="example"> "\C-u": universal-argument
- "\C-x\C-r": re-read-init-file
- "\e[11~": "Function Key 1"
- </pre>
- <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><span class="samp"><ESC> <[> <1> <1> <~></span></samp>' is bound to insert
-the text `<samp><span class="samp">Function Key 1</span></samp>'.
-
- </dl>
-
- <p>The following <span class="sc">gnu</span> Emacs style escape sequences are available when
-specifying key sequences:
-
- <dl>
-<dt><kbd>\C-</kbd><dd>control prefix
-<br><dt><kbd>\M-</kbd><dd>meta prefix
-<br><dt><kbd>\e</kbd><dd>an escape character
-<br><dt><kbd>\\</kbd><dd>backslash
-<br><dt><kbd>\"</kbd><dd><">, a double quotation mark
-<br><dt><kbd>\'</kbd><dd><'>, a single quote or apostrophe
-</dl>
-
- <p>In addition to the <span class="sc">gnu</span> Emacs style escape sequences, a second
-set of backslash escapes is available:
-
- <dl>
-<dt><code>\a</code><dd>alert (bell)
-<br><dt><code>\b</code><dd>backspace
-<br><dt><code>\d</code><dd>delete
-<br><dt><code>\f</code><dd>form feed
-<br><dt><code>\n</code><dd>newline
-<br><dt><code>\r</code><dd>carriage return
-<br><dt><code>\t</code><dd>horizontal tab
-<br><dt><code>\v</code><dd>vertical tab
-<br><dt><code>\</code><var>nnn</var><dd>the eight-bit character whose value is the octal value <var>nnn</var>
-(one to three digits)
-<br><dt><code>\x</code><var>HH</var><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><span class="samp">"</span></samp>' and `<samp><span class="samp">'</span></samp>'.
-For example, the following binding will make `<samp><kbd>C-x</kbd><span class="samp"> \</span></samp>'
-insert a single `<samp><span class="samp">\</span></samp>' into the line:
- <pre class="example"> "\C-x\\": "\\"
- </pre>
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Conditional-Init-Constructs"></a>
-Next: <a rel="next" accesskey="n" href="#Sample-Init-File">Sample Init File</a>,
-Previous: <a rel="previous" accesskey="p" href="#Readline-Init-File-Syntax">Readline Init File Syntax</a>,
-Up: <a rel="up" accesskey="u" href="#Readline-Init-File">Readline Init File</a>
-
-</div>
-
-<h4 class="subsection">8.3.2 Conditional Init Constructs</h4>
-
-<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.
-
- <dl>
-<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.
-
- <dl>
-<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><span class="samp">set keymap</span></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.
-
- <br><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><span class="samp">=</span></samp>' is tested against both the full name of the terminal and
-the portion of the terminal name before the first `<samp><span class="samp">-</span></samp>'. This
-allows <code>sun</code> to match both <code>sun</code> and <code>sun-cmd</code>,
-for instance.
-
- <br><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:
- <pre class="example"> $if Bash
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- $endif
- </pre>
- </dl>
-
- <br><dt><code>$endif</code><dd>This command, as seen in the previous example, terminates an
-<code>$if</code> command.
-
- <br><dt><code>$else</code><dd>Commands in this branch of the <code>$if</code> directive are executed if
-the test fails.
-
- <br><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 <samp><span class="file">/etc/inputrc</span></samp>:
- <pre class="example"> $include /etc/inputrc
- </pre>
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Sample-Init-File"></a>
-Previous: <a rel="previous" accesskey="p" href="#Conditional-Init-Constructs">Conditional Init Constructs</a>,
-Up: <a rel="up" accesskey="u" href="#Readline-Init-File">Readline Init File</a>
-
-</div>
-
-<h4 class="subsection">8.3.3 Sample Init File</h4>
-
-<p>Here is an example of an <var>inputrc</var> file. This illustrates key
-binding, variable assignment, and conditional syntax.
-
-<pre class="example">
- # 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>
- <div class="node">
-<p><hr>
-<a name="Bindable-Readline-Commands"></a>
-Next: <a rel="next" accesskey="n" href="#Readline-vi-Mode">Readline vi Mode</a>,
-Previous: <a rel="previous" accesskey="p" href="#Readline-Init-File">Readline Init File</a>,
-Up: <a rel="up" accesskey="u" href="#Command-Line-Editing">Command Line Editing</a>
-
-</div>
-
-<h3 class="section">8.4 Bindable Readline Commands</h3>
-
-<ul class="menu">
-<li><a accesskey="1" href="#Commands-For-Moving">Commands For Moving</a>: Moving about the line.
-<li><a accesskey="2" href="#Commands-For-History">Commands For History</a>: Getting at previous lines.
-<li><a accesskey="3" href="#Commands-For-Text">Commands For Text</a>: Commands for changing text.
-<li><a accesskey="4" href="#Commands-For-Killing">Commands For Killing</a>: Commands for killing and yanking.
-<li><a accesskey="5" href="#Numeric-Arguments">Numeric Arguments</a>: Specifying numeric arguments, repeat counts.
-<li><a accesskey="6" href="#Commands-For-Completion">Commands For Completion</a>: Getting Readline to do the typing for you.
-<li><a accesskey="7" href="#Keyboard-Macros">Keyboard Macros</a>: Saving and re-executing typed characters
-<li><a accesskey="8" href="#Miscellaneous-Commands">Miscellaneous Commands</a>: Other miscellaneous commands.
-</ul>
-
-<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><!-- /@w --> or, for a more terse format, suitable for an
-<var>inputrc</var> file, <code>bind -p</code><!-- /@w -->. (See <a href="#Bash-Builtins">Bash Builtins</a>.)
-Command names without an accompanying key sequence are unbound by default.
-
- <p>In the following descriptions, <dfn>point</dfn> refers to the current cursor
-position, and <dfn>mark</dfn> 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 <dfn>region</dfn>.
-
-<div class="node">
-<p><hr>
-<a name="Commands-For-Moving"></a>
-Next: <a rel="next" accesskey="n" href="#Commands-For-History">Commands For History</a>,
-Up: <a rel="up" accesskey="u" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>
-
-</div>
-
-<h4 class="subsection">8.4.1 Commands For Moving</h4>
-
- <dl>
-<dt><code>beginning-of-line (C-a)</code><a name="index-beginning_002dof_002dline-_0028C_002da_0029-297"></a><dd>Move to the start of the current line.
-
- <br><dt><code>end-of-line (C-e)</code><a name="index-end_002dof_002dline-_0028C_002de_0029-298"></a><dd>Move to the end of the line.
-
- <br><dt><code>forward-char (C-f)</code><a name="index-forward_002dchar-_0028C_002df_0029-299"></a><dd>Move forward a character.
-
- <br><dt><code>backward-char (C-b)</code><a name="index-backward_002dchar-_0028C_002db_0029-300"></a><dd>Move back a character.
-
- <br><dt><code>forward-word (M-f)</code><a name="index-forward_002dword-_0028M_002df_0029-301"></a><dd>Move forward to the end of the next word. Words are composed of
-letters and digits.
-
- <br><dt><code>backward-word (M-b)</code><a name="index-backward_002dword-_0028M_002db_0029-302"></a><dd>Move back to the start of the current or previous word. Words are
-composed of letters and digits.
-
- <br><dt><code>clear-screen (C-l)</code><a name="index-clear_002dscreen-_0028C_002dl_0029-303"></a><dd>Clear the screen and redraw the current line,
-leaving the current line at the top of the screen.
-
- <br><dt><code>redraw-current-line ()</code><a name="index-redraw_002dcurrent_002dline-_0028_0029-304"></a><dd>Refresh the current line. By default, this is unbound.
-
-</dl>
-
-<div class="node">
-<p><hr>
-<a name="Commands-For-History"></a>
-Next: <a rel="next" accesskey="n" href="#Commands-For-Text">Commands For Text</a>,
-Previous: <a rel="previous" accesskey="p" href="#Commands-For-Moving">Commands For Moving</a>,
-Up: <a rel="up" accesskey="u" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>
-
-</div>
-
-<h4 class="subsection">8.4.2 Commands For Manipulating The History</h4>
-
- <dl>
-<dt><code>accept-line (Newline or Return)</code><a name="index-accept_002dline-_0028Newline-or-Return_0029-305"></a><dd>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 <samp><span class="env">HISTCONTROL</span></samp> and <samp><span class="env">HISTIGNORE</span></samp> variables.
-If this line is a modified history line, then restore the history line
-to its original state.
-
- <br><dt><code>previous-history (C-p)</code><a name="index-previous_002dhistory-_0028C_002dp_0029-306"></a><dd>Move `back' through the history list, fetching the previous command.
-
- <br><dt><code>next-history (C-n)</code><a name="index-next_002dhistory-_0028C_002dn_0029-307"></a><dd>Move `forward' through the history list, fetching the next command.
-
- <br><dt><code>beginning-of-history (M-<)</code><a name="index-beginning_002dof_002dhistory-_0028M_002d_003c_0029-308"></a><dd>Move to the first line in the history.
-
- <br><dt><code>end-of-history (M->)</code><a name="index-end_002dof_002dhistory-_0028M_002d_003e_0029-309"></a><dd>Move to the end of the input history, i.e., the line currently
-being entered.
-
- <br><dt><code>reverse-search-history (C-r)</code><a name="index-reverse_002dsearch_002dhistory-_0028C_002dr_0029-310"></a><dd>Search backward starting at the current line and moving `up' through
-the history as necessary. This is an incremental search.
-
- <br><dt><code>forward-search-history (C-s)</code><a name="index-forward_002dsearch_002dhistory-_0028C_002ds_0029-311"></a><dd>Search forward starting at the current line and moving `down' through
-the the history as necessary. This is an incremental search.
-
- <br><dt><code>non-incremental-reverse-search-history (M-p)</code><a name="index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029-312"></a><dd>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.
-
- <br><dt><code>non-incremental-forward-search-history (M-n)</code><a name="index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029-313"></a><dd>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.
-
- <br><dt><code>history-search-forward ()</code><a name="index-history_002dsearch_002dforward-_0028_0029-314"></a><dd>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.
-
- <br><dt><code>history-search-backward ()</code><a name="index-history_002dsearch_002dbackward-_0028_0029-315"></a><dd>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.
-
- <br><dt><code>yank-nth-arg (M-C-y)</code><a name="index-yank_002dnth_002darg-_0028M_002dC_002dy_0029-316"></a><dd>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><span class="samp">!</span><var>n</var></samp>' history expansion had been specified.
-
- <br><dt><code>yank-last-arg (M-. or M-_)</code><a name="index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029-317"></a><dd>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><span class="samp">!$</span></samp>' history expansion had been specified.
-
-</dl>
-
-<div class="node">
-<p><hr>
-<a name="Commands-For-Text"></a>
-Next: <a rel="next" accesskey="n" href="#Commands-For-Killing">Commands For Killing</a>,
-Previous: <a rel="previous" accesskey="p" href="#Commands-For-History">Commands For History</a>,
-Up: <a rel="up" accesskey="u" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>
-
-</div>
-
-<h4 class="subsection">8.4.3 Commands For Changing Text</h4>
-
- <dl>
-<dt><code>delete-char (C-d)</code><a name="index-delete_002dchar-_0028C_002dd_0029-318"></a><dd>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 <span class="sc">eof</span>.
-
- <br><dt><code>backward-delete-char (Rubout)</code><a name="index-backward_002ddelete_002dchar-_0028Rubout_0029-319"></a><dd>Delete the character behind the cursor. A numeric argument means
-to kill the characters instead of deleting them.
-
- <br><dt><code>forward-backward-delete-char ()</code><a name="index-forward_002dbackward_002ddelete_002dchar-_0028_0029-320"></a><dd>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.
-
- <br><dt><code>quoted-insert (C-q or C-v)</code><a name="index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029-321"></a><dd>Add the next character typed to the line verbatim. This is
-how to insert key sequences like <kbd>C-q</kbd>, for example.
-
- <br><dt><code>self-insert (a, b, A, 1, !, ...)</code><a name="index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_0040dots_007b_007d_0029-322"></a><dd>Insert yourself.
-
- <br><dt><code>transpose-chars (C-t)</code><a name="index-transpose_002dchars-_0028C_002dt_0029-323"></a><dd>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.
-
- <br><dt><code>transpose-words (M-t)</code><a name="index-transpose_002dwords-_0028M_002dt_0029-324"></a><dd>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.
-
- <br><dt><code>upcase-word (M-u)</code><a name="index-upcase_002dword-_0028M_002du_0029-325"></a><dd>Uppercase the current (or following) word. With a negative argument,
-uppercase the previous word, but do not move the cursor.
-
- <br><dt><code>downcase-word (M-l)</code><a name="index-downcase_002dword-_0028M_002dl_0029-326"></a><dd>Lowercase the current (or following) word. With a negative argument,
-lowercase the previous word, but do not move the cursor.
-
- <br><dt><code>capitalize-word (M-c)</code><a name="index-capitalize_002dword-_0028M_002dc_0029-327"></a><dd>Capitalize the current (or following) word. With a negative argument,
-capitalize the previous word, but do not move the cursor.
-
- <br><dt><code>overwrite-mode ()</code><a name="index-overwrite_002dmode-_0028_0029-328"></a><dd>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>By default, this command is unbound.
-
-</dl>
-
-<div class="node">
-<p><hr>
-<a name="Commands-For-Killing"></a>
-Next: <a rel="next" accesskey="n" href="#Numeric-Arguments">Numeric Arguments</a>,
-Previous: <a rel="previous" accesskey="p" href="#Commands-For-Text">Commands For Text</a>,
-Up: <a rel="up" accesskey="u" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>
-
-</div>
-
-<h4 class="subsection">8.4.4 Killing And Yanking</h4>
-
- <dl>
-<dt><code>kill-line (C-k)</code><a name="index-kill_002dline-_0028C_002dk_0029-329"></a><dd>Kill the text from point to the end of the line.
-
- <br><dt><code>backward-kill-line (C-x Rubout)</code><a name="index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029-330"></a><dd>Kill backward to the beginning of the line.
-
- <br><dt><code>unix-line-discard (C-u)</code><a name="index-unix_002dline_002ddiscard-_0028C_002du_0029-331"></a><dd>Kill backward from the cursor to the beginning of the current line.
-
- <br><dt><code>kill-whole-line ()</code><a name="index-kill_002dwhole_002dline-_0028_0029-332"></a><dd>Kill all characters on the current line, no matter where point is.
-By default, this is unbound.
-
- <br><dt><code>kill-word (M-d)</code><a name="index-kill_002dword-_0028M_002dd_0029-333"></a><dd>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>.
-
- <br><dt><code>backward-kill-word (M-<DEL>)</code><a name="index-backward_002dkill_002dword-_0028M_002d_0040key_007bDEL_007d_0029-334"></a><dd>Kill the word behind point.
-Word boundaries are the same as <code>backward-word</code>.
-
- <br><dt><code>unix-word-rubout (C-w)</code><a name="index-unix_002dword_002drubout-_0028C_002dw_0029-335"></a><dd>Kill the word behind point, using white space as a word boundary.
-The killed text is saved on the kill-ring.
-
- <br><dt><code>unix-filename-rubout ()</code><a name="index-unix_002dfilename_002drubout-_0028_0029-336"></a><dd>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.
-
- <br><dt><code>delete-horizontal-space ()</code><a name="index-delete_002dhorizontal_002dspace-_0028_0029-337"></a><dd>Delete all spaces and tabs around point. By default, this is unbound.
-
- <br><dt><code>kill-region ()</code><a name="index-kill_002dregion-_0028_0029-338"></a><dd>Kill the text in the current region.
-By default, this command is unbound.
-
- <br><dt><code>copy-region-as-kill ()</code><a name="index-copy_002dregion_002das_002dkill-_0028_0029-339"></a><dd>Copy the text in the region to the kill buffer, so it can be yanked
-right away. By default, this command is unbound.
-
- <br><dt><code>copy-backward-word ()</code><a name="index-copy_002dbackward_002dword-_0028_0029-340"></a><dd>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.
-
- <br><dt><code>copy-forward-word ()</code><a name="index-copy_002dforward_002dword-_0028_0029-341"></a><dd>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.
-
- <br><dt><code>yank (C-y)</code><a name="index-yank-_0028C_002dy_0029-342"></a><dd>Yank the top of the kill ring into the buffer at point.
-
- <br><dt><code>yank-pop (M-y)</code><a name="index-yank_002dpop-_0028M_002dy_0029-343"></a><dd>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>
-
-<div class="node">
-<p><hr>
-<a name="Numeric-Arguments"></a>
-Next: <a rel="next" accesskey="n" href="#Commands-For-Completion">Commands For Completion</a>,
-Previous: <a rel="previous" accesskey="p" href="#Commands-For-Killing">Commands For Killing</a>,
-Up: <a rel="up" accesskey="u" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>
-
-</div>
-
-<h4 class="subsection">8.4.5 Specifying Numeric Arguments</h4>
-
- <dl>
-<dt><code>digit-argument (</code><kbd>M-0</kbd><code>, </code><kbd>M-1</kbd><code>, ... </code><kbd>M--</kbd><code>)</code><a name="index-digit_002dargument-_0028_0040kbd_007bM_002d0_007d_002c-_0040kbd_007bM_002d1_007d_002c-_0040dots_007b_007d-_0040kbd_007bM_002d_002d_007d_0029-344"></a><dd>Add this digit to the argument already accumulating, or start a new
-argument. <kbd>M--</kbd> starts a negative argument.
-
- <br><dt><code>universal-argument ()</code><a name="index-universal_002dargument-_0028_0029-345"></a><dd>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>
-
-<div class="node">
-<p><hr>
-<a name="Commands-For-Completion"></a>
-Next: <a rel="next" accesskey="n" href="#Keyboard-Macros">Keyboard Macros</a>,
-Previous: <a rel="previous" accesskey="p" href="#Numeric-Arguments">Numeric Arguments</a>,
-Up: <a rel="up" accesskey="u" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>
-
-</div>
-
-<h4 class="subsection">8.4.6 Letting Readline Type For You</h4>
-
- <dl>
-<dt><code>complete (<TAB>)</code><a name="index-complete-_0028_0040key_007bTAB_007d_0029-346"></a><dd>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><span class="samp">$</span></samp>'), username (if the text begins with
-`<samp><span class="samp">~</span></samp>'), hostname (if the text begins with `<samp><span class="samp">@</span></samp>'), or
-command (including aliases and functions) in turn. If none
-of these produces a match, filename completion is attempted.
-
- <br><dt><code>possible-completions (M-?)</code><a name="index-possible_002dcompletions-_0028M_002d_003f_0029-347"></a><dd>List the possible completions of the text before point.
-
- <br><dt><code>insert-completions (M-*)</code><a name="index-insert_002dcompletions-_0028M_002d_002a_0029-348"></a><dd>Insert all completions of the text before point that would have
-been generated by <code>possible-completions</code>.
-
- <br><dt><code>menu-complete ()</code><a name="index-menu_002dcomplete-_0028_0029-349"></a><dd>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 <TAB>, but is unbound
-by default.
-
- <br><dt><code>delete-char-or-list ()</code><a name="index-delete_002dchar_002dor_002dlist-_0028_0029-350"></a><dd>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.
-
- <br><dt><code>complete-filename (M-/)</code><dd>Attempt filename completion on the text before point.
-
- <br><dt><code>possible-filename-completions (C-x /)</code><dd>List the possible completions of the text before point,
-treating it as a filename.
-
- <br><dt><code>complete-username (M-~)</code><dd>Attempt completion on the text before point, treating
-it as a username.
-
- <br><dt><code>possible-username-completions (C-x ~)</code><dd>List the possible completions of the text before point,
-treating it as a username.
-
- <br><dt><code>complete-variable (M-$)</code><dd>Attempt completion on the text before point, treating
-it as a shell variable.
-
- <br><dt><code>possible-variable-completions (C-x $)</code><dd>List the possible completions of the text before point,
-treating it as a shell variable.
-
- <br><dt><code>complete-hostname (M-@)</code><dd>Attempt completion on the text before point, treating
-it as a hostname.
-
- <br><dt><code>possible-hostname-completions (C-x @)</code><dd>List the possible completions of the text before point,
-treating it as a hostname.
-
- <br><dt><code>complete-command (M-!)</code><dd>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.
-
- <br><dt><code>possible-command-completions (C-x !)</code><dd>List the possible completions of the text before point,
-treating it as a command name.
-
- <br><dt><code>dynamic-complete-history (M-<TAB>)</code><dd>Attempt completion on the text before point, comparing
-the text against lines from the history list for possible
-completion matches.
-
- <br><dt><code>complete-into-braces (M-{)</code><dd>Perform filename completion and insert the list of possible completions
-enclosed within braces so the list is available to the shell
-(see <a href="#Brace-Expansion">Brace Expansion</a>).
-
-</dl>
-
-<div class="node">
-<p><hr>
-<a name="Keyboard-Macros"></a>
-Next: <a rel="next" accesskey="n" href="#Miscellaneous-Commands">Miscellaneous Commands</a>,
-Previous: <a rel="previous" accesskey="p" href="#Commands-For-Completion">Commands For Completion</a>,
-Up: <a rel="up" accesskey="u" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>
-
-</div>
-
-<h4 class="subsection">8.4.7 Keyboard Macros</h4>
-
- <dl>
-<dt><code>start-kbd-macro (C-x ()</code><a name="index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029-351"></a><dd>Begin saving the characters typed into the current keyboard macro.
-
- <br><dt><code>end-kbd-macro (C-x ))</code><a name="index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029-352"></a><dd>Stop saving the characters typed into the current keyboard macro
-and save the definition.
-
- <br><dt><code>call-last-kbd-macro (C-x e)</code><a name="index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029-353"></a><dd>Re-execute the last keyboard macro defined, by making the characters
-in the macro appear as if typed at the keyboard.
-
-</dl>
-
-<div class="node">
-<p><hr>
-<a name="Miscellaneous-Commands"></a>
-Previous: <a rel="previous" accesskey="p" href="#Keyboard-Macros">Keyboard Macros</a>,
-Up: <a rel="up" accesskey="u" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>
-
-</div>
-
-<h4 class="subsection">8.4.8 Some Miscellaneous Commands</h4>
-
- <dl>
-<dt><code>re-read-init-file (C-x C-r)</code><a name="index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029-354"></a><dd>Read in the contents of the <var>inputrc</var> file, and incorporate
-any bindings or variable assignments found there.
-
- <br><dt><code>abort (C-g)</code><a name="index-abort-_0028C_002dg_0029-355"></a><dd>Abort the current editing command and
-ring the terminal's bell (subject to the setting of
-<code>bell-style</code>).
-
- <br><dt><code>do-uppercase-version (M-a, M-b, M-</code><var>x</var><code>, ...)</code><a name="index-do_002duppercase_002dversion-_0028M_002da_002c-M_002db_002c-M_002d_0040var_007bx_007d_002c-_0040dots_007b_007d_0029-356"></a><dd>If the metafied character <var>x</var> is lowercase, run the command
-that is bound to the corresponding uppercase character.
-
- <br><dt><code>prefix-meta (<ESC>)</code><a name="index-prefix_002dmeta-_0028_0040key_007bESC_007d_0029-357"></a><dd>Metafy the next character typed. This is for keyboards
-without a meta key. Typing `<samp><span class="samp"><ESC> f</span></samp>' is equivalent to typing
-<kbd>M-f</kbd>.
-
- <br><dt><code>undo (C-_ or C-x C-u)</code><a name="index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029-358"></a><dd>Incremental undo, separately remembered for each line.
-
- <br><dt><code>revert-line (M-r)</code><a name="index-revert_002dline-_0028M_002dr_0029-359"></a><dd>Undo all changes made to this line. This is like executing the <code>undo</code>
-command enough times to get back to the beginning.
-
- <br><dt><code>tilde-expand (M-&)</code><dd>Perform tilde expansion on the current word.
-
- <br><dt><code>set-mark (C-@)</code><a name="index-set_002dmark-_0028C_002d_0040_0040_0029-360"></a><dd>Set the mark to the point. If a
-numeric argument is supplied, the mark is set to that position.
-
- <br><dt><code>exchange-point-and-mark (C-x C-x)</code><a name="index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029-361"></a><dd>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.
-
- <br><dt><code>character-search (C-])</code><a name="index-character_002dsearch-_0028C_002d_005d_0029-362"></a><dd>A character is read and point is moved to the next occurrence of that
-character. A negative count searches for previous occurrences.
-
- <br><dt><code>character-search-backward (M-C-])</code><a name="index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029-363"></a><dd>A character is read and point is moved to the previous occurrence
-of that character. A negative count searches for subsequent
-occurrences.
-
- <br><dt><code>insert-comment (M-#)</code><a name="index-insert_002dcomment-_0028M_002d_0023_0029-364"></a><dd>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.
-
- <br><dt><code>dump-functions ()</code><a name="index-dump_002dfunctions-_0028_0029-365"></a><dd>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.
-
- <br><dt><code>dump-variables ()</code><a name="index-dump_002dvariables-_0028_0029-366"></a><dd>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.
-
- <br><dt><code>dump-macros ()</code><a name="index-dump_002dmacros-_0028_0029-367"></a><dd>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.
-
- <br><dt><code>glob-complete-word (M-g)</code><dd>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.
-
- <br><dt><code>glob-expand-word (C-x *)</code><dd>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><span class="samp">*</span></samp>' is appended before
-pathname expansion.
-
- <br><dt><code>glob-list-expansions (C-x g)</code><dd>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><span class="samp">*</span></samp>' is appended before
-pathname expansion.
-
- <br><dt><code>display-shell-version (C-x C-v)</code><dd>Display version information about the current instance of Bash.
-
- <br><dt><code>shell-expand-line (M-C-e)</code><dd>Expand the line as the shell does.
-This performs alias and history expansion as well as all of the shell
-word expansions (see <a href="#Shell-Expansions">Shell Expansions</a>).
-
- <br><dt><code>history-expand-line (M-^)</code><dd>Perform history expansion on the current line.
-
- <br><dt><code>magic-space ()</code><dd>Perform history expansion on the current line and insert a space
-(see <a href="#History-Interaction">History Interaction</a>).
-
- <br><dt><code>alias-expand-line ()</code><dd>Perform alias expansion on the current line (see <a href="#Aliases">Aliases</a>).
-
- <br><dt><code>history-and-alias-expand-line ()</code><dd>Perform history and alias expansion on the current line.
-
- <br><dt><code>insert-last-argument (M-. or M-_)</code><dd>A synonym for <code>yank-last-arg</code>.
-
- <br><dt><code>operate-and-get-next (C-o)</code><dd>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.
-
- <br><dt><code>edit-and-execute-command (C-xC-e)</code><dd>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.
-
-</dl>
-
-<div class="node">
-<p><hr>
-<a name="Readline-vi-Mode"></a>
-Next: <a rel="next" accesskey="n" href="#Programmable-Completion">Programmable Completion</a>,
-Previous: <a rel="previous" accesskey="p" href="#Bindable-Readline-Commands">Bindable Readline Commands</a>,
-Up: <a rel="up" accesskey="u" href="#Command-Line-Editing">Command Line Editing</a>
-
-</div>
-
-<h3 class="section">8.5 Readline vi Mode</h3>
-
-<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 <span class="sc">posix</span> 1003.2 standard.
-
- <p>In order to switch interactively between <code>emacs</code> and <code>vi</code>
-editing modes, use the `<samp><span class="samp">set -o emacs</span></samp>' and `<samp><span class="samp">set -o vi</span></samp>'
-commands (see <a href="#The-Set-Builtin">The Set Builtin</a>).
-The Readline default is <code>emacs</code> mode.
-
- <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><span class="samp">i</span></samp>'. Pressing <ESC>
-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><span class="samp">k</span></samp>' and subsequent lines with `<samp><span class="samp">j</span></samp>', and
-so forth.
-
-<div class="node">
-<p><hr>
-<a name="Programmable-Completion"></a>
-Next: <a rel="next" accesskey="n" href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a>,
-Previous: <a rel="previous" accesskey="p" href="#Readline-vi-Mode">Readline vi Mode</a>,
-Up: <a rel="up" accesskey="u" href="#Command-Line-Editing">Command Line Editing</a>
-
-</div>
-
-<h3 class="section">8.6 Programmable Completion</h3>
-
-<p><a name="index-programmable-completion-368"></a>
-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 <a href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a>),
-the programmable completion facilities are invoked.
-
- <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>Once a compspec has been found, it is used to generate the list of
-matching words.
-If a compspec is not found, the default Bash completion
-described above (see <a href="#Commands-For-Completion">Commands For Completion</a>) is performed.
-
- <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><span class="option">-f</span></samp> or <samp><span class="option">-d</span></samp> option is used for filename or
-directory name completion, the shell variable <samp><span class="env">FIGNORE</span></samp> is
-used to filter the matches.
-See <a href="#Bash-Variables">Bash Variables</a>, for a description of <samp><span class="env">FIGNORE</span></samp>.
-
- <p>Any completions specified by a filename expansion pattern to the
-<samp><span class="option">-G</span></samp> option are generated next.
-The words generated by the pattern need not match the word being completed.
-The <samp><span class="env">GLOBIGNORE</span></samp> shell variable is not used to filter the matches,
-but the <samp><span class="env">FIGNORE</span></samp> shell variable is used.
-
- <p>Next, the string specified as the argument to the <samp><span class="option">-W</span></samp> option
-is considered.
-The string is first split using the characters in the <samp><span class="env">IFS</span></samp>
-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 <a href="#Shell-Expansions">Shell Expansions</a>).
-The results are split using the rules described above
-(see <a href="#Word-Splitting">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>After these matches have been generated, any shell function or command
-specified with the <samp><span class="option">-F</span></samp> and <samp><span class="option">-C</span></samp> options is invoked.
-When the command or function is invoked, the <samp><span class="env">COMP_LINE</span></samp>,
-<samp><span class="env">COMP_POINT</span></samp>, <samp><span class="env">COMP_KEY</span></samp>, and <samp><span class="env">COMP_TYPE</span></samp> variables are
-assigned values as described above (see <a href="#Bash-Variables">Bash Variables</a>).
-If a shell function is being invoked, the <samp><span class="env">COMP_WORDS</span></samp> and
-<samp><span class="env">COMP_CWORD</span></samp> 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>Any function specified with <samp><span class="option">-F</span></samp> is invoked first.
-The function may use any of the shell facilities, including the
-<code>compgen</code> builtin described below
-(see <a href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a>), to generate the matches.
-It must put the possible completions in the <samp><span class="env">COMPREPLY</span></samp> array
-variable.
-
- <p>Next, any command specified with the <samp><span class="option">-C</span></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>After all of the possible completions are generated, any filter
-specified with the <samp><span class="option">-X</span></samp> option is applied to the list.
-The filter is a pattern as used for pathname expansion; a `<samp><span class="samp">&</span></samp>'
-in the pattern is replaced with the text of the word being completed.
-A literal `<samp><span class="samp">&</span></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><span class="samp">!</span></samp>' negates the pattern; in this case any completion
-not matching the pattern will be removed.
-
- <p>Finally, any prefix and suffix specified with the <samp><span class="option">-P</span></samp> and <samp><span class="option">-S</span></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>If the previously-applied actions do not generate any matches, and the
-<samp><span class="option">-o dirnames</span></samp> option was supplied to <code>complete</code> when the
-compspec was defined, directory name completion is attempted.
-
- <p>If the <samp><span class="option">-o plusdirs</span></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>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><span class="option">-o bashdefault</span></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><span class="option">-o default</span></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>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.
-
-<div class="node">
-<p><hr>
-<a name="Programmable-Completion-Builtins"></a>
-Previous: <a rel="previous" accesskey="p" href="#Programmable-Completion">Programmable Completion</a>,
-Up: <a rel="up" accesskey="u" href="#Command-Line-Editing">Command Line Editing</a>
-
-</div>
-
-<h3 class="section">8.7 Programmable Completion Builtins</h3>
-
-<p><a name="index-completion-builtins-369"></a>
-Two builtin commands are available to manipulate the programmable completion
-facilities.
-
- <dl>
-<dt><code>compgen</code><dd><a name="index-compgen-370"></a>
- <pre class="example"> <code>compgen [</code><var>option</var><code>] [</code><var>word</var><code>]</code>
- </pre>
- <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><span class="option">-p</span></samp> and <samp><span class="option">-r</span></samp>, and write
-the matches to the standard output.
-When using the <samp><span class="option">-F</span></samp> or <samp><span class="option">-C</span></samp> options, the various shell variables
-set by the programmable completion facilities, while available, will not
-have useful values.
-
- <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>The return value is true unless an invalid option is supplied, or no
-matches were generated.
-
- <br><dt><code>complete</code><dd><a name="index-complete-371"></a>
- <pre class="example"> <code>complete [-abcdefgjksuv] [-o </code><var>comp-option</var><code>] [-A </code><var>action</var><code>] [-G </code><var>globpat</var><code>] [-W </code><var>wordlist</var><code>]
- [-F </code><var>function</var><code>] [-C </code><var>command</var><code>] [-X </code><var>filterpat</var><code>]
- [-P </code><var>prefix</var><code>] [-S </code><var>suffix</var><code>] </code><var>name</var><code> [</code><var>name</var><code> ...]</code>
- <code>complete -pr [</code><var>name</var><code> ...]</code>
- </pre>
- <p>Specify how arguments to each <var>name</var> should be completed.
-If the <samp><span class="option">-p</span></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><span class="option">-r</span></samp> option removes a completion specification for
-each <var>name</var>, or, if no <var>name</var>s are supplied, all
-completion specifications.
-
- <p>The process of applying these completion specifications when word completion
-is attempted is described above (see <a href="#Programmable-Completion">Programmable Completion</a>).
-
- <p>Other options, if specified, have the following meanings.
-The arguments to the <samp><span class="option">-G</span></samp>, <samp><span class="option">-W</span></samp>, and <samp><span class="option">-X</span></samp> options
-(and, if necessary, the <samp><span class="option">-P</span></samp> and <samp><span class="option">-S</span></samp> options)
-should be quoted to protect them from expansion before the
-<code>complete</code> builtin is invoked.
-
- <dl>
-<dt><code>-o </code><var>comp-option</var><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:
-
- <dl>
-<dt><code>bashdefault</code><dd>Perform the rest of the default Bash completions if the compspec
-generates no matches.
-
- <br><dt><code>default</code><dd>Use Readline's default filename completion if the compspec generates
-no matches.
-
- <br><dt><code>dirnames</code><dd>Perform directory name completion if the compspec generates no matches.
-
- <br><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 or
-suppressing trailing spaces). This option is intended to be used with
-shell functions specified with <samp><span class="option">-F</span></samp>.
-
- <br><dt><code>nospace</code><dd>Tell Readline not to append a space (the default) to words completed at
-the end of the line.
-
- <br><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.
-
- </dl>
-
- <br><dt><code>-A </code><var>action</var><dd>The <var>action</var> may be one of the following to generate a list of possible
-completions:
-
- <dl>
-<dt><code>alias</code><dd>Alias names. May also be specified as <samp><span class="option">-a</span></samp>.
-
- <br><dt><code>arrayvar</code><dd>Array variable names.
-
- <br><dt><code>binding</code><dd>Readline key binding names (see <a href="#Bindable-Readline-Commands">Bindable Readline Commands</a>).
-
- <br><dt><code>builtin</code><dd>Names of shell builtin commands. May also be specified as <samp><span class="option">-b</span></samp>.
-
- <br><dt><code>command</code><dd>Command names. May also be specified as <samp><span class="option">-c</span></samp>.
-
- <br><dt><code>directory</code><dd>Directory names. May also be specified as <samp><span class="option">-d</span></samp>.
-
- <br><dt><code>disabled</code><dd>Names of disabled shell builtins.
-
- <br><dt><code>enabled</code><dd>Names of enabled shell builtins.
-
- <br><dt><code>export</code><dd>Names of exported shell variables. May also be specified as <samp><span class="option">-e</span></samp>.
-
- <br><dt><code>file</code><dd>File names. May also be specified as <samp><span class="option">-f</span></samp>.
-
- <br><dt><code>function</code><dd>Names of shell functions.
-
- <br><dt><code>group</code><dd>Group names. May also be specified as <samp><span class="option">-g</span></samp>.
-
- <br><dt><code>helptopic</code><dd>Help topics as accepted by the <code>help</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>).
-
- <br><dt><code>hostname</code><dd>Hostnames, as taken from the file specified by the
-<samp><span class="env">HOSTFILE</span></samp> shell variable (see <a href="#Bash-Variables">Bash Variables</a>).
-
- <br><dt><code>job</code><dd>Job names, if job control is active. May also be specified as <samp><span class="option">-j</span></samp>.
-
- <br><dt><code>keyword</code><dd>Shell reserved words. May also be specified as <samp><span class="option">-k</span></samp>.
-
- <br><dt><code>running</code><dd>Names of running jobs, if job control is active.
-
- <br><dt><code>service</code><dd>Service names. May also be specified as <samp><span class="option">-s</span></samp>.
-
- <br><dt><code>setopt</code><dd>Valid arguments for the <samp><span class="option">-o</span></samp> option to the <code>set</code> builtin
-(see <a href="#The-Set-Builtin">The Set Builtin</a>).
-
- <br><dt><code>shopt</code><dd>Shell option names as accepted by the <code>shopt</code> builtin
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
-
- <br><dt><code>signal</code><dd>Signal names.
-
- <br><dt><code>stopped</code><dd>Names of stopped jobs, if job control is active.
-
- <br><dt><code>user</code><dd>User names. May also be specified as <samp><span class="option">-u</span></samp>.
-
- <br><dt><code>variable</code><dd>Names of all shell variables. May also be specified as <samp><span class="option">-v</span></samp>.
-</dl>
-
- <br><dt><code>-G </code><var>globpat</var><dd>The filename expansion pattern <var>globpat</var> is expanded to generate
-the possible completions.
-
- <br><dt><code>-W </code><var>wordlist</var><dd>The <var>wordlist</var> is split using the characters in the
-<samp><span class="env">IFS</span></samp> 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.
-
- <br><dt><code>-C </code><var>command</var><dd><var>command</var> is executed in a subshell environment, and its output is
-used as the possible completions.
-
- <br><dt><code>-F </code><var>function</var><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 <samp><span class="env">COMPREPLY</span></samp> array variable.
-
- <br><dt><code>-X </code><var>filterpat</var><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><span class="samp">!</span></samp>' in <var>filterpat</var> negates the pattern; in this
-case, any completion not matching <var>filterpat</var> is removed.
-
- <br><dt><code>-P </code><var>prefix</var><dd><var>prefix</var> is added at the beginning of each possible completion
-after all other options have been applied.
-
- <br><dt><code>-S </code><var>suffix</var><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><span class="option">-p</span></samp> or <samp><span class="option">-r</span></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.
-
- </dl>
- <a name="index-History_002c-how-to-use-372"></a>
-
-<div class="node">
-<p><hr>
-<a name="Using-History-Interactively"></a>
-Next: <a rel="next" accesskey="n" href="#Command-Line-Editing">Command Line Editing</a>,
-Previous: <a rel="previous" accesskey="p" href="#Job-Control">Job Control</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">9 Using History Interactively</h2>
-
-<p>This chapter describes how to use the <span class="sc">gnu</span> History Library
-interactively, from a user's standpoint.
-It should be considered a user's guide.
-For information on using the <span class="sc">gnu</span> History Library in other programs,
-see the <span class="sc">gnu</span> Readline Library Manual.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Bash-History-Facilities">Bash History Facilities</a>: How Bash lets you manipulate your command
- history.
-<li><a accesskey="2" href="#Bash-History-Builtins">Bash History Builtins</a>: The Bash builtin commands that manipulate
- the command history.
-<li><a accesskey="3" href="#History-Interaction">History Interaction</a>: What it feels like using History as a user.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Bash-History-Facilities"></a>
-Next: <a rel="next" accesskey="n" href="#Bash-History-Builtins">Bash History Builtins</a>,
-Up: <a rel="up" accesskey="u" href="#Using-History-Interactively">Using History Interactively</a>
-
-</div>
-
-<h3 class="section">9.1 Bash History Facilities</h3>
-
-<p><a name="index-command-history-373"></a><a name="index-history-list-374"></a>
-When the <samp><span class="option">-o history</span></samp> option to the <code>set</code> builtin
-is enabled (see <a href="#The-Set-Builtin">The Set Builtin</a>),
-the shell provides access to the <dfn>command history</dfn>,
-the list of commands previously typed.
-The value of the <samp><span class="env">HISTSIZE</span></samp> shell variable is used as the
-number of commands to save in a history list.
-The text of the last <samp><span class="env">$HISTSIZE</span></samp>
-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
-<samp><span class="env">HISTIGNORE</span></samp> and <samp><span class="env">HISTCONTROL</span></samp>.
-
- <p>When the shell starts up, the history is initialized from the
-file named by the <samp><span class="env">HISTFILE</span></samp> variable (default <samp><span class="file">~/.bash_history</span></samp>).
-The file named by the value of <samp><span class="env">HISTFILE</span></samp> is truncated, if
-necessary, to contain no more than the number of lines specified by
-the value of the <samp><span class="env">HISTFILESIZE</span></samp> variable.
-When an interactive shell exits, the last
-<samp><span class="env">$HISTSIZE</span></samp> lines are copied from the history list to the file
-named by <samp><span class="env">$HISTFILE</span></samp>.
-If the <code>histappend</code> shell option is set (see <a href="#Bash-Builtins">Bash Builtins</a>),
-the lines are appended to the history file,
-otherwise the history file is overwritten.
-If <samp><span class="env">HISTFILE</span></samp>
-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 <samp><span class="env">$HISTFILESIZE</span></samp>
-lines. If <samp><span class="env">HISTFILESIZE</span></samp> is not set, no truncation is performed.
-
- <p>If the <samp><span class="env">HISTTIMEFORMAT</span></samp> is set, the time stamp information
-associated with each history entry is written to the history file.
-
- <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 <a href="#Commands-For-History">Commands For History</a>).
-
- <p>The shell allows control over which commands are saved on the history
-list. The <samp><span class="env">HISTCONTROL</span></samp> and <samp><span class="env">HISTIGNORE</span></samp>
-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 <a href="#Bash-Builtins">Bash Builtins</a>, for a description of <code>shopt</code>.
-
-<div class="node">
-<p><hr>
-<a name="Bash-History-Builtins"></a>
-Next: <a rel="next" accesskey="n" href="#History-Interaction">History Interaction</a>,
-Previous: <a rel="previous" accesskey="p" href="#Bash-History-Facilities">Bash History Facilities</a>,
-Up: <a rel="up" accesskey="u" href="#Using-History-Interactively">Using History Interactively</a>
-
-</div>
-
-<h3 class="section">9.2 Bash History Builtins</h3>
-
-<p><a name="index-history-builtins-375"></a>
-Bash provides two builtin commands which manipulate the
-history list and history file.
-
- <dl>
-<dt><code>fc</code><dd><a name="index-fc-376"></a>
- <pre class="example"> <code>fc [-e </code><var>ename</var><code>] [-lnr] [</code><var>first</var><code>] [</code><var>last</var><code>]</code>
- <code>fc -s [</code><var>pat</var><code>=</code><var>rep</var><code>] [</code><var>command</var><code>]</code>
- </pre>
- <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><span class="option">-l</span></samp> flag is
-given, the commands are listed on standard output. The <samp><span class="option">-n</span></samp> flag
-suppresses the command numbers when listing. The <samp><span class="option">-r</span></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 <samp><span class="env">FCEDIT</span></samp> variable if set, or the value of the
-<samp><span class="env">EDITOR</span></samp> 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>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>A useful alias to use with the <code>fc</code> command is <code>r='fc -s'</code>, so
-that typing `<samp><span class="samp">r cc</span></samp>' runs the last command beginning with <code>cc</code>
-and typing `<samp><span class="samp">r</span></samp>' re-executes the last command (see <a href="#Aliases">Aliases</a>).
-
- <br><dt><code>history</code><dd><a name="index-history-377"></a>
- <pre class="example"> history [<var>n</var>]
- history -c
- history -d <var>offset</var>
- history [-anrw] [<var>filename</var>]
- history -ps <var>arg</var>
- </pre>
- <p>With no options, display the history list with line numbers.
-Lines prefixed with a `<samp><span class="samp">*</span></samp>' have been modified.
-An argument of <var>n</var> lists only the last <var>n</var> lines.
-If the shell variable <samp><span class="env">HISTTIMEFORMAT</span></samp> 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>Options, if supplied, have the following meanings:
-
- <dl>
-<dt><code>-c</code><dd>Clear the history list. This may be combined
-with the other options to replace the history list completely.
-
- <br><dt><code>-d </code><var>offset</var><dd>Delete the history entry at position <var>offset</var>.
-<var>offset</var> should be specified as it appears when the history is
-displayed.
-
- <br><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.
-
- <br><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.
-
- <br><dt><code>-r</code><dd>Read the current history file and append its contents to
-the history list.
-
- <br><dt><code>-w</code><dd>Write out the current history to the history file.
-
- <br><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.
-
- <br><dt><code>-s</code><dd>The <var>arg</var>s are added to the end of
-the history list as a single entry.
-
- </dl>
-
- <p>When any of the <samp><span class="option">-w</span></samp>, <samp><span class="option">-r</span></samp>, <samp><span class="option">-a</span></samp>, or <samp><span class="option">-n</span></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 <samp><span class="env">HISTFILE</span></samp> variable is used.
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="History-Interaction"></a>
-Previous: <a rel="previous" accesskey="p" href="#Bash-History-Builtins">Bash History Builtins</a>,
-Up: <a rel="up" accesskey="u" href="#Using-History-Interactively">Using History Interactively</a>
-
-</div>
-
-<h3 class="section">9.3 History Expansion</h3>
-
-<p><a name="index-history-expansion-378"></a>
-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>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>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
-<dfn>event</dfn>, and the portions of that line that are acted upon are
-called <dfn>words</dfn>. Various <dfn>modifiers</dfn> 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><span class="samp">!</span></samp>' by default.
-Only `<samp><span class="samp">\</span></samp>' and `<samp><span class="samp">'</span></samp>' may be used to escape the history expansion
-character.
-
- <p>Several shell options settable with the <code>shopt</code>
-builtin (see <a href="#Bash-Builtins">Bash Builtins</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><span class="option">-p</span></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><span class="option">-s</span></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>The shell allows control of the various characters used by the
-history expansion mechanism with the <code>histchars</code> variable.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Event-Designators">Event Designators</a>: How to specify which history line to use.
-<li><a accesskey="2" href="#Word-Designators">Word Designators</a>: Specifying which words are of interest.
-<li><a accesskey="3" href="#Modifiers">Modifiers</a>: Modifying the results of substitution.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Event-Designators"></a>
-Next: <a rel="next" accesskey="n" href="#Word-Designators">Word Designators</a>,
-Up: <a rel="up" accesskey="u" href="#History-Interaction">History Interaction</a>
-
-</div>
-
-<h4 class="subsection">9.3.1 Event Designators</h4>
-
-<p><a name="index-event-designators-379"></a>
-An event designator is a reference to a command line entry in the
-history list.
-<a name="index-history-events-380"></a>
- <dl>
-<dt><code>!</code><dd>Start a history substitution, except when followed by a space, tab,
-the end of the line, `<samp><span class="samp">=</span></samp>' or `<samp><span class="samp">(</span></samp>' (when the
-<code>extglob</code> shell option is enabled using the <code>shopt</code> builtin).
-
- <br><dt><code>!</code><var>n</var><dd>Refer to command line <var>n</var>.
-
- <br><dt><code>!-</code><var>n</var><dd>Refer to the command <var>n</var> lines back.
-
- <br><dt><code>!!</code><dd>Refer to the previous command. This is a synonym for `<samp><span class="samp">!-1</span></samp>'.
-
- <br><dt><code>!</code><var>string</var><dd>Refer to the most recent command starting with <var>string</var>.
-
- <br><dt><code>!?</code><var>string</var><code>[?]</code><dd>Refer to the most recent command containing <var>string</var>. The trailing
-`<samp><span class="samp">?</span></samp>' may be omitted if the <var>string</var> is followed immediately by
-a newline.
-
- <br><dt><code>^</code><var>string1</var><code>^</code><var>string2</var><code>^</code><dd>Quick Substitution. Repeat the last command, replacing <var>string1</var>
-with <var>string2</var>. Equivalent to
-<code>!!:s/</code><var>string1</var><code>/</code><var>string2</var><code>/</code>.
-
- <br><dt><code>!#</code><dd>The entire command line typed so far.
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Word-Designators"></a>
-Next: <a rel="next" accesskey="n" href="#Modifiers">Modifiers</a>,
-Previous: <a rel="previous" accesskey="p" href="#Event-Designators">Event Designators</a>,
-Up: <a rel="up" accesskey="u" href="#History-Interaction">History Interaction</a>
-
-</div>
-
-<h4 class="subsection">9.3.2 Word Designators</h4>
-
-<p>Word designators are used to select desired words from the event.
-A `<samp><span class="samp">:</span></samp>' separates the event specification from the word designator. It
-may be omitted if the word designator begins with a `<samp><span class="samp">^</span></samp>', `<samp><span class="samp">$</span></samp>',
-`<samp><span class="samp">*</span></samp>', `<samp><span class="samp">-</span></samp>', or `<samp><span class="samp">%</span></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>For example,
-
- <dl>
-<dt><code>!!</code><dd>designates the preceding command. When you type this, the preceding
-command is repeated in toto.
-
- <br><dt><code>!!:$</code><dd>designates the last argument of the preceding command. This may be
-shortened to <code>!$</code>.
-
- <br><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>
-<dt><code>0 (zero)</code><dd>The <code>0</code>th word. For many applications, this is the command word.
-
- <br><dt><var>n</var><dd>The <var>n</var>th word.
-
- <br><dt><code>^</code><dd>The first argument; that is, word 1.
-
- <br><dt><code>$</code><dd>The last argument.
-
- <br><dt><code>%</code><dd>The word matched by the most recent `<samp><span class="samp">?</span><var>string</var><span class="samp">?</span></samp>' search.
-
- <br><dt><var>x</var><code>-</code><var>y</var><dd>A range of words; `<samp><span class="samp">-</span><var>y</var></samp>' abbreviates `<samp><span class="samp">0-</span><var>y</var></samp>'.
-
- <br><dt><code>*</code><dd>All of the words, except the <code>0</code>th. This is a synonym for `<samp><span class="samp">1-$</span></samp>'.
-It is not an error to use `<samp><span class="samp">*</span></samp>' if there is just one word in the event;
-the empty string is returned in that case.
-
- <br><dt><var>x</var><code>*</code><dd>Abbreviates `<samp><var>x</var><span class="samp">-$</span></samp>'
-
- <br><dt><var>x</var><code>-</code><dd>Abbreviates `<samp><var>x</var><span class="samp">-$</span></samp>' like `<samp><var>x</var><span class="samp">*</span></samp>', but omits the last word.
-
- </dl>
-
- <p>If a word designator is supplied without an event specification, the
-previous command is used as the event.
-
-<div class="node">
-<p><hr>
-<a name="Modifiers"></a>
-Previous: <a rel="previous" accesskey="p" href="#Word-Designators">Word Designators</a>,
-Up: <a rel="up" accesskey="u" href="#History-Interaction">History Interaction</a>
-
-</div>
-
-<h4 class="subsection">9.3.3 Modifiers</h4>
-
-<p>After the optional word designator, you can add a sequence of one or more
-of the following modifiers, each preceded by a `<samp><span class="samp">:</span></samp>'.
-
- <dl>
-<dt><code>h</code><dd>Remove a trailing pathname component, leaving only the head.
-
- <br><dt><code>t</code><dd>Remove all leading pathname components, leaving the tail.
-
- <br><dt><code>r</code><dd>Remove a trailing suffix of the form `<samp><span class="samp">.</span><var>suffix</var></samp>', leaving
-the basename.
-
- <br><dt><code>e</code><dd>Remove all but the trailing suffix.
-
- <br><dt><code>p</code><dd>Print the new command but do not execute it.
-
- <br><dt><code>q</code><dd>Quote the substituted words, escaping further substitutions.
-
- <br><dt><code>x</code><dd>Quote the substituted words as with `<samp><span class="samp">q</span></samp>',
-but break into words at spaces, tabs, and newlines.
-
- <br><dt><code>s/</code><var>old</var><code>/</code><var>new</var><code>/</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><span class="samp">/</span></samp>'.
-The delimiter may be quoted in <var>old</var> and <var>new</var>
-with a single backslash. If `<samp><span class="samp">&</span></samp>' appears in <var>new</var>,
-it is replaced by <var>old</var>. A single backslash will quote
-the `<samp><span class="samp">&</span></samp>'. The final delimiter is optional if it is the last
-character on the input line.
-
- <br><dt><code>&</code><dd>Repeat the previous substitution.
-
- <br><dt><code>g</code><dt><code>a</code><dd>Cause changes to be applied over the entire event line. Used in
-conjunction with `<samp><span class="samp">s</span></samp>', as in <code>gs/</code><var>old</var><code>/</code><var>new</var><code>/</code>,
-or with `<samp><span class="samp">&</span></samp>'.
-
- <br><dt><code>G</code><dd>Apply the following `<samp><span class="samp">s</span></samp>' modifier once to each word in the event.
-
- </dl>
-
-<div class="node">
-<p><hr>
-<a name="Installing-Bash"></a>
-Next: <a rel="next" accesskey="n" href="#Reporting-Bugs">Reporting Bugs</a>,
-Previous: <a rel="previous" accesskey="p" href="#Command-Line-Editing">Command Line Editing</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="chapter">10 Installing Bash</h2>
-
-<p>This chapter provides basic instructions for installing Bash on
-the various supported platforms. The distribution supports the
-<span class="sc">gnu</span> operating systems, nearly every version of Unix, and several
-non-Unix systems such as BeOS and Interix.
-Other independent ports exist for
-<span class="sc">ms-dos</span>, <span class="sc">os/2</span>, and Windows platforms.
-
-<ul class="menu">
-<li><a accesskey="1" href="#Basic-Installation">Basic Installation</a>: Installation instructions.
-<li><a accesskey="2" href="#Compilers-and-Options">Compilers and Options</a>: How to set special options for various
- systems.
-<li><a accesskey="3" href="#Compiling-For-Multiple-Architectures">Compiling For Multiple Architectures</a>: How to compile Bash for more
- than one kind of system from
- the same source tree.
-<li><a accesskey="4" href="#Installation-Names">Installation Names</a>: How to set the various paths used by the installation.
-<li><a accesskey="5" href="#Specifying-the-System-Type">Specifying the System Type</a>: How to configure Bash for a particular system.
-<li><a accesskey="6" href="#Sharing-Defaults">Sharing Defaults</a>: How to share default configuration values among GNU
- programs.
-<li><a accesskey="7" href="#Operation-Controls">Operation Controls</a>: Options recognized by the configuration program.
-<li><a accesskey="8" href="#Optional-Features">Optional Features</a>: How to enable and disable optional features when
- building Bash.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Basic-Installation"></a>
-Next: <a rel="next" accesskey="n" href="#Compilers-and-Options">Compilers and Options</a>,
-Up: <a rel="up" accesskey="u" href="#Installing-Bash">Installing Bash</a>
-
-</div>
-
-<h3 class="section">10.1 Basic Installation</h3>
-
-<p><a name="index-installation-381"></a><a name="index-configuration-382"></a><a name="index-Bash-installation-383"></a><a name="index-Bash-configuration-384"></a>
-These are installation instructions for Bash.
-
- <p>The simplest way to compile Bash is:
-
- <ol type=1 start=1>
-<li><code>cd</code> to the directory containing the source code and type
-`<samp><span class="samp">./configure</span></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><span class="samp">sh ./configure</span></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.
-
- <li>Type `<samp><span class="samp">make</span></samp>' to compile Bash and build the <code>bashbug</code> bug
-reporting script.
-
- <li>Optionally, type `<samp><span class="samp">make tests</span></samp>' to run the Bash test suite.
-
- <li>Type `<samp><span class="samp">make install</span></samp>' to install <code>bash</code> and <code>bashbug</code>.
-This will also install the manual pages and Info file.
-
- </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 <samp><span class="file">Makefile</span></samp> in
-each directory of the package (the top directory, the
-<samp><span class="file">builtins</span></samp>, <samp><span class="file">doc</span></samp>, and <samp><span class="file">support</span></samp> directories,
-each directory under <samp><span class="file">lib</span></samp>, and several others). It also creates a
-<samp><span class="file">config.h</span></samp> 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 <samp><span class="file">config.cache</span></samp> that saves the results of its tests to
-speed up reconfiguring, and a file <samp><span class="file">config.log</span></samp> containing
-compiler output (useful mainly for debugging <code>configure</code>).
-If at some point
-<samp><span class="file">config.cache</span></samp> contains results you don't want to keep, you
-may remove or edit it.
-
- <p>To find out more about the options and arguments that the
-<code>configure</code> script understands, type
-
-<pre class="example"> bash-2.04$ ./configure --help
-</pre>
- <p class="noindent">at the Bash prompt in your Bash source directory.
-
- <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>The file <samp><span class="file">configure.in</span></samp> is used to create <code>configure</code>
-by a program called Autoconf. You only need
-<samp><span class="file">configure.in</span></samp> if you want to change it or regenerate
-<code>configure</code> using a newer version of Autoconf. If
-you do this, make sure you are using Autoconf version 2.50 or
-newer.
-
- <p>You can remove the program binaries and object files from the
-source code directory by typing `<samp><span class="samp">make clean</span></samp>'. To also remove the
-files that <code>configure</code> created (so you can compile Bash for
-a different kind of computer), type `<samp><span class="samp">make distclean</span></samp>'.
-
-<div class="node">
-<p><hr>
-<a name="Compilers-and-Options"></a>
-Next: <a rel="next" accesskey="n" href="#Compiling-For-Multiple-Architectures">Compiling For Multiple Architectures</a>,
-Previous: <a rel="previous" accesskey="p" href="#Basic-Installation">Basic Installation</a>,
-Up: <a rel="up" accesskey="u" href="#Installing-Bash">Installing Bash</a>
-
-</div>
-
-<h3 class="section">10.2 Compilers and Options</h3>
-
-<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:
-
-<pre class="example"> CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-</pre>
- <p>On systems that have the <code>env</code> program, you can do it like this:
-
-<pre class="example"> env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-</pre>
- <p>The configuration process uses GCC to build Bash if it
-is available.
-
-<div class="node">
-<p><hr>
-<a name="Compiling-For-Multiple-Architectures"></a>
-Next: <a rel="next" accesskey="n" href="#Installation-Names">Installation Names</a>,
-Previous: <a rel="previous" accesskey="p" href="#Compilers-and-Options">Compilers and Options</a>,
-Up: <a rel="up" accesskey="u" href="#Installing-Bash">Installing Bash</a>
-
-</div>
-
-<h3 class="section">10.3 Compiling For Multiple Architectures</h3>
-
-<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><span class="option">--srcdir=PATH</span></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>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><span class="samp">make distclean</span></samp>' before
-reconfiguring for another architecture.
-
- <p>Alternatively, if your system supports symbolic links, you can use the
-<samp><span class="file">support/mkclone</span></samp> 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 <samp><span class="file">/usr/gnu/src/bash-2.0</span></samp>:
-
-<pre class="example"> bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
-</pre>
- <p class="noindent">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.
-
-<div class="node">
-<p><hr>
-<a name="Installation-Names"></a>
-Next: <a rel="next" accesskey="n" href="#Specifying-the-System-Type">Specifying the System Type</a>,
-Previous: <a rel="previous" accesskey="p" href="#Compiling-For-Multiple-Architectures">Compiling For Multiple Architectures</a>,
-Up: <a rel="up" accesskey="u" href="#Installing-Bash">Installing Bash</a>
-
-</div>
-
-<h3 class="section">10.4 Installation Names</h3>
-
-<p>By default, `<samp><span class="samp">make install</span></samp>' will install into
-<samp><span class="file">/usr/local/bin</span></samp>, <samp><span class="file">/usr/local/man</span></samp>, etc. You can
-specify an installation prefix other than <samp><span class="file">/usr/local</span></samp> by
-giving <code>configure</code> the option <samp><span class="option">--prefix=</span><var>PATH</var></samp>,
-or by specifying a value for the <code>DESTDIR</code> `<samp><span class="samp">make</span></samp>'
-variable when running `<samp><span class="samp">make install</span></samp>'.
-
- <p>You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files.
-If you give <code>configure</code> the option
-<samp><span class="option">--exec-prefix=</span><var>PATH</var></samp>, `<samp><span class="samp">make install</span></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.
-
-<div class="node">
-<p><hr>
-<a name="Specifying-the-System-Type"></a>
-Next: <a rel="next" accesskey="n" href="#Sharing-Defaults">Sharing Defaults</a>,
-Previous: <a rel="previous" accesskey="p" href="#Installation-Names">Installation Names</a>,
-Up: <a rel="up" accesskey="u" href="#Installing-Bash">Installing Bash</a>
-
-</div>
-
-<h3 class="section">10.5 Specifying the System Type</h3>
-
-<p>There may be some features <code>configure</code> can not figure out
-automatically, but need to determine by the type of host Bash
-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><span class="option">--host=TYPE</span></samp> option. `<samp><span class="samp">TYPE</span></samp>' can
-either be a short name for the system type, such as `<samp><span class="samp">sun4</span></samp>',
-or a canonical name with three fields: `<samp><span class="samp">CPU-COMPANY-SYSTEM</span></samp>'
-(e.g., `<samp><span class="samp">i386-unknown-freebsd4.2</span></samp>').
-
- <p>See the file <samp><span class="file">support/config.sub</span></samp> for the possible
-values of each field.
-
-<div class="node">
-<p><hr>
-<a name="Sharing-Defaults"></a>
-Next: <a rel="next" accesskey="n" href="#Operation-Controls">Operation Controls</a>,
-Previous: <a rel="previous" accesskey="p" href="#Specifying-the-System-Type">Specifying the System Type</a>,
-Up: <a rel="up" accesskey="u" href="#Installing-Bash">Installing Bash</a>
-
-</div>
-
-<h3 class="section">10.6 Sharing Defaults</h3>
-
-<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 <samp><span class="file">PREFIX/share/config.site</span></samp> if it exists, then
-<samp><span class="file">PREFIX/etc/config.site</span></samp> 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.
-
-<div class="node">
-<p><hr>
-<a name="Operation-Controls"></a>
-Next: <a rel="next" accesskey="n" href="#Optional-Features">Optional Features</a>,
-Previous: <a rel="previous" accesskey="p" href="#Sharing-Defaults">Sharing Defaults</a>,
-Up: <a rel="up" accesskey="u" href="#Installing-Bash">Installing Bash</a>
-
-</div>
-
-<h3 class="section">10.7 Operation Controls</h3>
-
-<p><code>configure</code> recognizes the following options to control how it
-operates.
-
- <dl>
-<dt><code>--cache-file=</code><var>file</var><dd>Use and save the results of the tests in
-<var>file</var> instead of <samp><span class="file">./config.cache</span></samp>. Set <var>file</var> to
-<samp><span class="file">/dev/null</span></samp> to disable caching, for debugging
-<code>configure</code>.
-
- <br><dt><code>--help</code><dd>Print a summary of the options to <code>configure</code>, and exit.
-
- <br><dt><code>--quiet</code><dt><code>--silent</code><dt><code>-q</code><dd>Do not print messages saying which checks are being made.
-
- <br><dt><code>--srcdir=</code><var>dir</var><dd>Look for the Bash source code in directory <var>dir</var>. Usually
-<code>configure</code> can determine that directory automatically.
-
- <br><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><span class="samp">configure --help</span></samp>' prints the complete list.
-
-<div class="node">
-<p><hr>
-<a name="Optional-Features"></a>
-Previous: <a rel="previous" accesskey="p" href="#Operation-Controls">Operation Controls</a>,
-Up: <a rel="up" accesskey="u" href="#Installing-Bash">Installing Bash</a>
-
-</div>
-
-<h3 class="section">10.8 Optional Features</h3>
-
-<p>The Bash <code>configure</code> has a number of <samp><span class="option">--enable-</span><var>feature</var></samp>
-options, where <var>feature</var> indicates an optional part of Bash.
-There are also several <samp><span class="option">--with-</span><var>package</var></samp> options,
-where <var>package</var> is something like `<samp><span class="samp">bash-malloc</span></samp>' or `<samp><span class="samp">purify</span></samp>'.
-To turn off the default use of a package, use
-<samp><span class="option">--without-</span><var>package</var></samp>. To configure Bash without a feature
-that is enabled by default, use <samp><span class="option">--disable-</span><var>feature</var></samp>.
-
- <p>Here is a complete list of the <samp><span class="option">--enable-</span></samp> and
-<samp><span class="option">--with-</span></samp> options that the Bash <code>configure</code> recognizes.
-
- <dl>
-<dt><code>--with-afs</code><dd>Define if you are using the Andrew File System from Transarc.
-
- <br><dt><code>--with-bash-malloc</code><dd>Use the Bash version of
-<code>malloc</code> in the directory <samp><span class="file">lib/malloc</span></samp>. This is not the same
-<code>malloc</code> that appears in <span class="sc">gnu</span> libc, but an older version
-originally derived from the 4.2 <span class="sc">bsd</span> <code>malloc</code>. This <code>malloc</code>
-is very fast, but wastes some space on each allocation.
-This option is enabled by default.
-The <samp><span class="file">NOTES</span></samp> 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.
-
- <br><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.
-
- <br><dt><code>--with-gnu-malloc</code><dd>A synonym for <code>--with-bash-malloc</code>.
-
- <br><dt><code>--with-installed-readline[=</code><var>PREFIX</var><code>]</code><dd>Define this to make Bash link with a locally-installed version of Readline
-rather than the version in <samp><span class="file">lib/readline</span></samp>. 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
-<samp><span class="file">lib/readline</span></samp>.
-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>).
-
- <br><dt><code>--with-purify</code><dd>Define this to use the Purify memory allocation checker from Rational
-Software.
-
- <br><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><span class="option">--enable-</span></samp> options that alter how Bash is
-compiled and linked, rather than changing run-time features.
-
- <dl>
-<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.
-
- <br><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.
-
- <br><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><span class="samp">minimal-config</span></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><span class="samp">enable-</span><var>feature</var></samp>'.
-
- <p>All of the following options except for `<samp><span class="samp">disabled-builtins</span></samp>' and
-`<samp><span class="samp">xpg-echo-default</span></samp>' are
-enabled by default, unless the operating system does not provide the
-necessary support.
-
- <dl>
-<dt><code>--enable-alias</code><dd>Allow alias expansion and include the <code>alias</code> and <code>unalias</code>
-builtins (see <a href="#Aliases">Aliases</a>).
-
- <br><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 <a href="#Looping-Constructs">Looping Constructs</a>).
-
- <br><dt><code>--enable-array-variables</code><dd>Include support for one-dimensional array shell variables
-(see <a href="#Arrays">Arrays</a>).
-
- <br><dt><code>--enable-bang-history</code><dd>Include support for <code>csh</code>-like history substitution
-(see <a href="#History-Interaction">History Interaction</a>).
-
- <br><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="#Brace-Expansion">Brace Expansion</a>, for a complete description.
-
- <br><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 <a href="#Pipelines">Pipelines</a>).
-This allows pipelines as well as shell builtins and functions to be timed.
-
- <br><dt><code>--enable-cond-command</code><dd>Include support for the <code>[[</code> conditional command.
-(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
-
- <br><dt><code>--enable-cond-regexp</code><dd>Include support for matching POSIX regular expressions using the
-`<samp><span class="samp">=~</span></samp>' binary operator in the <code>[[</code> conditional command.
-(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
-
- <br><dt><code>--enable-debugger</code><dd>Include support for the bash debugger (distributed separately).
-
- <br><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 <a href="#The-Directory-Stack">The Directory Stack</a>).
-
- <br><dt><code>--enable-disabled-builtins</code><dd>Allow builtin commands to be invoked via `<samp><span class="samp">builtin xxx</span></samp>'
-even after <code>xxx</code> has been disabled using `<samp><span class="samp">enable -n xxx</span></samp>'.
-See <a href="#Bash-Builtins">Bash Builtins</a>, for details of the <code>builtin</code> and
-<code>enable</code> builtin commands.
-
- <br><dt><code>--enable-dparen-arithmetic</code><dd>Include support for the <code>((...))</code> command
-(see <a href="#Conditional-Constructs">Conditional Constructs</a>).
-
- <br><dt><code>--enable-extended-glob</code><dd>Include support for the extended pattern matching features described
-above under <a href="#Pattern-Matching">Pattern Matching</a>.
-
- <br><dt><code>--enable-help-builtin</code><dd>Include the <code>help</code> builtin, which displays help on shell builtins and
-variables (see <a href="#Bash-Builtins">Bash Builtins</a>).
-
- <br><dt><code>--enable-history</code><dd>Include command history and the <code>fc</code> and <code>history</code>
-builtin commands (see <a href="#Bash-History-Facilities">Bash History Facilities</a>).
-
- <br><dt><code>--enable-job-control</code><dd>This enables the job control features (see <a href="#Job-Control">Job Control</a>),
-if the operating system supports them.
-
- <br><dt><code>--enable-multibyte</code><dd>This enables support for multibyte characters if the operating
-system provides the necessary support.
-
- <br><dt><code>--enable-net-redirections</code><dd>This enables the special handling of filenames of the form
-<code>/dev/tcp/</code><var>host</var><code>/</code><var>port</var> and
-<code>/dev/udp/</code><var>host</var><code>/</code><var>port</var>
-when used in redirections (see <a href="#Redirections">Redirections</a>).
-
- <br><dt><code>--enable-process-substitution</code><dd>This enables process substitution (see <a href="#Process-Substitution">Process Substitution</a>) if
-the operating system provides the necessary support.
-
- <br><dt><code>--enable-progcomp</code><dd>Enable the programmable completion facilities
-(see <a href="#Programmable-Completion">Programmable Completion</a>).
-If Readline is not enabled, this option has no effect.
-
- <br><dt><code>--enable-prompt-string-decoding</code><dd>Turn on the interpretation of a number of backslash-escaped characters
-in the <samp><span class="env">$PS1</span></samp>, <samp><span class="env">$PS2</span></samp>, <samp><span class="env">$PS3</span></samp>, and <samp><span class="env">$PS4</span></samp> prompt
-strings. See <a href="#Printing-a-Prompt">Printing a Prompt</a>, for a complete list of prompt
-string escape sequences.
-
- <br><dt><code>--enable-readline</code><dd>Include support for command-line editing and history with the Bash
-version of the Readline library (see <a href="#Command-Line-Editing">Command Line Editing</a>).
-
- <br><dt><code>--enable-restricted</code><dd>Include support for a <dfn>restricted shell</dfn>. If this is enabled, Bash,
-when called as <code>rbash</code>, enters a restricted mode. See
-<a href="#The-Restricted-Shell">The Restricted Shell</a>, for a description of restricted mode.
-
- <br><dt><code>--enable-select</code><dd>Include the <code>select</code> builtin, which allows the generation of simple
-menus (see <a href="#Conditional-Constructs">Conditional Constructs</a>).
-
- <br><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.
-
- <br><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.
-
- <br><dt><code>--enable-strict-posix-default</code><dd>Make Bash <span class="sc">posix</span>-conformant by default (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
-
- <br><dt><code>--enable-usg-echo-default</code><dd>A synonym for <code>--enable-xpg-echo-default</code>.
-
- <br><dt><code>--enable-xpg-echo-default</code><dd>Make the <code>echo</code> builtin expand backslash-escaped characters by default,
-without requiring the <samp><span class="option">-e</span></samp> option.
-This sets the default value of the <code>xpg_echo</code> shell option to <code>on</code>,
-which makes the Bash <code>echo</code> behave more like the version specified in
-the Single Unix Specification, version 3.
-See <a href="#Bash-Builtins">Bash Builtins</a>, for a description of the escape sequences that
-<code>echo</code> recognizes.
-
- </dl>
-
- <p>The file <samp><span class="file">config-top.h</span></samp> contains C Preprocessor
-`<samp><span class="samp">#define</span></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.
-
-<div class="node">
-<p><hr>
-<a name="Reporting-Bugs"></a>
-Next: <a rel="next" accesskey="n" href="#Major-Differences-From-The-Bourne-Shell">Major Differences From The Bourne Shell</a>,
-Previous: <a rel="previous" accesskey="p" href="#Installing-Bash">Installing Bash</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="appendix">Appendix A Reporting Bugs</h2>
-
-<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>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>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 class="noindent"><code>bashbug</code> inserts the first three items automatically into
-the template it provides for filing a bug report.
-
- <p>Please send all reports concerning this manual to
-<a href="mailto:chet@po.CWRU.Edu">chet@po.CWRU.Edu</a>.
-
-<div class="node">
-<p><hr>
-<a name="Major-Differences-From-The-Bourne-Shell"></a>
-Next: <a rel="next" accesskey="n" href="#Copying-This-Manual">Copying This Manual</a>,
-Previous: <a rel="previous" accesskey="p" href="#Reporting-Bugs">Reporting Bugs</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="appendix">Appendix B Major Differences From The Bourne Shell</h2>
-
-<p>Bash implements essentially the same grammar, parameter and
-variable expansion, redirection, and quoting as the Bourne Shell.
-Bash uses the <span class="sc">posix</span> 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.
-
- <ul>
-<li>Bash is <span class="sc">posix</span>-conformant, even where the <span class="sc">posix</span> specification
-differs from traditional <code>sh</code> behavior (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
-
- <li>Bash has multi-character invocation options (see <a href="#Invoking-Bash">Invoking Bash</a>).
-
- <li>Bash has command-line editing (see <a href="#Command-Line-Editing">Command Line Editing</a>) and
-the <code>bind</code> builtin.
-
- <li>Bash provides a programmable word completion mechanism
-(see <a href="#Programmable-Completion">Programmable Completion</a>), and two builtin commands,
-<code>complete</code> and <code>compgen</code>, to manipulate it.
-
- <li>Bash has command history (see <a href="#Bash-History-Facilities">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.
-
- <li>Bash implements <code>csh</code>-like history expansion
-(see <a href="#History-Interaction">History Interaction</a>).
-
- <li>Bash has one-dimensional array variables (see <a href="#Arrays">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.
-
- <li>The <code>$'...'</code> quoting syntax, which expands ANSI-C
-backslash-escaped characters in the text between the single quotes,
-is supported (see <a href="#ANSI_002dC-Quoting">ANSI-C Quoting</a>).
-
- <li>Bash supports the <code>$"..."</code> quoting syntax to do
-locale-specific translation of the characters between the double
-quotes. The <samp><span class="option">-D</span></samp>, <samp><span class="option">--dump-strings</span></samp>, and <samp><span class="option">--dump-po-strings</span></samp>
-invocation options list the translatable strings found in a script
-(see <a href="#Locale-Translation">Locale Translation</a>).
-
- <li>Bash implements the <code>!</code> keyword to negate the return value of
-a pipeline (see <a href="#Pipelines">Pipelines</a>).
-Very useful when an <code>if</code> statement needs to act only if a test fails.
-The Bash `<samp><span class="samp">-o pipefail</span></samp>' option to <code>set</code> will cause a pipeline to
-return a failure status if any command fails.
-
- <li>Bash has the <code>time</code> reserved word and command timing (see <a href="#Pipelines">Pipelines</a>).
-The display of the timing statistics may be controlled with the
-<samp><span class="env">TIMEFORMAT</span></samp> variable.
-
- <li>Bash implements the <code>for (( </code><var>expr1</var><code> ; </code><var>expr2</var><code> ; </code><var>expr3</var><code> ))</code>
-arithmetic for command, similar to the C language (see <a href="#Looping-Constructs">Looping Constructs</a>).
-
- <li>Bash includes the <code>select</code> compound command, which allows the
-generation of simple menus (see <a href="#Conditional-Constructs">Conditional Constructs</a>).
-
- <li>Bash includes the <code>[[</code> compound command, which makes conditional
-testing part of the shell grammar (see <a href="#Conditional-Constructs">Conditional Constructs</a>), including
-optional regular expression matching.
-
- <li>Bash provides optional case-insensitive matching for the <code>case</code> and
-<code>[[</code> constructs.
-
- <li>Bash includes brace expansion (see <a href="#Brace-Expansion">Brace Expansion</a>) and tilde
-expansion (see <a href="#Tilde-Expansion">Tilde Expansion</a>).
-
- <li>Bash implements command aliases and the <code>alias</code> and <code>unalias</code>
-builtins (see <a href="#Aliases">Aliases</a>).
-
- <li>Bash provides shell arithmetic, the <code>((</code> compound command
-(see <a href="#Conditional-Constructs">Conditional Constructs</a>),
-and arithmetic expansion (see <a href="#Shell-Arithmetic">Shell Arithmetic</a>).
-
- <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.
-
- <li>Bash supports the `<samp><span class="samp">+=</span></samp>' assignment operator, which appends to the value
-of the variable named on the left hand side.
-
- <li>Bash includes the <span class="sc">posix</span> pattern removal `<samp><span class="samp">%</span></samp>', `<samp><span class="samp">#</span></samp>', `<samp><span class="samp">%%</span></samp>'
-and `<samp><span class="samp">##</span></samp>' expansions to remove leading or trailing substrings from
-variable values (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
-
- <li>The expansion <code>${#xx}</code>, which returns the length of <code>${xx}</code>,
-is supported (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
-
- <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 <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
-
- <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 <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
-
- <li>The expansion <code>${!</code><var>prefix}*</var> expansion, which expands to
-the names of all shell variables whose names begin with <var>prefix</var>,
-is available (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
-
- <li>Bash has <var>indirect</var> variable expansion using <code>${!word}</code>
-(see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
-
- <li>Bash can expand positional parameters beyond <code>$9</code> using
-<code>${</code><var>num</var><code>}</code>.
-
- <li>The <span class="sc">posix</span> <code>$()</code> form of command substitution
-is implemented (see <a href="#Command-Substitution">Command Substitution</a>),
-and preferred to the Bourne shell's <code>``</code> (which
-is also implemented for backwards compatibility).
-
- <li>Bash has process substitution (see <a href="#Process-Substitution">Process Substitution</a>).
-
- <li>Bash automatically assigns variables that provide information about the
-current user (<samp><span class="env">UID</span></samp>, <samp><span class="env">EUID</span></samp>, and <samp><span class="env">GROUPS</span></samp>), the current host
-(<samp><span class="env">HOSTTYPE</span></samp>, <samp><span class="env">OSTYPE</span></samp>, <samp><span class="env">MACHTYPE</span></samp>, and <samp><span class="env">HOSTNAME</span></samp>),
-and the instance of Bash that is running (<samp><span class="env">BASH</span></samp>,
-<samp><span class="env">BASH_VERSION</span></samp>, and <samp><span class="env">BASH_VERSINFO</span></samp>). See <a href="#Bash-Variables">Bash Variables</a>,
-for details.
-
- <li>The <samp><span class="env">IFS</span></samp> variable is used to split only the results of expansion,
-not all words (see <a href="#Word-Splitting">Word Splitting</a>).
-This closes a longstanding shell security hole.
-
- <li>Bash implements the full set of <span class="sc">posix</span> filename expansion operators,
-including <var>character classes</var>, <var>equivalence classes</var>, and
-<var>collating symbols</var> (see <a href="#Filename-Expansion">Filename Expansion</a>).
-
- <li>Bash implements extended pattern matching features when the <code>extglob</code>
-shell option is enabled (see <a href="#Pattern-Matching">Pattern Matching</a>).
-
- <li>It is possible to have a variable and a function with the same name;
-<code>sh</code> does not separate the two name spaces.
-
- <li>Bash functions are permitted to have local variables using the
-<code>local</code> builtin, and thus useful recursive functions may be written
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
-
- <li>Variable assignments preceding commands affect only that command, even
-builtins and functions (see <a href="#Environment">Environment</a>).
-In <code>sh</code>, all variable assignments
-preceding commands are global unless the command is executed from the
-file system.
-
- <li>Bash performs filename expansion on filenames specified as operands
-to input and output redirection operators (see <a href="#Redirections">Redirections</a>).
-
- <li>Bash contains the `<samp><span class="samp"><></span></samp>' redirection operator, allowing a file to be
-opened for both reading and writing, and the `<samp><span class="samp">&></span></samp>' redirection
-operator, for directing standard output and standard error to the same
-file (see <a href="#Redirections">Redirections</a>).
-
- <li>Bash includes the `<samp><span class="samp"><<<</span></samp>' redirection operator, allowing a string to
-be used as the standard input to a command.
-
- <li>Bash implements the `<samp><span class="samp">[n]<&</span><var>word</var></samp>' and `<samp><span class="samp">[n]>&</span><var>word</var></samp>'
-redirection operators, which move one file descriptor to another.
-
- <li>Bash treats a number of filenames specially when they are
-used in redirection operators (see <a href="#Redirections">Redirections</a>).
-
- <li>Bash can open network connections to arbitrary machines and services
-with the redirection operators (see <a href="#Redirections">Redirections</a>).
-
- <li>The <code>noclobber</code> option is available to avoid overwriting existing
-files with output redirection (see <a href="#The-Set-Builtin">The Set Builtin</a>).
-The `<samp><span class="samp">>|</span></samp>' redirection operator may be used to override <code>noclobber</code>.
-
- <li>The Bash <code>cd</code> and <code>pwd</code> builtins (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>)
-each take <samp><span class="option">-L</span></samp> and <samp><span class="option">-P</span></samp> options to switch between logical and
-physical modes.
-
- <li>Bash allows a function to override a builtin with the same name, and provides
-access to that builtin's functionality within the function via the
-<code>builtin</code> and <code>command</code> builtins (see <a href="#Bash-Builtins">Bash Builtins</a>).
-
- <li>The <code>command</code> builtin allows selective disabling of functions
-when command lookup is performed (see <a href="#Bash-Builtins">Bash Builtins</a>).
-
- <li>Individual builtins may be enabled or disabled using the <code>enable</code>
-builtin (see <a href="#Bash-Builtins">Bash Builtins</a>).
-
- <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 <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
-
- <li>Shell functions may be exported to children via the environment
-using <code>export -f</code> (see <a href="#Shell-Functions">Shell Functions</a>).
-
- <li>The Bash <code>export</code>, <code>readonly</code>, and <code>declare</code> builtins can
-take a <samp><span class="option">-f</span></samp> option to act on shell functions, a <samp><span class="option">-p</span></samp> option to
-display variables with various attributes set in a format that can be
-used as shell input, a <samp><span class="option">-n</span></samp> option to remove various variable
-attributes, and `<samp><span class="samp">name=value</span></samp>' arguments to set variable attributes
-and values simultaneously.
-
- <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 <samp><span class="env">$PATH</span></samp>, using `<samp><span class="samp">hash -p</span></samp>'
-(see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
-
- <li>Bash includes a <code>help</code> builtin for quick reference to shell
-facilities (see <a href="#Bash-Builtins">Bash Builtins</a>).
-
- <li>The <code>printf</code> builtin is available to display formatted output
-(see <a href="#Bash-Builtins">Bash Builtins</a>).
-
- <li>The Bash <code>read</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>)
-will read a line ending in `<samp><span class="samp">\</span></samp>' with
-the <samp><span class="option">-r</span></samp> option, and will use the <samp><span class="env">REPLY</span></samp> 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><span class="option">-p</span></samp> option and will use
-Readline to obtain the line when given the <samp><span class="option">-e</span></samp> option.
-The <code>read</code> builtin also has additional options to control input:
-the <samp><span class="option">-s</span></samp> option will turn off echoing of input characters as
-they are read, the <samp><span class="option">-t</span></samp> option will allow <code>read</code> to time out
-if input does not arrive within a specified number of seconds, the
-<samp><span class="option">-n</span></samp> option will allow reading only a specified number of
-characters rather than a full line, and the <samp><span class="option">-d</span></samp> option will read
-until a particular character rather than newline.
-
- <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 <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
-
- <li>Bash includes the <code>shopt</code> builtin, for finer control of shell
-optional capabilities (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>), and allows these options
-to be set and unset at shell invocation (see <a href="#Invoking-Bash">Invoking Bash</a>).
-
- <li>Bash has much more optional behavior controllable with the <code>set</code>
-builtin (see <a href="#The-Set-Builtin">The Set Builtin</a>).
-
- <li>The `<samp><span class="samp">-x</span></samp>' (<code>xtrace</code>) option displays commands other than
-simple commands when performing an execution trace
-(see <a href="#The-Set-Builtin">The Set Builtin</a>).
-
- <li>The <code>test</code> builtin (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>)
-is slightly different, as it implements the <span class="sc">posix</span> algorithm,
-which specifies the behavior based on the number of arguments.
-
- <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.
-
- <li>The <code>trap</code> builtin (see <a href="#Bourne-Shell-Builtins">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 <a href="#Bourne-Shell-Builtins">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>The <code>trap</code> builtin (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>) allows a
-<code>RETURN</code> pseudo-signal specification, similar to
-<code>EXIT</code> and <code>DEBUG</code>.
-Commands specified with an <code>RETURN</code> trap are executed before
-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.
-
- <li>The Bash <code>type</code> builtin is more extensive and gives more information
-about the names it finds (see <a href="#Bash-Builtins">Bash Builtins</a>).
-
- <li>The Bash <code>umask</code> builtin permits a <samp><span class="option">-p</span></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 <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
-
- <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 <a href="#The-Directory-Stack">The Directory Stack</a>).
-Bash also makes the directory stack visible as the value of the
-<samp><span class="env">DIRSTACK</span></samp> shell variable.
-
- <li>Bash interprets special backslash-escaped characters in the prompt
-strings when interactive (see <a href="#Printing-a-Prompt">Printing a Prompt</a>).
-
- <li>The Bash restricted mode is more useful (see <a href="#The-Restricted-Shell">The Restricted Shell</a>);
-the SVR4.2 shell restricted mode is too limited.
-
- <li>The <code>disown</code> builtin can remove a job from the internal shell
-job table (see <a href="#Job-Control-Builtins">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>.
-
- <li>Bash includes a number of features to support a separate debugger for
-shell scripts.
-
- <li>The SVR4.2 shell has two privilege-related builtins
-(<code>mldmode</code> and <code>priv</code>) not present in Bash.
-
- <li>Bash does not have the <code>stop</code> or <code>newgrp</code> builtins.
-
- <li>Bash does not use the <samp><span class="env">SHACCT</span></samp> variable or perform shell accounting.
-
- <li>The SVR4.2 <code>sh</code> uses a <samp><span class="env">TIMEOUT</span></samp> variable like Bash uses
-<samp><span class="env">TMOUT</span></samp>.
-
- </ul>
-
-<p class="noindent">More features unique to Bash may be found in <a href="#Bash-Features">Bash Features</a>.
-
-<h3 class="appendixsec">B.1 Implementation Differences From The SVR4.2 Shell</h3>
-
-<p>Since Bash is a completely new implementation, it does not suffer from
-many of the limitations of the SVR4.2 shell. For instance:
-
- <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.
-
- <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.
-
- <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.
-
- <li>In a questionable attempt at security, the SVR4.2 shell,
-when invoked without the <samp><span class="option">-p</span></samp> option, will alter its real
-and effective <span class="sc">uid</span> and <span class="sc">gid</span> if they are less than some
-magic threshold value, commonly 100.
-This can lead to unexpected results.
-
- <li>The SVR4.2 shell does not allow users to trap <code>SIGSEGV</code>,
-<code>SIGALRM</code>, or <code>SIGCHLD</code>.
-
- <li>The SVR4.2 shell does not allow the <samp><span class="env">IFS</span></samp>, <samp><span class="env">MAILCHECK</span></samp>,
-<samp><span class="env">PATH</span></samp>, <samp><span class="env">PS1</span></samp>, or <samp><span class="env">PS2</span></samp> variables to be unset.
-
- <li>The SVR4.2 shell treats `<samp><span class="samp">^</span></samp>' as the undocumented equivalent of
-`<samp><span class="samp">|</span></samp>'.
-
- <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><span class="samp">-</span></samp>'.
-
- <li>The SVR4.2 shell exits a script if any builtin fails; Bash exits
-a script only if one of the <span class="sc">posix</span> special builtins fails, and
-only for certain failures, as enumerated in the <span class="sc">posix</span> standard.
-
- <li>The SVR4.2 shell behaves differently when invoked as <code>jsh</code>
-(it turns on job control).
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="Copying-This-Manual"></a>
-Next: <a rel="next" accesskey="n" href="#Builtin-Index">Builtin Index</a>,
-Previous: <a rel="previous" accesskey="p" href="#Major-Differences-From-The-Bourne-Shell">Major Differences From The Bourne Shell</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="appendix">Appendix C Copying This Manual</h2>
-
-<ul class="menu">
-<li><a accesskey="1" href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>: License for copying this manual.
-</ul>
-
-<div class="node">
-<p><hr>
-<a name="GNU-Free-Documentation-License"></a>
-Up: <a rel="up" accesskey="u" href="#Copying-This-Manual">Copying This Manual</a>
-
-</div>
-
-<h3 class="appendixsec">C.1 GNU Free Documentation License</h3>
-
-<p><a name="index-FDL_002c-GNU-Free-Documentation-License-385"></a><div align="center">Version 1.2, November 2002</div>
-
-<pre class="display"> Copyright © 2000,2001,2002 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-</pre>
- <ol type=1 start=0>
-<li>PREAMBLE
-
- <p>The purpose of this License is to make a manual, textbook, or other
-functional and useful document <dfn>free</dfn> 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>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>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.
-
- <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>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>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>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>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>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>Examples of suitable formats for Transparent copies include plain
-<span class="sc">ascii</span> without markup, Texinfo input format, LaTeX input
-format, <acronym>SGML</acronym> or <acronym>XML</acronym> using a publicly available
-<acronym>DTD</acronym>, and standard-conforming simple <acronym>HTML</acronym>,
-PostScript or <acronym>PDF</acronym> designed for human modification. Examples
-of transparent image formats include <acronym>PNG</acronym>, <acronym>XCF</acronym> and
-<acronym>JPG</acronym>. Opaque formats include proprietary formats that can be
-read and edited only by proprietary word processors, <acronym>SGML</acronym> or
-<acronym>XML</acronym> for which the <acronym>DTD</acronym> and/or processing tools are
-not generally available, and the machine-generated <acronym>HTML</acronym>,
-PostScript or <acronym>PDF</acronym> produced by some word processors for
-output purposes only.
-
- <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>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>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.
-
- <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>You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
- <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>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>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>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.
-
- <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:
-
- <ol type=A start=1>
-<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.
-
- <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.
-
- <li>State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-
- <li>Preserve all the copyright notices of the Document.
-
- <li>Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-
- <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.
-
- <li>Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-
- <li>Include an unaltered copy of this License.
-
- <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.
-
- <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.
-
- <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.
-
- <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.
-
- <li>Delete any section Entitled “Endorsements”. Such a section
-may not be included in the Modified Version.
-
- <li>Do not retitle any existing section to be Entitled “Endorsements” or
-to conflict in title with any Invariant Section.
-
- <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>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>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>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.
-
- <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>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>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.”
-
- <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>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.
-
- <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 an aggregate, this License does not
-apply to the other works in the aggregate which are not themselves
-derivative works of the Document.
-
- <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.
-
- <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>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.
-
- <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.
-
- <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>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>
-
-<h4 class="appendixsubsec">C.1.1 ADDENDUM: How to use this License for your documents</h4>
-
-<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:
-
-<pre class="smallexample"> 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''.
-</pre>
- <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
-replace the “with...Texts.” line with this:
-
-<pre class="smallexample"> 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>.
-</pre>
- <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>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.
-
-<!-- Local Variables: -->
-<!-- ispell-local-pdict: "ispell-dict" -->
-<!-- End: -->
-<div class="node">
-<p><hr>
-<a name="Builtin-Index"></a>
-Next: <a rel="next" accesskey="n" href="#Reserved-Word-Index">Reserved Word Index</a>,
-Previous: <a rel="previous" accesskey="p" href="#Copying-This-Manual">Copying This Manual</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="unnumbered">Index of Shell Builtin Commands</h2>
-
-<ul class="index-bt" compact>
-<li><a href="#index-g_t_002e-107"><code>.</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-g_t_003a-106"><code>:</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-g_t_005b-122"><code>[</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-alias-127"><code>alias</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-bg-256"><code>bg</code></a>: <a href="#Job-Control-Builtins">Job Control Builtins</a></li>
-<li><a href="#index-bind-128"><code>bind</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-break-108"><code>break</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-builtin-129"><code>builtin</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-caller-130"><code>caller</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-cd-109"><code>cd</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-command-131"><code>command</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-compgen-370"><code>compgen</code></a>: <a href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a></li>
-<li><a href="#index-complete-371"><code>complete</code></a>: <a href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a></li>
-<li><a href="#index-continue-110"><code>continue</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-declare-132"><code>declare</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-dirs-246"><code>dirs</code></a>: <a href="#Directory-Stack-Builtins">Directory Stack Builtins</a></li>
-<li><a href="#index-disown-261"><code>disown</code></a>: <a href="#Job-Control-Builtins">Job Control Builtins</a></li>
-<li><a href="#index-echo-133"><code>echo</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-enable-134"><code>enable</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-eval-111"><code>eval</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-exec-112"><code>exec</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-exit-113"><code>exit</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-export-114"><code>export</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-fc-376"><code>fc</code></a>: <a href="#Bash-History-Builtins">Bash History Builtins</a></li>
-<li><a href="#index-fg-257"><code>fg</code></a>: <a href="#Job-Control-Builtins">Job Control Builtins</a></li>
-<li><a href="#index-getopts-115"><code>getopts</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-hash-116"><code>hash</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-help-135"><code>help</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-history-377"><code>history</code></a>: <a href="#Bash-History-Builtins">Bash History Builtins</a></li>
-<li><a href="#index-jobs-258"><code>jobs</code></a>: <a href="#Job-Control-Builtins">Job Control Builtins</a></li>
-<li><a href="#index-kill-259"><code>kill</code></a>: <a href="#Job-Control-Builtins">Job Control Builtins</a></li>
-<li><a href="#index-let-136"><code>let</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-local-137"><code>local</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-logout-138"><code>logout</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-popd-247"><code>popd</code></a>: <a href="#Directory-Stack-Builtins">Directory Stack Builtins</a></li>
-<li><a href="#index-printf-139"><code>printf</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-pushd-248"><code>pushd</code></a>: <a href="#Directory-Stack-Builtins">Directory Stack Builtins</a></li>
-<li><a href="#index-pwd-117"><code>pwd</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-read-140"><code>read</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-readonly-118"><code>readonly</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-return-119"><code>return</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-set-146"><code>set</code></a>: <a href="#The-Set-Builtin">The Set Builtin</a></li>
-<li><a href="#index-shift-120"><code>shift</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-shopt-147"><code>shopt</code></a>: <a href="#The-Shopt-Builtin">The Shopt Builtin</a></li>
-<li><a href="#index-source-141"><code>source</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-suspend-262"><code>suspend</code></a>: <a href="#Job-Control-Builtins">Job Control Builtins</a></li>
-<li><a href="#index-test-121"><code>test</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-times-123"><code>times</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-trap-124"><code>trap</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-type-142"><code>type</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-typeset-143"><code>typeset</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-ulimit-144"><code>ulimit</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-umask-125"><code>umask</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-unalias-145"><code>unalias</code></a>: <a href="#Bash-Builtins">Bash Builtins</a></li>
-<li><a href="#index-unset-126"><code>unset</code></a>: <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></li>
-<li><a href="#index-wait-260"><code>wait</code></a>: <a href="#Job-Control-Builtins">Job Control Builtins</a></li>
- </ul><div class="node">
-<p><hr>
-<a name="Reserved-Word-Index"></a>
-Next: <a rel="next" accesskey="n" href="#Variable-Index">Variable Index</a>,
-Previous: <a rel="previous" accesskey="p" href="#Builtin-Index">Builtin Index</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="unnumbered">Index of Shell Reserved Words</h2>
-
-
-
-<ul class="index-rw" compact>
-<li><a href="#index-g_t_0021-37"><code>!</code></a>: <a href="#Pipelines">Pipelines</a></li>
-<li><a href="#index-g_t_005b_005b-57"><code>[[</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-g_t_005d_005d-58"><code>]]</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-case-53"><code>case</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-do-43"><code>do</code></a>: <a href="#Looping-Constructs">Looping Constructs</a></li>
-<li><a href="#index-done-44"><code>done</code></a>: <a href="#Looping-Constructs">Looping Constructs</a></li>
-<li><a href="#index-elif-51"><code>elif</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-else-50"><code>else</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-esac-55"><code>esac</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-fi-52"><code>fi</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-for-46"><code>for</code></a>: <a href="#Looping-Constructs">Looping Constructs</a></li>
-<li><a href="#index-function-64"><code>function</code></a>: <a href="#Shell-Functions">Shell Functions</a></li>
-<li><a href="#index-if-48"><code>if</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-in-54"><code>in</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-select-56"><code>select</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-then-49"><code>then</code></a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-time-36"><code>time</code></a>: <a href="#Pipelines">Pipelines</a></li>
-<li><a href="#index-until-42"><code>until</code></a>: <a href="#Looping-Constructs">Looping Constructs</a></li>
-<li><a href="#index-while-45"><code>while</code></a>: <a href="#Looping-Constructs">Looping Constructs</a></li>
-<li><a href="#index-g_t_0040_007b-60"><code>{</code></a>: <a href="#Command-Grouping">Command Grouping</a></li>
-<li><a href="#index-g_t_0040_007d-61"><code>}</code></a>: <a href="#Command-Grouping">Command Grouping</a></li>
- </ul><div class="node">
-<p><hr>
-<a name="Variable-Index"></a>
-Next: <a rel="next" accesskey="n" href="#Function-Index">Function Index</a>,
-Previous: <a rel="previous" accesskey="p" href="#Reserved-Word-Index">Reserved Word Index</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="unnumbered">Parameter and Variable Index</h2>
-
-
-
-<ul class="index-vr" compact>
-<li><a href="#index-g_t_0021-76"><code>!</code></a>: <a href="#Special-Parameters">Special Parameters</a></li>
-<li><a href="#index-g_t_0023-72"><code>#</code></a>: <a href="#Special-Parameters">Special Parameters</a></li>
-<li><a href="#index-g_t_0024-75"><code>$</code></a>: <a href="#Special-Parameters">Special Parameters</a></li>
-<li><a href="#index-g_t_002a-70"><code>*</code></a>: <a href="#Special-Parameters">Special Parameters</a></li>
-<li><a href="#index-g_t_002d-74"><code>-</code></a>: <a href="#Special-Parameters">Special Parameters</a></li>
-<li><a href="#index-g_t0-77"><code>0</code></a>: <a href="#Special-Parameters">Special Parameters</a></li>
-<li><a href="#index-g_t_003f-73"><code>?</code></a>: <a href="#Special-Parameters">Special Parameters</a></li>
-<li><a href="#index-g_t_0040_0040-71"><code>@</code></a>: <a href="#Special-Parameters">Special Parameters</a></li>
-<li><a href="#index-g_t_005f-78"><code>_</code></a>: <a href="#Special-Parameters">Special Parameters</a></li>
-<li><a href="#index-auto_005fresume-263"><code>auto_resume</code></a>: <a href="#Job-Control-Variables">Job Control Variables</a></li>
-<li><a href="#index-BASH-159"><code>BASH</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fARGC-161"><code>BASH_ARGC</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fARGV-162"><code>BASH_ARGV</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fCOMMAND-163"><code>BASH_COMMAND</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fENV-164"><code>BASH_ENV</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fEXECUTION_005fSTRING-165"><code>BASH_EXECUTION_STRING</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fLINENO-166"><code>BASH_LINENO</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fREMATCH-167"><code>BASH_REMATCH</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fSOURCE-168"><code>BASH_SOURCE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fSUBSHELL-169"><code>BASH_SUBSHELL</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fVERSINFO-170"><code>BASH_VERSINFO</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASH_005fVERSION-171"><code>BASH_VERSION</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-BASHPID-160"><code>BASHPID</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-bell_002dstyle-274"><code>bell-style</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-bind_002dtty_002dspecial_002dchars-275"><code>bind-tty-special-chars</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-CDPATH-149"><code>CDPATH</code></a>: <a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></li>
-<li><a href="#index-COLUMNS-172"><code>COLUMNS</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-comment_002dbegin-276"><code>comment-begin</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-COMP_005fCWORD-173"><code>COMP_CWORD</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-COMP_005fKEY-177"><code>COMP_KEY</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-COMP_005fLINE-174"><code>COMP_LINE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-COMP_005fPOINT-175"><code>COMP_POINT</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-COMP_005fTYPE-176"><code>COMP_TYPE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-COMP_005fWORDBREAKS-178"><code>COMP_WORDBREAKS</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-COMP_005fWORDS-179"><code>COMP_WORDS</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-completion_002dquery_002ditems-277"><code>completion-query-items</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-COMPREPLY-180"><code>COMPREPLY</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-convert_002dmeta-278"><code>convert-meta</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-DIRSTACK-181"><code>DIRSTACK</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-disable_002dcompletion-279"><code>disable-completion</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-editing_002dmode-280"><code>editing-mode</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-EMACS-182"><code>EMACS</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-enable_002dkeypad-281"><code>enable-keypad</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-EUID-183"><code>EUID</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-expand_002dtilde-282"><code>expand-tilde</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-FCEDIT-184"><code>FCEDIT</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-FIGNORE-185"><code>FIGNORE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-FUNCNAME-186"><code>FUNCNAME</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-GLOBIGNORE-187"><code>GLOBIGNORE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-GROUPS-188"><code>GROUPS</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-histchars-189"><code>histchars</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-HISTCMD-190"><code>HISTCMD</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-HISTCONTROL-191"><code>HISTCONTROL</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-HISTFILE-192"><code>HISTFILE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-HISTFILESIZE-193"><code>HISTFILESIZE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-HISTIGNORE-194"><code>HISTIGNORE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-history_002dpreserve_002dpoint-283"><code>history-preserve-point</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-HISTSIZE-195"><code>HISTSIZE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-HISTTIMEFORMAT-196"><code>HISTTIMEFORMAT</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-HOME-150"><code>HOME</code></a>: <a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></li>
-<li><a href="#index-horizontal_002dscroll_002dmode-284"><code>horizontal-scroll-mode</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-HOSTFILE-197"><code>HOSTFILE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-HOSTNAME-198"><code>HOSTNAME</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-HOSTTYPE-199"><code>HOSTTYPE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-IFS-151"><code>IFS</code></a>: <a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></li>
-<li><a href="#index-IGNOREEOF-200"><code>IGNOREEOF</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-input_002dmeta-285"><code>input-meta</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-INPUTRC-201"><code>INPUTRC</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-isearch_002dterminators-287"><code>isearch-terminators</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-keymap-288"><code>keymap</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-LANG-202"><code>LANG</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-LC_005fALL-203"><code>LC_ALL</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-LC_005fCOLLATE-204"><code>LC_COLLATE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-LC_005fCTYPE-205"><code>LC_CTYPE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-LC_005fMESSAGES-28"><code>LC_MESSAGES</code></a>: <a href="#Locale-Translation">Locale Translation</a></li>
-<li><a href="#index-LC_005fMESSAGES-206"><code>LC_MESSAGES</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-LC_005fNUMERIC-207"><code>LC_NUMERIC</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-LINENO-208"><code>LINENO</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-LINES-209"><code>LINES</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-MACHTYPE-210"><code>MACHTYPE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-MAIL-152"><code>MAIL</code></a>: <a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></li>
-<li><a href="#index-MAILCHECK-211"><code>MAILCHECK</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-MAILPATH-153"><code>MAILPATH</code></a>: <a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></li>
-<li><a href="#index-mark_002dmodified_002dlines-289"><code>mark-modified-lines</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-mark_002dsymlinked_002ddirectories-290"><code>mark-symlinked-directories</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-match_002dhidden_002dfiles-291"><code>match-hidden-files</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-meta_002dflag-286"><code>meta-flag</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-OLDPWD-212"><code>OLDPWD</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-OPTARG-154"><code>OPTARG</code></a>: <a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></li>
-<li><a href="#index-OPTERR-213"><code>OPTERR</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-OPTIND-155"><code>OPTIND</code></a>: <a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></li>
-<li><a href="#index-OSTYPE-214"><code>OSTYPE</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-output_002dmeta-292"><code>output-meta</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-page_002dcompletions-293"><code>page-completions</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-PATH-156"><code>PATH</code></a>: <a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></li>
-<li><a href="#index-PIPESTATUS-215"><code>PIPESTATUS</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-POSIXLY_005fCORRECT-216"><code>POSIXLY_CORRECT</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-PPID-217"><code>PPID</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-PROMPT_005fCOMMAND-218"><code>PROMPT_COMMAND</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-PS1-157"><code>PS1</code></a>: <a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></li>
-<li><a href="#index-PS2-158"><code>PS2</code></a>: <a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></li>
-<li><a href="#index-PS3-219"><code>PS3</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-PS4-220"><code>PS4</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-PWD-221"><code>PWD</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-RANDOM-222"><code>RANDOM</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-REPLY-223"><code>REPLY</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-SECONDS-224"><code>SECONDS</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-SHELL-225"><code>SHELL</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-SHELLOPTS-226"><code>SHELLOPTS</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-SHLVL-227"><code>SHLVL</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-show_002dall_002dif_002dambiguous-294"><code>show-all-if-ambiguous</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-show_002dall_002dif_002dunmodified-295"><code>show-all-if-unmodified</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-TEXTDOMAIN-29"><code>TEXTDOMAIN</code></a>: <a href="#Locale-Translation">Locale Translation</a></li>
-<li><a href="#index-TEXTDOMAINDIR-30"><code>TEXTDOMAINDIR</code></a>: <a href="#Locale-Translation">Locale Translation</a></li>
-<li><a href="#index-TIMEFORMAT-228"><code>TIMEFORMAT</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-TMOUT-229"><code>TMOUT</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-TMPDIR-230"><code>TMPDIR</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-UID-231"><code>UID</code></a>: <a href="#Bash-Variables">Bash Variables</a></li>
-<li><a href="#index-visible_002dstats-296"><code>visible-stats</code></a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
- </ul><div class="node">
-<p><hr>
-<a name="Function-Index"></a>
-Next: <a rel="next" accesskey="n" href="#Concept-Index">Concept Index</a>,
-Previous: <a rel="previous" accesskey="p" href="#Variable-Index">Variable Index</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="unnumbered">Function Index</h2>
-
-
-
-<ul class="index-fn" compact>
-<li><a href="#index-abort-_0028C_002dg_0029-355"><code>abort (C-g)</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-accept_002dline-_0028Newline-or-Return_0029-305"><code>accept-line (Newline or Return)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-backward_002dchar-_0028C_002db_0029-300"><code>backward-char (C-b)</code></a>: <a href="#Commands-For-Moving">Commands For Moving</a></li>
-<li><a href="#index-backward_002ddelete_002dchar-_0028Rubout_0029-319"><code>backward-delete-char (Rubout)</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029-330"><code>backward-kill-line (C-x Rubout)</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-backward_002dkill_002dword-_0028M_002d_0040key_007bDEL_007d_0029-334"><code>backward-kill-word (M-<DEL>)</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-backward_002dword-_0028M_002db_0029-302"><code>backward-word (M-b)</code></a>: <a href="#Commands-For-Moving">Commands For Moving</a></li>
-<li><a href="#index-beginning_002dof_002dhistory-_0028M_002d_003c_0029-308"><code>beginning-of-history (M-<)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-beginning_002dof_002dline-_0028C_002da_0029-297"><code>beginning-of-line (C-a)</code></a>: <a href="#Commands-For-Moving">Commands For Moving</a></li>
-<li><a href="#index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029-353"><code>call-last-kbd-macro (C-x e)</code></a>: <a href="#Keyboard-Macros">Keyboard Macros</a></li>
-<li><a href="#index-capitalize_002dword-_0028M_002dc_0029-327"><code>capitalize-word (M-c)</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-character_002dsearch-_0028C_002d_005d_0029-362"><code>character-search (C-])</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029-363"><code>character-search-backward (M-C-])</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-clear_002dscreen-_0028C_002dl_0029-303"><code>clear-screen (C-l)</code></a>: <a href="#Commands-For-Moving">Commands For Moving</a></li>
-<li><a href="#index-complete-_0028_0040key_007bTAB_007d_0029-346"><code>complete (<TAB>)</code></a>: <a href="#Commands-For-Completion">Commands For Completion</a></li>
-<li><a href="#index-copy_002dbackward_002dword-_0028_0029-340"><code>copy-backward-word ()</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-copy_002dforward_002dword-_0028_0029-341"><code>copy-forward-word ()</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-copy_002dregion_002das_002dkill-_0028_0029-339"><code>copy-region-as-kill ()</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-delete_002dchar-_0028C_002dd_0029-318"><code>delete-char (C-d)</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-delete_002dchar_002dor_002dlist-_0028_0029-350"><code>delete-char-or-list ()</code></a>: <a href="#Commands-For-Completion">Commands For Completion</a></li>
-<li><a href="#index-delete_002dhorizontal_002dspace-_0028_0029-337"><code>delete-horizontal-space ()</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-digit_002dargument-_0028_0040kbd_007bM_002d0_007d_002c-_0040kbd_007bM_002d1_007d_002c-_0040dots_007b_007d-_0040kbd_007bM_002d_002d_007d_0029-344"><code>digit-argument (</code><kbd>M-0</kbd><code>, </code><kbd>M-1</kbd><code>, ... </code><kbd>M--</kbd><code>)</code></a>: <a href="#Numeric-Arguments">Numeric Arguments</a></li>
-<li><a href="#index-do_002duppercase_002dversion-_0028M_002da_002c-M_002db_002c-M_002d_0040var_007bx_007d_002c-_0040dots_007b_007d_0029-356"><code>do-uppercase-version (M-a, M-b, M-</code><var>x</var><code>, ...)</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-downcase_002dword-_0028M_002dl_0029-326"><code>downcase-word (M-l)</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-dump_002dfunctions-_0028_0029-365"><code>dump-functions ()</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-dump_002dmacros-_0028_0029-367"><code>dump-macros ()</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-dump_002dvariables-_0028_0029-366"><code>dump-variables ()</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029-352"><code>end-kbd-macro (C-x ))</code></a>: <a href="#Keyboard-Macros">Keyboard Macros</a></li>
-<li><a href="#index-end_002dof_002dhistory-_0028M_002d_003e_0029-309"><code>end-of-history (M->)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-end_002dof_002dline-_0028C_002de_0029-298"><code>end-of-line (C-e)</code></a>: <a href="#Commands-For-Moving">Commands For Moving</a></li>
-<li><a href="#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029-361"><code>exchange-point-and-mark (C-x C-x)</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-forward_002dbackward_002ddelete_002dchar-_0028_0029-320"><code>forward-backward-delete-char ()</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-forward_002dchar-_0028C_002df_0029-299"><code>forward-char (C-f)</code></a>: <a href="#Commands-For-Moving">Commands For Moving</a></li>
-<li><a href="#index-forward_002dsearch_002dhistory-_0028C_002ds_0029-311"><code>forward-search-history (C-s)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-forward_002dword-_0028M_002df_0029-301"><code>forward-word (M-f)</code></a>: <a href="#Commands-For-Moving">Commands For Moving</a></li>
-<li><a href="#index-history_002dsearch_002dbackward-_0028_0029-315"><code>history-search-backward ()</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-history_002dsearch_002dforward-_0028_0029-314"><code>history-search-forward ()</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-insert_002dcomment-_0028M_002d_0023_0029-364"><code>insert-comment (M-#)</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-insert_002dcompletions-_0028M_002d_002a_0029-348"><code>insert-completions (M-*)</code></a>: <a href="#Commands-For-Completion">Commands For Completion</a></li>
-<li><a href="#index-kill_002dline-_0028C_002dk_0029-329"><code>kill-line (C-k)</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-kill_002dregion-_0028_0029-338"><code>kill-region ()</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-kill_002dwhole_002dline-_0028_0029-332"><code>kill-whole-line ()</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-kill_002dword-_0028M_002dd_0029-333"><code>kill-word (M-d)</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-menu_002dcomplete-_0028_0029-349"><code>menu-complete ()</code></a>: <a href="#Commands-For-Completion">Commands For Completion</a></li>
-<li><a href="#index-next_002dhistory-_0028C_002dn_0029-307"><code>next-history (C-n)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029-313"><code>non-incremental-forward-search-history (M-n)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029-312"><code>non-incremental-reverse-search-history (M-p)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-overwrite_002dmode-_0028_0029-328"><code>overwrite-mode ()</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-possible_002dcompletions-_0028M_002d_003f_0029-347"><code>possible-completions (M-?)</code></a>: <a href="#Commands-For-Completion">Commands For Completion</a></li>
-<li><a href="#index-prefix_002dmeta-_0028_0040key_007bESC_007d_0029-357"><code>prefix-meta (<ESC>)</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-previous_002dhistory-_0028C_002dp_0029-306"><code>previous-history (C-p)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029-321"><code>quoted-insert (C-q or C-v)</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029-354"><code>re-read-init-file (C-x C-r)</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-redraw_002dcurrent_002dline-_0028_0029-304"><code>redraw-current-line ()</code></a>: <a href="#Commands-For-Moving">Commands For Moving</a></li>
-<li><a href="#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029-310"><code>reverse-search-history (C-r)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-revert_002dline-_0028M_002dr_0029-359"><code>revert-line (M-r)</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_0040dots_007b_007d_0029-322"><code>self-insert (a, b, A, 1, !, ...)</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-set_002dmark-_0028C_002d_0040_0040_0029-360"><code>set-mark (C-@)</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029-351"><code>start-kbd-macro (C-x ()</code></a>: <a href="#Keyboard-Macros">Keyboard Macros</a></li>
-<li><a href="#index-transpose_002dchars-_0028C_002dt_0029-323"><code>transpose-chars (C-t)</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-transpose_002dwords-_0028M_002dt_0029-324"><code>transpose-words (M-t)</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029-358"><code>undo (C-_ or C-x C-u)</code></a>: <a href="#Miscellaneous-Commands">Miscellaneous Commands</a></li>
-<li><a href="#index-universal_002dargument-_0028_0029-345"><code>universal-argument ()</code></a>: <a href="#Numeric-Arguments">Numeric Arguments</a></li>
-<li><a href="#index-unix_002dfilename_002drubout-_0028_0029-336"><code>unix-filename-rubout ()</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-unix_002dline_002ddiscard-_0028C_002du_0029-331"><code>unix-line-discard (C-u)</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-unix_002dword_002drubout-_0028C_002dw_0029-335"><code>unix-word-rubout (C-w)</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-upcase_002dword-_0028M_002du_0029-325"><code>upcase-word (M-u)</code></a>: <a href="#Commands-For-Text">Commands For Text</a></li>
-<li><a href="#index-yank-_0028C_002dy_0029-342"><code>yank (C-y)</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
-<li><a href="#index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029-317"><code>yank-last-arg (M-. or M-_)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-yank_002dnth_002darg-_0028M_002dC_002dy_0029-316"><code>yank-nth-arg (M-C-y)</code></a>: <a href="#Commands-For-History">Commands For History</a></li>
-<li><a href="#index-yank_002dpop-_0028M_002dy_0029-343"><code>yank-pop (M-y)</code></a>: <a href="#Commands-For-Killing">Commands For Killing</a></li>
- </ul><div class="node">
-<p><hr>
-<a name="Concept-Index"></a>
-Previous: <a rel="previous" accesskey="p" href="#Function-Index">Function Index</a>,
-Up: <a rel="up" accesskey="u" href="#Top">Top</a>
-
-</div>
-
-<h2 class="unnumbered">Concept Index</h2>
-
-
-
-<ul class="index-cp" compact>
-<li><a href="#index-alias-expansion-243">alias expansion</a>: <a href="#Aliases">Aliases</a></li>
-<li><a href="#index-arithmetic-evaluation-242">arithmetic evaluation</a>: <a href="#Shell-Arithmetic">Shell Arithmetic</a></li>
-<li><a href="#index-arithmetic-expansion-88">arithmetic expansion</a>: <a href="#Arithmetic-Expansion">Arithmetic Expansion</a></li>
-<li><a href="#index-arithmetic_002c-shell-238">arithmetic, shell</a>: <a href="#Shell-Arithmetic">Shell Arithmetic</a></li>
-<li><a href="#index-arrays-244">arrays</a>: <a href="#Arrays">Arrays</a></li>
-<li><a href="#index-background-254">background</a>: <a href="#Job-Control-Basics">Job Control Basics</a></li>
-<li><a href="#index-Bash-configuration-384">Bash configuration</a>: <a href="#Basic-Installation">Basic Installation</a></li>
-<li><a href="#index-Bash-installation-383">Bash installation</a>: <a href="#Basic-Installation">Basic Installation</a></li>
-<li><a href="#index-Bourne-shell-21">Bourne shell</a>: <a href="#Basic-Shell-Features">Basic Shell Features</a></li>
-<li><a href="#index-brace-expansion-80">brace expansion</a>: <a href="#Brace-Expansion">Brace Expansion</a></li>
-<li><a href="#index-builtin-2">builtin</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-command-editing-267">command editing</a>: <a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></li>
-<li><a href="#index-command-execution-99">command execution</a>: <a href="#Command-Search-and-Execution">Command Search and Execution</a></li>
-<li><a href="#index-command-expansion-98">command expansion</a>: <a href="#Simple-Command-Expansion">Simple Command Expansion</a></li>
-<li><a href="#index-command-history-373">command history</a>: <a href="#Bash-History-Facilities">Bash History Facilities</a></li>
-<li><a href="#index-command-search-100">command search</a>: <a href="#Command-Search-and-Execution">Command Search and Execution</a></li>
-<li><a href="#index-command-substitution-86">command substitution</a>: <a href="#Command-Substitution">Command Substitution</a></li>
-<li><a href="#index-command-timing-38">command timing</a>: <a href="#Pipelines">Pipelines</a></li>
-<li><a href="#index-commands_002c-compound-40">commands, compound</a>: <a href="#Compound-Commands">Compound Commands</a></li>
-<li><a href="#index-commands_002c-conditional-47">commands, conditional</a>: <a href="#Conditional-Constructs">Conditional Constructs</a></li>
-<li><a href="#index-commands_002c-grouping-59">commands, grouping</a>: <a href="#Command-Grouping">Command Grouping</a></li>
-<li><a href="#index-commands_002c-lists-39">commands, lists</a>: <a href="#Lists">Lists</a></li>
-<li><a href="#index-commands_002c-looping-41">commands, looping</a>: <a href="#Looping-Constructs">Looping Constructs</a></li>
-<li><a href="#index-commands_002c-pipelines-35">commands, pipelines</a>: <a href="#Pipelines">Pipelines</a></li>
-<li><a href="#index-commands_002c-shell-32">commands, shell</a>: <a href="#Shell-Commands">Shell Commands</a></li>
-<li><a href="#index-commands_002c-simple-33">commands, simple</a>: <a href="#Simple-Commands">Simple Commands</a></li>
-<li><a href="#index-comments_002c-shell-31">comments, shell</a>: <a href="#Comments">Comments</a></li>
-<li><a href="#index-completion-builtins-369">completion builtins</a>: <a href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a></li>
-<li><a href="#index-configuration-382">configuration</a>: <a href="#Basic-Installation">Basic Installation</a></li>
-<li><a href="#index-control-operator-3">control operator</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-directory-stack-245">directory stack</a>: <a href="#The-Directory-Stack">The Directory Stack</a></li>
-<li><a href="#index-editing-command-lines-268">editing command lines</a>: <a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></li>
-<li><a href="#index-environment-102">environment</a>: <a href="#Environment">Environment</a></li>
-<li><a href="#index-evaluation_002c-arithmetic-241">evaluation, arithmetic</a>: <a href="#Shell-Arithmetic">Shell Arithmetic</a></li>
-<li><a href="#index-event-designators-379">event designators</a>: <a href="#Event-Designators">Event Designators</a></li>
-<li><a href="#index-execution-environment-101">execution environment</a>: <a href="#Command-Execution-Environment">Command Execution Environment</a></li>
-<li><a href="#index-exit-status-103">exit status</a>: <a href="#Exit-Status">Exit Status</a></li>
-<li><a href="#index-exit-status-4">exit status</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-expansion-79">expansion</a>: <a href="#Shell-Expansions">Shell Expansions</a></li>
-<li><a href="#index-expansion_002c-arithmetic-87">expansion, arithmetic</a>: <a href="#Arithmetic-Expansion">Arithmetic Expansion</a></li>
-<li><a href="#index-expansion_002c-brace-81">expansion, brace</a>: <a href="#Brace-Expansion">Brace Expansion</a></li>
-<li><a href="#index-expansion_002c-filename-91">expansion, filename</a>: <a href="#Filename-Expansion">Filename Expansion</a></li>
-<li><a href="#index-expansion_002c-parameter-85">expansion, parameter</a>: <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a></li>
-<li><a href="#index-expansion_002c-pathname-92">expansion, pathname</a>: <a href="#Filename-Expansion">Filename Expansion</a></li>
-<li><a href="#index-expansion_002c-tilde-83">expansion, tilde</a>: <a href="#Tilde-Expansion">Tilde Expansion</a></li>
-<li><a href="#index-expressions_002c-arithmetic-240">expressions, arithmetic</a>: <a href="#Shell-Arithmetic">Shell Arithmetic</a></li>
-<li><a href="#index-expressions_002c-conditional-237">expressions, conditional</a>: <a href="#Bash-Conditional-Expressions">Bash Conditional Expressions</a></li>
-<li><a href="#index-FDL_002c-GNU-Free-Documentation-License-385">FDL, GNU Free Documentation License</a>: <a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a></li>
-<li><a href="#index-field-5">field</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-filename-6">filename</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-filename-expansion-93">filename expansion</a>: <a href="#Filename-Expansion">Filename Expansion</a></li>
-<li><a href="#index-foreground-253">foreground</a>: <a href="#Job-Control-Basics">Job Control Basics</a></li>
-<li><a href="#index-functions_002c-shell-63">functions, shell</a>: <a href="#Shell-Functions">Shell Functions</a></li>
-<li><a href="#index-history-builtins-375">history builtins</a>: <a href="#Bash-History-Builtins">Bash History Builtins</a></li>
-<li><a href="#index-history-events-380">history events</a>: <a href="#Event-Designators">Event Designators</a></li>
-<li><a href="#index-history-expansion-378">history expansion</a>: <a href="#History-Interaction">History Interaction</a></li>
-<li><a href="#index-history-list-374">history list</a>: <a href="#Bash-History-Facilities">Bash History Facilities</a></li>
-<li><a href="#index-History_002c-how-to-use-372">History, how to use</a>: <a href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a></li>
-<li><a href="#index-identifier-11">identifier</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-initialization-file_002c-readline-272">initialization file, readline</a>: <a href="#Readline-Init-File">Readline Init File</a></li>
-<li><a href="#index-installation-381">installation</a>: <a href="#Basic-Installation">Basic Installation</a></li>
-<li><a href="#index-interaction_002c-readline-265">interaction, readline</a>: <a href="#Readline-Interaction">Readline Interaction</a></li>
-<li><a href="#index-interactive-shell-235">interactive shell</a>: <a href="#Interactive-Shells">Interactive Shells</a></li>
-<li><a href="#index-interactive-shell-233">interactive shell</a>: <a href="#Invoking-Bash">Invoking Bash</a></li>
-<li><a href="#index-internationalization-25">internationalization</a>: <a href="#Locale-Translation">Locale Translation</a></li>
-<li><a href="#index-job-7">job</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-job-control-8">job control</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-job-control-252">job control</a>: <a href="#Job-Control-Basics">Job Control Basics</a></li>
-<li><a href="#index-kill-ring-271">kill ring</a>: <a href="#Readline-Killing-Commands">Readline Killing Commands</a></li>
-<li><a href="#index-killing-text-269">killing text</a>: <a href="#Readline-Killing-Commands">Readline Killing Commands</a></li>
-<li><a href="#index-localization-24">localization</a>: <a href="#Locale-Translation">Locale Translation</a></li>
-<li><a href="#index-login-shell-232">login shell</a>: <a href="#Invoking-Bash">Invoking Bash</a></li>
-<li><a href="#index-matching_002c-pattern-96">matching, pattern</a>: <a href="#Pattern-Matching">Pattern Matching</a></li>
-<li><a href="#index-metacharacter-9">metacharacter</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-name-10">name</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-native-languages-26">native languages</a>: <a href="#Locale-Translation">Locale Translation</a></li>
-<li><a href="#index-notation_002c-readline-266">notation, readline</a>: <a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></li>
-<li><a href="#index-operator_002c-shell-12">operator, shell</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-parameter-expansion-84">parameter expansion</a>: <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a></li>
-<li><a href="#index-parameters-65">parameters</a>: <a href="#Shell-Parameters">Shell Parameters</a></li>
-<li><a href="#index-parameters_002c-positional-68">parameters, positional</a>: <a href="#Positional-Parameters">Positional Parameters</a></li>
-<li><a href="#index-parameters_002c-special-69">parameters, special</a>: <a href="#Special-Parameters">Special Parameters</a></li>
-<li><a href="#index-pathname-expansion-94">pathname expansion</a>: <a href="#Filename-Expansion">Filename Expansion</a></li>
-<li><a href="#index-pattern-matching-95">pattern matching</a>: <a href="#Pattern-Matching">Pattern Matching</a></li>
-<li><a href="#index-pipeline-34">pipeline</a>: <a href="#Pipelines">Pipelines</a></li>
-<li><a href="#index-POSIX-1">POSIX</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-POSIX-Mode-251">POSIX Mode</a>: <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a></li>
-<li><a href="#index-process-group-13">process group</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-process-group-ID-14">process group ID</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-process-substitution-89">process substitution</a>: <a href="#Process-Substitution">Process Substitution</a></li>
-<li><a href="#index-programmable-completion-368">programmable completion</a>: <a href="#Programmable-Completion">Programmable Completion</a></li>
-<li><a href="#index-prompting-249">prompting</a>: <a href="#Printing-a-Prompt">Printing a Prompt</a></li>
-<li><a href="#index-quoting-22">quoting</a>: <a href="#Quoting">Quoting</a></li>
-<li><a href="#index-quoting_002c-ANSI-23">quoting, ANSI</a>: <a href="#ANSI_002dC-Quoting">ANSI-C Quoting</a></li>
-<li><a href="#index-Readline_002c-how-to-use-264">Readline, how to use</a>: <a href="#Job-Control-Variables">Job Control Variables</a></li>
-<li><a href="#index-redirection-97">redirection</a>: <a href="#Redirections">Redirections</a></li>
-<li><a href="#index-reserved-word-15">reserved word</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-restricted-shell-250">restricted shell</a>: <a href="#The-Restricted-Shell">The Restricted Shell</a></li>
-<li><a href="#index-return-status-16">return status</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-shell-arithmetic-239">shell arithmetic</a>: <a href="#Shell-Arithmetic">Shell Arithmetic</a></li>
-<li><a href="#index-shell-function-62">shell function</a>: <a href="#Shell-Functions">Shell Functions</a></li>
-<li><a href="#index-shell-script-105">shell script</a>: <a href="#Shell-Scripts">Shell Scripts</a></li>
-<li><a href="#index-shell-variable-67">shell variable</a>: <a href="#Shell-Parameters">Shell Parameters</a></li>
-<li><a href="#index-shell_002c-interactive-236">shell, interactive</a>: <a href="#Interactive-Shells">Interactive Shells</a></li>
-<li><a href="#index-signal-17">signal</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-signal-handling-104">signal handling</a>: <a href="#Signals">Signals</a></li>
-<li><a href="#index-special-builtin-18">special builtin</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-special-builtin-148">special builtin</a>: <a href="#Special-Builtins">Special Builtins</a></li>
-<li><a href="#index-startup-files-234">startup files</a>: <a href="#Bash-Startup-Files">Bash Startup Files</a></li>
-<li><a href="#index-suspending-jobs-255">suspending jobs</a>: <a href="#Job-Control-Basics">Job Control Basics</a></li>
-<li><a href="#index-tilde-expansion-82">tilde expansion</a>: <a href="#Tilde-Expansion">Tilde Expansion</a></li>
-<li><a href="#index-token-19">token</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-translation_002c-native-languages-27">translation, native languages</a>: <a href="#Locale-Translation">Locale Translation</a></li>
-<li><a href="#index-variable_002c-shell-66">variable, shell</a>: <a href="#Shell-Parameters">Shell Parameters</a></li>
-<li><a href="#index-variables_002c-readline-273">variables, readline</a>: <a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></li>
-<li><a href="#index-word-20">word</a>: <a href="#Definitions">Definitions</a></li>
-<li><a href="#index-word-splitting-90">word splitting</a>: <a href="#Word-Splitting">Word Splitting</a></li>
-<li><a href="#index-yanking-text-270">yanking text</a>: <a href="#Readline-Killing-Commands">Readline Killing Commands</a></li>
- </ul></body></html>
-
+++ /dev/null
-% texinfo.tex -- TeX macros to handle Texinfo files.
-%
-% Load plain if necessary, i.e., if running under initex.
-\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
-%
-\def\texinfoversion{2003-02-03.16}
-%
-% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-%
-% This texinfo.tex file is free software; you can redistribute it and/or
-% modify it under the terms of the GNU General Public License as
-% published by the Free Software Foundation; either version 2, or (at
-% your option) any later version.
-%
-% This texinfo.tex file is distributed in the hope that it will be
-% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
-% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-% General Public License for more details.
-%
-% You should have received a copy of the GNU General Public License
-% along with this texinfo.tex file; see the file COPYING. If not, write
-% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-% Boston, MA 02111-1307, USA.
-%
-% In other words, you are welcome to use, share and improve this program.
-% You are forbidden to forbid anyone else to use, share and improve
-% what you give them. Help stamp out software-hoarding!
-%
-% Please try the latest version of texinfo.tex before submitting bug
-% reports; you can get the latest version from:
-% ftp://ftp.gnu.org/gnu/texinfo/texinfo.tex
-% (and all GNU mirrors, see http://www.gnu.org/order/ftp.html)
-% ftp://tug.org/tex/texinfo.tex
-% (and all CTAN mirrors, see http://www.ctan.org),
-% and /home/gd/gnu/doc/texinfo.tex on the GNU machines.
-%
-% The GNU Texinfo home page is http://www.gnu.org/software/texinfo.
-%
-% The texinfo.tex in any given Texinfo distribution could well be out
-% of date, so if that's what you're using, please check.
-%
-% Send bug reports to bug-texinfo@gnu.org. Please include including a
-% complete document in each bug report with which we can reproduce the
-% problem. Patches are, of course, greatly appreciated.
-%
-% To process a Texinfo manual with TeX, it's most reliable to use the
-% texi2dvi shell script that comes with the distribution. For a simple
-% manual foo.texi, however, you can get away with this:
-% tex foo.texi
-% texindex foo.??
-% tex foo.texi
-% tex foo.texi
-% dvips foo.dvi -o # or whatever; this makes foo.ps.
-% The extra TeX runs get the cross-reference information correct.
-% Sometimes one run after texindex suffices, and sometimes you need more
-% than two; texi2dvi does it as many times as necessary.
-%
-% It is possible to adapt texinfo.tex for other languages, to some
-% extent. You can get the existing language-specific files from the
-% full Texinfo distribution.
-
-\message{Loading texinfo [version \texinfoversion]:}
-
-% If in a .fmt file, print the version number
-% and turn on active characters that we couldn't do earlier because
-% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}%
- \catcode`+=\active \catcode`\_=\active}
-
-\message{Basics,}
-\chardef\other=12
-
-% We never want plain's outer \+ definition in Texinfo.
-% For @tex, we can use \tabalign.
-\let\+ = \relax
-
-% Save some parts of plain tex whose names we will redefine.
-\let\ptexb=\b
-\let\ptexbullet=\bullet
-\let\ptexc=\c
-\let\ptexcomma=\,
-\let\ptexdot=\.
-\let\ptexdots=\dots
-\let\ptexend=\end
-\let\ptexequiv=\equiv
-\let\ptexexclam=\!
-\let\ptexgtr=>
-\let\ptexhat=^
-\let\ptexi=\i
-\let\ptexlbrace=\{
-\let\ptexless=<
-\let\ptexplus=+
-\let\ptexrbrace=\}
-\let\ptexstar=\*
-\let\ptext=\t
-
-% If this character appears in an error message or help string, it
-% starts a new line in the output.
-\newlinechar = `^^J
-
-% Set up fixed words for English if not already set.
-\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
-\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
-\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
-\ifx\putwordin\undefined \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
-\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
-\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
-\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
-\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi
-\ifx\putwordof\undefined \gdef\putwordof{of}\fi
-\ifx\putwordon\undefined \gdef\putwordon{on}\fi
-\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi
-\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi
-\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi
-\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi
-\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi
-\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi
-\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi
-%
-\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi
-\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi
-\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi
-\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi
-\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi
-\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi
-\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi
-\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi
-\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi
-\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi
-\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi
-\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi
-%
-\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi
-\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi
-\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi
-\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi
-\ifx\putwordDeftypevar\undefined\gdef\putwordDeftypevar{Variable}\fi
-\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi
-\ifx\putwordDeftypefun\undefined\gdef\putwordDeftypefun{Function}\fi
-
-% In some macros, we cannot use the `\? notation---the left quote is
-% in some cases the escape char.
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
-\chardef\dotChar = `\.
-\chardef\equalChar = `\=
-\chardef\exclamChar= `\!
-\chardef\questChar = `\?
-\chardef\semiChar = `\;
-\chardef\spaceChar = `\ %
-\chardef\underChar = `\_
-
-% Ignore a token.
-%
-\def\gobble#1{}
-
-% True if #1 is the empty string, i.e., called like `\ifempty{}'.
-%
-\def\ifempty#1{\ifemptyx #1\emptymarkA\emptymarkB}%
-\def\ifemptyx#1#2\emptymarkB{\ifx #1\emptymarkA}%
-
-% Hyphenation fixes.
-\hyphenation{ap-pen-dix}
-\hyphenation{mini-buf-fer mini-buf-fers}
-\hyphenation{eshell}
-\hyphenation{white-space}
-
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen\bindingoffset
-\newdimen\normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% Sometimes it is convenient to have everything in the transcript file
-% and nothing on the terminal. We don't just call \tracingall here,
-% since that produces some useless output on the terminal. We also make
-% some effort to order the tracing commands to reduce output in the log
-% file; cf. trace.sty in LaTeX.
-%
-\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}%
-\def\loggingall{%
- \tracingstats2
- \tracingpages1
- \tracinglostchars2 % 2 gives us more in etex
- \tracingparagraphs1
- \tracingoutput1
- \tracingmacros2
- \tracingrestores1
- \showboxbreadth\maxdimen \showboxdepth\maxdimen
- \ifx\eTeXversion\undefined\else % etex gives us more logging
- \tracingscantokens1
- \tracingifs1
- \tracinggroups1
- \tracingnesting2
- \tracingassigns1
- \fi
- \tracingcommands3 % 3 gives us more in etex
- \errorcontextlines\maxdimen
-}%
-
-% add check for \lastpenalty to plain's definitions. If the last thing
-% we did was a \nobreak, we don't want to insert more space.
-%
-\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount
- \removelastskip\penalty-50\smallskip\fi\fi}
-\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount
- \removelastskip\penalty-100\medskip\fi\fi}
-\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
- \removelastskip\penalty-200\bigskip\fi\fi}
-
-% For @cropmarks command.
-% Do @cropmarks to get crop marks.
-%
-\newif\ifcropmarks
-\let\cropmarks = \cropmarkstrue
-%
-% Dimensions to add cropmarks at corners.
-% Added by P. A. MacKay, 12 Nov. 1986
-%
-\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines
-\newdimen\cornerlong \cornerlong=1pc
-\newdimen\cornerthick \cornerthick=.3pt
-\newdimen\topandbottommargin \topandbottommargin=.75in
-
-% Main output routine.
-\chardef\PAGE = 255
-\output = {\onepageout{\pagecontents\PAGE}}
-
-\newbox\headlinebox
-\newbox\footlinebox
-
-% \onepageout takes a vbox as an argument. Note that \pagecontents
-% does insertions, but you have to call it yourself.
-\def\onepageout#1{%
- \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
- %
- \ifodd\pageno \advance\hoffset by \bindingoffset
- \else \advance\hoffset by -\bindingoffset\fi
- %
- % Do this outside of the \shipout so @code etc. will be expanded in
- % the headline as they should be, not taken literally (outputting ''code).
- \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
- \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}%
- %
- {%
- % Have to do this stuff outside the \shipout because we want it to
- % take effect in \write's, yet the group defined by the \vbox ends
- % before the \shipout runs.
- %
- \escapechar = `\\ % use backslash in output files.
- \indexdummies % don't expand commands in the output.
- \normalturnoffactive % \ in index entries must not stay \, e.g., if
- % the page break happens to be in the middle of an example.
- \shipout\vbox{%
- % Do this early so pdf references go to the beginning of the page.
- \ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
- %
- \ifcropmarks \vbox to \outervsize\bgroup
- \hsize = \outerhsize
- \vskip-\topandbottommargin
- \vtop to0pt{%
- \line{\ewtop\hfil\ewtop}%
- \nointerlineskip
- \line{%
- \vbox{\moveleft\cornerthick\nstop}%
- \hfill
- \vbox{\moveright\cornerthick\nstop}%
- }%
- \vss}%
- \vskip\topandbottommargin
- \line\bgroup
- \hfil % center the page within the outer (page) hsize.
- \ifodd\pageno\hskip\bindingoffset\fi
- \vbox\bgroup
- \fi
- %
- \unvbox\headlinebox
- \pagebody{#1}%
- \ifdim\ht\footlinebox > 0pt
- % Only leave this space if the footline is nonempty.
- % (We lessened \vsize for it in \oddfootingxxx.)
- % The \baselineskip=24pt in plain's \makefootline has no effect.
- \vskip 2\baselineskip
- \unvbox\footlinebox
- \fi
- %
- \ifcropmarks
- \egroup % end of \vbox\bgroup
- \hfil\egroup % end of (centering) \line\bgroup
- \vskip\topandbottommargin plus1fill minus1fill
- \boxmaxdepth = \cornerthick
- \vbox to0pt{\vss
- \line{%
- \vbox{\moveleft\cornerthick\nsbot}%
- \hfill
- \vbox{\moveright\cornerthick\nsbot}%
- }%
- \nointerlineskip
- \line{\ewbot\hfil\ewbot}%
- }%
- \egroup % \vbox from first cropmarks clause
- \fi
- }% end of \shipout\vbox
- }% end of group with \normalturnoffactive
- \advancepageno
- \ifnum\outputpenalty>-20000 \else\dosupereject\fi
-}
-
-\newinsert\margin \dimen\margin=\maxdimen
-
-\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
-{\catcode`\@ =11
-\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
-% marginal hacks, juha@viisa.uucp (Juha Takala)
-\ifvoid\margin\else % marginal info is present
- \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi
-\dimen@=\dp#1 \unvbox#1
-\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi
-\ifr@ggedbottom \kern-\dimen@ \vfil \fi}
-}
-
-% Here are the rules for the cropmarks. Note that they are
-% offset so that the space between them is truly \outerhsize or \outervsize
-% (P. A. MacKay, 12 November, 1986)
-%
-\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong}
-\def\nstop{\vbox
- {\hrule height\cornerthick depth\cornerlong width\cornerthick}}
-\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong}
-\def\nsbot{\vbox
- {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
-
-% Parse an argument, then pass it to #1. The argument is the rest of
-% the input line (except we remove a trailing comment). #1 should be a
-% macro which expects an ordinary undelimited TeX argument.
-%
-\def\parsearg#1{%
- \let\next = #1%
- \begingroup
- \obeylines
- \futurelet\temp\parseargx
-}
-
-% If the next token is an obeyed space (from an @example environment or
-% the like), remove it and recurse. Otherwise, we're done.
-\def\parseargx{%
- % \obeyedspace is defined far below, after the definition of \sepspaces.
- \ifx\obeyedspace\temp
- \expandafter\parseargdiscardspace
- \else
- \expandafter\parseargline
- \fi
-}
-
-% Remove a single space (as the delimiter token to the macro call).
-{\obeyspaces %
- \gdef\parseargdiscardspace {\futurelet\temp\parseargx}}
-
-{\obeylines %
- \gdef\parseargline#1^^M{%
- \endgroup % End of the group started in \parsearg.
- %
- % First remove any @c comment, then any @comment.
- % Result of each macro is put in \toks0.
- \argremovec #1\c\relax %
- \expandafter\argremovecomment \the\toks0 \comment\relax %
- %
- % Call the caller's macro, saved as \next in \parsearg.
- \expandafter\next\expandafter{\the\toks0}%
- }%
-}
-
-% Since all \c{,omment} does is throw away the argument, we can let TeX
-% do that for us. The \relax here is matched by the \relax in the call
-% in \parseargline; it could be more or less anything, its purpose is
-% just to delimit the argument to the \c.
-\def\argremovec#1\c#2\relax{\toks0 = {#1}}
-\def\argremovecomment#1\comment#2\relax{\toks0 = {#1}}
-
-% \argremovec{,omment} might leave us with trailing spaces, though; e.g.,
-% @end itemize @c foo
-% will have two active spaces as part of the argument with the
-% `itemize'. Here we remove all active spaces from #1, and assign the
-% result to \toks0.
-%
-% This loses if there are any *other* active characters besides spaces
-% in the argument -- _ ^ +, for example -- since they get expanded.
-% Fortunately, Texinfo does not define any such commands. (If it ever
-% does, the catcode of the characters in questionwill have to be changed
-% here.) But this means we cannot call \removeactivespaces as part of
-% \argremovec{,omment}, since @c uses \parsearg, and thus the argument
-% that \parsearg gets might well have any character at all in it.
-%
-\def\removeactivespaces#1{%
- \begingroup
- \ignoreactivespaces
- \edef\temp{#1}%
- \global\toks0 = \expandafter{\temp}%
- \endgroup
-}
-
-% Change the active space to expand to nothing.
-%
-\begingroup
- \obeyspaces
- \gdef\ignoreactivespaces{\obeyspaces\let =\empty}
-\endgroup
-
-
-\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next}
-
-%% These are used to keep @begin/@end levels from running away
-%% Call \inENV within environments (after a \begingroup)
-\newif\ifENV \ENVfalse \def\inENV{\ifENV\relax\else\ENVtrue\fi}
-\def\ENVcheck{%
-\ifENV\errmessage{Still within an environment; press RETURN to continue}
-\endgroup\fi} % This is not perfect, but it should reduce lossage
-
-% @begin foo is the same as @foo, for now.
-\newhelp\EMsimple{Press RETURN to continue.}
-
-\outer\def\begin{\parsearg\beginxxx}
-
-\def\beginxxx #1{%
-\expandafter\ifx\csname #1\endcsname\relax
-{\errhelp=\EMsimple \errmessage{Undefined command @begin #1}}\else
-\csname #1\endcsname\fi}
-
-% @end foo executes the definition of \Efoo.
-%
-\def\end{\parsearg\endxxx}
-\def\endxxx #1{%
- \removeactivespaces{#1}%
- \edef\endthing{\the\toks0}%
- %
- \expandafter\ifx\csname E\endthing\endcsname\relax
- \expandafter\ifx\csname \endthing\endcsname\relax
- % There's no \foo, i.e., no ``environment'' foo.
- \errhelp = \EMsimple
- \errmessage{Undefined command `@end \endthing'}%
- \else
- \unmatchedenderror\endthing
- \fi
- \else
- % Everything's ok; the right environment has been started.
- \csname E\endthing\endcsname
- \fi
-}
-
-% There is an environment #1, but it hasn't been started. Give an error.
-%
-\def\unmatchedenderror#1{%
- \errhelp = \EMsimple
- \errmessage{This `@end #1' doesn't have a matching `@#1'}%
-}
-
-% Define the control sequence \E#1 to give an unmatched @end error.
-%
-\def\defineunmatchedend#1{%
- \expandafter\def\csname E#1\endcsname{\unmatchedenderror{#1}}%
-}
-
-
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
- % Definitions to produce \{ and \} commands for indices,
- % and @{ and @} for the aux file.
- \catcode`\{ = \other \catcode`\} = \other
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\! = 0 \catcode`\\ = \other
- !gdef!lbracecmd[\{]%
- !gdef!rbracecmd[\}]%
- !gdef!lbraceatcmd[@{]%
- !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
- \def\temp{#1}%
- \ifx\temp\imacro \ptexi
- \else\ifx\temp\jmacro \j
- \else \errmessage{@dotless can be used only with i or j}%
- \fi\fi
-}
-
-% Be sure we're in horizontal mode when doing a tie, since we make space
-% equivalent to this in @example-like environments. Otherwise, a space
-% at the beginning of a line will start with \penalty -- and
-% since \penalty is valid in vertical mode, we'd end up putting the
-% penalty on the vertical list instead of in the new paragraph.
-{\catcode`@ = 11
- % Avoid using \@M directly, because that causes trouble
- % if the definition is written into an index file.
- \global\let\tiepenalty = \@M
- \gdef\tie{\leavevmode\penalty\tiepenalty\ }
-}
-
-% @: forces normal size whitespace following.
-\def\:{\spacefactor=1000 }
-
-% @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
-
-% @. is an end-of-sentence period.
-\def\.{.\spacefactor=3000 }
-
-% @! is an end-of-sentence bang.
-\def\!{!\spacefactor=3000 }
-
-% @? is an end-of-sentence query.
-\def\?{?\spacefactor=3000 }
-
-% @w prevents a word break. Without the \leavevmode, @w at the
-% beginning of a paragraph, when TeX is still in vertical mode, would
-% produce a whole line of output instead of starting the paragraph.
-\def\w#1{\leavevmode\hbox{#1}}
-
-% @group ... @end group forces ... to be all on one page, by enclosing
-% it in a TeX vbox. We use \vtop instead of \vbox to construct the box
-% to keep its height that of a normal line. According to the rules for
-% \topskip (p.114 of the TeXbook), the glue inserted is
-% max (\topskip - \ht (first item), 0). If that height is large,
-% therefore, no glue is inserted, and the space between the headline and
-% the text is small, which looks bad.
-%
-% Another complication is that the group might be very large. This can
-% cause the glue on the previous page to be unduly stretched, because it
-% does not have much material. In this case, it's better to add an
-% explicit \vfill so that the extra space is at the bottom. The
-% threshold for doing this is if the group is more than \vfilllimit
-% percent of a page (\vfilllimit can be changed inside of @tex).
-%
-\newbox\groupbox
-\def\vfilllimit{0.7}
-%
-\def\group{\begingroup
- \ifnum\catcode13=\active \else
- \errhelp = \groupinvalidhelp
- \errmessage{@group invalid in context where filling is enabled}%
- \fi
- %
- % The \vtop we start below produces a box with normal height and large
- % depth; thus, TeX puts \baselineskip glue before it, and (when the
- % next line of text is done) \lineskip glue after it. (See p.82 of
- % the TeXbook.) Thus, space below is not quite equal to space
- % above. But it's pretty close.
- \def\Egroup{%
- \egroup % End the \vtop.
- % \dimen0 is the vertical size of the group's box.
- \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox
- % \dimen2 is how much space is left on the page (more or less).
- \dimen2 = \pageheight \advance\dimen2 by -\pagetotal
- % if the group doesn't fit on the current page, and it's a big big
- % group, force a page break.
- \ifdim \dimen0 > \dimen2
- \ifdim \pagetotal < \vfilllimit\pageheight
- \page
- \fi
- \fi
- \copy\groupbox
- \endgroup % End the \group.
- }%
- %
- \setbox\groupbox = \vtop\bgroup
- % We have to put a strut on the last line in case the @group is in
- % the midst of an example, rather than completely enclosing it.
- % Otherwise, the interline space between the last line of the group
- % and the first line afterwards is too small. But we can't put the
- % strut in \Egroup, since there it would be on a line by itself.
- % Hence this just inserts a strut at the beginning of each line.
- \everypar = {\strut}%
- %
- % Since we have a strut on every line, we don't need any of TeX's
- % normal interline spacing.
- \offinterlineskip
- %
- % OK, but now we have to do something about blank
- % lines in the input in @example-like environments, which normally
- % just turn into \lisppar, which will insert no space now that we've
- % turned off the interline space. Simplest is to make them be an
- % empty paragraph.
- \ifx\par\lisppar
- \edef\par{\leavevmode \par}%
- %
- % Reset ^^M's definition to new definition of \par.
- \obeylines
- \fi
- %
- % Do @comment since we are called inside an environment such as
- % @example, where each end-of-line in the input causes an
- % end-of-line in the output. We don't want the end-of-line after
- % the `@group' to put extra space in the output. Since @group
- % should appear on a line by itself (according to the Texinfo
- % manual), we don't worry about eating any user text.
- \comment
-}
-%
-% TeX puts in an \escapechar (i.e., `@') at the beginning of the help
-% message, so this ends up printing `@group can only ...'.
-%
-\newhelp\groupinvalidhelp{%
-group can only be used in environments such as @example,^^J%
-where each line of input produces a line of output.}
-
-% @need space-in-mils
-% forces a page break if there is not space-in-mils remaining.
-
-\newdimen\mil \mil=0.001in
-
-\def\need{\parsearg\needx}
-
-% Old definition--didn't work.
-%\def\needx #1{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
-\def\needx#1{%
- % Ensure vertical mode, so we don't make a big box in the middle of a
- % paragraph.
- \par
- %
- % If the @need value is less than one line space, it's useless.
- \dimen0 = #1\mil
- \dimen2 = \ht\strutbox
- \advance\dimen2 by \dp\strutbox
- \ifdim\dimen0 > \dimen2
- %
- % Do a \strut just to make the height of this box be normal, so the
- % normal leading is inserted relative to the preceding line.
- % And a page break here is fine.
- \vtop to #1\mil{\strut\vfil}%
- %
- % TeX does not even consider page breaks if a penalty added to the
- % main vertical list is 10000 or more. But in order to see if the
- % empty box we just added fits on the page, we must make it consider
- % page breaks. On the other hand, we don't want to actually break the
- % page after the empty box. So we use a penalty of 9999.
- %
- % There is an extremely small chance that TeX will actually break the
- % page at this \penalty, if there are no other feasible breakpoints in
- % sight. (If the user is using lots of big @group commands, which
- % almost-but-not-quite fill up a page, TeX will have a hard time doing
- % good page breaking, for example.) However, I could not construct an
- % example where a page broke at this \penalty; if it happens in a real
- % document, then we can reconsider our strategy.
- \penalty9999
- %
- % Back up by the size of the box, whether we did a page break or not.
- \kern -#1\mil
- %
- % Do not allow a page break right after this kern.
- \nobreak
- \fi
-}
-
-% @br forces paragraph break
-
-\let\br = \par
-
-% @dots{} output an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in a typewriter
-% font as three actual period characters.
-%
-\def\dots{%
- \leavevmode
- \hbox to 1.5em{%
- \hskip 0pt plus 0.25fil minus 0.25fil
- .\hss.\hss.%
- \hskip 0pt plus 0.5fil minus 0.5fil
- }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
- \leavevmode
- \hbox to 2em{%
- \hskip 0pt plus 0.25fil minus 0.25fil
- .\hss.\hss.\hss.%
- \hskip 0pt plus 0.5fil minus 0.5fil
- }%
- \spacefactor=3000
-}
-
-
-% @page forces the start of a new page
-%
-\def\page{\par\vfill\supereject}
-
-% @exdent text....
-% outputs text on separate line in roman font, starting at standard page margin
-
-% This records the amount of indent in the innermost environment.
-% That's how much \exdent should take out.
-\newskip\exdentamount
-
-% This defn is used inside fill environments such as @defun.
-\def\exdent{\parsearg\exdentyyy}
-\def\exdentyyy #1{{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break}}
-
-% This defn is used inside nofill environments such as @example.
-\def\nofillexdent{\parsearg\nofillexdentyyy}
-\def\nofillexdentyyy #1{{\advance \leftskip by -\exdentamount
-\leftline{\hskip\leftskip{\rm#1}}}}
-
-% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
-% paragraph. For more general purposes, use the \margin insertion
-% class. WHICH is `l' or `r'.
-%
-\newskip\inmarginspacing \inmarginspacing=1cm
-\def\strutdepth{\dp\strutbox}
-%
-\def\doinmargin#1#2{\strut\vadjust{%
- \nobreak
- \kern-\strutdepth
- \vtop to \strutdepth{%
- \baselineskip=\strutdepth
- \vss
- % if you have multiple lines of stuff to put here, you'll need to
- % make the vbox yourself of the appropriate size.
- \ifx#1l%
- \llap{\ignorespaces #2\hskip\inmarginspacing}%
- \else
- \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}%
- \fi
- \null
- }%
-}}
-\def\inleftmargin{\doinmargin l}
-\def\inrightmargin{\doinmargin r}
-%
-% @inmargin{TEXT [, RIGHT-TEXT]}
-% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right;
-% else use TEXT for both).
-%
-\def\inmargin#1{\parseinmargin #1,,\finish}
-\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing.
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0 > 0pt
- \def\lefttext{#1}% have both texts
- \def\righttext{#2}%
- \else
- \def\lefttext{#1}% have only one text
- \def\righttext{#1}%
- \fi
- %
- \ifodd\pageno
- \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin
- \else
- \def\temp{\inleftmargin\lefttext}%
- \fi
- \temp
-}
-
-% @include file insert text of that file as input.
-% Allow normal characters that we make active in the argument (a file name).
-\def\include{\begingroup
- \catcode`\\=\other
- \catcode`~=\other
- \catcode`^=\other
- \catcode`_=\other
- \catcode`|=\other
- \catcode`<=\other
- \catcode`>=\other
- \catcode`+=\other
- \parsearg\includezzz}
-% Restore active chars for included file.
-\def\includezzz#1{\endgroup\begingroup
- % Read the included file in a group so nested @include's work.
- \def\thisfile{#1}%
- \let\value=\expandablevalue
- \input\thisfile
-\endgroup}
-
-\def\thisfile{}
-
-% @center line
-% outputs that line, centered.
-%
-\def\center{\parsearg\docenter}
-\def\docenter#1{{%
- \ifhmode \hfil\break \fi
- \advance\hsize by -\leftskip
- \advance\hsize by -\rightskip
- \line{\hfil \ignorespaces#1\unskip \hfil}%
- \ifhmode \break \fi
-}}
-
-% @sp n outputs n lines of vertical space
-
-\def\sp{\parsearg\spxxx}
-\def\spxxx #1{\vskip #1\baselineskip}
-
-% @comment ...line which is ignored...
-% @c is the same as @comment
-% @ignore ... @end ignore is another way to write a comment
-
-\def\comment{\begingroup \catcode`\^^M=\other%
-\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
-\commentxxx}
-{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
-\let\c=\comment
-
-% @paragraphindent NCHARS
-% We'll use ems for NCHARS, close enough.
-% We cannot implement @paragraphindent asis, though.
-%
-\def\asisword{asis} % no translation, these are keywords
-\def\noneword{none}
-%
-\def\paragraphindent{\parsearg\doparagraphindent}
-\def\doparagraphindent#1{%
- \def\temp{#1}%
- \ifx\temp\asisword
- \else
- \ifx\temp\noneword
- \defaultparindent = 0pt
- \else
- \defaultparindent = #1em
- \fi
- \fi
- \parindent = \defaultparindent
-}
-
-% @exampleindent NCHARS
-% We'll use ems for NCHARS like @paragraphindent.
-% It seems @exampleindent asis isn't necessary, but
-% I preserve it to make it similar to @paragraphindent.
-\def\exampleindent{\parsearg\doexampleindent}
-\def\doexampleindent#1{%
- \def\temp{#1}%
- \ifx\temp\asisword
- \else
- \ifx\temp\noneword
- \lispnarrowing = 0pt
- \else
- \lispnarrowing = #1em
- \fi
- \fi
-}
-
-% @asis just yields its argument. Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-% We don't use $'s directly in the definition of \math because we need
-% to set catcodes according to plain TeX first, to allow for subscripts,
-% superscripts, special math chars, etc.
-%
-\let\implicitmath = $%$ font-lock fix
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}. So make
-% _ within @math be active (mathcode "8000), and distinguish by seeing
-% if the current family is \slfam, which is what @var uses.
-%
-{\catcode\underChar = \active
-\gdef\mathunderscore{%
- \catcode\underChar=\active
- \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
-}}
-%
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care. Texinfo does not
-% otherwise define @\.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
- \tex
- \mathcode`\_="8000 \mathunderscore
- \let\\ = \mathbackslash
- \mathactive
- \implicitmath\finishmath}
-\def\finishmath#1{#1\implicitmath\Etex}
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an
-% argument to a command which set the catcodes (such as @item or @section).
-%
-{
- \catcode`^ = \active
- \catcode`< = \active
- \catcode`> = \active
- \catcode`+ = \active
- \gdef\mathactive{%
- \let^ = \ptexhat
- \let< = \ptexless
- \let> = \ptexgtr
- \let+ = \ptexplus
- }
-}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{\implicitmath\ptexbullet\implicitmath}
-\def\minus{\implicitmath-\implicitmath}
-
-% @refill is a no-op.
-\let\refill=\relax
-
-% If working on a large document in chapters, it is convenient to
-% be able to disable indexing, cross-referencing, and contents, for test runs.
-% This is done with @novalidate (before @setfilename).
-%
-\newif\iflinks \linkstrue % by default we want the aux files.
-\let\novalidate = \linksfalse
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
- \iflinks
- \readauxfile
- \fi % \openindices needs to do some work in any case.
- \openindices
- \fixbackslash % Turn off hack to swallow `\input texinfo'.
- \global\let\setfilename=\comment % Ignore extra @setfilename cmds.
- %
- % If texinfo.cnf is present on the system, read it.
- % Useful for site-wide @afourpaper, etc.
- % Just to be on the safe side, close the input stream before the \input.
- \openin 1 texinfo.cnf
- \ifeof1 \let\temp=\relax \else \def\temp{\input texinfo.cnf }\fi
- \closein1
- \temp
- %
- \comment % Ignore the actual filename.
-}
-
-% Called from \setfilename.
-%
-\def\openindices{%
- \newindex{cp}%
- \newcodeindex{fn}%
- \newcodeindex{vr}%
- \newcodeindex{tp}%
- \newcodeindex{ky}%
- \newcodeindex{pg}%
-}
-
-% @bye.
-\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
-
-
-\message{pdf,}
-% adobe `portable' document format
-\newcount\tempnum
-\newcount\lnkcount
-\newtoks\filename
-\newcount\filenamelength
-\newcount\pgn
-\newtoks\toksA
-\newtoks\toksB
-\newtoks\toksC
-\newtoks\toksD
-\newbox\boxA
-\newcount\countA
-\newif\ifpdf
-\newif\ifpdfmakepagedest
-
-\ifx\pdfoutput\undefined
- \pdffalse
- \let\pdfmkdest = \gobble
- \let\pdfurl = \gobble
- \let\endlink = \relax
- \let\linkcolor = \relax
- \let\pdfmakeoutlines = \relax
-\else
- \pdftrue
- \pdfoutput = 1
- \input pdfcolor
- \def\dopdfimage#1#2#3{%
- \def\imagewidth{#2}%
- \def\imageheight{#3}%
- % without \immediate, pdftex seg faults when the same image is
- % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
- \ifnum\pdftexversion < 14
- \immediate\pdfimage
- \else
- \immediate\pdfximage
- \fi
- \ifx\empty\imagewidth\else width \imagewidth \fi
- \ifx\empty\imageheight\else height \imageheight \fi
- \ifnum\pdftexversion<13
- #1.pdf%
- \else
- {#1.pdf}%
- \fi
- \ifnum\pdftexversion < 14 \else
- \pdfrefximage \pdflastximage
- \fi}
- \def\pdfmkdest#1{{\normalturnoffactive \pdfdest name{#1} xyz}}
- \def\pdfmkpgn#1{#1}
- \let\linkcolor = \Blue % was Cyan, but that seems light?
- \def\endlink{\Black\pdfendlink}
- % Adding outlines to PDF; macros for calculating structure of outlines
- % come from Petr Olsak
- \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
- \else \csname#1\endcsname \fi}
- \def\advancenumber#1{\tempnum=\expnumber{#1}\relax
- \advance\tempnum by1
- \expandafter\xdef\csname#1\endcsname{\the\tempnum}}
- \def\pdfmakeoutlines{{%
- \openin 1 \jobname.toc
- \ifeof 1\else\begingroup
- \closein 1
- % Thanh's hack / proper braces in bookmarks
- \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
- \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
- %
- \def\chapentry ##1##2##3{}
- \def\secentry ##1##2##3##4{\advancenumber{chap##2}}
- \def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
- \def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
- \let\appendixentry = \chapentry
- \let\unnumbchapentry = \chapentry
- \let\unnumbsecentry = \secentry
- \let\unnumbsubsecentry = \subsecentry
- \let\unnumbsubsubsecentry = \subsubsecentry
- \input \jobname.toc
- \def\chapentry ##1##2##3{%
- \pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
- \def\secentry ##1##2##3##4{%
- \pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
- \def\subsecentry ##1##2##3##4##5{%
- \pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
- \def\subsubsecentry ##1##2##3##4##5##6{%
- \pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
- \let\appendixentry = \chapentry
- \let\unnumbchapentry = \chapentry
- \let\unnumbsecentry = \secentry
- \let\unnumbsubsecentry = \subsecentry
- \let\unnumbsubsubsecentry = \subsubsecentry
- %
- % Make special characters normal for writing to the pdf file.
- %
- \indexnofonts
- \let\tt=\relax
- \turnoffactive
- \input \jobname.toc
- \endgroup\fi
- }}
- \def\makelinks #1,{%
- \def\params{#1}\def\E{END}%
- \ifx\params\E
- \let\nextmakelinks=\relax
- \else
- \let\nextmakelinks=\makelinks
- \ifnum\lnkcount>0,\fi
- \picknum{#1}%
- \startlink attr{/Border [0 0 0]}
- goto name{\pdfmkpgn{\the\pgn}}%
- \linkcolor #1%
- \advance\lnkcount by 1%
- \endlink
- \fi
- \nextmakelinks
- }
- \def\picknum#1{\expandafter\pn#1}
- \def\pn#1{%
- \def\p{#1}%
- \ifx\p\lbrace
- \let\nextpn=\ppn
- \else
- \let\nextpn=\ppnn
- \def\first{#1}
- \fi
- \nextpn
- }
- \def\ppn#1{\pgn=#1\gobble}
- \def\ppnn{\pgn=\first}
- \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,}
- \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
- \def\skipspaces#1{\def\PP{#1}\def\D{|}%
- \ifx\PP\D\let\nextsp\relax
- \else\let\nextsp\skipspaces
- \ifx\p\space\else\addtokens{\filename}{\PP}%
- \advance\filenamelength by 1
- \fi
- \fi
- \nextsp}
- \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
- \ifnum\pdftexversion < 14
- \let \startlink \pdfannotlink
- \else
- \let \startlink \pdfstartlink
- \fi
- \def\pdfurl#1{%
- \begingroup
- \normalturnoffactive\def\@{@}%
- \let\value=\expandablevalue
- \leavevmode\Red
- \startlink attr{/Border [0 0 0]}%
- user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
- % #1
- \endgroup}
- \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}}
- \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks}
- \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks}
- \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}}
- \def\maketoks{%
- \expandafter\poptoks\the\toksA|ENDTOKS|
- \ifx\first0\adn0
- \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3
- \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6
- \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9
- \else
- \ifnum0=\countA\else\makelink\fi
- \ifx\first.\let\next=\done\else
- \let\next=\maketoks
- \addtokens{\toksB}{\the\toksD}
- \ifx\first,\addtokens{\toksB}{\space}\fi
- \fi
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \next}
- \def\makelink{\addtokens{\toksB}%
- {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
- \def\pdflink#1{%
- \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
- \linkcolor #1\endlink}
- \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
-\fi % \ifx\pdfoutput
-
-
-\message{fonts,}
-% Font-change commands.
-
-% Texinfo sort of supports the sans serif font style, which plain TeX does not.
-% So we set up a \sf analogous to plain's \rm, etc.
-\newfam\sffam
-\def\sf{\fam=\sffam \tensf}
-\let\li = \sf % Sometimes we call it \li, not \sf.
-
-% We don't need math for this one.
-\def\ttsl{\tenttsl}
-
-% Default leading.
-\newdimen\textleading \textleading = 13.2pt
-
-% Set the baselineskip to #1, and the lineskip and strut size
-% correspondingly. There is no deep meaning behind these magic numbers
-% used as factors; they just match (closely enough) what Knuth defined.
-%
-\def\lineskipfactor{.08333}
-\def\strutheightpercent{.70833}
-\def\strutdepthpercent {.29167}
-%
-\def\setleading#1{%
- \normalbaselineskip = #1\relax
- \normallineskip = \lineskipfactor\normalbaselineskip
- \normalbaselines
- \setbox\strutbox =\hbox{%
- \vrule width0pt height\strutheightpercent\baselineskip
- depth \strutdepthpercent \baselineskip
- }%
-}
-
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
-% #3 is the font's design size, #4 is a scale factor
-\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
-
-% Use cm as the default font prefix.
-% To specify the font prefix, you must define \fontprefix
-% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
-\def\fontprefix{cm}
-\fi
-% Support font families that don't use the same naming scheme as CM.
-\def\rmshape{r}
-\def\rmbshape{bx} %where the normal face is bold
-\def\bfshape{b}
-\def\bxshape{bx}
-\def\ttshape{tt}
-\def\ttbshape{tt}
-\def\ttslshape{sltt}
-\def\itshape{ti}
-\def\itbshape{bxti}
-\def\slshape{sl}
-\def\slbshape{bxsl}
-\def\sfshape{ss}
-\def\sfbshape{ss}
-\def\scshape{csc}
-\def\scbshape{csc}
-
-\newcount\mainmagstep
-\ifx\bigger\relax
- % not really supported.
- \mainmagstep=\magstep1
- \setfont\textrm\rmshape{12}{1000}
- \setfont\texttt\ttshape{12}{1000}
-\else
- \mainmagstep=\magstephalf
- \setfont\textrm\rmshape{10}{\mainmagstep}
- \setfont\texttt\ttshape{10}{\mainmagstep}
-\fi
-% Instead of cmb10, you may want to use cmbx10.
-% cmbx10 is a prettier font on its own, but cmb10
-% looks better when embedded in a line with cmr10
-% (in Bob's opinion).
-\setfont\textbf\bfshape{10}{\mainmagstep}
-\setfont\textit\itshape{10}{\mainmagstep}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
-\font\texti=cmmi10 scaled \mainmagstep
-\font\textsy=cmsy10 scaled \mainmagstep
-
-% A few fonts for @defun, etc.
-\setfont\defbf\bxshape{10}{\magstep1} %was 1314
-\setfont\deftt\ttshape{10}{\magstep1}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \bf}
-
-% Fonts for indices, footnotes, small examples (9pt).
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
-\font\smalli=cmmi9
-\font\smallsy=cmsy9
-
-% Fonts for small examples (8pt).
-\setfont\smallerrm\rmshape{8}{1000}
-\setfont\smallertt\ttshape{8}{1000}
-\setfont\smallerbf\bfshape{10}{800}
-\setfont\smallerit\itshape{8}{1000}
-\setfont\smallersl\slshape{8}{1000}
-\setfont\smallersf\sfshape{8}{1000}
-\setfont\smallersc\scshape{10}{800}
-\setfont\smallerttsl\ttslshape{10}{800}
-\font\smalleri=cmmi8
-\font\smallersy=cmsy8
-
-% Fonts for title page:
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
-\let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
-\font\titlei=cmmi12 scaled \magstep3
-\font\titlesy=cmsy10 scaled \magstep4
-\def\authorrm{\secrm}
-\def\authortt{\sectt}
-
-% Chapter (and unnumbered) fonts (17.28pt).
-\setfont\chaprm\rmbshape{12}{\magstep2}
-\setfont\chapit\itbshape{10}{\magstep3}
-\setfont\chapsl\slbshape{10}{\magstep3}
-\setfont\chaptt\ttbshape{12}{\magstep2}
-\setfont\chapttsl\ttslshape{10}{\magstep3}
-\setfont\chapsf\sfbshape{17}{1000}
-\let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}
-\font\chapi=cmmi12 scaled \magstep2
-\font\chapsy=cmsy10 scaled \magstep3
-
-% Section fonts (14.4pt).
-\setfont\secrm\rmbshape{12}{\magstep1}
-\setfont\secit\itbshape{10}{\magstep2}
-\setfont\secsl\slbshape{10}{\magstep2}
-\setfont\sectt\ttbshape{12}{\magstep1}
-\setfont\secttsl\ttslshape{10}{\magstep2}
-\setfont\secsf\sfbshape{12}{\magstep1}
-\let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}
-\font\seci=cmmi12 scaled \magstep1
-\font\secsy=cmsy10 scaled \magstep2
-
-% Subsection fonts (13.15pt).
-\setfont\ssecrm\rmbshape{12}{\magstephalf}
-\setfont\ssecit\itbshape{10}{1315}
-\setfont\ssecsl\slbshape{10}{1315}
-\setfont\ssectt\ttbshape{12}{\magstephalf}
-\setfont\ssecttsl\ttslshape{10}{1315}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}
-\let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{\magstep1}
-\font\sseci=cmmi12 scaled \magstephalf
-\font\ssecsy=cmsy10 scaled 1315
-% The smallcaps and symbol fonts should actually be scaled \magstep1.5,
-% but that is not a standard magnification.
-
-% In order for the font changes to affect most math symbols and letters,
-% we have to define the \textfont of the standard families. Since
-% texinfo doesn't allow for producing subscripts and superscripts except
-% in the main text, we don't bother to reset \scriptfont and
-% \scriptscriptfont (which would also require loading a lot more fonts).
-%
-\def\resetmathfonts{%
- \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy
- \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf
- \textfont\ttfam=\tentt \textfont\sffam=\tensf
-}
-
-% The font-changing commands redefine the meanings of \tenSTYLE, instead
-% of just \STYLE. We do this so that font changes will continue to work
-% in math mode, where it is the current \fam that is relevant in most
-% cases, not the current font. Plain TeX does \def\bf{\fam=\bffam
-% \tenbf}, for example. By redefining \tenbf, we obviate the need to
-% redefine \bf itself.
-\def\textfonts{%
- \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl
- \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc
- \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy \let\tenttsl=\textttsl
- \resetmathfonts \setleading{\textleading}}
-\def\titlefonts{%
- \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl
- \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc
- \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy
- \let\tenttsl=\titlettsl
- \resetmathfonts \setleading{25pt}}
-\def\titlefont#1{{\titlefonts\rm #1}}
-\def\chapfonts{%
- \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
- \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
- \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy \let\tenttsl=\chapttsl
- \resetmathfonts \setleading{19pt}}
-\def\secfonts{%
- \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl
- \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc
- \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy \let\tenttsl=\secttsl
- \resetmathfonts \setleading{16pt}}
-\def\subsecfonts{%
- \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl
- \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc
- \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy \let\tenttsl=\ssecttsl
- \resetmathfonts \setleading{15pt}}
-\let\subsubsecfonts = \subsecfonts % Maybe make sssec fonts scaled magstephalf?
-\def\smallfonts{%
- \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl
- \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc
- \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy
- \let\tenttsl=\smallttsl
- \resetmathfonts \setleading{10.5pt}}
-\def\smallerfonts{%
- \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl
- \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc
- \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy
- \let\tenttsl=\smallerttsl
- \resetmathfonts \setleading{9.5pt}}
-
-% Set the fonts to use with the @small... environments.
-\let\smallexamplefonts = \smallfonts
-
-% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample
-% can fit this many characters:
-% 8.5x11=86 smallbook=72 a4=90 a5=69
-% If we use \smallerfonts (8pt), then we can fit this many characters:
-% 8.5x11=90+ smallbook=80 a4=90+ a5=77
-% For me, subjectively, the few extra characters that fit aren't worth
-% the additional smallness of 8pt. So I'm making the default 9pt.
-%
-% By the way, for comparison, here's what fits with @example (10pt):
-% 8.5x11=71 smallbook=60 a4=75 a5=58
-%
-% I wish we used A4 paper on this side of the Atlantic.
-%
-% --karl, 24jan03.
-
-
-% Set up the default fonts, so we can use them for creating boxes.
-%
-\textfonts
-
-% Define these so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
-
-% Count depth in font-changes, for error checks
-\newcount\fontdepth \fontdepth=0
-
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}
-\setfont\shortcontbf\bxshape{12}{1000}
-\setfont\shortcontsl\slshape{12}{1000}
-\setfont\shortconttt\ttshape{12}{1000}
-
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
-
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi}
-\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
-
-\let\i=\smartitalic
-\let\var=\smartslanted
-\let\dfn=\smartslanted
-\let\emph=\smartitalic
-\let\cite=\smartslanted
-
-\def\b#1{{\bf #1}}
-\let\strong=\b
-
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph. Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
-% Set sfcode to normal for the chars that usually have another value.
-% Can't use plain's \frenchspacing because it uses the `\x notation, and
-% sometimes \x has an active definition that messes things up.
-%
-\catcode`@=11
- \def\frenchspacing{%
- \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
- \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
- }
-\catcode`@=\other
-
-\def\t#1{%
- {\tt \rawbackslash \frenchspacing #1}%
- \null
-}
-\let\ttfont=\t
-\def\samp#1{`\tclose{#1}'\null}
-\setfont\keyrm\rmshape{8}{1000}
-\font\keysy=cmsy9
-\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
- \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
- \vbox{\hrule\kern-0.4pt
- \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
- \kern-0.4pt\hrule}%
- \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-% The old definition, with no lozenge:
-%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
-\def\ctrl #1{{\tt \rawbackslash \hat}#1}
-
-% @file, @option are the same as @samp.
-\let\file=\samp
-\let\option=\samp
-
-% @code is a modification of @t,
-% which makes spaces the same size as normal in the surrounding text.
-\def\tclose#1{%
- {%
- % Change normal interword space to be same as for the current font.
- \spaceskip = \fontdimen2\font
- %
- % Switch to typewriter.
- \tt
- %
- % But `\ ' produces the large typewriter interword space.
- \def\ {{\spaceskip = 0pt{} }}%
- %
- % Turn off hyphenation.
- \nohyphenation
- %
- \rawbackslash
- \frenchspacing
- #1%
- }%
- \null
-}
-
-% We *must* turn on hyphenation at `-' and `_' in \code.
-% Otherwise, it is too hard to avoid overfull hboxes
-% in the Emacs manual, the Library manual, etc.
-
-% Unfortunately, TeX uses one parameter (\hyphenchar) to control
-% both hyphenation at - and hyphenation within words.
-% We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate at a dash.
-% -- rms.
-{
- \catcode`\-=\active
- \catcode`\_=\active
- %
- \global\def\code{\begingroup
- \catcode`\-=\active \let-\codedash
- \catcode`\_=\active \let_\codeunder
- \codex
- }
- %
- % If we end up with any active - characters when handling the index,
- % just treat them as a normal -.
- \global\def\indexbreaks{\catcode`\-=\active \let-\realdash}
-}
-
-\def\realdash{-}
-\def\codedash{-\discretionary{}{}{}}
-\def\codeunder{%
- % this is all so @math{@code{var_name}+1} can work. In math mode, _
- % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.)
- % will therefore expand the active definition of _, which is us
- % (inside @code that is), therefore an endless loop.
- \ifusingtt{\ifmmode
- \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_.
- \else\normalunderscore \fi
- \discretionary{}{}{}}%
- {\_}%
-}
-\def\codex #1{\tclose{#1}\endgroup}
-
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-% `example' (@kbd uses ttsl only inside of @example and friends),
-% or `code' (@kbd uses normal tty font always).
-\def\kbdinputstyle{\parsearg\kbdinputstylexxx}
-\def\kbdinputstylexxx#1{%
- \def\arg{#1}%
- \ifx\arg\worddistinct
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
- \else\ifx\arg\wordexample
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
- \else\ifx\arg\wordcode
- \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @kbdinputstyle `\arg'}%
- \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct.'
-\kbdinputstyle distinct
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\look}}\fi
-\else{\tclose{\kbdfont\look}}\fi}
-
-% For @url, @env, @command quotes seem unnecessary, so use \code.
-\let\url=\code
-\let\env=\code
-\let\command=\code
-
-% @uref (abbreviation for `urlref') takes an optional (comma-separated)
-% second argument specifying the text to display and an optional third
-% arg as text to display instead of (rather than in addition to) the url
-% itself. First (mandatory) arg is the url. Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
- \unsepspaces
- \pdfurl{#1}%
- \setbox0 = \hbox{\ignorespaces #3}%
- \ifdim\wd0 > 0pt
- \unhbox0 % third arg given, show only that
- \else
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0 > 0pt
- \ifpdf
- \unhbox0 % PDF: 2nd arg given, show only it
- \else
- \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url
- \fi
- \else
- \code{#1}% only url given, so show it
- \fi
- \fi
- \endlink
-\endgroup}
-
-% rms does not like angle brackets --karl, 17may97.
-% So now @email is just like @uref, unless we are pdf.
-%
-%\def\email#1{\angleleft{\tt #1}\angleright}
-\ifpdf
- \def\email#1{\doemail#1,,\finish}
- \def\doemail#1,#2,#3\finish{\begingroup
- \unsepspaces
- \pdfurl{mailto:#1}%
- \setbox0 = \hbox{\ignorespaces #2}%
- \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi
- \endlink
- \endgroup}
-\else
- \let\email=\uref
-\fi
-
-% Check if we are currently using a typewriter font. Since all the
-% Computer Modern typewriter fonts have zero interword stretch (and
-% shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter.
-%
-\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
-
-% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
-% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
-%
-\def\dmn#1{\thinspace #1}
-
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
-% @l was never documented to mean ``switch to the Lisp font'',
-% and it is not used as such in any manual I can find. We need it for
-% Polish suppressed-l. --karl, 22sep96.
-%\def\l#1{{\li #1}\null}
-
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}} % roman font
-\def\sc#1{{\smallcaps#1}} % smallcaps font
-\def\ii#1{{\it #1}} % italic font
-
-% @acronym downcases the argument and prints in smallcaps.
-\def\acronym#1{{\smallcaps \lowercase{#1}}}
-
-% @pounds{} is a sterling sign.
-\def\pounds{{\it\$}}
-
-
-\message{page headings,}
-
-\newskip\titlepagetopglue \titlepagetopglue = 1.5in
-\newskip\titlepagebottomglue \titlepagebottomglue = 2pc
-
-% First the title page. Must do @settitle before @titlepage.
-\newif\ifseenauthor
-\newif\iffinishedtitlepage
-
-% Do an implicit @contents or @shortcontents after @end titlepage if the
-% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage.
-%
-\newif\ifsetcontentsaftertitlepage
- \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue
-\newif\ifsetshortcontentsaftertitlepage
- \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-
-\def\shorttitlepage{\parsearg\shorttitlepagezzz}
-\def\shorttitlepagezzz #1{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
-
-\def\titlepage{\begingroup \parindent=0pt \textfonts
- \let\subtitlerm=\tenrm
- \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}%
- %
- \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
- \let\tt=\authortt}%
- %
- % Leave some space at the very top of the page.
- \vglue\titlepagetopglue
- %
- % Now you can print the title using @title.
- \def\title{\parsearg\titlezzz}%
- \def\titlezzz##1{\leftline{\titlefonts\rm ##1}
- % print a rule at the page bottom also.
- \finishedtitlepagefalse
- \vskip4pt \hrule height 4pt width \hsize \vskip4pt}%
- % No rule at page bottom unless we print one at the top with @title.
- \finishedtitlepagetrue
- %
- % Now you can put text using @subtitle.
- \def\subtitle{\parsearg\subtitlezzz}%
- \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}%
- %
- % @author should come last, but may come many times.
- \def\author{\parsearg\authorzzz}%
- \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi
- {\authorfont \leftline{##1}}}%
- %
- % Most title ``pages'' are actually two pages long, with space
- % at the top of the second. We don't want the ragged left on the second.
- \let\oldpage = \page
- \def\page{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- \oldpage
- \let\page = \oldpage
- \hbox{}}%
-% \def\page{\oldpage \hbox{}}
-}
-
-\def\Etitlepage{%
- \iffinishedtitlepage\else
- \finishtitlepage
- \fi
- % It is important to do the page break before ending the group,
- % because the headline and footline are only empty inside the group.
- % If we use the new definition of \page, we always get a blank page
- % after the title page, which we certainly don't want.
- \oldpage
- \endgroup
- %
- % Need this before the \...aftertitlepage checks so that if they are
- % in effect the toc pages will come out with page numbers.
- \HEADINGSon
- %
- % If they want short, they certainly want long too.
- \ifsetshortcontentsaftertitlepage
- \shortcontents
- \contents
- \global\let\shortcontents = \relax
- \global\let\contents = \relax
- \fi
- %
- \ifsetcontentsaftertitlepage
- \contents
- \global\let\contents = \relax
- \global\let\shortcontents = \relax
- \fi
-}
-
-\def\finishtitlepage{%
- \vskip4pt \hrule height 2pt width \hsize
- \vskip\titlepagebottomglue
- \finishedtitlepagetrue
-}
-
-%%% Set up page headings and footings.
-
-\let\thispage=\folio
-
-\newtoks\evenheadline % headline on even pages
-\newtoks\oddheadline % headline on odd pages
-\newtoks\evenfootline % footline on even pages
-\newtoks\oddfootline % footline on odd pages
-
-% Now make Tex use those variables
-\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
- \else \the\evenheadline \fi}}
-\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
- \else \the\evenfootline \fi}\HEADINGShook}
-\let\HEADINGShook=\relax
-
-% Commands to set those variables.
-% For example, this is what @headings on does
-% @evenheading @thistitle|@thispage|@thischapter
-% @oddheading @thischapter|@thispage|@thistitle
-% @evenfooting @thisfile||
-% @oddfooting ||@thisfile
-
-\def\evenheading{\parsearg\evenheadingxxx}
-\def\oddheading{\parsearg\oddheadingxxx}
-\def\everyheading{\parsearg\everyheadingxxx}
-
-\def\evenfooting{\parsearg\evenfootingxxx}
-\def\oddfooting{\parsearg\oddfootingxxx}
-\def\everyfooting{\parsearg\everyfootingxxx}
-
-{\catcode`\@=0 %
-
-\gdef\evenheadingxxx #1{\evenheadingyyy #1@|@|@|@|\finish}
-\gdef\evenheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddheadingxxx #1{\oddheadingyyy #1@|@|@|@|\finish}
-\gdef\oddheadingyyy #1@|#2@|#3@|#4\finish{%
-\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\everyheadingxxx#1{\oddheadingxxx{#1}\evenheadingxxx{#1}}%
-
-\gdef\evenfootingxxx #1{\evenfootingyyy #1@|@|@|@|\finish}
-\gdef\evenfootingyyy #1@|#2@|#3@|#4\finish{%
-\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}}
-
-\gdef\oddfootingxxx #1{\oddfootingyyy #1@|@|@|@|\finish}
-\gdef\oddfootingyyy #1@|#2@|#3@|#4\finish{%
- \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}%
- %
- % Leave some space for the footline. Hopefully ok to assume
- % @evenfooting will not be used by itself.
- \global\advance\pageheight by -\baselineskip
- \global\advance\vsize by -\baselineskip
-}
-
-\gdef\everyfootingxxx#1{\oddfootingxxx{#1}\evenfootingxxx{#1}}
-%
-}% unbind the catcode of @.
-
-% @headings double turns headings on for double-sided printing.
-% @headings single turns headings on for single-sided printing.
-% @headings off turns them off.
-% @headings on same as @headings double, retained for compatibility.
-% @headings after turns on double-sided headings after this page.
-% @headings doubleafter turns on double-sided headings after this page.
-% @headings singleafter turns on single-sided headings after this page.
-% By default, they are off at the start of a document,
-% and turned `on' after @end titlepage.
-
-\def\headings #1 {\csname HEADINGS#1\endcsname}
-
-\def\HEADINGSoff{
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
-% When we turn headings on, set the page number to 1.
-% For double-sided printing, put current file name in lower left corner,
-% chapter name on inside top of right hand pages, document
-% title on inside top of left hand pages, and page numbers on outside top
-% edge of all pages.
-\def\HEADINGSdouble{
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-\let\contentsalignmacro = \chappager
-
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{
-\global\pageno=1
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-\def\HEADINGSon{\HEADINGSdouble}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
-\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chapoddpage
-}
-
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
-\global\evenfootline={\hfil}
-\global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
-\global\let\contentsalignmacro = \chappager
-}
-
-% Subroutines used in generating headings
-% This produces Day Month Year style of output.
-% Only define if not already defined, in case a txi-??.tex file has set
-% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
-\def\today{%
- \number\day\space
- \ifcase\month
- \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr
- \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug
- \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec
- \fi
- \space\number\year}
-\fi
-
-% @settitle line... specifies the title of the document, for headings.
-% It generates no output of its own.
-\def\thistitle{\putwordNoTitle}
-\def\settitle{\parsearg\settitlezzz}
-\def\settitlezzz #1{\gdef\thistitle{#1}}
-
-
-\message{tables,}
-% Tables -- @table, @ftable, @vtable, @item(x), @kitem(x), @xitem(x).
-
-% default indentation of table text
-\newdimen\tableindent \tableindent=.8in
-% default indentation of @itemize and @enumerate text
-\newdimen\itemindent \itemindent=.3in
-% margin between end of table item and start of table text.
-\newdimen\itemmargin \itemmargin=.1in
-
-% used internally for \itemindent minus \itemmargin
-\newdimen\itemmax
-
-% Note @table, @vtable, and @vtable define @item, @itemx, etc., with
-% these defs.
-% They also define \itemindex
-% to index the item name in whatever manner is desired (perhaps none).
-
-\newif\ifitemxneedsnegativevskip
-
-\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi}
-
-\def\internalBitem{\smallbreak \parsearg\itemzzz}
-\def\internalBitemx{\itemxpar \parsearg\itemzzz}
-
-\def\internalBxitem "#1"{\def\xitemsubtopix{#1} \smallbreak \parsearg\xitemzzz}
-\def\internalBxitemx "#1"{\def\xitemsubtopix{#1} \itemxpar \parsearg\xitemzzz}
-
-\def\internalBkitem{\smallbreak \parsearg\kitemzzz}
-\def\internalBkitemx{\itemxpar \parsearg\kitemzzz}
-
-\def\kitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \lastfunction}}%
- \itemzzz {#1}}
-
-\def\xitemzzz #1{\dosubind {kw}{\code{#1}}{for {\bf \xitemsubtopic}}%
- \itemzzz {#1}}
-
-\def\itemzzz #1{\begingroup %
- \advance\hsize by -\rightskip
- \advance\hsize by -\tableindent
- \setbox0=\hbox{\itemfont{#1}}%
- \itemindex{#1}%
- \nobreak % This prevents a break before @itemx.
- %
- % If the item text does not fit in the space we have, put it on a line
- % by itself, and do not allow a page break either before or after that
- % line. We do not start a paragraph here because then if the next
- % command is, e.g., @kindex, the whatsit would get put into the
- % horizontal list on a line by itself, resulting in extra blank space.
- \ifdim \wd0>\itemmax
- %
- % Make this a paragraph so we get the \parskip glue and wrapping,
- % but leave it ragged-right.
- \begingroup
- \advance\leftskip by-\tableindent
- \advance\hsize by\tableindent
- \advance\rightskip by0pt plus1fil
- \leavevmode\unhbox0\par
- \endgroup
- %
- % We're going to be starting a paragraph, but we don't want the
- % \parskip glue -- logically it's part of the @item we just started.
- \nobreak \vskip-\parskip
- %
- % Stop a page break at the \parskip glue coming up. (Unfortunately
- % we can't prevent a possible page break at the following
- % \baselineskip glue.) However, if what follows is an environment
- % such as @example, there will be no \parskip glue; then
- % the negative vskip we just would cause the example and the item to
- % crash together. So we use this bizarre value of 10001 as a signal
- % to \aboveenvbreak to insert \parskip glue after all.
- % (Possibly there are other commands that could be followed by
- % @example which need the same treatment, but not section titles; or
- % maybe section titles are the only special case and they should be
- % penalty 10001...)
- \penalty 10001
- \endgroup
- \itemxneedsnegativevskipfalse
- \else
- % The item text fits into the space. Start a paragraph, so that the
- % following text (if any) will end up on the same line.
- \noindent
- % Do this with kerns and \unhbox so that if there is a footnote in
- % the item text, it can migrate to the main vertical list and
- % eventually be printed.
- \nobreak\kern-\tableindent
- \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0
- \unhbox0
- \nobreak\kern\dimen0
- \endgroup
- \itemxneedsnegativevskiptrue
- \fi
-}
-
-\def\item{\errmessage{@item while not in a table}}
-\def\itemx{\errmessage{@itemx while not in a table}}
-\def\kitem{\errmessage{@kitem while not in a table}}
-\def\kitemx{\errmessage{@kitemx while not in a table}}
-\def\xitem{\errmessage{@xitem while not in a table}}
-\def\xitemx{\errmessage{@xitemx while not in a table}}
-
-% Contains a kludge to get @end[description] to work.
-\def\description{\tablez{\dontindex}{1}{}{}{}{}}
-
-% @table, @ftable, @vtable.
-\def\table{\begingroup\inENV\obeylines\obeyspaces\tablex}
-{\obeylines\obeyspaces%
-\gdef\tablex #1^^M{%
-\tabley\dontindex#1 \endtabley}}
-
-\def\ftable{\begingroup\inENV\obeylines\obeyspaces\ftablex}
-{\obeylines\obeyspaces%
-\gdef\ftablex #1^^M{%
-\tabley\fnitemindex#1 \endtabley
-\def\Eftable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\vtable{\begingroup\inENV\obeylines\obeyspaces\vtablex}
-{\obeylines\obeyspaces%
-\gdef\vtablex #1^^M{%
-\tabley\vritemindex#1 \endtabley
-\def\Evtable{\endgraf\afterenvbreak\endgroup}%
-\let\Etable=\relax}}
-
-\def\dontindex #1{}
-\def\fnitemindex #1{\doind {fn}{\code{#1}}}%
-\def\vritemindex #1{\doind {vr}{\code{#1}}}%
-
-{\obeyspaces %
-\gdef\tabley#1#2 #3 #4 #5 #6 #7\endtabley{\endgroup%
-\tablez{#1}{#2}{#3}{#4}{#5}{#6}}}
-
-\def\tablez #1#2#3#4#5#6{%
-\aboveenvbreak %
-\begingroup %
-\def\Edescription{\Etable}% Necessary kludge.
-\let\itemindex=#1%
-\ifnum 0#3>0 \advance \leftskip by #3\mil \fi %
-\ifnum 0#4>0 \tableindent=#4\mil \fi %
-\ifnum 0#5>0 \advance \rightskip by #5\mil \fi %
-\def\itemfont{#2}%
-\itemmax=\tableindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \tableindent %
-\exdentamount=\tableindent
-\parindent = 0pt
-\parskip = \smallskipamount
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def\Etable{\endgraf\afterenvbreak\endgroup}%
-\let\item = \internalBitem %
-\let\itemx = \internalBitemx %
-\let\kitem = \internalBkitem %
-\let\kitemx = \internalBkitemx %
-\let\xitem = \internalBxitem %
-\let\xitemx = \internalBxitemx %
-}
-
-% This is the counter used by @enumerate, which is really @itemize
-
-\newcount \itemno
-
-\def\itemize{\parsearg\itemizezzz}
-
-\def\itemizezzz #1{%
- \begingroup % ended by the @end itemize
- \itemizey {#1}{\Eitemize}
-}
-
-\def\itemizey #1#2{%
-\aboveenvbreak %
-\itemmax=\itemindent %
-\advance \itemmax by -\itemmargin %
-\advance \leftskip by \itemindent %
-\exdentamount=\itemindent
-\parindent = 0pt %
-\parskip = \smallskipamount %
-\ifdim \parskip=0pt \parskip=2pt \fi%
-\def#2{\endgraf\afterenvbreak\endgroup}%
-\def\itemcontents{#1}%
-\let\item=\itemizeitem}
-
-% \splitoff TOKENS\endmark defines \first to be the first token in
-% TOKENS, and \rest to be the remainder.
-%
-\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}%
-
-% Allow an optional argument of an uppercase letter, lowercase letter,
-% or number, to specify the first label in the enumerated list. No
-% argument is the same as `1'.
-%
-\def\enumerate{\parsearg\enumeratezzz}
-\def\enumeratezzz #1{\enumeratey #1 \endenumeratey}
-\def\enumeratey #1 #2\endenumeratey{%
- \begingroup % ended by the @end enumerate
- %
- % If we were given no argument, pretend we were given `1'.
- \def\thearg{#1}%
- \ifx\thearg\empty \def\thearg{1}\fi
- %
- % Detect if the argument is a single token. If so, it might be a
- % letter. Otherwise, the only valid thing it can be is a number.
- % (We will always have one token, because of the test we just made.
- % This is a good thing, since \splitoff doesn't work given nothing at
- % all -- the first parameter is undelimited.)
- \expandafter\splitoff\thearg\endmark
- \ifx\rest\empty
- % Only one token in the argument. It could still be anything.
- % A ``lowercase letter'' is one whose \lccode is nonzero.
- % An ``uppercase letter'' is one whose \lccode is both nonzero, and
- % not equal to itself.
- % Otherwise, we assume it's a number.
- %
- % We need the \relax at the end of the \ifnum lines to stop TeX from
- % continuing to look for a <number>.
- %
- \ifnum\lccode\expandafter`\thearg=0\relax
- \numericenumerate % a number (we hope)
- \else
- % It's a letter.
- \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax
- \lowercaseenumerate % lowercase letter
- \else
- \uppercaseenumerate % uppercase letter
- \fi
- \fi
- \else
- % Multiple tokens in the argument. We hope it's a number.
- \numericenumerate
- \fi
-}
-
-% An @enumerate whose labels are integers. The starting integer is
-% given in \thearg.
-%
-\def\numericenumerate{%
- \itemno = \thearg
- \startenumeration{\the\itemno}%
-}
-
-% The starting (lowercase) letter is in \thearg.
-\def\lowercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more lowercase letters in @enumerate; get a bigger
- alphabet}%
- \fi
- \char\lccode\itemno
- }%
-}
-
-% The starting (uppercase) letter is in \thearg.
-\def\uppercaseenumerate{%
- \itemno = \expandafter`\thearg
- \startenumeration{%
- % Be sure we're not beyond the end of the alphabet.
- \ifnum\itemno=0
- \errmessage{No more uppercase letters in @enumerate; get a bigger
- alphabet}
- \fi
- \char\uccode\itemno
- }%
-}
-
-% Call itemizey, adding a period to the first argument and supplying the
-% common last two arguments. Also subtract one from the initial value in
-% \itemno, since @item increments \itemno.
-%
-\def\startenumeration#1{%
- \advance\itemno by -1
- \itemizey{#1.}\Eenumerate\flushcr
-}
-
-% @alphaenumerate and @capsenumerate are abbreviations for giving an arg
-% to @enumerate.
-%
-\def\alphaenumerate{\enumerate{a}}
-\def\capsenumerate{\enumerate{A}}
-\def\Ealphaenumerate{\Eenumerate}
-\def\Ecapsenumerate{\Eenumerate}
-
-% Definition of @item while inside @itemize.
-
-\def\itemizeitem{%
-\advance\itemno by 1
-{\let\par=\endgraf \smallbreak}%
-\ifhmode \errmessage{In hmode at itemizeitem}\fi
-{\parskip=0in \hskip 0pt
-\hbox to 0pt{\hss \itemcontents\hskip \itemmargin}%
-\vadjust{\penalty 1200}}%
-\flushcr}
-
-% @multitable macros
-% Amy Hendrickson, 8/18/94, 3/6/96
-%
-% @multitable ... @end multitable will make as many columns as desired.
-% Contents of each column will wrap at width given in preamble. Width
-% can be specified either with sample text given in a template line,
-% or in percent of \hsize, the current width of text on page.
-
-% Table can continue over pages but will only break between lines.
-
-% To make preamble:
-%
-% Either define widths of columns in terms of percent of \hsize:
-% @multitable @columnfractions .25 .3 .45
-% @item ...
-%
-% Numbers following @columnfractions are the percent of the total
-% current hsize to be used for each column. You may use as many
-% columns as desired.
-
-
-% Or use a template:
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item ...
-% using the widest term desired in each column.
-%
-% For those who want to use more than one line's worth of words in
-% the preamble, break the line within one argument and it
-% will parse correctly, i.e.,
-%
-% @multitable {Column 1 template} {Column 2 template} {Column 3
-% template}
-% Not:
-% @multitable {Column 1 template} {Column 2 template}
-% {Column 3 template}
-
-% Each new table line starts with @item, each subsequent new column
-% starts with @tab. Empty columns may be produced by supplying @tab's
-% with nothing between them for as many times as empty columns are needed,
-% ie, @tab@tab@tab will produce two empty columns.
-
-% @item, @tab, @multitable or @end multitable do not need to be on their
-% own lines, but it will not hurt if they are.
-
-% Sample multitable:
-
-% @multitable {Column 1 template} {Column 2 template} {Column 3 template}
-% @item first col stuff @tab second col stuff @tab third col
-% @item
-% first col stuff
-% @tab
-% second col stuff
-% @tab
-% third col
-% @item first col stuff @tab second col stuff
-% @tab Many paragraphs of text may be used in any column.
-%
-% They will wrap at the width determined by the template.
-% @item@tab@tab This will be in third column.
-% @end multitable
-
-% Default dimensions may be reset by user.
-% @multitableparskip is vertical space between paragraphs in table.
-% @multitableparindent is paragraph indent in table.
-% @multitablecolmargin is horizontal space to be left between columns.
-% @multitablelinespace is space to leave between table items, baseline
-% to baseline.
-% 0pt means it depends on current normal line spacing.
-%
-\newskip\multitableparskip
-\newskip\multitableparindent
-\newdimen\multitablecolspace
-\newskip\multitablelinespace
-\multitableparskip=0pt
-\multitableparindent=6pt
-\multitablecolspace=12pt
-\multitablelinespace=0pt
-
-% Macros used to set up halign preamble:
-%
-\let\endsetuptable\relax
-\def\xendsetuptable{\endsetuptable}
-\let\columnfractions\relax
-\def\xcolumnfractions{\columnfractions}
-\newif\ifsetpercent
-
-% #1 is the part of the @columnfraction before the decimal point, which
-% is presumably either 0 or the empty string (but we don't check, we
-% just throw it away). #2 is the decimal part, which we use as the
-% percent of \hsize for this column.
-\def\pickupwholefraction#1.#2 {%
- \global\advance\colcount by 1
- \expandafter\xdef\csname col\the\colcount\endcsname{.#2\hsize}%
- \setuptable
-}
-
-\newcount\colcount
-\def\setuptable#1{%
- \def\firstarg{#1}%
- \ifx\firstarg\xendsetuptable
- \let\go = \relax
- \else
- \ifx\firstarg\xcolumnfractions
- \global\setpercenttrue
- \else
- \ifsetpercent
- \let\go\pickupwholefraction
- \else
- \global\advance\colcount by 1
- \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a
- % separator; typically that is always in the input, anyway.
- \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}%
- \fi
- \fi
- \ifx\go\pickupwholefraction
- % Put the argument back for the \pickupwholefraction call, so
- % we'll always have a period there to be parsed.
- \def\go{\pickupwholefraction#1}%
- \else
- \let\go = \setuptable
- \fi%
- \fi
- \go
-}
-
-% @multitable ... @end multitable definitions:
-%
-\def\multitable{\parsearg\dotable}
-\def\dotable#1{\bgroup
- \vskip\parskip
- \let\item=\crcrwithfootnotes
- % A \tab used to include \hskip1sp. But then the space in a template
- % line is not enough. That is bad. So let's go back to just & until
- % we encounter the problem it was intended to solve again. --karl,
- % nathan@acm.org, 20apr99.
- \let\tab=&%
- \let\startfootins=\startsavedfootnote
- \tolerance=9500
- \hbadness=9500
- \setmultitablespacing
- \parskip=\multitableparskip
- \parindent=\multitableparindent
- \overfullrule=0pt
- \global\colcount=0
- \def\Emultitable{%
- \global\setpercentfalse
- \crcrwithfootnotes\crcr
- \egroup\egroup
- }%
- %
- % To parse everything between @multitable and @item:
- \setuptable#1 \endsetuptable
- %
- % \everycr will reset column counter, \colcount, at the end of
- % each line. Every column entry will cause \colcount to advance by one.
- % The table preamble
- % looks at the current \colcount to find the correct column width.
- \everycr{\noalign{%
- %
- % \filbreak%% keeps underfull box messages off when table breaks over pages.
- % Maybe so, but it also creates really weird page breaks when the table
- % breaks over pages. Wouldn't \vfil be better? Wait until the problem
- % manifests itself, so it can be fixed for real --karl.
- \global\colcount=0\relax}}%
- %
- % This preamble sets up a generic column definition, which will
- % be used as many times as user calls for columns.
- % \vtop will set a single line and will also let text wrap and
- % continue for many paragraphs if desired.
- \halign\bgroup&\global\advance\colcount by 1\relax
- \multistrut\vtop{\hsize=\expandafter\csname col\the\colcount\endcsname
- %
- % In order to keep entries from bumping into each other
- % we will add a \leftskip of \multitablecolspace to all columns after
- % the first one.
- %
- % If a template has been used, we will add \multitablecolspace
- % to the width of each template entry.
- %
- % If the user has set preamble in terms of percent of \hsize we will
- % use that dimension as the width of the column, and the \leftskip
- % will keep entries from bumping into each other. Table will start at
- % left margin and final column will justify at right margin.
- %
- % Make sure we don't inherit \rightskip from the outer environment.
- \rightskip=0pt
- \ifnum\colcount=1
- % The first column will be indented with the surrounding text.
- \advance\hsize by\leftskip
- \else
- \ifsetpercent \else
- % If user has not set preamble in terms of percent of \hsize
- % we will advance \hsize by \multitablecolspace.
- \advance\hsize by \multitablecolspace
- \fi
- % In either case we will make \leftskip=\multitablecolspace:
- \leftskip=\multitablecolspace
- \fi
- % Ignoring space at the beginning and end avoids an occasional spurious
- % blank line, when TeX decides to break the line at the space before the
- % box from the multistrut, so the strut ends up on a line by itself.
- % For example:
- % @multitable @columnfractions .11 .89
- % @item @code{#}
- % @tab Legal holiday which is valid in major parts of the whole country.
- % Is automatically provided with highlighting sequences respectively marking
- % characters.
- \noindent\ignorespaces##\unskip\multistrut}\cr
-}
-
-\def\setmultitablespacing{% test to see if user has set \multitablelinespace.
-% If so, do nothing. If not, give it an appropriate dimension based on
-% current baselineskip.
-\ifdim\multitablelinespace=0pt
-\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
-\global\advance\multitablelinespace by-\ht0
-%% strut to put in table in case some entry doesn't have descenders,
-%% to keep lines equally spaced
-\let\multistrut = \strut
-\else
-%% FIXME: what is \box0 supposed to be?
-\gdef\multistrut{\vrule height\multitablelinespace depth\dp0
-width0pt\relax} \fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%% If so, set to same dimension as multitablelinespace.
-\ifdim\multitableparskip>\multitablelinespace
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
-\fi%
-\ifdim\multitableparskip=0pt
-\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
-\fi}
-
-% In case a @footnote appears inside an alignment, save the footnote
-% text to a box and make the \insert when a row of the table is
-% finished. Otherwise, the insertion is lost, it never migrates to the
-% main vertical list. --kasal, 22jan03.
-%
-\newbox\savedfootnotes
-%
-% \dotable \let's \startfootins to this, so that \dofootnote will call
-% it instead of starting the insertion right away.
-\def\startsavedfootnote{%
- \global\setbox\savedfootnotes = \vbox\bgroup
- \unvbox\savedfootnotes
-}
-\def\crcrwithfootnotes{%
- \crcr
- \ifvoid\savedfootnotes \else
- \noalign{\insert\footins{\box\savedfootnotes}}%
- \fi
-}
-
-\message{conditionals,}
-% Prevent errors for section commands.
-% Used in @ignore and in failing conditionals.
-\def\ignoresections{%
- \let\chapter=\relax
- \let\unnumbered=\relax
- \let\top=\relax
- \let\unnumberedsec=\relax
- \let\unnumberedsection=\relax
- \let\unnumberedsubsec=\relax
- \let\unnumberedsubsection=\relax
- \let\unnumberedsubsubsec=\relax
- \let\unnumberedsubsubsection=\relax
- \let\section=\relax
- \let\subsec=\relax
- \let\subsubsec=\relax
- \let\subsection=\relax
- \let\subsubsection=\relax
- \let\appendix=\relax
- \let\appendixsec=\relax
- \let\appendixsection=\relax
- \let\appendixsubsec=\relax
- \let\appendixsubsection=\relax
- \let\appendixsubsubsec=\relax
- \let\appendixsubsubsection=\relax
- \let\contents=\relax
- \let\smallbook=\relax
- \let\titlepage=\relax
-}
-
-% Used in nested conditionals, where we have to parse the Texinfo source
-% and so want to turn off most commands, in case they are used
-% incorrectly.
-%
-% We use \empty instead of \relax for the @def... commands, so that \end
-% doesn't throw an error. For instance:
-% @ignore
-% @deffn ...
-% @end deffn
-% @end ignore
-%
-% The @end deffn is going to get expanded, because we're trying to allow
-% nested conditionals. But we don't want to expand the actual @deffn,
-% since it might be syntactically correct and intended to be ignored.
-% Since \end checks for \relax, using \empty does not cause an error.
-%
-\def\ignoremorecommands{%
- \let\defcodeindex = \relax
- \let\defcv = \empty
- \let\defcvx = \empty
- \let\Edefcv = \empty
- \let\deffn = \empty
- \let\deffnx = \empty
- \let\Edeffn = \empty
- \let\defindex = \relax
- \let\defivar = \empty
- \let\defivarx = \empty
- \let\Edefivar = \empty
- \let\defmac = \empty
- \let\defmacx = \empty
- \let\Edefmac = \empty
- \let\defmethod = \empty
- \let\defmethodx = \empty
- \let\Edefmethod = \empty
- \let\defop = \empty
- \let\defopx = \empty
- \let\Edefop = \empty
- \let\defopt = \empty
- \let\defoptx = \empty
- \let\Edefopt = \empty
- \let\defspec = \empty
- \let\defspecx = \empty
- \let\Edefspec = \empty
- \let\deftp = \empty
- \let\deftpx = \empty
- \let\Edeftp = \empty
- \let\deftypefn = \empty
- \let\deftypefnx = \empty
- \let\Edeftypefn = \empty
- \let\deftypefun = \empty
- \let\deftypefunx = \empty
- \let\Edeftypefun = \empty
- \let\deftypeivar = \empty
- \let\deftypeivarx = \empty
- \let\Edeftypeivar = \empty
- \let\deftypemethod = \empty
- \let\deftypemethodx = \empty
- \let\Edeftypemethod = \empty
- \let\deftypeop = \empty
- \let\deftypeopx = \empty
- \let\Edeftypeop = \empty
- \let\deftypevar = \empty
- \let\deftypevarx = \empty
- \let\Edeftypevar = \empty
- \let\deftypevr = \empty
- \let\deftypevrx = \empty
- \let\Edeftypevr = \empty
- \let\defun = \empty
- \let\defunx = \empty
- \let\Edefun = \empty
- \let\defvar = \empty
- \let\defvarx = \empty
- \let\Edefvar = \empty
- \let\defvr = \empty
- \let\defvrx = \empty
- \let\Edefvr = \empty
- \let\clear = \relax
- \let\down = \relax
- \let\evenfooting = \relax
- \let\evenheading = \relax
- \let\everyfooting = \relax
- \let\everyheading = \relax
- \let\headings = \relax
- \let\include = \relax
- \let\item = \relax
- \let\lowersections = \relax
- \let\oddfooting = \relax
- \let\oddheading = \relax
- \let\printindex = \relax
- \let\pxref = \relax
- \let\raisesections = \relax
- \let\ref = \relax
- \let\set = \relax
- \let\setchapternewpage = \relax
- \let\setchapterstyle = \relax
- \let\settitle = \relax
- \let\up = \relax
- \let\verbatiminclude = \relax
- \let\xref = \relax
-}
-
-% Ignore @ignore, @ifhtml, @ifinfo, and the like.
-%
-\def\direntry{\doignore{direntry}}
-\def\documentdescriptionword{documentdescription}
-\def\documentdescription{\doignore{documentdescription}}
-\def\html{\doignore{html}}
-\def\ifhtml{\doignore{ifhtml}}
-\def\ifinfo{\doignore{ifinfo}}
-\def\ifnottex{\doignore{ifnottex}}
-\def\ifplaintext{\doignore{ifplaintext}}
-\def\ifxml{\doignore{ifxml}}
-\def\ignore{\doignore{ignore}}
-\def\menu{\doignore{menu}}
-\def\xml{\doignore{xml}}
-
-% @dircategory CATEGORY -- specify a category of the dir file
-% which this file should belong to. Ignore this in TeX.
-\let\dircategory = \comment
-
-% Ignore text until a line `@end #1'.
-%
-\def\doignore#1{\begingroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define a command to swallow text until we reach `@end #1'.
- % This @ is a catcode 12 token (that is the normal catcode of @ in
- % this texinfo.tex file). We change the catcode of @ below to match.
- \long\def\doignoretext##1@end #1{\enddoignore}%
- %
- % Make sure that spaces turn into tokens that match what \doignoretext wants.
- \catcode\spaceChar = 10
- %
- % Ignore braces, too, so mismatched braces don't cause trouble.
- \catcode`\{ = 9
- \catcode`\} = 9
- %
- % We must not have @c interpreted as a control sequence.
- \catcode`\@ = 12
- %
- \def\ignoreword{#1}%
- \ifx\ignoreword\documentdescriptionword
- % The c kludge breaks documentdescription, since
- % `documentdescription' contains a `c'. Means not everything will
- % be ignored inside @documentdescription, but oh well...
- \else
- % Make the letter c a comment character so that the rest of the line
- % will be ignored. This way, the document can have (for example)
- % @c @end ifinfo
- % and the @end ifinfo will be properly ignored.
- % (We've just changed @ to catcode 12.)
- \catcode`\c = 14
- \fi
- %
- % And now expand the command defined above.
- \doignoretext
-}
-
-% What we do to finish off ignored text.
-%
-\def\enddoignore{\endgroup\ignorespaces}%
-
-\newif\ifwarnedobs\warnedobsfalse
-\def\obstexwarn{%
- \ifwarnedobs\relax\else
- % We need to warn folks that they may have trouble with TeX 3.0.
- % This uses \immediate\write16 rather than \message to get newlines.
- \immediate\write16{}
- \immediate\write16{WARNING: for users of Unix TeX 3.0!}
- \immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
- \immediate\write16{If you are running another version of TeX, relax.}
- \immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
- \immediate\write16{ Then upgrade your TeX installation if you can.}
- \immediate\write16{ (See ftp://ftp.gnu.org/non-gnu/TeX.README.)}
- \immediate\write16{If you are stuck with version 3.0, run the}
- \immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
- \immediate\write16{ to use a workaround.}
- \immediate\write16{}
- \global\warnedobstrue
- \fi
-}
-
-% **In TeX 3.0, setting text in \nullfont hangs tex. For a
-% workaround (which requires the file ``dummy.tfm'' to be installed),
-% uncomment the following line:
-%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
-
-% Ignore text, except that we keep track of conditional commands for
-% purposes of nesting, up to an `@end #1' command.
-%
-\def\nestedignore#1{%
- \obstexwarn
- % We must actually expand the ignored text to look for the @end
- % command, so that nested ignore constructs work. Thus, we put the
- % text into a \vbox and then do nothing with the result. To minimize
- % the chance of memory overflow, we follow the approach outlined on
- % page 401 of the TeXbook.
- %
- \setbox0 = \vbox\bgroup
- % Don't complain about control sequences we have declared \outer.
- \ignoresections
- %
- % Define `@end #1' to end the box, which will in turn undefine the
- % @end command again.
- \expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
- %
- % We are going to be parsing Texinfo commands. Most cause no
- % trouble when they are used incorrectly, but some commands do
- % complicated argument parsing or otherwise get confused, so we
- % undefine them.
- %
- % We can't do anything about stray @-signs, unfortunately;
- % they'll produce `undefined control sequence' errors.
- \ignoremorecommands
- %
- % Set the current font to be \nullfont, a TeX primitive, and define
- % all the font commands to also use \nullfont. We don't use
- % dummy.tfm, as suggested in the TeXbook, because some sites
- % might not have that installed. Therefore, math mode will still
- % produce output, but that should be an extremely small amount of
- % stuff compared to the main input.
- %
- \nullfont
- \let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
- \let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
- \let\tensf=\nullfont
- % Similarly for index fonts.
- \let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
- \let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
- \let\smallsf=\nullfont
- % Similarly for smallexample fonts.
- \let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont
- \let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont
- \let\smallersf=\nullfont
- %
- % Don't complain when characters are missing from the fonts.
- \tracinglostchars = 0
- %
- % Don't bother to do space factor calculations.
- \frenchspacing
- %
- % Don't report underfull hboxes.
- \hbadness = 10000
- %
- % Do minimal line-breaking.
- \pretolerance = 10000
- %
- % Do not execute instructions in @tex.
- \def\tex{\doignore{tex}}%
- % Do not execute macro definitions.
- % `c' is a comment character, so the word `macro' will get cut off.
- \def\macro{\doignore{ma}}%
-}
-
-% @set VAR sets the variable VAR to an empty value.
-% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
-%
-% Since we want to separate VAR from REST-OF-LINE (which might be
-% empty), we can't just use \parsearg; we have to insert a space of our
-% own to delimit the rest of the line, and then take it out again if we
-% didn't need it. Make sure the catcode of space is correct to avoid
-% losing inside @example, for instance.
-%
-\def\set{\begingroup\catcode` =10
- \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR.
- \parsearg\setxxx}
-\def\setxxx#1{\setyyy#1 \endsetyyy}
-\def\setyyy#1 #2\endsetyyy{%
- \def\temp{#2}%
- \ifx\temp\empty \global\expandafter\let\csname SET#1\endcsname = \empty
- \else \setzzz{#1}#2\endsetzzz % Remove the trailing space \setxxx inserted.
- \fi
- \endgroup
-}
-% Can't use \xdef to pre-expand #2 and save some time, since \temp or
-% \next or other control sequences that we've defined might get us into
-% an infinite loop. Consider `@set foo @cite{bar}'.
-\def\setzzz#1#2 \endsetzzz{\expandafter\gdef\csname SET#1\endcsname{#2}}
-
-% @clear VAR clears (i.e., unsets) the variable VAR.
-%
-\def\clear{\parsearg\clearxxx}
-\def\clearxxx#1{\global\expandafter\let\csname SET#1\endcsname=\relax}
-
-% @value{foo} gets the text saved in variable foo.
-{
- \catcode`\_ = \active
- %
- % We might end up with active _ or - characters in the argument if
- % we're called from @code, as @code{@value{foo-bar_}}. So \let any
- % such active characters to their normal equivalents.
- \gdef\value{\begingroup
- \catcode`\-=\other \catcode`\_=\other
- \indexbreaks \let_\normalunderscore
- \valuexxx}
-}
-\def\valuexxx#1{\expandablevalue{#1}\endgroup}
-
-% We have this subroutine so that we can handle at least some @value's
-% properly in indexes (we \let\value to this in \indexdummies). Ones
-% whose names contain - or _ still won't work, but we can't do anything
-% about that. The command has to be fully expandable (if the variable
-% is set), since the result winds up in the index file. This means that
-% if the variable's value contains other Texinfo commands, it's almost
-% certain it will fail (although perhaps we could fix that with
-% sufficient work to do a one-level expansion on the result, instead of
-% complete).
-%
-\def\expandablevalue#1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- {[No value for ``#1'']}%
- \message{Variable `#1', used in @value, is not set.}%
- \else
- \csname SET#1\endcsname
- \fi
-}
-
-% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined
-% with @set.
-%
-\def\ifset{\parsearg\doifset}
-\def\doifset#1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \let\next=\ifsetfail
- \else
- \let\next=\ifsetsucceed
- \fi
- \next
-}
-\def\ifsetsucceed{\conditionalsucceed{ifset}}
-\def\ifsetfail{\nestedignore{ifset}}
-\defineunmatchedend{ifset}
-
-% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
-% defined with @set, or has been undefined with @clear.
-%
-\def\ifclear{\parsearg\doifclear}
-\def\doifclear#1{%
- \expandafter\ifx\csname SET#1\endcsname\relax
- \let\next=\ifclearsucceed
- \else
- \let\next=\ifclearfail
- \fi
- \next
-}
-\def\ifclearsucceed{\conditionalsucceed{ifclear}}
-\def\ifclearfail{\nestedignore{ifclear}}
-\defineunmatchedend{ifclear}
-
-% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
-% read the text following, through the first @end iftex (etc.). Make
-% `@end iftex' (etc.) valid only after an @iftex.
-%
-\def\iftex{\conditionalsucceed{iftex}}
-\def\ifnothtml{\conditionalsucceed{ifnothtml}}
-\def\ifnotinfo{\conditionalsucceed{ifnotinfo}}
-\def\ifnotplaintext{\conditionalsucceed{ifnotplaintext}}
-\defineunmatchedend{iftex}
-\defineunmatchedend{ifnothtml}
-\defineunmatchedend{ifnotinfo}
-\defineunmatchedend{ifnotplaintext}
-
-% True conditional. Since \set globally defines its variables, we can
-% just start and end a group (to keep the @end definition undefined at
-% the outer level).
-%
-\def\conditionalsucceed#1{\begingroup
- \expandafter\def\csname E#1\endcsname{\endgroup}%
-}
-
-% @defininfoenclose.
-\let\definfoenclose=\comment
-
-
-\message{indexing,}
-% Index generation facilities
-
-% Define \newwrite to be identical to plain tex's \newwrite
-% except not \outer, so it can be used within \newindex.
-{\catcode`\@=11
-\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}}
-
-% \newindex {foo} defines an index named foo.
-% It automatically defines \fooindex such that
-% \fooindex ...rest of line... puts an entry in the index foo.
-% It also defines \fooindfile to be the number of the output channel for
-% the file that accumulates this index. The file's extension is foo.
-% The name of an index should be no more than 2 characters long
-% for the sake of vms.
-%
-\def\newindex#1{%
- \iflinks
- \expandafter\newwrite \csname#1indfile\endcsname
- \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
- \fi
- \expandafter\xdef\csname#1index\endcsname{% % Define @#1index
- \noexpand\doindex{#1}}
-}
-
-% @defindex foo == \newindex{foo}
-%
-\def\defindex{\parsearg\newindex}
-
-% Define @defcodeindex, like @defindex except put all entries in @code.
-%
-\def\defcodeindex{\parsearg\newcodeindex}
-%
-\def\newcodeindex#1{%
- \iflinks
- \expandafter\newwrite \csname#1indfile\endcsname
- \openout \csname#1indfile\endcsname \jobname.#1
- \fi
- \expandafter\xdef\csname#1index\endcsname{%
- \noexpand\docodeindex{#1}}%
-}
-
-
-% @synindex foo bar makes index foo feed into index bar.
-% Do this instead of @defindex foo if you don't want it as a separate index.
-%
-% @syncodeindex foo bar similar, but put all entries made for index foo
-% inside @code.
-%
-\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}}
-\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}}
-
-% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo),
-% #3 the target index (bar).
-\def\dosynindex#1#2#3{%
- % Only do \closeout if we haven't already done it, else we'll end up
- % closing the target index.
- \expandafter \ifx\csname donesynindex#2\endcsname \undefined
- % The \closeout helps reduce unnecessary open files; the limit on the
- % Acorn RISC OS is a mere 16 files.
- \expandafter\closeout\csname#2indfile\endcsname
- \expandafter\let\csname\donesynindex#2\endcsname = 1
- \fi
- % redefine \fooindfile:
- \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
- \expandafter\let\csname#2indfile\endcsname=\temp
- % redefine \fooindex:
- \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
-}
-
-% Define \doindex, the driver for all \fooindex macros.
-% Argument #1 is generated by the calling \fooindex macro,
-% and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
-
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
-
-% like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
-
-% Take care of Texinfo commands that can appear in an index entry.
-% Since there are some commands we want to expand, and others we don't,
-% we have to laboriously prevent expansion for those that we don't.
-%
-\def\indexdummies{%
- \def\@{@}% change to @@ when we switch to @ as escape char in index files.
- \def\ {\realbackslash\space }%
- % Need these in case \tex is in effect and \{ is a \delimiter again.
- % But can't use \lbracecmd and \rbracecmd because texindex assumes
- % braces and backslashes are used only as delimiters.
- \let\{ = \mylbrace
- \let\} = \myrbrace
- %
- % \definedummyword defines \#1 as \realbackslash #1\space, thus
- % effectively preventing its expansion. This is used only for control
- % words, not control letters, because the \space would be incorrect
- % for control characters, but is needed to separate the control word
- % from whatever follows.
- %
- % For control letters, we have \definedummyletter, which omits the
- % space.
- %
- % These can be used both for control words that take an argument and
- % those that do not. If it is followed by {arg} in the input, then
- % that will dutifully get written to the index (or wherever).
- %
- \def\definedummyword##1{%
- \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}%
- }%
- \def\definedummyletter##1{%
- \expandafter\def\csname ##1\endcsname{\realbackslash ##1}%
- }%
- %
- % Do the redefinitions.
- \commondummies
-}
-
-% For the aux file, @ is the escape character. So we want to redefine
-% everything using @ instead of \realbackslash. When everything uses
-% @, this will be simpler.
-%
-\def\atdummies{%
- \def\@{@@}%
- \def\ {@ }%
- \let\{ = \lbraceatcmd
- \let\} = \rbraceatcmd
- %
- % (See comments in \indexdummies.)
- \def\definedummyword##1{%
- \expandafter\def\csname ##1\endcsname{@##1\space}%
- }%
- \def\definedummyletter##1{%
- \expandafter\def\csname ##1\endcsname{@##1}%
- }%
- %
- % Do the redefinitions.
- \commondummies
-}
-
-% Called from \indexdummies and \atdummies. \definedummyword and
-% \definedummyletter must be defined first.
-%
-\def\commondummies{%
- %
- \normalturnoffactive
- %
- % Control letters and accents.
- \definedummyletter{_}%
- \definedummyletter{,}%
- \definedummyletter{"}%
- \definedummyletter{`}%
- \definedummyletter{'}%
- \definedummyletter{^}%
- \definedummyletter{~}%
- \definedummyletter{=}%
- \definedummyword{u}%
- \definedummyword{v}%
- \definedummyword{H}%
- \definedummyword{dotaccent}%
- \definedummyword{ringaccent}%
- \definedummyword{tieaccent}%
- \definedummyword{ubaraccent}%
- \definedummyword{udotaccent}%
- \definedummyword{dotless}%
- %
- % Other non-English letters.
- \definedummyword{AA}%
- \definedummyword{AE}%
- \definedummyword{L}%
- \definedummyword{OE}%
- \definedummyword{O}%
- \definedummyword{aa}%
- \definedummyword{ae}%
- \definedummyword{l}%
- \definedummyword{oe}%
- \definedummyword{o}%
- \definedummyword{ss}%
- %
- % Although these internal commands shouldn't show up, sometimes they do.
- \definedummyword{bf}%
- \definedummyword{gtr}%
- \definedummyword{hat}%
- \definedummyword{less}%
- \definedummyword{sf}%
- \definedummyword{sl}%
- \definedummyword{tclose}%
- \definedummyword{tt}%
- %
- % Texinfo font commands.
- \definedummyword{b}%
- \definedummyword{i}%
- \definedummyword{r}%
- \definedummyword{sc}%
- \definedummyword{t}%
- %
- \definedummyword{TeX}%
- \definedummyword{acronym}%
- \definedummyword{cite}%
- \definedummyword{code}%
- \definedummyword{command}%
- \definedummyword{dfn}%
- \definedummyword{dots}%
- \definedummyword{emph}%
- \definedummyword{env}%
- \definedummyword{file}%
- \definedummyword{kbd}%
- \definedummyword{key}%
- \definedummyword{math}%
- \definedummyword{option}%
- \definedummyword{samp}%
- \definedummyword{strong}%
- \definedummyword{uref}%
- \definedummyword{url}%
- \definedummyword{var}%
- \definedummyword{w}%
- %
- % Assorted special characters.
- \definedummyword{bullet}%
- \definedummyword{copyright}%
- \definedummyword{dots}%
- \definedummyword{enddots}%
- \definedummyword{equiv}%
- \definedummyword{error}%
- \definedummyword{expansion}%
- \definedummyword{minus}%
- \definedummyword{pounds}%
- \definedummyword{point}%
- \definedummyword{print}%
- \definedummyword{result}%
- %
- % Handle some cases of @value -- where the variable name does not
- % contain - or _, and the value does not contain any
- % (non-fully-expandable) commands.
- \let\value = \expandablevalue
- %
- % Normal spaces, not active ones.
- \unsepspaces
- %
- % No macro expansion.
- \turnoffmacros
-}
-
-% If an index command is used in an @example environment, any spaces
-% therein should become regular spaces in the raw index file, not the
-% expansion of \tie (\leavevmode \penalty \@M \ ).
-{\obeyspaces
- \gdef\unsepspaces{\obeyspaces\let =\space}}
-
-
-% \indexnofonts is used when outputting the strings to sort the index
-% by, and when constructing control sequence names. It eliminates all
-% control sequences and just writes whatever the best ASCII sort string
-% would be for a given command (usually its argument).
-%
-\def\indexdummytex{TeX}
-\def\indexdummydots{...}
-%
-\def\indexnofonts{%
- \def\ { }%
- \def\@{@}%
- % how to handle braces?
- \def\_{\normalunderscore}%
- %
- \let\,=\asis
- \let\"=\asis
- \let\`=\asis
- \let\'=\asis
- \let\^=\asis
- \let\~=\asis
- \let\==\asis
- \let\u=\asis
- \let\v=\asis
- \let\H=\asis
- \let\dotaccent=\asis
- \let\ringaccent=\asis
- \let\tieaccent=\asis
- \let\ubaraccent=\asis
- \let\udotaccent=\asis
- \let\dotless=\asis
- %
- % Other non-English letters.
- \def\AA{AA}%
- \def\AE{AE}%
- \def\L{L}%
- \def\OE{OE}%
- \def\O{O}%
- \def\aa{aa}%
- \def\ae{ae}%
- \def\l{l}%
- \def\oe{oe}%
- \def\o{o}%
- \def\ss{ss}%
- \def\exclamdown{!}%
- \def\questiondown{?}%
- %
- % Don't no-op \tt, since it isn't a user-level command
- % and is used in the definitions of the active chars like <, >, |, etc.
- % Likewise with the other plain tex font commands.
- %\let\tt=\asis
- %
- % Texinfo font commands.
- \let\b=\asis
- \let\i=\asis
- \let\r=\asis
- \let\sc=\asis
- \let\t=\asis
- %
- \let\TeX=\indexdummytex
- \let\acronym=\asis
- \let\cite=\asis
- \let\code=\asis
- \let\command=\asis
- \let\dfn=\asis
- \let\dots=\indexdummydots
- \let\emph=\asis
- \let\env=\asis
- \let\file=\asis
- \let\kbd=\asis
- \let\key=\asis
- \let\math=\asis
- \let\option=\asis
- \let\samp=\asis
- \let\strong=\asis
- \let\uref=\asis
- \let\url=\asis
- \let\var=\asis
- \let\w=\asis
-}
-
-\let\indexbackslash=0 %overridden during \printindex.
-\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
-
-% For \ifx comparisons.
-\def\emptymacro{\empty}
-
-% Most index entries go through here, but \dosubind is the general case.
-%
-\def\doind#1#2{\dosubind{#1}{#2}\empty}
-
-% Workhorse for all \fooindexes.
-% #1 is name of index, #2 is stuff to put there, #3 is subentry --
-% \empty if called from \doind, as we usually are. The main exception
-% is with defuns, which call us directly.
-%
-\def\dosubind#1#2#3{%
- % Put the index entry in the margin if desired.
- \ifx\SETmarginindex\relax\else
- \insert\margin{\hbox{\vrule height8pt depth3pt width0pt #2}}%
- \fi
- {%
- \count255=\lastpenalty
- {%
- \indexdummies % Must do this here, since \bf, etc expand at this stage
- \escapechar=`\\
- {%
- \let\folio = 0% We will expand all macros now EXCEPT \folio.
- \def\rawbackslashxx{\indexbackslash}% \indexbackslash isn't defined now
- % so it will be output as is; and it will print as backslash.
- %
- % The main index entry text.
- \toks0 = {#2}%
- %
- % If third arg is present, precede it with space in sort key.
- \def\thirdarg{#3}%
- \ifx\thirdarg\emptymacro \else
- % If the third (subentry) arg is present, add it to the index
- % line to write.
- \toks0 = \expandafter{\the\toks0 \space #3}%
- \fi
- %
- % Process the index entry with all font commands turned off, to
- % get the string to sort by.
- {\indexnofonts
- \edef\temp{\the\toks0}% need full expansion
- \xdef\indexsorttmp{\temp}%
- }%
- %
- % Set up the complete index entry, with both the sort key and
- % the original text, including any font commands. We write
- % three arguments to \entry to the .?? file (four in the
- % subentry case), texindex reduces to two when writing the .??s
- % sorted result.
- \edef\temp{%
- \write\csname#1indfile\endcsname{%
- \realbackslash entry{\indexsorttmp}{\folio}{\the\toks0}}%
- }%
- %
- % If a skip is the last thing on the list now, preserve it
- % by backing up by \lastskip, doing the \write, then inserting
- % the skip again. Otherwise, the whatsit generated by the
- % \write will make \lastskip zero. The result is that sequences
- % like this:
- % @end defun
- % @tindex whatever
- % @defun ...
- % will have extra space inserted, because the \medbreak in the
- % start of the @defun won't see the skip inserted by the @end of
- % the previous defun.
- %
- % But don't do any of this if we're not in vertical mode. We
- % don't want to do a \vskip and prematurely end a paragraph.
- %
- % Avoid page breaks due to these extra skips, too.
- %
- \iflinks
- \ifvmode
- \skip0 = \lastskip
- \ifdim\lastskip = 0pt \else \nobreak\vskip-\skip0 \fi
- \fi
- %
- \temp % do the write
- %
- \ifvmode \ifdim\skip0 = 0pt \else \nobreak\vskip\skip0 \fi \fi
- \fi
- }%
- }%
- \penalty\count255
- }%
-}
-
-% The index entry written in the file actually looks like
-% \entry {sortstring}{page}{topic}
-% or
-% \entry {sortstring}{page}{topic}{subtopic}
-% The texindex program reads in these files and writes files
-% containing these kinds of lines:
-% \initial {c}
-% before the first topic whose initial is c
-% \entry {topic}{pagelist}
-% for a topic that is used without subtopics
-% \primary {topic}
-% for the beginning of a topic that is used with subtopics
-% \secondary {subtopic}{pagelist}
-% for each subtopic.
-
-% Define the user-accessible indexing commands
-% @findex, @vindex, @kindex, @cindex.
-
-\def\findex {\fnindex}
-\def\kindex {\kyindex}
-\def\cindex {\cpindex}
-\def\vindex {\vrindex}
-\def\tindex {\tpindex}
-\def\pindex {\pgindex}
-
-\def\cindexsub {\begingroup\obeylines\cindexsub}
-{\obeylines %
-\gdef\cindexsub "#1" #2^^M{\endgroup %
-\dosubind{cp}{#2}{#1}}}
-
-% Define the macros used in formatting output of the sorted index material.
-
-% @printindex causes a particular index (the ??s file) to get printed.
-% It does not print any chapter heading (usually an @unnumbered).
-%
-\def\printindex{\parsearg\doprintindex}
-\def\doprintindex#1{\begingroup
- \dobreak \chapheadingskip{10000}%
- %
- \smallfonts \rm
- \tolerance = 9500
- \indexbreaks
- %
- % See if the index file exists and is nonempty.
- % Change catcode of @ here so that if the index file contains
- % \initial {@}
- % as its first line, TeX doesn't complain about mismatched braces
- % (because it thinks @} is a control sequence).
- \catcode`\@ = 11
- \openin 1 \jobname.#1s
- \ifeof 1
- % \enddoublecolumns gets confused if there is no text in the index,
- % and it loses the chapter title and the aux file entries for the
- % index. The easiest way to prevent this problem is to make sure
- % there is some text.
- \putwordIndexNonexistent
- \else
- %
- % If the index file exists but is empty, then \openin leaves \ifeof
- % false. We have to make TeX try to read something from the file, so
- % it can discover if there is anything in it.
- \read 1 to \temp
- \ifeof 1
- \putwordIndexIsEmpty
- \else
- % Index files are almost Texinfo source, but we use \ as the escape
- % character. It would be better to use @, but that's too big a change
- % to make right now.
- \def\indexbackslash{\rawbackslashxx}%
- \catcode`\\ = 0
- \escapechar = `\\
- \begindoublecolumns
- \input \jobname.#1s
- \enddoublecolumns
- \fi
- \fi
- \closein 1
-\endgroup}
-
-% These macros are used by the sorted index file itself.
-% Change them to control the appearance of the index.
-
-\def\initial#1{{%
- % Some minor font changes for the special characters.
- \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt
- %
- % Remove any glue we may have, we'll be inserting our own.
- \removelastskip
- %
- % We like breaks before the index initials, so insert a bonus.
- \penalty -300
- %
- % Typeset the initial. Making this add up to a whole number of
- % baselineskips increases the chance of the dots lining up from column
- % to column. It still won't often be perfect, because of the stretch
- % we need before each entry, but it's better.
- %
- % No shrink because it confuses \balancecolumns.
- \vskip 1.67\baselineskip plus .5\baselineskip
- \leftline{\secbf #1}%
- \vskip .33\baselineskip plus .1\baselineskip
- %
- % Do our best not to break after the initial.
- \nobreak
-}}
-
-% This typesets a paragraph consisting of #1, dot leaders, and then #2
-% flush to the right margin. It is used for index and table of contents
-% entries. The paragraph is indented by \leftskip.
-%
-\def\entry#1#2{\begingroup
- %
- % Start a new paragraph if necessary, so our assignments below can't
- % affect previous text.
- \par
- %
- % Do not fill out the last line with white space.
- \parfillskip = 0in
- %
- % No extra space above this paragraph.
- \parskip = 0in
- %
- % Do not prefer a separate line ending with a hyphen to fewer lines.
- \finalhyphendemerits = 0
- %
- % \hangindent is only relevant when the entry text and page number
- % don't both fit on one line. In that case, bob suggests starting the
- % dots pretty far over on the line. Unfortunately, a large
- % indentation looks wrong when the entry text itself is broken across
- % lines. So we use a small indentation and put up with long leaders.
- %
- % \hangafter is reset to 1 (which is the value we want) at the start
- % of each paragraph, so we need not do anything with that.
- \hangindent = 2em
- %
- % When the entry text needs to be broken, just fill out the first line
- % with blank space.
- \rightskip = 0pt plus1fil
- %
- % A bit of stretch before each entry for the benefit of balancing columns.
- \vskip 0pt plus1pt
- %
- % Start a ``paragraph'' for the index entry so the line breaking
- % parameters we've set above will have an effect.
- \noindent
- %
- % Insert the text of the index entry. TeX will do line-breaking on it.
- #1%
- % The following is kludged to not output a line of dots in the index if
- % there are no page numbers. The next person who breaks this will be
- % cursed by a Unix daemon.
- \def\tempa{{\rm }}%
- \def\tempb{#2}%
- \edef\tempc{\tempa}%
- \edef\tempd{\tempb}%
- \ifx\tempc\tempd\ \else%
- %
- % If we must, put the page number on a line of its own, and fill out
- % this line with blank space. (The \hfil is overwhelmed with the
- % fill leaders glue in \indexdotfill if the page number does fit.)
- \hfil\penalty50
- \null\nobreak\indexdotfill % Have leaders before the page number.
- %
- % The `\ ' here is removed by the implicit \unskip that TeX does as
- % part of (the primitive) \par. Without it, a spurious underfull
- % \hbox ensues.
- \ifpdf
- \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
- \else
- \ #2% The page number ends the paragraph.
- \fi
- \fi%
- \par
-\endgroup}
-
-% Like \dotfill except takes at least 1 em.
-\def\indexdotfill{\cleaders
- \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
-
-\def\primary #1{\line{#1\hfil}}
-
-\newskip\secondaryindent \secondaryindent=0.5cm
-\def\secondary#1#2{{%
- \parfillskip=0in
- \parskip=0in
- \hangindent=1in
- \hangafter=1
- \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill
- \ifpdf
- \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph.
- \else
- #2
- \fi
- \par
-}}
-
-% Define two-column mode, which we use to typeset indexes.
-% Adapted from the TeXbook, page 416, which is to say,
-% the manmac.tex format used to print the TeXbook itself.
-\catcode`\@=11
-
-\newbox\partialpage
-\newdimen\doublecolumnhsize
-
-\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
- % Grab any single-column material above us.
- \output = {%
- %
- % Here is a possibility not foreseen in manmac: if we accumulate a
- % whole lot of material, we might end up calling this \output
- % routine twice in a row (see the doublecol-lose test, which is
- % essentially a couple of indexes with @setchapternewpage off). In
- % that case we just ship out what is in \partialpage with the normal
- % output routine. Generally, \partialpage will be empty when this
- % runs and this will be a no-op. See the indexspread.tex test case.
- \ifvoid\partialpage \else
- \onepageout{\pagecontents\partialpage}%
- \fi
- %
- \global\setbox\partialpage = \vbox{%
- % Unvbox the main output page.
- \unvbox\PAGE
- \kern-\topskip \kern\baselineskip
- }%
- }%
- \eject % run that output routine to set \partialpage
- %
- % Use the double-column output routine for subsequent pages.
- \output = {\doublecolumnout}%
- %
- % Change the page size parameters. We could do this once outside this
- % routine, in each of @smallbook, @afourpaper, and the default 8.5x11
- % format, but then we repeat the same computation. Repeating a couple
- % of assignments once per index is clearly meaningless for the
- % execution time, so we may as well do it in one place.
- %
- % First we halve the line length, less a little for the gutter between
- % the columns. We compute the gutter based on the line length, so it
- % changes automatically with the paper format. The magic constant
- % below is chosen so that the gutter has the same value (well, +-<1pt)
- % as it did when we hard-coded it.
- %
- % We put the result in a separate register, \doublecolumhsize, so we
- % can restore it in \pagesofar, after \hsize itself has (potentially)
- % been clobbered.
- %
- \doublecolumnhsize = \hsize
- \advance\doublecolumnhsize by -.04154\hsize
- \divide\doublecolumnhsize by 2
- \hsize = \doublecolumnhsize
- %
- % Double the \vsize as well. (We don't need a separate register here,
- % since nobody clobbers \vsize.)
- \vsize = 2\vsize
-}
-
-% The double-column output routine for all double-column pages except
-% the last.
-%
-\def\doublecolumnout{%
- \splittopskip=\topskip \splitmaxdepth=\maxdepth
- % Get the available space for the double columns -- the normal
- % (undoubled) page height minus any material left over from the
- % previous page.
- \dimen@ = \vsize
- \divide\dimen@ by 2
- \advance\dimen@ by -\ht\partialpage
- %
- % box0 will be the left-hand column, box2 the right.
- \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
- \onepageout\pagesofar
- \unvbox255
- \penalty\outputpenalty
-}
-%
-% Re-output the contents of the output page -- any previous material,
-% followed by the two boxes we just split, in box0 and box2.
-\def\pagesofar{%
- \unvbox\partialpage
- %
- \hsize = \doublecolumnhsize
- \wd0=\hsize \wd2=\hsize
- \hbox to\pagewidth{\box0\hfil\box2}%
-}
-%
-% All done with double columns.
-\def\enddoublecolumns{%
- \output = {%
- % Split the last of the double-column material. Leave it on the
- % current page, no automatic page break.
- \balancecolumns
- %
- % If we end up splitting too much material for the current page,
- % though, there will be another page break right after this \output
- % invocation ends. Having called \balancecolumns once, we do not
- % want to call it again. Therefore, reset \output to its normal
- % definition right away. (We hope \balancecolumns will never be
- % called on to balance too much material, but if it is, this makes
- % the output somewhat more palatable.)
- \global\output = {\onepageout{\pagecontents\PAGE}}%
- }%
- \eject
- \endgroup % started in \begindoublecolumns
- %
- % \pagegoal was set to the doubled \vsize above, since we restarted
- % the current page. We're now back to normal single-column
- % typesetting, so reset \pagegoal to the normal \vsize (after the
- % \endgroup where \vsize got restored).
- \pagegoal = \vsize
-}
-%
-% Called at the end of the double column material.
-\def\balancecolumns{%
- \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
- \dimen@ = \ht0
- \advance\dimen@ by \topskip
- \advance\dimen@ by-\baselineskip
- \divide\dimen@ by 2 % target to split to
- %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
- \splittopskip = \topskip
- % Loop until we get a decent breakpoint.
- {%
- \vbadness = 10000
- \loop
- \global\setbox3 = \copy0
- \global\setbox1 = \vsplit3 to \dimen@
- \ifdim\ht3>\dimen@
- \global\advance\dimen@ by 1pt
- \repeat
- }%
- %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
- \setbox0=\vbox to\dimen@{\unvbox1}%
- \setbox2=\vbox to\dimen@{\unvbox3}%
- %
- \pagesofar
-}
-\catcode`\@ = \other
-
-
-\message{sectioning,}
-% Chapters, sections, etc.
-
-\newcount\chapno
-\newcount\secno \secno=0
-\newcount\subsecno \subsecno=0
-\newcount\subsubsecno \subsubsecno=0
-
-% This counter is funny since it counts through charcodes of letters A, B, ...
-\newcount\appendixno \appendixno = `\@
-% \def\appendixletter{\char\the\appendixno}
-% We do the following for the sake of pdftex, which needs the actual
-% letter in the expansion, not just typeset.
-\def\appendixletter{%
- \ifnum\appendixno=`A A%
- \else\ifnum\appendixno=`B B%
- \else\ifnum\appendixno=`C C%
- \else\ifnum\appendixno=`D D%
- \else\ifnum\appendixno=`E E%
- \else\ifnum\appendixno=`F F%
- \else\ifnum\appendixno=`G G%
- \else\ifnum\appendixno=`H H%
- \else\ifnum\appendixno=`I I%
- \else\ifnum\appendixno=`J J%
- \else\ifnum\appendixno=`K K%
- \else\ifnum\appendixno=`L L%
- \else\ifnum\appendixno=`M M%
- \else\ifnum\appendixno=`N N%
- \else\ifnum\appendixno=`O O%
- \else\ifnum\appendixno=`P P%
- \else\ifnum\appendixno=`Q Q%
- \else\ifnum\appendixno=`R R%
- \else\ifnum\appendixno=`S S%
- \else\ifnum\appendixno=`T T%
- \else\ifnum\appendixno=`U U%
- \else\ifnum\appendixno=`V V%
- \else\ifnum\appendixno=`W W%
- \else\ifnum\appendixno=`X X%
- \else\ifnum\appendixno=`Y Y%
- \else\ifnum\appendixno=`Z Z%
- % The \the is necessary, despite appearances, because \appendixletter is
- % expanded while writing the .toc file. \char\appendixno is not
- % expandable, thus it is written literally, thus all appendixes come out
- % with the same letter (or @) in the toc without it.
- \else\char\the\appendixno
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
- \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi}
-
-% Each @chapter defines this as the name of the chapter.
-% page headings and footings can use it. @section does likewise.
-\def\thischapter{}
-\def\thissection{}
-
-\newcount\absseclevel % used to calculate proper heading level
-\newcount\secbase\secbase=0 % @raise/lowersections modify this count
-
-% @raisesections: treat @section as chapter, @subsection as section, etc.
-\def\raisesections{\global\advance\secbase by -1}
-\let\up=\raisesections % original BFox name
-
-% @lowersections: treat @chapter as section, @section as subsection, etc.
-\def\lowersections{\global\advance\secbase by 1}
-\let\down=\lowersections % original BFox name
-
-% Choose a numbered-heading macro
-% #1 is heading level if unmodified by @raisesections or @lowersections
-% #2 is text for heading
-\def\numhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \chapterzzz{#2}
-\or
- \seczzz{#2}
-\or
- \numberedsubseczzz{#2}
-\or
- \numberedsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \chapterzzz{#2}
- \else
- \numberedsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% like \numhead, but chooses appendix heading levels
-\def\apphead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \appendixzzz{#2}
-\or
- \appendixsectionzzz{#2}
-\or
- \appendixsubseczzz{#2}
-\or
- \appendixsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \appendixzzz{#2}
- \else
- \appendixsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% like \numhead, but chooses numberless heading levels
-\def\unnmhead#1#2{\absseclevel=\secbase\advance\absseclevel by #1
-\ifcase\absseclevel
- \unnumberedzzz{#2}
-\or
- \unnumberedseczzz{#2}
-\or
- \unnumberedsubseczzz{#2}
-\or
- \unnumberedsubsubseczzz{#2}
-\else
- \ifnum \absseclevel<0
- \unnumberedzzz{#2}
- \else
- \unnumberedsubsubseczzz{#2}
- \fi
-\fi
-}
-
-% @chapter, @appendix, @unnumbered.
-\def\thischaptername{No Chapter Title}
-\outer\def\chapter{\parsearg\chapteryyy}
-\def\chapteryyy #1{\numhead0{#1}} % normally numhead0 calls chapterzzz
-\def\chapterzzz #1{%
- \secno=0 \subsecno=0 \subsubsecno=0
- \global\advance \chapno by 1 \message{\putwordChapter\space \the\chapno}%
- \chapmacro {#1}{\the\chapno}%
- \gdef\thissection{#1}%
- \gdef\thischaptername{#1}%
- % We don't substitute the actual chapter name into \thischapter
- % because we don't want its macros evaluated now.
- \xdef\thischapter{\putwordChapter{} \the\chapno: \noexpand\thischaptername}%
- \writetocentry{chap}{#1}{{\the\chapno}}
- \donoderef
- \global\let\section = \numberedsec
- \global\let\subsection = \numberedsubsec
- \global\let\subsubsection = \numberedsubsubsec
-}
-
-% we use \chapno to avoid indenting back
-\def\appendixbox#1{%
- \setbox0 = \hbox{\putwordAppendix{} \the\chapno}%
- \hbox to \wd0{#1\hss}}
-
-\outer\def\appendix{\parsearg\appendixyyy}
-\def\appendixyyy #1{\apphead0{#1}} % normally apphead0 calls appendixzzz
-\def\appendixzzz #1{%
- \secno=0 \subsecno=0 \subsubsecno=0
- \global\advance \appendixno by 1
- \message{\putwordAppendix\space \appendixletter}%
- \chapmacro {#1}{\appendixbox{\putwordAppendix{} \appendixletter}}%
- \gdef\thissection{#1}%
- \gdef\thischaptername{#1}%
- \xdef\thischapter{\putwordAppendix{} \appendixletter: \noexpand\thischaptername}%
- \writetocentry{appendix}{#1}{{\appendixletter}}
- \appendixnoderef
- \global\let\section = \appendixsec
- \global\let\subsection = \appendixsubsec
- \global\let\subsubsection = \appendixsubsubsec
-}
-
-% @centerchap is like @unnumbered, but the heading is centered.
-\outer\def\centerchap{\parsearg\centerchapyyy}
-\def\centerchapyyy #1{{\let\unnumbchapmacro=\centerchapmacro \unnumberedyyy{#1}}}
-
-% @top is like @unnumbered.
-\outer\def\top{\parsearg\unnumberedyyy}
-
-\outer\def\unnumbered{\parsearg\unnumberedyyy}
-\def\unnumberedyyy #1{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
-\def\unnumberedzzz #1{%
- \secno=0 \subsecno=0 \subsubsecno=0
- %
- % This used to be simply \message{#1}, but TeX fully expands the
- % argument to \message. Therefore, if #1 contained @-commands, TeX
- % expanded them. For example, in `@unnumbered The @cite{Book}', TeX
- % expanded @cite (which turns out to cause errors because \cite is meant
- % to be executed, not expanded).
- %
- % Anyway, we don't want the fully-expanded definition of @cite to appear
- % as a result of the \message, we just want `@cite' itself. We use
- % \the<toks register> to achieve this: TeX expands \the<toks> only once,
- % simply yielding the contents of <toks register>. (We also do this for
- % the toc entries.)
- \toks0 = {#1}\message{(\the\toks0)}%
- %
- \unnumbchapmacro {#1}%
- \gdef\thischapter{#1}\gdef\thissection{#1}%
- \writetocentry{unnumbchap}{#1}{{\the\chapno}}
- \unnumbnoderef
- \global\let\section = \unnumberedsec
- \global\let\subsection = \unnumberedsubsec
- \global\let\subsubsection = \unnumberedsubsubsec
-}
-
-% Sections.
-\outer\def\numberedsec{\parsearg\secyyy}
-\def\secyyy #1{\numhead1{#1}} % normally calls seczzz
-\def\seczzz #1{%
- \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
- \gdef\thissection{#1}\secheading {#1}{\the\chapno}{\the\secno}%
- \writetocentry{sec}{#1}{{\the\chapno}{\the\secno}}
- \donoderef
- \nobreak
-}
-
-\outer\def\appendixsection{\parsearg\appendixsecyyy}
-\outer\def\appendixsec{\parsearg\appendixsecyyy}
-\def\appendixsecyyy #1{\apphead1{#1}} % normally calls appendixsectionzzz
-\def\appendixsectionzzz #1{%
- \subsecno=0 \subsubsecno=0 \global\advance \secno by 1 %
- \gdef\thissection{#1}\secheading {#1}{\appendixletter}{\the\secno}%
- \writetocentry{sec}{#1}{{\appendixletter}{\the\secno}}
- \appendixnoderef
- \nobreak
-}
-
-\outer\def\unnumberedsec{\parsearg\unnumberedsecyyy}
-\def\unnumberedsecyyy #1{\unnmhead1{#1}} % normally calls unnumberedseczzz
-\def\unnumberedseczzz #1{%
- \plainsecheading {#1}\gdef\thissection{#1}%
- \writetocentry{unnumbsec}{#1}{{\the\chapno}{\the\secno}}
- \unnumbnoderef
- \nobreak
-}
-
-% Subsections.
-\outer\def\numberedsubsec{\parsearg\numberedsubsecyyy}
-\def\numberedsubsecyyy #1{\numhead2{#1}} % normally calls numberedsubseczzz
-\def\numberedsubseczzz #1{%
- \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
- \subsecheading {#1}{\the\chapno}{\the\secno}{\the\subsecno}%
- \writetocentry{subsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}}
- \donoderef
- \nobreak
-}
-
-\outer\def\appendixsubsec{\parsearg\appendixsubsecyyy}
-\def\appendixsubsecyyy #1{\apphead2{#1}} % normally calls appendixsubseczzz
-\def\appendixsubseczzz #1{%
- \gdef\thissection{#1}\subsubsecno=0 \global\advance \subsecno by 1 %
- \subsecheading {#1}{\appendixletter}{\the\secno}{\the\subsecno}%
- \writetocentry{subsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}}
- \appendixnoderef
- \nobreak
-}
-
-\outer\def\unnumberedsubsec{\parsearg\unnumberedsubsecyyy}
-\def\unnumberedsubsecyyy #1{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
-\def\unnumberedsubseczzz #1{%
- \plainsubsecheading {#1}\gdef\thissection{#1}%
- \writetocentry{unnumbsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}}
- \unnumbnoderef
- \nobreak
-}
-
-% Subsubsections.
-\outer\def\numberedsubsubsec{\parsearg\numberedsubsubsecyyy}
-\def\numberedsubsubsecyyy #1{\numhead3{#1}} % normally numberedsubsubseczzz
-\def\numberedsubsubseczzz #1{%
- \gdef\thissection{#1}\global\advance \subsubsecno by 1 %
- \subsubsecheading {#1}
- {\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
- \writetocentry{subsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}
- \donoderef
- \nobreak
-}
-
-\outer\def\appendixsubsubsec{\parsearg\appendixsubsubsecyyy}
-\def\appendixsubsubsecyyy #1{\apphead3{#1}} % normally appendixsubsubseczzz
-\def\appendixsubsubseczzz #1{%
- \gdef\thissection{#1}\global\advance \subsubsecno by 1 %
- \subsubsecheading {#1}
- {\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}%
- \writetocentry{subsubsec}{#1}{{\appendixletter}{\the\secno}{\the\subsecno}{\the\subsubsecno}}
- \appendixnoderef
- \nobreak
-}
-
-\outer\def\unnumberedsubsubsec{\parsearg\unnumberedsubsubsecyyy}
-\def\unnumberedsubsubsecyyy #1{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
-\def\unnumberedsubsubseczzz #1{%
- \plainsubsubsecheading {#1}\gdef\thissection{#1}%
- \writetocentry{unnumbsubsubsec}{#1}{{\the\chapno}{\the\secno}{\the\subsecno}{\the\subsubsecno}}
- \unnumbnoderef
- \nobreak
-}
-
-% These are variants which are not "outer", so they can appear in @ifinfo.
-% Actually, they should now be obsolete; ordinary section commands should work.
-\def\infotop{\parsearg\unnumberedzzz}
-\def\infounnumbered{\parsearg\unnumberedzzz}
-\def\infounnumberedsec{\parsearg\unnumberedseczzz}
-\def\infounnumberedsubsec{\parsearg\unnumberedsubseczzz}
-\def\infounnumberedsubsubsec{\parsearg\unnumberedsubsubseczzz}
-
-\def\infoappendix{\parsearg\appendixzzz}
-\def\infoappendixsec{\parsearg\appendixseczzz}
-\def\infoappendixsubsec{\parsearg\appendixsubseczzz}
-\def\infoappendixsubsubsec{\parsearg\appendixsubsubseczzz}
-
-\def\infochapter{\parsearg\chapterzzz}
-\def\infosection{\parsearg\sectionzzz}
-\def\infosubsection{\parsearg\subsectionzzz}
-\def\infosubsubsection{\parsearg\subsubsectionzzz}
-
-% These macros control what the section commands do, according
-% to what kind of chapter we are in (ordinary, appendix, or unnumbered).
-% Define them by default for a numbered chapter.
-\global\let\section = \numberedsec
-\global\let\subsection = \numberedsubsec
-\global\let\subsubsection = \numberedsubsubsec
-
-% Define @majorheading, @heading and @subheading
-
-% NOTE on use of \vbox for chapter headings, section headings, and such:
-% 1) We use \vbox rather than the earlier \line to permit
-% overlong headings to fold.
-% 2) \hyphenpenalty is set to 10000 because hyphenation in a
-% heading is obnoxious; this forbids it.
-% 3) Likewise, headings look best if no \parindent is used, and
-% if justification is not attempted. Hence \raggedright.
-
-
-\def\majorheading{\parsearg\majorheadingzzz}
-\def\majorheadingzzz #1{%
- {\advance\chapheadingskip by 10pt \chapbreak }%
- {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 200}
-
-\def\chapheading{\parsearg\chapheadingzzz}
-\def\chapheadingzzz #1{\chapbreak %
- {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\penalty 200}
-
-% @heading, @subheading, @subsubheading.
-\def\heading{\parsearg\plainsecheading}
-\def\subheading{\parsearg\plainsubsecheading}
-\def\subsubheading{\parsearg\plainsubsubsecheading}
-
-% These macros generate a chapter, section, etc. heading only
-% (including whitespace, linebreaking, etc. around it),
-% given all the information in convenient, parsed form.
-
-%%% Args are the skip and penalty (usually negative)
-\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-
-\def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
-
-%%% Define plain chapter starts, and page on/off switching for it
-% Parameter controlling skip before chapter headings (if needed)
-
-\newskip\chapheadingskip
-
-\def\chapbreak{\dobreak \chapheadingskip {-4000}}
-\def\chappager{\par\vfill\supereject}
-\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi}
-
-\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname}
-
-\def\CHAPPAGoff{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chapbreak
-\global\let\pagealignmacro=\chappager}
-
-\def\CHAPPAGon{%
-\global\let\contentsalignmacro = \chappager
-\global\let\pchapsepmacro=\chappager
-\global\let\pagealignmacro=\chappager
-\global\def\HEADINGSon{\HEADINGSsingle}}
-
-\def\CHAPPAGodd{
-\global\let\contentsalignmacro = \chapoddpage
-\global\let\pchapsepmacro=\chapoddpage
-\global\let\pagealignmacro=\chapoddpage
-\global\def\HEADINGSon{\HEADINGSdouble}}
-
-\CHAPPAGon
-
-\def\CHAPFplain{
-\global\let\chapmacro=\chfplain
-\global\let\unnumbchapmacro=\unnchfplain
-\global\let\centerchapmacro=\centerchfplain}
-
-% Plain chapter opening.
-% #1 is the text, #2 the chapter number or empty if unnumbered.
-\def\chfplain#1#2{%
- \pchapsepmacro
- {%
- \chapfonts \rm
- \def\chapnum{#2}%
- \setbox0 = \hbox{#2\ifx\chapnum\empty\else\enspace\fi}%
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
- \hangindent = \wd0 \centerparametersmaybe
- \unhbox0 #1\par}%
- }%
- \nobreak\bigskip % no page break after a chapter title
- \nobreak
-}
-
-% Plain opening for unnumbered.
-\def\unnchfplain#1{\chfplain{#1}{}}
-
-% @centerchap -- centered and unnumbered.
-\let\centerparametersmaybe = \relax
-\def\centerchfplain#1{{%
- \def\centerparametersmaybe{%
- \advance\rightskip by 3\rightskip
- \leftskip = \rightskip
- \parfillskip = 0pt
- }%
- \chfplain{#1}{}%
-}}
-
-\CHAPFplain % The default
-
-\def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\nobreak
-}
-
-\def\chfopen #1#2{\chapoddpage {\chapfonts
-\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
-\par\penalty 5000 %
-}
-
-\def\centerchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt
- \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
-}
-
-\def\CHAPFopen{
-\global\let\chapmacro=\chfopen
-\global\let\unnumbchapmacro=\unnchfopen
-\global\let\centerchapmacro=\centerchfopen}
-
-
-% Section titles.
-\newskip\secheadingskip
-\def\secheadingbreak{\dobreak \secheadingskip {-1000}}
-\def\secheading#1#2#3{\sectionheading{sec}{#2.#3}{#1}}
-\def\plainsecheading#1{\sectionheading{sec}{}{#1}}
-
-% Subsection titles.
-\newskip \subsecheadingskip
-\def\subsecheadingbreak{\dobreak \subsecheadingskip {-500}}
-\def\subsecheading#1#2#3#4{\sectionheading{subsec}{#2.#3.#4}{#1}}
-\def\plainsubsecheading#1{\sectionheading{subsec}{}{#1}}
-
-% Subsubsection titles.
-\let\subsubsecheadingskip = \subsecheadingskip
-\let\subsubsecheadingbreak = \subsecheadingbreak
-\def\subsubsecheading#1#2#3#4#5{\sectionheading{subsubsec}{#2.#3.#4.#5}{#1}}
-\def\plainsubsubsecheading#1{\sectionheading{subsubsec}{}{#1}}
-
-
-% Print any size section title.
-%
-% #1 is the section type (sec/subsec/subsubsec), #2 is the section
-% number (maybe empty), #3 the text.
-\def\sectionheading#1#2#3{%
- {%
- \expandafter\advance\csname #1headingskip\endcsname by \parskip
- \csname #1headingbreak\endcsname
- }%
- {%
- % Switch to the right set of fonts.
- \csname #1fonts\endcsname \rm
- %
- % Only insert the separating space if we have a section number.
- \def\secnum{#2}%
- \setbox0 = \hbox{#2\ifx\secnum\empty\else\enspace\fi}%
- %
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
- \hangindent = \wd0 % zero if no section number
- \unhbox0 #3}%
- }%
- % Add extra space after the heading -- either a line space or a
- % paragraph space, whichever is more. (Some people like to set
- % \parskip to large values for some reason.) Don't allow stretch, though.
- \nobreak
- \ifdim\parskip>\normalbaselineskip
- \kern\parskip
- \else
- \kern\normalbaselineskip
- \fi
- \nobreak
-}
-
-
-\message{toc,}
-% Table of contents.
-\newwrite\tocfile
-
-% Write an entry to the toc file, opening it if necessary.
-% Called from @chapter, etc. We supply {\folio} at the end of the
-% argument, which will end up as the last argument to the \...entry macro.
-%
-% Usage: \writetocentry{chap}{The Name of The Game}{{\the\chapno}}
-% We open the .toc file for writing here instead of at @setfilename (or
-% any other fixed time) so that @contents can be anywhere in the document.
-%
-\newif\iftocfileopened
-\def\writetocentry#1#2#3{%
- \iftocfileopened\else
- \immediate\openout\tocfile = \jobname.toc
- \global\tocfileopenedtrue
- \fi
- %
- \iflinks
- \toks0 = {#2}%
- \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}#3{\folio}}}%
- \temp
- \fi
- %
- % Tell \shipout to create a page destination if we're doing pdf, which
- % will be the target of the links in the table of contents. We can't
- % just do it on every page because the title pages are numbered 1 and
- % 2 (the page numbers aren't printed), and so are the first two pages
- % of the document. Thus, we'd have two destinations named `1', and
- % two named `2'.
- \ifpdf \pdfmakepagedesttrue \fi
-}
-
-\newskip\contentsrightmargin \contentsrightmargin=1in
-\newcount\savepageno
-\newcount\lastnegativepageno \lastnegativepageno = -1
-
-% Finish up the main text and prepare to read what we've written
-% to \tocfile.
-%
-\def\startcontents#1{%
- % If @setchapternewpage on, and @headings double, the contents should
- % start on an odd page, unlike chapters. Thus, we maintain
- % \contentsalignmacro in parallel with \pagealignmacro.
- % From: Torbjorn Granlund <tege@matematik.su.se>
- \contentsalignmacro
- \immediate\closeout\tocfile
- %
- % Don't need to put `Contents' or `Short Contents' in the headline.
- % It is abundantly clear what they are.
- \unnumbchapmacro{#1}\def\thischapter{}%
- \savepageno = \pageno
- \begingroup % Set up to handle contents files properly.
- \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11
- % We can't do this, because then an actual ^ in a section
- % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97.
- %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi
- \raggedbottom % Worry more about breakpoints than the bottom.
- \advance\hsize by -\contentsrightmargin % Don't use the full line length.
- %
- % Roman numerals for page numbers.
- \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
-}
-
-
-% Normal (long) toc.
-\def\contents{%
- \startcontents{\putwordTOC}%
- \openin 1 \jobname.toc
- \ifeof 1 \else
- \closein 1
- \input \jobname.toc
- \fi
- \vfill \eject
- \contentsalignmacro % in case @setchapternewpage odd is in effect
- \pdfmakeoutlines
- \endgroup
- \lastnegativepageno = \pageno
- \global\pageno = \savepageno
-}
-
-% And just the chapters.
-\def\summarycontents{%
- \startcontents{\putwordShortTOC}%
- %
- \let\chapentry = \shortchapentry
- \let\appendixentry = \shortappendixentry
- \let\unnumbchapentry = \shortunnumberedentry
- % We want a true roman here for the page numbers.
- \secfonts
- \let\rm=\shortcontrm \let\bf=\shortcontbf
- \let\sl=\shortcontsl \let\tt=\shortconttt
- \rm
- \hyphenpenalty = 10000
- \advance\baselineskip by 1pt % Open it up a little.
- \def\secentry ##1##2##3##4{}
- \def\subsecentry ##1##2##3##4##5{}
- \def\subsubsecentry ##1##2##3##4##5##6{}
- \let\unnumbsecentry = \secentry
- \let\unnumbsubsecentry = \subsecentry
- \let\unnumbsubsubsecentry = \subsubsecentry
- \openin 1 \jobname.toc
- \ifeof 1 \else
- \closein 1
- \input \jobname.toc
- \fi
- \vfill \eject
- \contentsalignmacro % in case @setchapternewpage odd is in effect
- \endgroup
- \lastnegativepageno = \pageno
- \global\pageno = \savepageno
-}
-\let\shortcontents = \summarycontents
-
-\ifpdf
- \pdfcatalog{/PageMode /UseOutlines}%
-\fi
-
-% These macros generate individual entries in the table of contents.
-% The first argument is the chapter or section name.
-% The last argument is the page number.
-% The arguments in between are the chapter number, section number, ...
-
-% Chapters, in the main contents.
-\def\chapentry#1#2#3{\dochapentry{#2\labelspace#1}{#3}}
-%
-% Chapters, in the short toc.
-% See comments in \dochapentry re vbox and related settings.
-\def\shortchapentry#1#2#3{%
- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#3\egroup}%
-}
-
-% Appendices, in the main contents.
-\def\appendixentry#1#2#3{%
- \dochapentry{\appendixbox{\putwordAppendix{} #2}\labelspace#1}{#3}}
-%
-% Appendices, in the short toc.
-\let\shortappendixentry = \shortchapentry
-
-% Typeset the label for a chapter or appendix for the short contents.
-% The arg is, e.g., `Appendix A' for an appendix, or `3' for a chapter.
-% We could simplify the code here by writing out an \appendixentry
-% command in the toc file for appendices, instead of using \chapentry
-% for both, but it doesn't seem worth it.
-%
-\newdimen\shortappendixwidth
-%
-\def\shortchaplabel#1{%
- % This space should be enough, since a single number is .5em, and the
- % widest letter (M) is 1em, at least in the Computer Modern fonts.
- % But use \hss just in case.
- % (This space doesn't include the extra space that gets added after
- % the label; that gets put in by \shortchapentry above.)
- \dimen0 = 1em
- \hbox to \dimen0{#1\hss}%
-}
-
-% Unnumbered chapters.
-\def\unnumbchapentry#1#2#3{\dochapentry{#1}{#3}}
-\def\shortunnumberedentry#1#2#3{\tocentry{#1}{\doshortpageno\bgroup#3\egroup}}
-
-% Sections.
-\def\secentry#1#2#3#4{\dosecentry{#2.#3\labelspace#1}{#4}}
-\def\unnumbsecentry#1#2#3#4{\dosecentry{#1}{#4}}
-
-% Subsections.
-\def\subsecentry#1#2#3#4#5{\dosubsecentry{#2.#3.#4\labelspace#1}{#5}}
-\def\unnumbsubsecentry#1#2#3#4#5{\dosubsecentry{#1}{#5}}
-
-% And subsubsections.
-\def\subsubsecentry#1#2#3#4#5#6{%
- \dosubsubsecentry{#2.#3.#4.#5\labelspace#1}{#6}}
-\def\unnumbsubsubsecentry#1#2#3#4#5#6{\dosubsubsecentry{#1}{#6}}
-
-% This parameter controls the indentation of the various levels.
-\newdimen\tocindent \tocindent = 3pc
-
-% Now for the actual typesetting. In all these, #1 is the text and #2 is the
-% page number.
-%
-% If the toc has to be broken over pages, we want it to be at chapters
-% if at all possible; hence the \penalty.
-\def\dochapentry#1#2{%
- \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
- \begingroup
- \chapentryfonts
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
- \endgroup
- \nobreak\vskip .25\baselineskip plus.1\baselineskip
-}
-
-\def\dosecentry#1#2{\begingroup
- \secentryfonts \leftskip=\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsecentry#1#2{\begingroup
- \subsecentryfonts \leftskip=2\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-\def\dosubsubsecentry#1#2{\begingroup
- \subsubsecentryfonts \leftskip=3\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
-\endgroup}
-
-% Final typesetting of a toc entry; we use the same \entry macro as for
-% the index entries, but we want to suppress hyphenation here. (We
-% can't do that in the \entry macro, since index entries might consist
-% of hyphenated-identifiers-that-do-not-fit-on-a-line-and-nothing-else.)
-\def\tocentry#1#2{\begingroup
- \vskip 0pt plus1pt % allow a little stretch for the sake of nice page breaks
- % Do not use \turnoffactive in these arguments. Since the toc is
- % typeset in cmr, characters such as _ would come out wrong; we
- % have to do the usual translation tricks.
- \entry{#1}{#2}%
-\endgroup}
-
-% Space between chapter (or whatever) number and the title.
-\def\labelspace{\hskip1em \relax}
-
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
-\def\chapentryfonts{\secfonts \rm}
-\def\secentryfonts{\textfonts}
-\let\subsecentryfonts = \textfonts
-\let\subsubsecentryfonts = \textfonts
-
-
-\message{environments,}
-% @foo ... @end foo.
-
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-%
-% Since these characters are used in examples, it should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-%
-\def\point{$\star$}
-\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% The @error{} command.
-% Adapted from the TeXbook's \boxit.
-%
-\newbox\errorbox
-%
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
-%
-\global\setbox\errorbox=\hbox to \dimen0{\hfil
- \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
- \advance\hsize by -2\dimen2 % Rules.
- \vbox{
- \hrule height\dimen2
- \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
- \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
- \kern3pt\vrule width\dimen2}% Space to right.
- \hrule height\dimen2}
- \hfil}
-%
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @tex ... @end tex escapes into raw Tex temporarily.
-% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
-
-\def\tex{\begingroup
- \catcode `\\=0 \catcode `\{=1 \catcode `\}=2
- \catcode `\$=3 \catcode `\&=4 \catcode `\#=6
- \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
- \catcode `\%=14
- \catcode `\+=\other
- \catcode `\"=\other
- \catcode `\==\other
- \catcode `\|=\other
- \catcode `\<=\other
- \catcode `\>=\other
- \escapechar=`\\
- %
- \let\b=\ptexb
- \let\bullet=\ptexbullet
- \let\c=\ptexc
- \let\,=\ptexcomma
- \let\.=\ptexdot
- \let\dots=\ptexdots
- \let\equiv=\ptexequiv
- \let\!=\ptexexclam
- \let\i=\ptexi
- \let\{=\ptexlbrace
- \let\+=\tabalign
- \let\}=\ptexrbrace
- \let\*=\ptexstar
- \let\t=\ptext
- %
- \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}%
- \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}%
- \def\@{@}%
-\let\Etex=\endgroup}
-
-% Define @lisp ... @end lisp.
-% @lisp does a \begingroup so it can rebind things,
-% including the definition of @end lisp (which normally is erroneous).
-
-% Amount to narrow the margins by for @lisp.
-\newskip\lispnarrowing \lispnarrowing=0.4in
-
-% This is the definition that ^^M gets inside @lisp, @example, and other
-% such environments. \null is better than a space, since it doesn't
-% have any width.
-\def\lisppar{\null\endgraf}
-
-% Make each space character in the input produce a normal interword
-% space in the output. Don't allow a line break at this space, as this
-% is used only in environments like @example, where each line of input
-% should produce a line of output anyway.
-%
-{\obeyspaces %
-\gdef\sepspaces{\obeyspaces\let =\tie}}
-
-% Define \obeyedspace to be our active space, whatever it is. This is
-% for use in \parsearg.
-{\sepspaces%
-\global\let\obeyedspace= }
-
-% This space is always present above and below environments.
-\newskip\envskipamount \envskipamount = 0pt
-
-% Make spacing and below environment symmetrical. We use \parskip here
-% to help in doing that, since in @example-like environments \parskip
-% is reset to zero; thus the \afterenvbreak inserts no space -- but the
-% start of the next paragraph will insert \parskip.
-%
-\def\aboveenvbreak{{%
- % =10000 instead of <10000 because of a special case in \itemzzz, q.v.
- \ifnum \lastpenalty=10000 \else
- \advance\envskipamount by \parskip
- \endgraf
- \ifdim\lastskip<\envskipamount
- \removelastskip
- % it's not a good place to break if the last penalty was \nobreak
- % or better ...
- \ifnum\lastpenalty>10000 \else \penalty-50 \fi
- \vskip\envskipamount
- \fi
- \fi
-}}
-
-\let\afterenvbreak = \aboveenvbreak
-
-% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins.
-\let\nonarrowing=\relax
-
-% @cartouche ... @end cartouche: draw rectangle w/rounded corners around
-% environment contents.
-\font\circle=lcircle10
-\newdimen\circthick
-\newdimen\cartouter\newdimen\cartinner
-\newskip\normbskip\newskip\normpskip\newskip\normlskip
-\circthick=\fontdimen8\circle
-%
-\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth
-\def\ctr{{\hskip 6pt\circle\char'010}}
-\def\cbl{{\circle\char'012\hskip -6pt}}
-\def\cbr{{\hskip 6pt\circle\char'011}}
-\def\carttop{\hbox to \cartouter{\hskip\lskip
- \ctl\leaders\hrule height\circthick\hfil\ctr
- \hskip\rskip}}
-\def\cartbot{\hbox to \cartouter{\hskip\lskip
- \cbl\leaders\hrule height\circthick\hfil\cbr
- \hskip\rskip}}
-%
-\newskip\lskip\newskip\rskip
-
-\def\cartouche{%
-\par % can't be in the midst of a paragraph.
-\begingroup
- \lskip=\leftskip \rskip=\rightskip
- \leftskip=0pt\rightskip=0pt %we want these *outside*.
- \cartinner=\hsize \advance\cartinner by-\lskip
- \advance\cartinner by-\rskip
- \cartouter=\hsize
- \advance\cartouter by 18.4pt % allow for 3pt kerns on either
-% side, and for 6pt waste from
-% each corner char, and rule thickness
- \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
- % Flag to tell @lisp, etc., not to narrow margin.
- \let\nonarrowing=\comment
- \vbox\bgroup
- \baselineskip=0pt\parskip=0pt\lineskip=0pt
- \carttop
- \hbox\bgroup
- \hskip\lskip
- \vrule\kern3pt
- \vbox\bgroup
- \hsize=\cartinner
- \kern3pt
- \begingroup
- \baselineskip=\normbskip
- \lineskip=\normlskip
- \parskip=\normpskip
- \vskip -\parskip
-\def\Ecartouche{%
- \endgroup
- \kern3pt
- \egroup
- \kern3pt\vrule
- \hskip\rskip
- \egroup
- \cartbot
- \egroup
-\endgroup
-}}
-
-
-% This macro is called at the beginning of all the @example variants,
-% inside a group.
-\def\nonfillstart{%
- \aboveenvbreak
- \inENV % This group ends at the end of the body
- \hfuzz = 12pt % Don't be fussy
- \sepspaces % Make spaces be word-separators rather than space tokens.
- \let\par = \lisppar % don't ignore blank lines
- \obeylines % each line of input is a line of output
- \parskip = 0pt
- \parindent = 0pt
- \emergencystretch = 0pt % don't try to avoid overfull boxes
- % @cartouche defines \nonarrowing to inhibit narrowing
- % at next level down.
- \ifx\nonarrowing\relax
- \advance \leftskip by \lispnarrowing
- \exdentamount=\lispnarrowing
- \let\exdent=\nofillexdent
- \let\nonarrowing=\relax
- \fi
-}
-
-% Define the \E... control sequence only if we are inside the particular
-% environment, so the error checking in \end will work.
-%
-% To end an @example-like environment, we first end the paragraph (via
-% \afterenvbreak's vertical glue), and then the group. That way we keep
-% the zero \parskip that the environments set -- \parskip glue will be
-% inserted at the beginning of the next paragraph in the document, after
-% the environment.
-%
-\def\nonfillfinish{\afterenvbreak\endgroup}
-
-% @lisp: indented, narrowed, typewriter font.
-\def\lisp{\begingroup
- \nonfillstart
- \let\Elisp = \nonfillfinish
- \tt
- \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
- \gobble % eat return
-}
-
-% @example: Same as @lisp.
-\def\example{\begingroup \def\Eexample{\nonfillfinish\endgroup}\lisp}
-
-% @smallexample and @smalllisp: use smaller fonts.
-% Originally contributed by Pavel@xerox.
-\def\smalllisp{\begingroup
- \def\Esmalllisp{\nonfillfinish\endgroup}%
- \def\Esmallexample{\nonfillfinish\endgroup}%
- \smallexamplefonts
- \lisp
-}
-\let\smallexample = \smalllisp
-
-
-% @display: same as @lisp except keep current font.
-%
-\def\display{\begingroup
- \nonfillstart
- \let\Edisplay = \nonfillfinish
- \gobble
-}
-%
-% @smalldisplay: @display plus smaller fonts.
-%
-\def\smalldisplay{\begingroup
- \def\Esmalldisplay{\nonfillfinish\endgroup}%
- \smallexamplefonts \rm
- \display
-}
-
-% @format: same as @display except don't narrow margins.
-%
-\def\format{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eformat = \nonfillfinish
- \gobble
-}
-%
-% @smallformat: @format plus smaller fonts.
-%
-\def\smallformat{\begingroup
- \def\Esmallformat{\nonfillfinish\endgroup}%
- \smallexamplefonts \rm
- \format
-}
-
-% @flushleft (same as @format).
-%
-\def\flushleft{\begingroup \def\Eflushleft{\nonfillfinish\endgroup}\format}
-
-% @flushright.
-%
-\def\flushright{\begingroup
- \let\nonarrowing = t
- \nonfillstart
- \let\Eflushright = \nonfillfinish
- \advance\leftskip by 0pt plus 1fill
- \gobble
-}
-
-
-% @quotation does normal linebreaking (hence we can't use \nonfillstart)
-% and narrows the margins.
-%
-\def\quotation{%
- \begingroup\inENV %This group ends at the end of the @quotation body
- {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
- \parindent=0pt
- % We have retained a nonzero parskip for the environment, since we're
- % doing normal filling. So to avoid extra space below the environment...
- \def\Equotation{\parskip = 0pt \nonfillfinish}%
- %
- % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
- \ifx\nonarrowing\relax
- \advance\leftskip by \lispnarrowing
- \advance\rightskip by \lispnarrowing
- \exdentamount = \lispnarrowing
- \let\nonarrowing = \relax
- \fi
-}
-
-
-% LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
-% If we want to allow any <char> as delimiter,
-% we need the curly braces so that makeinfo sees the @verb command, eg:
-% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org
-%
-% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook.
-%
-% [Knuth] p.344; only we need to do the other characters Texinfo sets
-% active too. Otherwise, they get lost as the first character on a
-% verbatim line.
-\def\dospecials{%
- \do\ \do\\\do\{\do\}\do\$\do\&%
- \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
- \do\<\do\>\do\|\do\@\do+\do\"%
-}
-%
-% [Knuth] p. 380
-\def\uncatcodespecials{%
- \def\do##1{\catcode`##1=12}\dospecials}
-%
-% [Knuth] pp. 380,381,391
-% Disable Spanish ligatures ?` and !` of \tt font
-\begingroup
- \catcode`\`=\active\gdef`{\relax\lq}
-\endgroup
-%
-% Setup for the @verb command.
-%
-% Eight spaces for a tab
-\begingroup
- \catcode`\^^I=\active
- \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }}
-\endgroup
-%
-\def\setupverb{%
- \tt % easiest (and conventionally used) font for verbatim
- \def\par{\leavevmode\endgraf}%
- \catcode`\`=\active
- \tabeightspaces
- % Respect line breaks,
- % print special symbols as themselves, and
- % make each space count
- % must do in this order:
- \obeylines \uncatcodespecials \sepspaces
-}
-
-% Setup for the @verbatim environment
-%
-% Real tab expansion
-\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
-%
-\def\starttabbox{\setbox0=\hbox\bgroup}
-\begingroup
- \catcode`\^^I=\active
- \gdef\tabexpand{%
- \catcode`\^^I=\active
- \def^^I{\leavevmode\egroup
- \dimen0=\wd0 % the width so far, or since the previous tab
- \divide\dimen0 by\tabw
- \multiply\dimen0 by\tabw % compute previous multiple of \tabw
- \advance\dimen0 by\tabw % advance to next multiple of \tabw
- \wd0=\dimen0 \box0 \starttabbox
- }%
- }
-\endgroup
-\def\setupverbatim{%
- % Easiest (and conventionally used) font for verbatim
- \tt
- \def\par{\leavevmode\egroup\box0\endgraf}%
- \catcode`\`=\active
- \tabexpand
- % Respect line breaks,
- % print special symbols as themselves, and
- % make each space count
- % must do in this order:
- \obeylines \uncatcodespecials \sepspaces
- \everypar{\starttabbox}%
-}
-
-% Do the @verb magic: verbatim text is quoted by unique
-% delimiter characters. Before first delimiter expect a
-% right brace, after last delimiter expect closing brace:
-%
-% \def\doverb'{'<char>#1<char>'}'{#1}
-%
-% [Knuth] p. 382; only eat outer {}
-\begingroup
- \catcode`[=1\catcode`]=2\catcode`\{=12\catcode`\}=12
- \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next]
-\endgroup
-%
-\def\verb{\begingroup\setupverb\doverb}
-%
-%
-% Do the @verbatim magic: define the macro \doverbatim so that
-% the (first) argument ends when '@end verbatim' is reached, ie:
-%
-% \def\doverbatim#1@end verbatim{#1}
-%
-% For Texinfo it's a lot easier than for LaTeX,
-% because texinfo's \verbatim doesn't stop at '\end{verbatim}':
-% we need not redefine '\', '{' and '}'.
-%
-% Inspired by LaTeX's verbatim command set [latex.ltx]
-%% Include LaTeX hack for completeness -- never know
-%% \begingroup
-%% \catcode`|=0 \catcode`[=1
-%% \catcode`]=2\catcode`\{=12\catcode`\}=12\catcode`\ =\active
-%% \catcode`\\=12|gdef|doverbatim#1@end verbatim[
-%% #1|endgroup|def|Everbatim[]|end[verbatim]]
-%% |endgroup
-%
-\begingroup
- \catcode`\ =\active
- \obeylines %
- % ignore everything up to the first ^^M, that's the newline at the end
- % of the @verbatim input line itself. Otherwise we get an extra blank
- % line in the output.
- \gdef\doverbatim#1^^M#2@end verbatim{#2\end{verbatim}}%
-\endgroup
-%
-\def\verbatim{%
- \def\Everbatim{\nonfillfinish\endgroup}%
- \begingroup
- \nonfillstart
- \advance\leftskip by -\defbodyindent
- \begingroup\setupverbatim\doverbatim
-}
-
-% @verbatiminclude FILE - insert text of file in verbatim environment.
-%
-% Allow normal characters that we make active in the argument (a file name).
-\def\verbatiminclude{%
- \begingroup
- \catcode`\\=\other
- \catcode`~=\other
- \catcode`^=\other
- \catcode`_=\other
- \catcode`|=\other
- \catcode`<=\other
- \catcode`>=\other
- \catcode`+=\other
- \parsearg\doverbatiminclude
-}
-\def\setupverbatiminclude{%
- \begingroup
- \nonfillstart
- \advance\leftskip by -\defbodyindent
- \begingroup\setupverbatim
-}
-%
-\def\doverbatiminclude#1{%
- % Restore active chars for included file.
- \endgroup
- \begingroup
- \let\value=\expandablevalue
- \def\thisfile{#1}%
- \expandafter\expandafter\setupverbatiminclude\input\thisfile
- \endgroup
- \nonfillfinish
- \endgroup
-}
-
-% @copying ... @end copying.
-% Save the text away for @insertcopying later. Many commands won't be
-% allowed in this context, but that's ok.
-%
-% We save the uninterpreted tokens, rather than creating a box.
-% Saving the text in a box would be much easier, but then all the
-% typesetting commands (@smallbook, font changes, etc.) have to be done
-% beforehand -- and a) we want @copying to be done first in the source
-% file; b) letting users define the frontmatter in as flexible order as
-% possible is very desirable.
-%
-\def\copying{\begingroup
- % Define a command to swallow text until we reach `@end copying'.
- % \ is the escape char in this texinfo.tex file, so it is the
- % delimiter for the command; @ will be the escape char when we read
- % it, but that doesn't matter.
- \long\def\docopying##1\end copying{\gdef\copyingtext{##1}\enddocopying}%
- %
- % We must preserve ^^M's in the input file; see \insertcopying below.
- \catcode`\^^M = \active
- \docopying
-}
-
-% What we do to finish off the copying text.
-%
-\def\enddocopying{\endgroup\ignorespaces}
-
-% @insertcopying. Here we must play games with ^^M's. On the one hand,
-% we need them to delimit commands such as `@end quotation', so they
-% must be active. On the other hand, we certainly don't want every
-% end-of-line to be a \par, as would happen with the normal active
-% definition of ^^M. On the third hand, two ^^M's in a row should still
-% generate a \par.
-%
-% Our approach is to make ^^M insert a space and a penalty1 normally;
-% then it can also check if \lastpenalty=1. If it does, then manually
-% do \par.
-%
-% This messes up the normal definitions of @c[omment], so we redefine
-% it. Similarly for @ignore. (These commands are used in the gcc
-% manual for man page generation.)
-%
-% Seems pretty fragile, most line-oriented commands will presumably
-% fail, but for the limited use of getting the copying text (which
-% should be quite simple) inserted, we can hope it's ok.
-%
-{\catcode`\^^M=\active %
-\gdef\insertcopying{\begingroup %
- \parindent = 0pt % looks wrong on title page
- \def^^M{%
- \ifnum \lastpenalty=1 %
- \par %
- \else %
- \space \penalty 1 %
- \fi %
- }%
- %
- % Fix @c[omment] for catcode 13 ^^M's.
- \def\c##1^^M{\ignorespaces}%
- \let\comment = \c %
- %
- % Don't bother jumping through all the hoops that \doignore does, it
- % would be very hard since the catcodes are already set.
- \long\def\ignore##1\end ignore{\ignorespaces}%
- %
- \copyingtext %
-\endgroup}%
-}
-
-\message{defuns,}
-% @defun etc.
-
-% Allow user to change definition object font (\df) internally
-\def\setdeffont#1 {\csname DEF#1\endcsname}
-
-\newskip\defbodyindent \defbodyindent=.4in
-\newskip\defargsindent \defargsindent=50pt
-\newskip\deflastargmargin \deflastargmargin=18pt
-
-\newcount\parencount
-
-% We want ()&[] to print specially on the defun line.
-%
-\def\activeparens{%
- \catcode`\(=\active \catcode`\)=\active
- \catcode`\&=\active
- \catcode`\[=\active \catcode`\]=\active
-}
-
-% Make control sequences which act like normal parenthesis chars.
-\let\lparen = ( \let\rparen = )
-
-{\activeparens % Now, smart parens don't turn on until &foo (see \amprm)
-
-% Be sure that we always have a definition for `(', etc. For example,
-% if the fn name has parens in it, \boldbrax will not be in effect yet,
-% so TeX would otherwise complain about undefined control sequence.
-\global\let(=\lparen \global\let)=\rparen
-\global\let[=\lbrack \global\let]=\rbrack
-
-\gdef\functionparens{\boldbrax\let&=\amprm\parencount=0 }
-\gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb}
-% This is used to turn on special parens
-% but make & act ordinary (given that it's active).
-\gdef\boldbraxnoamp{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb\let&=\ampnr}
-
-% Definitions of (, ) and & used in args for functions.
-% This is the definition of ( outside of all parentheses.
-\gdef\oprm#1 {{\rm\char`\(}#1 \bf \let(=\opnested
- \global\advance\parencount by 1
-}
-%
-% This is the definition of ( when already inside a level of parens.
-\gdef\opnested{\char`\(\global\advance\parencount by 1 }
-%
-\gdef\clrm{% Print a paren in roman if it is taking us back to depth of 0.
- % also in that case restore the outer-level definition of (.
- \ifnum \parencount=1 {\rm \char `\)}\sl \let(=\oprm \else \char `\) \fi
- \global\advance \parencount by -1 }
-% If we encounter &foo, then turn on ()-hacking afterwards
-\gdef\amprm#1 {{\rm\}\let(=\oprm \let)=\clrm\ }
-%
-\gdef\normalparens{\boldbrax\let&=\ampnr}
-} % End of definition inside \activeparens
-%% These parens (in \boldbrax) actually are a little bolder than the
-%% contained text. This is especially needed for [ and ]
-\def\opnr{{\sf\char`\(}\global\advance\parencount by 1 }
-\def\clnr{{\sf\char`\)}\global\advance\parencount by -1 }
-\let\ampnr = \&
-\def\lbrb{{\bf\char`\[}}
-\def\rbrb{{\bf\char`\]}}
-
-% Active &'s sneak into the index arguments, so make sure it's defined.
-{
- \catcode`& = \active
- \global\let& = \ampnr
-}
-
-% \defname, which formats the name of the @def (not the args).
-% #1 is the function name.
-% #2 is the type of definition, such as "Function".
-%
-\def\defname#1#2{%
- % How we'll output the type name. Putting it in brackets helps
- % distinguish it from the body text that may end up on the next line
- % just below it.
- \ifempty{#2}%
- \def\defnametype{}%
- \else
- \def\defnametype{[\rm #2]}%
- \fi
- %
- % Get the values of \leftskip and \rightskip as they were outside the @def...
- \dimen2=\leftskip
- \advance\dimen2 by -\defbodyindent
- %
- % Figure out values for the paragraph shape.
- \setbox0=\hbox{\hskip \deflastargmargin{\defnametype}}%
- \dimen0=\hsize \advance \dimen0 by -\wd0 % compute size for first line
- \dimen1=\hsize \advance \dimen1 by -\defargsindent % size for continuations
- \parshape 2 0in \dimen0 \defargsindent \dimen1
- %
- % Output arg 2 ("Function" or some such) but stuck inside a box of
- % width 0 so it does not interfere with linebreaking.
- \noindent
- %
- {% Adjust \hsize to exclude the ambient margins,
- % so that \rightline will obey them.
- \advance \hsize by -\dimen2
- \dimen3 = 0pt % was -1.25pc
- \rlap{\rightline{\defnametype\kern\dimen3}}%
- }%
- %
- % Allow all lines to be underfull without complaint:
- \tolerance=10000 \hbadness=10000
- \advance\leftskip by -\defbodyindent
- \exdentamount=\defbodyindent
- {\df #1}\enskip % output function name
- % \defunargs will be called next to output the arguments, if any.
-}
-
-% Common pieces to start any @def...
-% #1 is the \E... control sequence to end the definition (which we define).
-% #2 is the \...x control sequence (which our caller defines).
-% #3 is the control sequence to process the header, such as \defunheader.
-%
-\def\parsebodycommon#1#2#3{%
- \begingroup\inENV
- % If there are two @def commands in a row, we'll have a \nobreak,
- % which is there to keep the function description together with its
- % header. But if there's nothing but headers, we want to allow a
- % break after all. Check for penalty 10002 (inserted by
- % \defargscommonending) instead of 10000, since the sectioning
- % commands insert a \penalty10000, and we don't want to allow a break
- % between a section heading and a defun.
- \ifnum\lastpenalty=10002 \penalty0 \fi
- \medbreak
- %
- % Define the \E... end token that this defining construct specifies
- % so that it will exit this group.
- \def#1{\endgraf\endgroup\medbreak}%
- %
- \parindent=0in
- \advance\leftskip by \defbodyindent
- \exdentamount=\defbodyindent
-}
-
-% Common part of the \...x definitions.
-%
-\def\defxbodycommon{%
- % As with \parsebodycommon above, allow line break if we have multiple
- % x headers in a row. It's not a great place, though.
- \ifnum\lastpenalty=10000 \penalty1000 \fi
- %
- \begingroup\obeylines
-}
-
-% Process body of @defun, @deffn, @defmac, etc.
-%
-\def\defparsebody#1#2#3{%
- \parsebodycommon{#1}{#2}{#3}%
- \def#2{\defxbodycommon \activeparens \spacesplit#3}%
- \catcode\equalChar=\active
- \begingroup\obeylines\activeparens
- \spacesplit#3%
-}
-
-% #1, #2, #3 are the common arguments (see \parsebodycommon above).
-% #4, delimited by the space, is the class name.
-%
-\def\defmethparsebody#1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \def#2##1 {\defxbodycommon \activeparens \spacesplit{#3{##1}}}%
- \begingroup\obeylines\activeparens
- % The \empty here prevents misinterpretation of a construct such as
- % @deffn {whatever} {Enharmonic comma}
- % See comments at \deftpparsebody, although in our case we don't have
- % to remove the \empty afterwards, since it is empty.
- \spacesplit{#3{#4}}\empty
-}
-
-% Used for @deftypemethod and @deftypeivar.
-% #1, #2, #3 are the common arguments (see \defparsebody).
-% #4, delimited by a space, is the class name.
-% #5 is the method's return type.
-%
-\def\deftypemethparsebody#1#2#3#4 #5 {%
- \parsebodycommon{#1}{#2}{#3}%
- \def#2##1 ##2 {\defxbodycommon \activeparens \spacesplit{#3{##1}{##2}}}%
- \begingroup\obeylines\activeparens
- \spacesplit{#3{#4}{#5}}%
-}
-
-% Used for @deftypeop. The change from \deftypemethparsebody is an
-% extra argument at the beginning which is the `category', instead of it
-% being the hardwired string `Method' or `Instance Variable'. We have
-% to account for this both in the \...x definition and in parsing the
-% input at hand. Thus also need a control sequence (passed as #5) for
-% the \E... definition to assign the category name to.
-%
-\def\deftypeopparsebody#1#2#3#4#5 #6 {%
- \parsebodycommon{#1}{#2}{#3}%
- \def#2##1 ##2 ##3 {\def#4{##1}%
- \defxbodycommon \activeparens \spacesplit{#3{##2}{##3}}}%
- \begingroup\obeylines\activeparens
- \spacesplit{#3{#5}{#6}}%
-}
-
-% For @defop.
-\def\defopparsebody #1#2#3#4#5 {%
- \parsebodycommon{#1}{#2}{#3}%
- \def#2##1 ##2 {\def#4{##1}%
- \defxbodycommon \activeparens \spacesplit{#3{##2}}}%
- \begingroup\obeylines\activeparens
- \spacesplit{#3{#5}}%
-}
-
-% These parsing functions are similar to the preceding ones
-% except that they do not make parens into active characters.
-% These are used for "variables" since they have no arguments.
-%
-\def\defvarparsebody #1#2#3{%
- \parsebodycommon{#1}{#2}{#3}%
- \def#2{\defxbodycommon \spacesplit#3}%
- \catcode\equalChar=\active
- \begingroup\obeylines
- \spacesplit#3%
-}
-
-% @defopvar.
-\def\defopvarparsebody #1#2#3#4#5 {%
- \parsebodycommon{#1}{#2}{#3}%
- \def#2##1 ##2 {\def#4{##1}%
- \defxbodycommon \spacesplit{#3{##2}}}%
- \begingroup\obeylines
- \spacesplit{#3{#5}}%
-}
-
-\def\defvrparsebody#1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
- \begingroup\obeylines
- \spacesplit{#3{#4}}%
-}
-
-% This loses on `@deftp {Data Type} {struct termios}' -- it thinks the
-% type is just `struct', because we lose the braces in `{struct
-% termios}' when \spacesplit reads its undelimited argument. Sigh.
-% \let\deftpparsebody=\defvrparsebody
-%
-% So, to get around this, we put \empty in with the type name. That
-% way, TeX won't find exactly `{...}' as an undelimited argument, and
-% won't strip off the braces.
-%
-\def\deftpparsebody #1#2#3#4 {%
- \parsebodycommon{#1}{#2}{#3}%
- \def#2##1 {\defxbodycommon \spacesplit{#3{##1}}}%
- \begingroup\obeylines
- \spacesplit{\parsetpheaderline{#3{#4}}}\empty
-}
-
-% Fine, but then we have to eventually remove the \empty *and* the
-% braces (if any). That's what this does.
-%
-\def\removeemptybraces\empty#1\relax{#1}
-
-% After \spacesplit has done its work, this is called -- #1 is the final
-% thing to call, #2 the type name (which starts with \empty), and #3
-% (which might be empty) the arguments.
-%
-\def\parsetpheaderline#1#2#3{%
- #1{\removeemptybraces#2\relax}{#3}%
-}%
-
-% Split up #2 (the rest of the input line) at the first space token.
-% call #1 with two arguments:
-% the first is all of #2 before the space token,
-% the second is all of #2 after that space token.
-% If #2 contains no space token, all of it is passed as the first arg
-% and the second is passed as empty.
-%
-{\obeylines %
- \gdef\spacesplit#1#2^^M{\endgroup\spacesplitx{#1}#2 \relax\spacesplitx}%
- \long\gdef\spacesplitx#1#2 #3#4\spacesplitx{%
- \ifx\relax #3%
- #1{#2}{}%
- \else %
- #1{#2}{#3#4}%
- \fi}%
-}
-
-% Define @defun.
-
-% This is called to end the arguments processing for all the @def... commands.
-%
-\def\defargscommonending{%
- \interlinepenalty = 10000
- \advance\rightskip by 0pt plus 1fil
- \endgraf
- \nobreak\vskip -\parskip
- \penalty 10002 % signal to \parsebodycommon.
-}
-
-% This expands the args and terminates the paragraph they comprise.
-%
-\def\defunargs#1{\functionparens \sl
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Set the font temporarily and use \font in case \setfont made \tensl a macro.
-{\tensl\hyphenchar\font=0}%
-#1%
-{\tensl\hyphenchar\font=45}%
-\ifnum\parencount=0 \else \errmessage{Unbalanced parentheses in @def}\fi%
- \defargscommonending
-}
-
-\def\deftypefunargs #1{%
-% Expand, preventing hyphenation at `-' chars.
-% Note that groups don't affect changes in \hyphenchar.
-% Use \boldbraxnoamp, not \functionparens, so that & is not special.
-\boldbraxnoamp
-\tclose{#1}% avoid \code because of side effects on active chars
- \defargscommonending
-}
-
-% Do complete processing of one @defun or @defunx line already parsed.
-
-% @deffn Command forward-char nchars
-
-\def\deffn{\defmethparsebody\Edeffn\deffnx\deffnheader}
-
-\def\deffnheader #1#2#3{\doind {fn}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defunargs{#3}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @defun == @deffn Function
-
-\def\defun{\defparsebody\Edefun\defunx\defunheader}
-
-\def\defunheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDeffunc}%
-\defunargs {#2}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefun int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefun{\defparsebody\Edeftypefun\deftypefunx\deftypefunheader}
-
-% #1 is the data type. #2 is the name and args.
-\def\deftypefunheader #1#2{\deftypefunheaderx{#1}#2 \relax}
-% #1 is the data type, #2 the name, #3 the args.
-\def\deftypefunheaderx #1#2 #3\relax{%
-\doind {fn}{\code{#2}}% Make entry in function index
-\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypefun}%
-\deftypefunargs {#3}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @deftypefn {Library Function} int foobar (int @var{foo}, float @var{bar})
-
-\def\deftypefn{\defmethparsebody\Edeftypefn\deftypefnx\deftypefnheader}
-
-% \defheaderxcond#1\relax$.$
-% puts #1 in @code, followed by a space, but does nothing if #1 is null.
-\def\defheaderxcond#1#2$.${\ifx#1\relax\else\code{#1#2} \fi}
-
-% #1 is the classification. #2 is the data type. #3 is the name and args.
-\def\deftypefnheader #1#2#3{\deftypefnheaderx{#1}{#2}#3 \relax}
-% #1 is the classification, #2 the data type, #3 the name, #4 the args.
-\def\deftypefnheaderx #1#2#3 #4\relax{%
-\doind {fn}{\code{#3}}% Make entry in function index
-\begingroup
-\normalparens % notably, turn off `&' magic, which prevents
-% at least some C++ text from working
-\defname {\defheaderxcond#2\relax$.$#3}{#1}%
-\deftypefunargs {#4}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @defmac == @deffn Macro
-
-\def\defmac{\defparsebody\Edefmac\defmacx\defmacheader}
-
-\def\defmacheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDefmac}%
-\defunargs {#2}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @defspec == @deffn Special Form
-
-\def\defspec{\defparsebody\Edefspec\defspecx\defspecheader}
-
-\def\defspecheader #1#2{\doind {fn}{\code{#1}}% Make entry in function index
-\begingroup\defname {#1}{\putwordDefspec}%
-\defunargs {#2}\endgroup %
-\catcode\equalChar=\other % Turn off change made in \defparsebody
-}
-
-% @defop CATEGORY CLASS OPERATION ARG...
-%
-\def\defop #1 {\def\defoptype{#1}%
-\defopparsebody\Edefop\defopx\defopheader\defoptype}
-%
-\def\defopheader#1#2#3{%
- \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% function index entry
- \begingroup
- \defname{#2}{\defoptype\ \putwordon\ #1}%
- \defunargs{#3}%
- \endgroup
-}
-
-% @deftypeop CATEGORY CLASS TYPE OPERATION ARG...
-%
-\def\deftypeop #1 {\def\deftypeopcategory{#1}%
- \deftypeopparsebody\Edeftypeop\deftypeopx\deftypeopheader
- \deftypeopcategory}
-%
-% #1 is the class name, #2 the data type, #3 the operation name, #4 the args.
-\def\deftypeopheader#1#2#3#4{%
- \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
- \begingroup
- \defname{\defheaderxcond#2\relax$.$#3}
- {\deftypeopcategory\ \putwordon\ \code{#1}}%
- \deftypefunargs{#4}%
- \endgroup
-}
-
-% @deftypemethod CLASS TYPE METHOD ARG...
-%
-\def\deftypemethod{%
- \deftypemethparsebody\Edeftypemethod\deftypemethodx\deftypemethodheader}
-%
-% #1 is the class name, #2 the data type, #3 the method name, #4 the args.
-\def\deftypemethodheader#1#2#3#4{%
- \dosubind{fn}{\code{#3}}{\putwordon\ \code{#1}}% entry in function index
- \begingroup
- \defname{\defheaderxcond#2\relax$.$#3}{\putwordMethodon\ \code{#1}}%
- \deftypefunargs{#4}%
- \endgroup
-}
-
-% @deftypeivar CLASS TYPE VARNAME
-%
-\def\deftypeivar{%
- \deftypemethparsebody\Edeftypeivar\deftypeivarx\deftypeivarheader}
-%
-% #1 is the class name, #2 the data type, #3 the variable name.
-\def\deftypeivarheader#1#2#3{%
- \dosubind{vr}{\code{#3}}{\putwordof\ \code{#1}}% entry in variable index
- \begingroup
- \defname{\defheaderxcond#2\relax$.$#3}
- {\putwordInstanceVariableof\ \code{#1}}%
- \defvarargs{#3}%
- \endgroup
-}
-
-% @defmethod == @defop Method
-%
-\def\defmethod{\defmethparsebody\Edefmethod\defmethodx\defmethodheader}
-%
-% #1 is the class name, #2 the method name, #3 the args.
-\def\defmethodheader#1#2#3{%
- \dosubind{fn}{\code{#2}}{\putwordon\ \code{#1}}% entry in function index
- \begingroup
- \defname{#2}{\putwordMethodon\ \code{#1}}%
- \defunargs{#3}%
- \endgroup
-}
-
-% @defcv {Class Option} foo-class foo-flag
-
-\def\defcv #1 {\def\defcvtype{#1}%
-\defopvarparsebody\Edefcv\defcvx\defcvarheader\defcvtype}
-
-\def\defcvarheader #1#2#3{%
- \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% variable index entry
- \begingroup
- \defname{#2}{\defcvtype\ \putwordof\ #1}%
- \defvarargs{#3}%
- \endgroup
-}
-
-% @defivar CLASS VARNAME == @defcv {Instance Variable} CLASS VARNAME
-%
-\def\defivar{\defvrparsebody\Edefivar\defivarx\defivarheader}
-%
-\def\defivarheader#1#2#3{%
- \dosubind{vr}{\code{#2}}{\putwordof\ \code{#1}}% entry in var index
- \begingroup
- \defname{#2}{\putwordInstanceVariableof\ #1}%
- \defvarargs{#3}%
- \endgroup
-}
-
-% @defvar
-% First, define the processing that is wanted for arguments of @defvar.
-% This is actually simple: just print them in roman.
-% This must expand the args and terminate the paragraph they make up
-\def\defvarargs #1{\normalparens #1%
- \defargscommonending
-}
-
-% @defvr Counter foo-count
-
-\def\defvr{\defvrparsebody\Edefvr\defvrx\defvrheader}
-
-\def\defvrheader #1#2#3{\doind {vr}{\code{#2}}%
-\begingroup\defname {#2}{#1}\defvarargs{#3}\endgroup}
-
-% @defvar == @defvr Variable
-
-\def\defvar{\defvarparsebody\Edefvar\defvarx\defvarheader}
-
-\def\defvarheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{\putwordDefvar}%
-\defvarargs {#2}\endgroup %
-}
-
-% @defopt == @defvr {User Option}
-
-\def\defopt{\defvarparsebody\Edefopt\defoptx\defoptheader}
-
-\def\defoptheader #1#2{\doind {vr}{\code{#1}}% Make entry in var index
-\begingroup\defname {#1}{\putwordDefopt}%
-\defvarargs {#2}\endgroup %
-}
-
-% @deftypevar int foobar
-
-\def\deftypevar{\defvarparsebody\Edeftypevar\deftypevarx\deftypevarheader}
-
-% #1 is the data type. #2 is the name, perhaps followed by text that
-% is actually part of the data type, which should not be put into the index.
-\def\deftypevarheader #1#2{%
-\dovarind#2 \relax% Make entry in variables index
-\begingroup\defname {\defheaderxcond#1\relax$.$#2}{\putwordDeftypevar}%
- \defargscommonending
-\endgroup}
-\def\dovarind#1 #2\relax{\doind{vr}{\code{#1}}}
-
-% @deftypevr {Global Flag} int enable
-
-\def\deftypevr{\defvrparsebody\Edeftypevr\deftypevrx\deftypevrheader}
-
-\def\deftypevrheader #1#2#3{\dovarind#3 \relax%
-\begingroup\defname {\defheaderxcond#2\relax$.$#3}{#1}
- \defargscommonending
-\endgroup}
-
-% Now define @deftp
-% Args are printed in bold, a slight difference from @defvar.
-
-\def\deftpargs #1{\bf \defvarargs{#1}}
-
-% @deftp Class window height width ...
-
-\def\deftp{\deftpparsebody\Edeftp\deftpx\deftpheader}
-
-\def\deftpheader #1#2#3{\doind {tp}{\code{#2}}%
-\begingroup\defname {#2}{#1}\deftpargs{#3}\endgroup}
-
-% These definitions are used if you use @defunx (etc.)
-% anywhere other than immediately after a @defun or @defunx.
-%
-\def\defcvx#1 {\errmessage{@defcvx in invalid context}}
-\def\deffnx#1 {\errmessage{@deffnx in invalid context}}
-\def\defivarx#1 {\errmessage{@defivarx in invalid context}}
-\def\defmacx#1 {\errmessage{@defmacx in invalid context}}
-\def\defmethodx#1 {\errmessage{@defmethodx in invalid context}}
-\def\defoptx #1 {\errmessage{@defoptx in invalid context}}
-\def\defopx#1 {\errmessage{@defopx in invalid context}}
-\def\defspecx#1 {\errmessage{@defspecx in invalid context}}
-\def\deftpx#1 {\errmessage{@deftpx in invalid context}}
-\def\deftypefnx#1 {\errmessage{@deftypefnx in invalid context}}
-\def\deftypefunx#1 {\errmessage{@deftypefunx in invalid context}}
-\def\deftypeivarx#1 {\errmessage{@deftypeivarx in invalid context}}
-\def\deftypemethodx#1 {\errmessage{@deftypemethodx in invalid context}}
-\def\deftypeopx#1 {\errmessage{@deftypeopx in invalid context}}
-\def\deftypevarx#1 {\errmessage{@deftypevarx in invalid context}}
-\def\deftypevrx#1 {\errmessage{@deftypevrx in invalid context}}
-\def\defunx#1 {\errmessage{@defunx in invalid context}}
-\def\defvarx#1 {\errmessage{@defvarx in invalid context}}
-\def\defvrx#1 {\errmessage{@defvrx in invalid context}}
-
-
-\message{macros,}
-% @macro.
-
-% To do this right we need a feature of e-TeX, \scantokens,
-% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
- \newwrite\macscribble
- \def\scanmacro#1{%
- \begingroup \newlinechar`\^^M
- % Undo catcode changes of \startcontents and \doprintindex
- \catcode`\@=0 \catcode`\\=\other \escapechar=`\@
- % Append \endinput to make sure that TeX does not see the ending newline.
- \toks0={#1\endinput}%
- \immediate\openout\macscribble=\jobname.tmp
- \immediate\write\macscribble{\the\toks0}%
- \immediate\closeout\macscribble
- \let\xeatspaces\eatspaces
- \input \jobname.tmp
- \endgroup
-}
-\else
-\def\scanmacro#1{%
-\begingroup \newlinechar`\^^M
-% Undo catcode changes of \startcontents and \doprintindex
-\catcode`\@=0 \catcode`\\=\other \escapechar=`\@
-\let\xeatspaces\eatspaces\scantokens{#1\endinput}\endgroup}
-\fi
-
-\newcount\paramno % Count of parameters
-\newtoks\macname % Macro name
-\newif\ifrecursive % Is it recursive?
-\def\macrolist{} % List of all defined macros in the form
- % \do\macro1\do\macro2...
-
-% Utility routines.
-% Thisdoes \let #1 = #2, except with \csnames.
-\def\cslet#1#2{%
-\expandafter\expandafter
-\expandafter\let
-\expandafter\expandafter
-\csname#1\endcsname
-\csname#2\endcsname}
-
-% Trim leading and trailing spaces off a string.
-% Concepts from aro-bend problem 15 (see CTAN).
-{\catcode`\@=11
-\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }}
-\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@}
-\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @}
-\def\unbrace#1{#1}
-\unbrace{\gdef\trim@@@ #1 } #2@{#1}
-}
-
-% Trim a single trailing ^^M off a string.
-{\catcode`\^^M=\other \catcode`\Q=3%
-\gdef\eatcr #1{\eatcra #1Q^^MQ}%
-\gdef\eatcra#1^^MQ{\eatcrb#1Q}%
-\gdef\eatcrb#1Q#2Q{#1}%
-}
-
-% Macro bodies are absorbed as an argument in a context where
-% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
-% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
-% body, and then making it the \newlinechar in \scanmacro.
-
-\def\macrobodyctxt{%
- \catcode`\~=\other
- \catcode`\^=\other
- \catcode`\_=\other
- \catcode`\|=\other
- \catcode`\<=\other
- \catcode`\>=\other
- \catcode`\+=\other
- \catcode`\{=\other
- \catcode`\}=\other
- \catcode`\@=\other
- \catcode`\^^M=\other
- \usembodybackslash}
-
-\def\macroargctxt{%
- \catcode`\~=\other
- \catcode`\^=\other
- \catcode`\_=\other
- \catcode`\|=\other
- \catcode`\<=\other
- \catcode`\>=\other
- \catcode`\+=\other
- \catcode`\@=\other
- \catcode`\\=\other}
-
-% \mbodybackslash is the definition of \ in @macro bodies.
-% It maps \foo\ => \csname macarg.foo\endcsname => #N
-% where N is the macro parameter number.
-% We define \csname macarg.\endcsname to be \realbackslash, so
-% \\ in macro replacement text gets you a backslash.
-
-{\catcode`@=0 @catcode`@\=@active
- @gdef@usembodybackslash{@let\=@mbodybackslash}
- @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
-}
-\expandafter\def\csname macarg.\endcsname{\realbackslash}
-
-\def\macro{\recursivefalse\parsearg\macroxxx}
-\def\rmacro{\recursivetrue\parsearg\macroxxx}
-
-\def\macroxxx#1{%
- \getargs{#1}% now \macname is the macname and \argl the arglist
- \ifx\argl\empty % no arguments
- \paramno=0%
- \else
- \expandafter\parsemargdef \argl;%
- \fi
- \if1\csname ismacro.\the\macname\endcsname
- \message{Warning: redefining \the\macname}%
- \else
- \expandafter\ifx\csname \the\macname\endcsname \relax
- \else \errmessage{Macro name \the\macname\space already defined}\fi
- \global\cslet{macsave.\the\macname}{\the\macname}%
- \global\expandafter\let\csname ismacro.\the\macname\endcsname=1%
- % Add the macroname to \macrolist
- \toks0 = \expandafter{\macrolist\do}%
- \xdef\macrolist{\the\toks0
- \expandafter\noexpand\csname\the\macname\endcsname}%
- \fi
- \begingroup \macrobodyctxt
- \ifrecursive \expandafter\parsermacbody
- \else \expandafter\parsemacbody
- \fi}
-
-\def\unmacro{\parsearg\dounmacro}
-\def\dounmacro#1{%
- \if1\csname ismacro.#1\endcsname
- \global\cslet{#1}{macsave.#1}%
- \global\expandafter\let \csname ismacro.#1\endcsname=0%
- % Remove the macro name from \macrolist:
- \begingroup
- \expandafter\let\csname#1\endcsname \relax
- \let\do\unmacrodo
- \xdef\macrolist{\macrolist}%
- \endgroup
- \else
- \errmessage{Macro #1 not defined}%
- \fi
-}
-
-% Called by \do from \dounmacro on each macro. The idea is to omit any
-% macro definitions that have been changed to \relax.
-%
-\def\unmacrodo#1{%
- \ifx#1\relax
- % remove this
- \else
- \noexpand\do \noexpand #1%
- \fi
-}
-
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> is #, then the preceding argument is delimited by
-% an opening brace, and that opening brace is not consumed.
-\def\getargs#1{\getargsxxx#1{}}
-\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
-\def\getmacargs#1{\def\argl{#1}}
-
-% Parse the optional {params} list. Set up \paramno and \paramlist
-% so \defmacro knows what to do. Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
-% That gets used by \mbodybackslash (above).
-
-% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
-% unexpandable, insert that wherever you need a #, and then redefine
-% it to # just before using the token list produced.
-%
-% The same technique is used to protect \eatspaces till just before
-% the macro is used.
-
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
- \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
-\def\parsemargdefxxx#1,{%
- \if#1;\let\next=\relax
- \else \let\next=\parsemargdefxxx
- \advance\paramno by 1%
- \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
- {\xeatspaces{\hash\the\paramno}}%
- \edef\paramlist{\paramlist\hash\the\paramno,}%
- \fi\next}
-
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-
-\long\def\parsemacbody#1@end macro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-\long\def\parsermacbody#1@end rmacro%
-{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
-
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
-% Much magic with \expandafter here.
-% \xdef is used so that macro definitions will survive the file
-% they're defined in; @include reads the file inside a group.
-\def\defmacro{%
- \let\hash=##% convert placeholders to macro parameter chars
- \ifrecursive
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\scanmacro{\temp}}%
- \or % 1
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname xxx\endcsname}%
- \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
- \egroup\noexpand\scanmacro{\temp}}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\egroup\noexpand\scanmacro{\temp}}%
- \fi
- \else
- \ifcase\paramno
- % 0
- \expandafter\xdef\csname\the\macname\endcsname{%
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \or % 1
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\braceorline
- \expandafter\noexpand\csname\the\macname xxx\endcsname}%
- \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \expandafter\noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
- \fi
- \fi}
-
-\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
-
-% \braceorline decides whether the next nonwhitespace character is a
-% {. If so it reads up to the closing }, if not, it reads the whole
-% line. Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
-\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx}
-\def\braceorlinexxx{%
- \ifx\nchar\bgroup\else
- \expandafter\parsearg
- \fi \next}
-
-% We mant to disable all macros during \shipout so that they are not
-% expanded by \write.
-\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}%
- \edef\next{\macrolist}\expandafter\endgroup\next}
-
-
-% @alias.
-% We need some trickery to remove the optional spaces around the equal
-% sign. Just make them active and then expand them all to nothing.
-\def\alias{\begingroup\obeyspaces\parsearg\aliasxxx}
-\def\aliasxxx #1{\aliasyyy#1\relax}
-\def\aliasyyy #1=#2\relax{\ignoreactivespaces
-\edef\next{\global\let\expandafter\noexpand\csname#1\endcsname=%
- \expandafter\noexpand\csname#2\endcsname}%
-\expandafter\endgroup\next}
-
-
-\message{cross references,}
-% @xref etc.
-
-\newwrite\auxfile
-
-\newif\ifhavexrefs % True if xref values are known.
-\newif\ifwarnedxrefs % True if we warned once that they aren't known.
-
-% @inforef is relatively simple.
-\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
- node \samp{\ignorespaces#1{}}}
-
-% @node's job is to define \lastnode.
-\def\node{\ENVcheck\parsearg\nodezzz}
-\def\nodezzz#1{\nodexxx [#1,]}
-\def\nodexxx[#1,#2]{\gdef\lastnode{#1}}
-\let\nwnode=\node
-\let\lastnode=\relax
-
-% The sectioning commands (@chapter, etc.) call these.
-\def\donoderef{%
- \ifx\lastnode\relax\else
- \expandafter\expandafter\expandafter\setref{\lastnode}%
- {Ysectionnumberandtype}%
- \global\let\lastnode=\relax
- \fi
-}
-\def\unnumbnoderef{%
- \ifx\lastnode\relax\else
- \expandafter\expandafter\expandafter\setref{\lastnode}{Ynothing}%
- \global\let\lastnode=\relax
- \fi
-}
-\def\appendixnoderef{%
- \ifx\lastnode\relax\else
- \expandafter\expandafter\expandafter\setref{\lastnode}%
- {Yappendixletterandtype}%
- \global\let\lastnode=\relax
- \fi
-}
-
-
-% @anchor{NAME} -- define xref target at arbitrary point.
-%
-\newcount\savesfregister
-\gdef\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi}
-\gdef\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi}
-\gdef\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces}
-
-% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an
-% anchor), namely NAME-title (the corresponding @chapter/etc. name),
-% NAME-pg (the page number), and NAME-snt (section number and type).
-% Called from \foonoderef.
-%
-% We have to set \indexdummies so commands such as @code in a section
-% title aren't expanded. It would be nicer not to expand the titles in
-% the first place, but there's so many layers that that is hard to do.
-%
-% Likewise, use \turnoffactive so that punctuation chars such as underscore
-% and backslash work in node names.
-%
-\def\setref#1#2{{%
- \atdummies
- \pdfmkdest{#1}%
- %
- \turnoffactive
- \dosetq{#1-title}{Ytitle}%
- \dosetq{#1-pg}{Ypagenumber}%
- \dosetq{#1-snt}{#2}%
-}}
-
-% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
-% the node name, #2 the name of the Info cross-reference, #3 the printed
-% node name, #4 the name of the Info file, #5 the name of the printed
-% manual. All but the node name can be omitted.
-%
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
-\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
- \unsepspaces
- \def\printedmanual{\ignorespaces #5}%
- \def\printednodename{\ignorespaces #3}%
- \setbox1=\hbox{\printedmanual}%
- \setbox0=\hbox{\printednodename}%
- \ifdim \wd0 = 0pt
- % No printed node name was explicitly given.
- \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
- % Use the node name inside the square brackets.
- \def\printednodename{\ignorespaces #1}%
- \else
- % Use the actual chapter/section title appear inside
- % the square brackets. Use the real section title if we have it.
- \ifdim \wd1 > 0pt
- % It is in another manual, so we don't have it.
- \def\printednodename{\ignorespaces #1}%
- \else
- \ifhavexrefs
- % We know the real title if we have the xref values.
- \def\printednodename{\refx{#1-title}{}}%
- \else
- % Otherwise just copy the Info node name.
- \def\printednodename{\ignorespaces #1}%
- \fi%
- \fi
- \fi
- \fi
- %
- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
- % insert empty discretionaries after hyphens, which means that it will
- % not find a line break at a hyphen in a node names. Since some manuals
- % are best written with fairly long node names, containing hyphens, this
- % is a loss. Therefore, we give the text of the node name again, so it
- % is as if TeX is seeing it for the first time.
- \ifpdf
- \leavevmode
- \getfilename{#4}%
- {\turnoffactive \otherbackslash
- \ifnum\filenamelength>0
- \startlink attr{/Border [0 0 0]}%
- goto file{\the\filename.pdf} name{#1}%
- \else
- \startlink attr{/Border [0 0 0]}%
- goto name{#1}%
- \fi
- }%
- \linkcolor
- \fi
- %
- \ifdim \wd1 > 0pt
- \putwordsection{} ``\printednodename'' \putwordin{} \cite{\printedmanual}%
- \else
- % _ (for example) has to be the character _ for the purposes of the
- % control sequence corresponding to the node, but it has to expand
- % into the usual \leavevmode...\vrule stuff for purposes of
- % printing. So we \turnoffactive for the \refx-snt, back on for the
- % printing, back off for the \refx-pg.
- {\turnoffactive \otherbackslash
- % Only output a following space if the -snt ref is nonempty; for
- % @unnumbered and @anchor, it won't be.
- \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
- \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
- }%
- % [mynode],
- [\printednodename],\space
- % page 3
- \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}%
- \fi
- \endlink
-\endgroup}
-
-% \dosetq is called from \setref to do the actual \write (\iflinks).
-%
-\def\dosetq#1#2{%
- {\let\folio=0%
- \edef\next{\write\auxfile{\internalsetq{#1}{#2}}}%
- \iflinks \next \fi
- }%
-}
-
-% \internalsetq{foo}{page} expands into
-% CHARACTERS @xrdef{foo}{...expansion of \page...}
-\def\internalsetq#1#2{@xrdef{#1}{\csname #2\endcsname}}
-
-% Things to be expanded by \internalsetq.
-%
-\def\Ypagenumber{\folio}
-\def\Ytitle{\thissection}
-\def\Ynothing{}
-\def\Ysectionnumberandtype{%
- \ifnum\secno=0
- \putwordChapter@tie \the\chapno
- \else \ifnum\subsecno=0
- \putwordSection@tie \the\chapno.\the\secno
- \else \ifnum\subsubsecno=0
- \putwordSection@tie \the\chapno.\the\secno.\the\subsecno
- \else
- \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno
- \fi\fi\fi
-}
-
-\def\Yappendixletterandtype{%
- \ifnum\secno=0
- \putwordAppendix@tie @char\the\appendixno{}%
- \else \ifnum\subsecno=0
- \putwordSection@tie @char\the\appendixno.\the\secno
- \else \ifnum\subsubsecno=0
- \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno
- \else
- \putwordSection@tie
- @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno
- \fi\fi\fi
-}
-
-% Use TeX 3.0's \inputlineno to get the line number, for better error
-% messages, but if we're using an old version of TeX, don't do anything.
-%
-\ifx\inputlineno\thisisundefined
- \let\linenumber = \empty % Pre-3.0.
-\else
- \def\linenumber{\the\inputlineno:\space}
-\fi
-
-% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME.
-% If its value is nonempty, SUFFIX is output afterward.
-%
-\def\refx#1#2{%
- {%
- \indexnofonts
- \otherbackslash
- \expandafter\global\expandafter\let\expandafter\thisrefX
- \csname X#1\endcsname
- }%
- \ifx\thisrefX\relax
- % If not defined, say something at least.
- \angleleft un\-de\-fined\angleright
- \iflinks
- \ifhavexrefs
- \message{\linenumber Undefined cross reference `#1'.}%
- \else
- \ifwarnedxrefs\else
- \global\warnedxrefstrue
- \message{Cross reference values unknown; you must run TeX again.}%
- \fi
- \fi
- \fi
- \else
- % It's defined, so just use it.
- \thisrefX
- \fi
- #2% Output the suffix in any case.
-}
-
-% This is the macro invoked by entries in the aux file.
-%
-\def\xrdef#1{\expandafter\gdef\csname X#1\endcsname}
-
-% Read the last existing aux file, if any. No error if none exists.
-\def\readauxfile{\begingroup
- \catcode`\^^@=\other
- \catcode`\^^A=\other
- \catcode`\^^B=\other
- \catcode`\^^C=\other
- \catcode`\^^D=\other
- \catcode`\^^E=\other
- \catcode`\^^F=\other
- \catcode`\^^G=\other
- \catcode`\^^H=\other
- \catcode`\^^K=\other
- \catcode`\^^L=\other
- \catcode`\^^N=\other
- \catcode`\^^P=\other
- \catcode`\^^Q=\other
- \catcode`\^^R=\other
- \catcode`\^^S=\other
- \catcode`\^^T=\other
- \catcode`\^^U=\other
- \catcode`\^^V=\other
- \catcode`\^^W=\other
- \catcode`\^^X=\other
- \catcode`\^^Z=\other
- \catcode`\^^[=\other
- \catcode`\^^\=\other
- \catcode`\^^]=\other
- \catcode`\^^^=\other
- \catcode`\^^_=\other
- % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc.
- % in xref tags, i.e., node names. But since ^^e4 notation isn't
- % supported in the main text, it doesn't seem desirable. Furthermore,
- % that is not enough: for node names that actually contain a ^
- % character, we would end up writing a line like this: 'xrdef {'hat
- % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first
- % argument, and \hat is not an expandable control sequence. It could
- % all be worked out, but why? Either we support ^^ or we don't.
- %
- % The other change necessary for this was to define \auxhat:
- % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter
- % and then to call \auxhat in \setq.
- %
- \catcode`\^=\other
- %
- % Special characters. Should be turned off anyway, but...
- \catcode`\~=\other
- \catcode`\[=\other
- \catcode`\]=\other
- \catcode`\"=\other
- \catcode`\_=\other
- \catcode`\|=\other
- \catcode`\<=\other
- \catcode`\>=\other
- \catcode`\$=\other
- \catcode`\#=\other
- \catcode`\&=\other
- \catcode`\%=\other
- \catcode`+=\other % avoid \+ for paranoia even though we've turned it off
- %
- % Make the characters 128-255 be printing characters
- {%
- \count 1=128
- \def\loop{%
- \catcode\count 1=\other
- \advance\count 1 by 1
- \ifnum \count 1<256 \loop \fi
- }%
- }%
- %
- % Turn off \ as an escape so we do not lose on
- % entries which were dumped with control sequences in their names.
- % For example, @xrdef{$\leq $-fun}{page ...} made by @defun ^^
- % Reference to such entries still does not work the way one would wish,
- % but at least they do not bomb out when the aux file is read in.
- \catcode`\\=\other
- %
- % @ is our escape character in .aux files.
- \catcode`\{=1
- \catcode`\}=2
- \catcode`\@=0
- %
- \openin 1 \jobname.aux
- \ifeof 1 \else
- \closein 1
- \input \jobname.aux
- \global\havexrefstrue
- \global\warnedobstrue
- \fi
- % Open the new aux file. TeX will close it automatically at exit.
- \openout\auxfile=\jobname.aux
-\endgroup}
-
-
-% Footnotes.
-
-\newcount \footnoteno
-
-% The trailing space in the following definition for supereject is
-% vital for proper filling; pages come out unaligned when you do a
-% pagealignmacro call if that space before the closing brace is
-% removed. (Generally, numeric constants should always be followed by a
-% space to prevent strange expansion errors.)
-\def\supereject{\par\penalty -20000\footnoteno =0 }
-
-% @footnotestyle is meaningful for info output only.
-\let\footnotestyle=\comment
-
-\let\ptexfootnote=\footnote
-
-{\catcode `\@=11
-%
-% Auto-number footnotes. Otherwise like plain.
-\gdef\footnote{%
- \global\advance\footnoteno by \@ne
- \edef\thisfootno{$^{\the\footnoteno}$}%
- %
- % In case the footnote comes at the end of a sentence, preserve the
- % extra spacing after we do the footnote number.
- \let\@sf\empty
- \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
- %
- % Remove inadvertent blank space before typesetting the footnote number.
- \unskip
- \thisfootno\@sf
- \dofootnote
-}%
-
-% Don't bother with the trickery in plain.tex to not require the
-% footnote text as a parameter. Our footnotes don't need to be so general.
-%
-% Oh yes, they do; otherwise, @ifset and anything else that uses
-% \parseargline fail inside footnotes because the tokens are fixed when
-% the footnote is read. --karl, 16nov96.
-%
-% The start of the footnote looks usually like this:
-\gdef\startfootins{\insert\footins\bgroup}
-%
-% ... but this macro is redefined inside @multitable.
-%
-\gdef\dofootnote{%
- \startfootins
- % We want to typeset this text as a normal paragraph, even if the
- % footnote reference occurs in (for example) a display environment.
- % So reset some parameters.
- \hsize=\pagewidth
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\ht\strutbox % top baseline for broken footnotes
- \splitmaxdepth\dp\strutbox
- \floatingpenalty\@MM
- \leftskip\z@skip
- \rightskip\z@skip
- \spaceskip\z@skip
- \xspaceskip\z@skip
- \parindent\defaultparindent
- %
- \smallfonts \rm
- %
- % Because we use hanging indentation in footnotes, a @noindent appears
- % to exdent this text, so make it be a no-op. makeinfo does not use
- % hanging indentation so @noindent can still be needed within footnote
- % text after an @example or the like (not that this is good style).
- \let\noindent = \relax
- %
- % Hang the footnote text off the number. Use \everypar in case the
- % footnote extends for more than one paragraph.
- \everypar = {\hang}%
- \textindent{\thisfootno}%
- %
- % Don't crash into the line above the footnote text. Since this
- % expands into a box, it must come within the paragraph, lest it
- % provide a place where TeX can split the footnote.
- \footstrut
- \futurelet\next\fo@t
-}
-}%end \catcode `\@=11
-
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt}
-
-% @image. We use the macros from epsf.tex to support this.
-% If epsf.tex is not installed and @image is used, we complain.
-%
-% Check for and read epsf.tex up front. If we read it only at @image
-% time, we might be inside a group, and then its definitions would get
-% undone and the next image would fail.
-\openin 1 = epsf.tex
-\ifeof 1 \else
- \closein 1
- % Do not bother showing banner with epsf.tex v2.7k (available in
- % doc/epsf.tex and on ctan).
- \def\epsfannounce{\toks0 = }%
- \input epsf.tex
-\fi
-%
-% We will only complain once about lack of epsf.tex.
-\newif\ifwarnednoepsf
-\newhelp\noepsfhelp{epsf.tex must be installed for images to
- work. It is also included in the Texinfo distribution, or you can get
- it from ftp://tug.org/tex/epsf.tex.}
-%
-\def\image#1{%
- \ifx\epsfbox\undefined
- \ifwarnednoepsf \else
- \errhelp = \noepsfhelp
- \errmessage{epsf.tex not found, images will be ignored}%
- \global\warnednoepsftrue
- \fi
- \else
- \imagexxx #1,,,,,\finish
- \fi
-}
-%
-% Arguments to @image:
-% #1 is (mandatory) image filename; we tack on .eps extension.
-% #2 is (optional) width, #3 is (optional) height.
-% #4 is (ignored optional) html alt text.
-% #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing this stuff.
-\newif\ifimagevmode
-\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
- \catcode`\^^M = 5 % in case we're inside an example
- \normalturnoffactive % allow _ et al. in names
- % If the image is by itself, center it.
- \ifvmode
- \imagevmodetrue
- \nobreak\bigskip
- % Usually we'll have text after the image which will insert
- % \parskip glue, so insert it here too to equalize the space
- % above and below.
- \nobreak\vskip\parskip
- \nobreak
- \line\bgroup\hss
- \fi
- %
- % Output the image.
- \ifpdf
- \dopdfimage{#1}{#2}{#3}%
- \else
- % \epsfbox itself resets \epsf?size at each figure.
- \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi
- \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi
- \epsfbox{#1.eps}%
- \fi
- %
- \ifimagevmode \hss \egroup \bigbreak \fi % space after the image
-\endgroup}
-
-
-\message{localization,}
-% and i18n.
-
-% @documentlanguage is usually given very early, just after
-% @setfilename. If done too late, it may not override everything
-% properly. Single argument is the language abbreviation.
-% It would be nice if we could set up a hyphenation file here.
-%
-\def\documentlanguage{\parsearg\dodocumentlanguage}
-\def\dodocumentlanguage#1{%
- \tex % read txi-??.tex file in plain TeX.
- % Read the file if it exists.
- \openin 1 txi-#1.tex
- \ifeof1
- \errhelp = \nolanghelp
- \errmessage{Cannot read language file txi-#1.tex}%
- \let\temp = \relax
- \else
- \def\temp{\input txi-#1.tex }%
- \fi
- \temp
- \endgroup
-}
-\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty. Maybe you need to install it? In the current directory
-should work if nowhere else does.}
-
-
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
-
-
-% Page size parameters.
-%
-\newdimen\defaultparindent \defaultparindent = 15pt
-
-\chapheadingskip = 15pt plus 4pt minus 2pt
-\secheadingskip = 12pt plus 3pt minus 2pt
-\subsecheadingskip = 9pt plus 2pt minus 2pt
-
-% Prevent underfull vbox error messages.
-\vbadness = 10000
-
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
-
-% Following George Bush, just get rid of widows and orphans.
-\widowpenalty=10000
-\clubpenalty=10000
-
-% Use TeX 3.0's \emergencystretch to help line breaking, but if we're
-% using an old version of TeX, don't do anything. We want the amount of
-% stretch added to depend on the line length, hence the dependence on
-% \hsize. We call this whenever the paper size is set.
-%
-\def\setemergencystretch{%
- \ifx\emergencystretch\thisisundefined
- % Allow us to assign to \emergencystretch anyway.
- \def\emergencystretch{\dimen0}%
- \else
- \emergencystretch = .15\hsize
- \fi
-}
-
-% Parameters in order: 1) textheight; 2) textwidth; 3) voffset;
-% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8)
-% physical page width.
-%
-% We also call \setleading{\textleading}, so the caller should define
-% \textleading. The caller should also set \parskip.
-%
-\def\internalpagesizes#1#2#3#4#5#6#7#8{%
- \voffset = #3\relax
- \topskip = #6\relax
- \splittopskip = \topskip
- %
- \vsize = #1\relax
- \advance\vsize by \topskip
- \outervsize = \vsize
- \advance\outervsize by 2\topandbottommargin
- \pageheight = \vsize
- %
- \hsize = #2\relax
- \outerhsize = \hsize
- \advance\outerhsize by 0.5in
- \pagewidth = \hsize
- %
- \normaloffset = #4\relax
- \bindingoffset = #5\relax
- %
- \ifpdf
- \pdfpageheight #7\relax
- \pdfpagewidth #8\relax
- \fi
- %
- \setleading{\textleading}
- %
- \parindent = \defaultparindent
- \setemergencystretch
-}
-
-% @letterpaper (the default).
-\def\letterpaper{{\globaldefs = 1
- \parskip = 3pt plus 2pt minus 1pt
- \textleading = 13.2pt
- %
- % If page is nothing but text, make it come out even.
- \internalpagesizes{46\baselineskip}{6in}%
- {\voffset}{.25in}%
- {\bindingoffset}{36pt}%
- {11in}{8.5in}%
-}}
-
-% Use @smallbook to reset parameters for 7x9.5 (or so) format.
-\def\smallbook{{\globaldefs = 1
- \parskip = 2pt plus 1pt
- \textleading = 12pt
- %
- \internalpagesizes{7.5in}{5in}%
- {\voffset}{.25in}%
- {\bindingoffset}{16pt}%
- {9.25in}{7in}%
- %
- \lispnarrowing = 0.3in
- \tolerance = 700
- \hfuzz = 1pt
- \contentsrightmargin = 0pt
- \defbodyindent = .5cm
-}}
-
-% Use @afourpaper to print on European A4 paper.
-\def\afourpaper{{\globaldefs = 1
- \parskip = 3pt plus 2pt minus 1pt
- \textleading = 13.2pt
- %
- % Double-side printing via postscript on Laserjet 4050
- % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm.
- % To change the settings for a different printer or situation, adjust
- % \normaloffset until the front-side and back-side texts align. Then
- % do the same for \bindingoffset. You can set these for testing in
- % your texinfo source file like this:
- % @tex
- % \global\normaloffset = -6mm
- % \global\bindingoffset = 10mm
- % @end tex
- \internalpagesizes{51\baselineskip}{160mm}
- {\voffset}{\hoffset}%
- {\bindingoffset}{44pt}%
- {297mm}{210mm}%
- %
- \tolerance = 700
- \hfuzz = 1pt
- \contentsrightmargin = 0pt
- \defbodyindent = 5mm
-}}
-
-% Use @afivepaper to print on European A5 paper.
-% From romildo@urano.iceb.ufop.br, 2 July 2000.
-% He also recommends making @example and @lisp be small.
-\def\afivepaper{{\globaldefs = 1
- \parskip = 2pt plus 1pt minus 0.1pt
- \textleading = 12.5pt
- %
- \internalpagesizes{160mm}{120mm}%
- {\voffset}{\hoffset}%
- {\bindingoffset}{8pt}%
- {210mm}{148mm}%
- %
- \lispnarrowing = 0.2in
- \tolerance = 800
- \hfuzz = 1.2pt
- \contentsrightmargin = 0pt
- \defbodyindent = 2mm
- \tableindent = 12mm
-}}
-
-% A specific text layout, 24x15cm overall, intended for A4 paper.
-\def\afourlatex{{\globaldefs = 1
- \afourpaper
- \internalpagesizes{237mm}{150mm}%
- {\voffset}{4.6mm}%
- {\bindingoffset}{7mm}%
- {297mm}{210mm}%
- %
- % Must explicitly reset to 0 because we call \afourpaper.
- \globaldefs = 0
-}}
-
-% Use @afourwide to print on A4 paper in landscape format.
-\def\afourwide{{\globaldefs = 1
- \afourpaper
- \internalpagesizes{241mm}{165mm}%
- {\voffset}{-2.95mm}%
- {\bindingoffset}{7mm}%
- {297mm}{210mm}%
- \globaldefs = 0
-}}
-
-% @pagesizes TEXTHEIGHT[,TEXTWIDTH]
-% Perhaps we should allow setting the margins, \topskip, \parskip,
-% and/or leading, also. Or perhaps we should compute them somehow.
-%
-\def\pagesizes{\parsearg\pagesizesxxx}
-\def\pagesizesxxx#1{\pagesizesyyy #1,,\finish}
-\def\pagesizesyyy#1,#2,#3\finish{{%
- \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi
- \globaldefs = 1
- %
- \parskip = 3pt plus 2pt minus 1pt
- \setleading{\textleading}%
- %
- \dimen0 = #1
- \advance\dimen0 by \voffset
- %
- \dimen2 = \hsize
- \advance\dimen2 by \normaloffset
- %
- \internalpagesizes{#1}{\hsize}%
- {\voffset}{\normaloffset}%
- {\bindingoffset}{44pt}%
- {\dimen0}{\dimen2}%
-}}
-
-% Set default to letter.
-%
-\letterpaper
-
-
-\message{and turning on texinfo input format.}
-
-% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
-
-% This macro is used to make a character print one way in ttfont
-% where it can probably just be output, and another way in other fonts,
-% where something hairier probably needs to be done.
-%
-% #1 is what to print if we are indeed using \tt; #2 is what to print
-% otherwise. Since all the Computer Modern typewriter fonts have zero
-% interword stretch (and shrink), and it is reasonable to expect all
-% typewriter fonts to have this, we can check that font parameter.
-%
-\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi}
-
-% Same as above, but check for italic font. Actually this also catches
-% non-italic slanted fonts since it is impossible to distinguish them from
-% italic fonts. But since this is only used by $ and it uses \sl anyway
-% this is not a problem.
-\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
-
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
-% Most of these we simply print from the \tt font, but for some, we can
-% use math or other variants that look better in normal text.
-
-\catcode`\"=\active
-\def\activedoublequote{{\tt\char34}}
-\let"=\activedoublequote
-\catcode`\~=\active
-\def~{{\tt\char126}}
-\chardef\hat=`\^
-\catcode`\^=\active
-\def^{{\tt \hat}}
-
-\catcode`\_=\active
-\def_{\ifusingtt\normalunderscore\_}
-% Subroutine for the previous macro.
-\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
-
-\catcode`\|=\active
-\def|{{\tt\char124}}
-\chardef \less=`\<
-\catcode`\<=\active
-\def<{{\tt \less}}
-\chardef \gtr=`\>
-\catcode`\>=\active
-\def>{{\tt \gtr}}
-\catcode`\+=\active
-\def+{{\tt \char 43}}
-\catcode`\$=\active
-\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
-
-% Set up an active definition for =, but don't enable it most of the time.
-{\catcode`\==\active
-\global\def={{\tt \char 61}}}
-
-\catcode`+=\active
-\catcode`\_=\active
-
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
-\catcode`\@=0
-
-% \rawbackslashxx outputs one backslash character in current font,
-% as in \char`\\.
-\global\chardef\rawbackslashxx=`\\
-
-% \rawbackslash defines an active \ to do \rawbackslashxx.
-% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
-{\catcode`\\=\active
- @gdef@rawbackslash{@let\=@rawbackslashxx}
- @gdef@otherbackslash{@let\=@realbackslash}
-}
-
-% \realbackslash is an actual character `\' with catcode other.
-{\catcode`\\=\other @gdef@realbackslash{\}}
-
-% \normalbackslash outputs one backslash in fixed width font.
-\def\normalbackslash{{\tt\rawbackslashxx}}
-
-\catcode`\\=\active
-
-% Used sometimes to turn off (effectively) the active characters
-% even after parsing them.
-@def@turnoffactive{%
- @let"=@normaldoublequote
- @let\=@realbackslash
- @let~=@normaltilde
- @let^=@normalcaret
- @let_=@normalunderscore
- @let|=@normalverticalbar
- @let<=@normalless
- @let>=@normalgreater
- @let+=@normalplus
- @let$=@normaldollar %$ font-lock fix
-}
-
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'. (Thus, \ is not expandable when this is in
-% effect.)
-%
-@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash}
-
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
-
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
-
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\{ in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also back turn on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
-@gdef@fixbackslash{%
- @ifx\@eatinput @let\ = @normalbackslash @fi
- @catcode`+=@active
- @catcode`@_=@active
-}
-
-% Say @foo, not \foo, in error messages.
-@escapechar = `@@
-
-% These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
-
-@c Set initial fonts.
-@textfonts
-@rm
-
-
-@c Local variables:
-@c eval: (add-hook 'write-file-hooks 'time-stamp)
-@c page-delimiter: "^\\\\message"
-@c time-stamp-start: "def\\\\texinfoversion{"
-@c time-stamp-format: "%:y-%02m-%02d.%02H"
-@c time-stamp-end: "}"
-@c End:
+++ /dev/null
-/*
- *
- * Another test harness for the readline callback interface.
- *
- * Author: Bob Rossi <bob@brasko.net>
- */
-
-#if defined (HAVE_CONFIG_H)
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <errno.h>
-#include <curses.h>
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include <signal.h>
-
-#if 0 /* LINUX */
-#include <pty.h>
-#else
-#include <util.h>
-#endif
-
-#ifdef READLINE_LIBRARY
-# include "readline.h"
-#else
-# include <readline/readline.h>
-#endif
-
-/**
- * Master/Slave PTY used to keep readline off of stdin/stdout.
- */
-static int masterfd = -1;
-static int slavefd;
-
-void
-sigint (s)
- int s;
-{
- tty_reset (STDIN_FILENO);
- close (masterfd);
- close (slavefd);
- printf ("\n");
- exit (0);
-}
-
-static int
-user_input()
-{
- int size;
- const int MAX = 1024;
- char *buf = (char *)malloc(MAX+1);
-
- size = read (STDIN_FILENO, buf, MAX);
- if (size == -1)
- return -1;
-
- size = write (masterfd, buf, size);
- if (size == -1)
- return -1;
-
- return 0;
-}
-
-static int
-readline_input()
-{
- const int MAX = 1024;
- char *buf = (char *)malloc(MAX+1);
- int size;
-
- size = read (masterfd, buf, MAX);
- if (size == -1)
- {
- free( buf );
- buf = NULL;
- return -1;
- }
-
- buf[size] = 0;
-
- /* Display output from readline */
- if ( size > 0 )
- fprintf(stderr, "%s", buf);
-
- free( buf );
- buf = NULL;
- return 0;
-}
-
-static void
-rlctx_send_user_command(char *line)
-{
- /* This happens when rl_callback_read_char gets EOF */
- if ( line == NULL )
- return;
-
- if (strcmp (line, "exit") == 0) {
- tty_reset (STDIN_FILENO);
- close (masterfd);
- close (slavefd);
- printf ("\n");
- exit (0);
- }
-
- /* Don't add the enter command */
- if ( line && *line != '\0' )
- add_history(line);
-}
-
-static void
-custom_deprep_term_function ()
-{
-}
-
-static int
-init_readline (int inputfd, int outputfd)
-{
- FILE *inputFILE, *outputFILE;
-
- inputFILE = fdopen (inputfd, "r");
- if (!inputFILE)
- return -1;
-
- outputFILE = fdopen (outputfd, "w");
- if (!outputFILE)
- return -1;
-
- rl_instream = inputFILE;
- rl_outstream = outputFILE;
-
- /* Tell readline what the prompt is if it needs to put it back */
- rl_callback_handler_install("(rltest): ", rlctx_send_user_command);
-
- /* Set the terminal type to dumb so the output of readline can be
- * understood by tgdb */
- if ( rl_reset_terminal("dumb") == -1 )
- return -1;
-
- /* For some reason, readline can not deprep the terminal.
- * However, it doesn't matter because no other application is working on
- * the terminal besides readline */
- rl_deprep_term_function = custom_deprep_term_function;
-
- using_history();
- read_history(".history");
-
- return 0;
-}
-
-static int
-main_loop(void)
-{
- fd_set rset;
- int max;
-
- max = (masterfd > STDIN_FILENO) ? masterfd : STDIN_FILENO;
- max = (max > slavefd) ? max : slavefd;
-
- for (;;)
- {
- /* Reset the fd_set, and watch for input from GDB or stdin */
- FD_ZERO(&rset);
-
- FD_SET(STDIN_FILENO, &rset);
- FD_SET(slavefd, &rset);
- FD_SET(masterfd, &rset);
-
- /* Wait for input */
- if (select(max + 1, &rset, NULL, NULL, NULL) == -1)
- {
- if (errno == EINTR)
- continue;
- else
- return -1;
- }
-
- /* Input received through the pty: Handle it
- * Wrote to masterfd, slave fd has that input, alert readline to read it.
- */
- if (FD_ISSET(slavefd, &rset))
- rl_callback_read_char();
-
- /* Input received through the pty.
- * Readline read from slavefd, and it wrote to the masterfd.
- */
- if (FD_ISSET(masterfd, &rset))
- if ( readline_input() == -1 )
- return -1;
-
- /* Input received: Handle it, write to masterfd (input to readline) */
- if (FD_ISSET(STDIN_FILENO, &rset))
- if ( user_input() == -1 )
- return -1;
- }
-
- return 0;
-}
-
-/* The terminal attributes before calling tty_cbreak */
-static struct termios save_termios;
-static struct winsize size;
-static enum { RESET, TCBREAK } ttystate = RESET;
-
-/* tty_cbreak: Sets terminal to cbreak mode. Also known as noncanonical mode.
- * 1. Signal handling is still turned on, so the user can still type those.
- * 2. echo is off
- * 3. Read in one char at a time.
- *
- * fd - The file descriptor of the terminal
- *
- * Returns: 0 on sucess, -1 on error
- */
-int tty_cbreak(int fd){
- struct termios buf;
- int ttysavefd = -1;
-
- if(tcgetattr(fd, &save_termios) < 0)
- return -1;
-
- buf = save_termios;
- buf.c_lflag &= ~(ECHO | ICANON);
- buf.c_iflag &= ~(ICRNL | INLCR);
- buf.c_cc[VMIN] = 1;
- buf.c_cc[VTIME] = 0;
-
-#if defined (VLNEXT) && defined (_POSIX_VDISABLE)
- buf.c_cc[VLNEXT] = _POSIX_VDISABLE;
-#endif
-
-#if defined (VDSUSP) && defined (_POSIX_VDISABLE)
- buf.c_cc[VDSUSP] = _POSIX_VDISABLE;
-#endif
-
- if(tcsetattr(fd, TCSAFLUSH, &buf) < 0)
- return -1;
-
- ttystate = TCBREAK;
- ttysavefd = fd;
-
- /* set size */
- if(ioctl(fd, TIOCGWINSZ, (char *)&size) < 0)
- return -1;
-
-#ifdef DEBUG
- err_msg("%d rows and %d cols\n", size.ws_row, size.ws_col);
-#endif
-
- return (0);
-}
-
-/* tty_reset: Sets the terminal attributes back to their previous state.
- * PRE: tty_cbreak must have already been called.
- *
- * fd - The file descrioptor of the terminal to reset.
- *
- * Returns: 0 on success, -1 on error
- */
-int tty_reset(int fd){
- if(ttystate != TCBREAK)
- return (0);
-
- if(tcsetattr(fd, TCSAFLUSH, &save_termios) < 0)
- return (-1);
-
- ttystate = RESET;
-
- return 0;
-}
-
-int
-main()
-{
- int val;
- val = openpty (&masterfd, &slavefd, NULL, NULL, NULL);
- if (val == -1)
- return -1;
-
- val = init_readline (slavefd, slavefd);
- if (val == -1)
- return -1;
-
- val = tty_cbreak (STDIN_FILENO);
- if (val == -1)
- return -1;
-
- signal (SIGINT, sigint);
-
- val = main_loop ();
-
- tty_reset (STDIN_FILENO);
-
- if (val == -1)
- return -1;
-
- return 0;
-}
+++ /dev/null
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:244
-msgid "`alias' with no arguments or with the -p option prints the list"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:245
-msgid "of aliases in the form alias NAME=VALUE on standard output."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:246
-msgid "Otherwise, an alias is defined for each NAME whose VALUE is given."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:247
-msgid "A trailing space in VALUE causes the next word to be checked for"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:248
-msgid "alias substitution when the alias is expanded. Alias returns"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:249
-msgid "true unless a NAME is given for which no alias has been defined."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:257
-msgid ""
-"Remove NAMEs from the list of defined aliases. If the -a option is given,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:258
-msgid "then remove all alias definitions."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:266
-msgid "Bind a key sequence to a Readline function or a macro, or set"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:267
-msgid "a Readline variable. The non-option argument syntax is equivalent"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:268
-msgid "to that found in ~/.inputrc, but must be passed as a single argument:"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:269
-msgid "bind '\"\\C-x\\C-r\": re-read-init-file'."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:270
-msgid "bind accepts the following options:"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:271
-msgid ""
-" -m keymap Use `keymap' as the keymap for the duration of this"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:272
-msgid " command. Acceptable keymap names are emacs,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:273
-msgid ""
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:274
-msgid " vi-command, and vi-insert."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:275
-msgid " -l List names of functions."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:276
-msgid " -P List function names and bindings."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:277
-msgid " -p List functions and bindings in a form that can be"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:278
-msgid " reused as input."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:279
-msgid " -r keyseq Remove the binding for KEYSEQ."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:280
-msgid " -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:281
-msgid "\t\t\t\tKEYSEQ is entered."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:282
-msgid " -f filename Read key bindings from FILENAME."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:283
-msgid " -q function-name Query about which keys invoke the named function."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:284
-msgid ""
-" -u function-name Unbind all keys which are bound to the named function."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:285
-msgid " -V List variable names and values"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:286
-msgid " -v List variable names and values in a form that can"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:287
-msgid " be reused as input."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:288
-msgid ""
-" -S List key sequences that invoke macros and their values"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:289
-msgid ""
-" -s List key sequences that invoke macros and their values"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:290
-msgid " in a form that can be reused as input."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:297
-msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:298
-msgid "break N levels."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:304
-msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:305
-msgid "If N is specified, resume at the N-th enclosing loop."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:311
-msgid "Run a shell builtin. This is useful when you wish to rename a"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:312
-msgid "shell builtin to be a function, but need the functionality of the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:313
-msgid "builtin within the function itself."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:320
-msgid "Returns the context of the current subroutine call."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:321
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:325
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:390
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:392
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:401
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:404
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:408
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:445
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:487
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:491
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:498
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:509
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:513
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:552
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:555
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:559
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:562
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:630
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:637
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:692
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:713
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:718
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:722
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:745
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:835
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:919
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:921
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:943
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:946
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:948
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:950
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:952
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:954
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:957
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:966
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:968
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:973
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:976
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1019
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1024
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1028
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1032
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1034
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1047
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1062
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1226
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1231
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1305
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1309
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1313
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1316
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1319
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1331
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1335
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1339
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1342
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1354
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1362
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1365
-msgid ""
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:322
-msgid "Without EXPR, returns returns \"$line $filename\". With EXPR,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:323
-msgid "returns \"$line $subroutine $filename\"; this extra information"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:324
-msgid "can be used used to provide a stack trace."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:326
-msgid "The value of EXPR indicates how many call frames to go back before the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:327
-msgid "current one; the top frame is frame 0."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:334
-msgid "Change the current directory to DIR. The variable $HOME is the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:335
-msgid "default DIR. The variable CDPATH defines the search path for"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:336
-msgid "the directory containing DIR. Alternative directory names in CDPATH"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:337
-msgid "are separated by a colon (:). A null directory name is the same as"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:338
-msgid "the current directory, i.e. `.'. If DIR begins with a slash (/),"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:339
-msgid "then CDPATH is not used. If the directory is not found, and the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:340
-msgid "shell option `cdable_vars' is set, then try the word as a variable"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:341
-msgid "name. If that variable has a value, then cd to the value of that"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:342
-msgid "variable. The -P option says to use the physical directory structure"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:343
-msgid ""
-"instead of following symbolic links; the -L option forces symbolic links"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:344
-msgid "to be followed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:350
-msgid "Print the current working directory. With the -P option, pwd prints"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:351
-msgid "the physical directory, without any symbolic links; the -L option"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:352
-msgid "makes pwd follow symbolic links."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:358
-msgid "No effect; the command does nothing. A zero exit code is returned."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:364
-msgid "Return a successful result."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:370
-msgid "Return an unsuccessful result."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:376
-msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:377
-msgid "function called `ls', and you wish to call the command `ls', you can"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:378
-msgid "say \"command ls\". If the -p option is given, a default value is used"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:379
-msgid "for PATH that is guaranteed to find all of the standard utilities. If"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:380
-msgid "the -V or -v option is given, a string is printed describing COMMAND."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:381
-msgid "The -V option produces a more verbose description."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:387
-msgid "Declare variables and/or give them attributes. If no NAMEs are"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:388
-msgid "given, then display the values of variables instead. The -p option"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:389
-msgid "will display the attributes and values of each NAME."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:391
-msgid "The flags are:"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:393
-msgid " -a\tto make NAMEs arrays (if supported)"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:394
-msgid " -f\tto select from among function names only"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:395
-msgid ""
-" -F\tto display function names (and line number and source file name if"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:396
-msgid "\tdebugging) without definitions"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:397
-msgid " -i\tto make NAMEs have the `integer' attribute"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:398
-msgid " -r\tto make NAMEs readonly"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:399
-msgid " -t\tto make NAMEs have the `trace' attribute"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:400
-msgid " -x\tto make NAMEs export"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:402
-msgid "Variables with the integer attribute have arithmetic evaluation (see"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:403
-msgid "`let') done when the variable is assigned to."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:405
-msgid "When displaying values of variables, -f displays a function's name"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:406
-msgid "and definition. The -F option restricts the display to function"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:407
-msgid "name only."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:409
-msgid "Using `+' instead of `-' turns off the given attribute instead. When"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:410
-msgid "used in a function, makes NAMEs local, as with the `local' command."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:416
-msgid "Obsolete. See `declare'."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:422
-msgid "Create a local variable called NAME, and give it VALUE. LOCAL"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:423
-msgid "can only be used within a function; it makes the variable NAME"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:424
-msgid "have a visible scope restricted to that function and its children."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:431
-msgid "Output the ARGs. If -n is specified, the trailing newline is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:432
-msgid "suppressed. If the -e option is given, interpretation of the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:433
-msgid "following backslash-escaped characters is turned on:"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:434
-msgid "\t\\a\talert (bell)"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:435
-msgid "\t\\b\tbackspace"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:436
-msgid "\t\\c\tsuppress trailing newline"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:437
-msgid "\t\\E\tescape character"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:438
-msgid "\t\\f\tform feed"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:439
-msgid "\t\\n\tnew line"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:440
-msgid "\t\\r\tcarriage return"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:441
-msgid "\t\\t\thorizontal tab"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:442
-msgid "\t\\v\tvertical tab"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:443
-msgid "\t\\\\\tbackslash"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:444
-msgid "\t\\num\tthe character whose ASCII code is NUM (octal)."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:446
-msgid "You can explicitly turn off the interpretation of the above characters"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:447
-msgid "with the -E option."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:455
-msgid ""
-"Output the ARGs. If -n is specified, the trailing newline is suppressed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:462
-msgid "Enable and disable builtin shell commands. This allows"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:463
-msgid "you to use a disk command which has the same name as a shell"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:464
-msgid "builtin without specifying a full pathname. If -n is used, the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:465
-msgid "NAMEs become disabled; otherwise NAMEs are enabled. For example,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:466
-msgid "to use the `test' found in $PATH instead of the shell builtin"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:467
-msgid "version, type `enable -n test'. On systems supporting dynamic"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:468
-msgid "loading, the -f option may be used to load new builtins from the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:469
-msgid "shared object FILENAME. The -d option will delete a builtin"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:470
-msgid "previously loaded with -f. If no non-option names are given, or"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:471
-msgid "the -p option is supplied, a list of builtins is printed. The"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:472
-msgid "-a option means to print every builtin with an indication of whether"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:473
-msgid ""
-"or not it is enabled. The -s option restricts the output to the POSIX.2"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:474
-msgid ""
-"`special' builtins. The -n option displays a list of all disabled builtins."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:480
-msgid "Read ARGs as input to the shell and execute the resulting command(s)."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:486
-msgid "Getopts is used by shell procedures to parse positional parameters."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:488
-msgid "OPTSTRING contains the option letters to be recognized; if a letter"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:489
-msgid "is followed by a colon, the option is expected to have an argument,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:490
-msgid "which should be separated from it by white space."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:492
-msgid "Each time it is invoked, getopts will place the next option in the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:493
-msgid "shell variable $name, initializing name if it does not exist, and"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:494
-msgid "the index of the next argument to be processed into the shell"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:495
-msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:496
-msgid "a shell script is invoked. When an option requires an argument,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:497
-msgid "getopts places that argument into the shell variable OPTARG."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:499
-msgid "getopts reports errors in one of two ways. If the first character"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:500
-msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:501
-msgid "this mode, no error messages are printed. If an invalid option is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:502
-msgid "seen, getopts places the option character found into OPTARG. If a"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:503
-msgid "required argument is not found, getopts places a ':' into NAME and"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:504
-msgid "sets OPTARG to the option character found. If getopts is not in"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:505
-msgid "silent mode, and an invalid option is seen, getopts places '?' into"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:506
-msgid "NAME and unsets OPTARG. If a required argument is not found, a '?'"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:507
-msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:508
-msgid "printed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:510
-msgid "If the shell variable OPTERR has the value 0, getopts disables the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:511
-msgid "printing of error messages, even if the first character of"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:512
-msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:514
-msgid "Getopts normally parses the positional parameters ($0 - $9), but if"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:515
-msgid "more arguments are given, they are parsed instead."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:521
-msgid "Exec FILE, replacing this shell with the specified program."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:522
-msgid "If FILE is not specified, the redirections take effect in this"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:523
-msgid "shell. If the first argument is `-l', then place a dash in the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:524
-msgid "zeroth arg passed to FILE, as login does. If the `-c' option"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:525
-msgid "is supplied, FILE is executed with a null environment. The `-a'"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:526
-msgid "option means to make set argv[0] of the executed process to NAME."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:527
-msgid "If the file cannot be executed and the shell is not interactive,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:528
-msgid "then the shell exits, unless the shell option `execfail' is set."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:534
-msgid "Exit the shell with a status of N. If N is omitted, the exit status"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:535
-msgid "is that of the last command executed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:541
-msgid "Logout of a login shell."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:548
-msgid ""
-"fc is used to list or edit and re-execute commands from the history list."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:549
-msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:550
-msgid "string, which means the most recent command beginning with that"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:551
-msgid "string."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:553
-msgid ""
-" -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:554
-msgid " then vi."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:556
-msgid " -l means list lines instead of editing."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:557
-msgid " -n means no line numbers listed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:558
-msgid ""
-" -r means reverse the order of the lines (making it newest listed first)."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:560
-msgid "With the `fc -s [pat=rep ...] [command]' format, the command is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:561
-msgid "re-executed after the substitution OLD=NEW is performed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:563
-msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:564
-msgid "runs the last command beginning with `cc' and typing `r' re-executes"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:565
-msgid "the last command."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:573
-msgid "Place JOB_SPEC in the foreground, and make it the current job. If"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:574
-msgid "JOB_SPEC is not present, the shell's notion of the current job is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:575
-msgid "used."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:583
-msgid "Place JOB_SPEC in the background, as if it had been started with"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:584
-msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:585
-msgid "job is used."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:592
-msgid "For each NAME, the full pathname of the command is determined and"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:593
-msgid "remembered. If the -p option is supplied, PATHNAME is used as the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:594
-msgid "full pathname of NAME, and no path search is performed. The -r"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:595
-msgid "option causes the shell to forget all remembered locations. The -d"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:596
-msgid "option causes the shell to forget the remembered location of each NAME."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:597
-msgid "If the -t option is supplied the full pathname to which each NAME"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:598
-msgid "corresponds is printed. If multiple NAME arguments are supplied with"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:599
-msgid "-t, the NAME is printed before the hashed full pathname. The -l option"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:600
-msgid "causes output to be displayed in a format that may be reused as input."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:601
-msgid ""
-"If no arguments are given, information about remembered commands is "
-"displayed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:608
-msgid "Display helpful information about builtin commands. If PATTERN is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:609
-msgid "specified, gives detailed help on all commands matching PATTERN,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:610
-msgid "otherwise a list of the builtins is printed. The -s option"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:611
-msgid "restricts the output for each builtin command matching PATTERN to"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:612
-msgid "a short usage synopsis."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:620
-msgid "Display the history list with line numbers. Lines listed with"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:621
-msgid "with a `*' have been modified. Argument of N says to list only"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:622
-msgid "the last N lines. The `-c' option causes the history list to be"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:623
-msgid "cleared by deleting all of the entries. The `-d' option deletes"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:624
-msgid "the history entry at offset OFFSET. The `-w' option writes out the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:625
-msgid "current history to the history file; `-r' means to read the file and"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:626
-msgid "append the contents to the history list instead. `-a' means"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:627
-msgid "to append history lines from this session to the history file."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:628
-msgid "Argument `-n' means to read all history lines not already read"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:629
-msgid "from the history file and append them to the history list."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:631
-msgid "If FILENAME is given, then that is used as the history file else"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:632
-msgid "if $HISTFILE has a value, that is used, else ~/.bash_history."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:633
-msgid "If the -s option is supplied, the non-option ARGs are appended to"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:634
-msgid "the history list as a single entry. The -p option means to perform"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:635
-msgid "history expansion on each ARG and display the result, without storing"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:636
-msgid "anything in the history list."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:638
-msgid "If the $HISTTIMEFORMAT variable is set and not null, its value is used"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:639
-msgid "as a format string for strftime(3) to print the time stamp associated"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:640
-msgid ""
-"with each displayed history entry. No time stamps are printed otherwise."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:648
-msgid "Lists the active jobs. The -l option lists process id's in addition"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:649
-msgid "to the normal information; the -p option lists process id's only."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:650
-msgid "If -n is given, only processes that have changed status since the last"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:651
-msgid "notification are printed. JOBSPEC restricts output to that job. The"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:652
-msgid "-r and -s options restrict output to running and stopped jobs only,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:653
-msgid "respectively. Without options, the status of all active jobs is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:654
-msgid "printed. If -x is given, COMMAND is run after all job specifications"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:655
-msgid ""
-"that appear in ARGS have been replaced with the process ID of that job's"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:656
-msgid "process group leader."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:664
-msgid ""
-"By default, removes each JOBSPEC argument from the table of active jobs."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:665
-msgid ""
-"If the -h option is given, the job is not removed from the table, but is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:666
-msgid "marked so that SIGHUP is not sent to the job if the shell receives a"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:667
-msgid ""
-"SIGHUP. The -a option, when JOBSPEC is not supplied, means to remove all"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:668
-msgid ""
-"jobs from the job table; the -r option means to remove only running jobs."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:675
-msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:676
-msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:677
-msgid "lists the signal names; if arguments follow `-l' they are assumed to"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:678
-msgid "be signal numbers for which names should be listed. Kill is a shell"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:679
-msgid "builtin for two reasons: it allows job IDs to be used instead of"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:680
-msgid "process IDs, and, if you have reached the limit on processes that"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:681
-msgid "you can create, you don't have to start a process to kill another one."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:687
-msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:688
-msgid "is done in fixed-width integers with no check for overflow, though"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:689
-msgid "division by 0 is trapped and flagged as an error. The following"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:690
-msgid "list of operators is grouped into levels of equal-precedence operators."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:691
-msgid "The levels are listed in order of decreasing precedence."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:693
-msgid "\tid++, id--\tvariable post-increment, post-decrement"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:694
-msgid "\t++id, --id\tvariable pre-increment, pre-decrement"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:695
-msgid "\t-, +\t\tunary minus, plus"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:696
-msgid "\t!, ~\t\tlogical and bitwise negation"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:697
-msgid "\t**\t\texponentiation"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:698
-msgid "\t*, /, %\t\tmultiplication, division, remainder"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:699
-msgid "\t+, -\t\taddition, subtraction"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:700
-msgid "\t<<, >>\t\tleft and right bitwise shifts"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:701
-msgid "\t<=, >=, <, >\tcomparison"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:702
-msgid "\t==, !=\t\tequality, inequality"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:703
-msgid "\t&\t\tbitwise AND"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:704
-msgid "\t^\t\tbitwise XOR"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:705
-msgid "\t|\t\tbitwise OR"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:706
-msgid "\t&&\t\tlogical AND"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:707
-msgid "\t||\t\tlogical OR"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:708
-msgid "\texpr ? expr : expr"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:709
-msgid "\t\t\tconditional operator"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:710
-msgid "\t=, *=, /=, %=,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:711
-msgid "\t+=, -=, <<=, >>=,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:712
-msgid "\t&=, ^=, |=\tassignment"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:714
-msgid "Shell variables are allowed as operands. The name of the variable"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:715
-msgid "is replaced by its value (coerced to a fixed-width integer) within"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:716
-msgid "an expression. The variable need not have its integer attribute"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:717
-msgid "turned on to be used in an expression."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:719
-msgid "Operators are evaluated in order of precedence. Sub-expressions in"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:720
-msgid "parentheses are evaluated first and may override the precedence"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:721
-msgid "rules above."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:723
-msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:724
-msgid "otherwise."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:730
-msgid ""
-"One line is read from the standard input, or from file descriptor FD if the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:731
-msgid ""
-"-u option is supplied, and the first word is assigned to the first NAME,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:732
-msgid ""
-"the second word to the second NAME, and so on, with leftover words assigned"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:733
-msgid ""
-"to the last NAME. Only the characters found in $IFS are recognized as word"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:734
-msgid ""
-"delimiters. If no NAMEs are supplied, the line read is stored in the REPLY"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:735
-msgid "variable. If the -r option is given, this signifies `raw' input, and"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:736
-msgid "backslash escaping is disabled. The -d option causes read to continue"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:737
-msgid ""
-"until the first character of DELIM is read, rather than newline. If the -p"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:738
-msgid ""
-"option is supplied, the string PROMPT is output without a trailing newline"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:739
-msgid ""
-"before attempting to read. If -a is supplied, the words read are assigned"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:740
-msgid ""
-"to sequential indices of ARRAY, starting at zero. If -e is supplied and"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:741
-msgid ""
-"the shell is interactive, readline is used to obtain the line. If -n is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:742
-msgid "supplied with a non-zero NCHARS argument, read returns after NCHARS"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:743
-msgid "characters have been read. The -s option causes input coming from a"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:744
-msgid "terminal to not be echoed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:746
-msgid ""
-"The -t option causes read to time out and return failure if a complete line"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:747
-msgid ""
-"of input is not read within TIMEOUT seconds. If the TMOUT variable is set,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:748
-msgid ""
-"its value is the default timeout. The return code is zero, unless end-of-"
-"file"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:749
-msgid ""
-"is encountered, read times out, or an invalid file descriptor is supplied as"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:750
-msgid "the argument to -u."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:756
-msgid "Causes a function to exit with the return value specified by N. If N"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:757
-msgid "is omitted, the return status is that of the last command."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:763
-msgid " -a Mark variables which are modified or created for export."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:764
-msgid " -b Notify of job termination immediately."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:765
-msgid " -e Exit immediately if a command exits with a non-zero status."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:766
-msgid " -f Disable file name generation (globbing)."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:767
-msgid " -h Remember the location of commands as they are looked up."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:768
-msgid " -k All assignment arguments are placed in the environment for a"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:769
-msgid " command, not just those that precede the command name."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:770
-msgid " -m Job control is enabled."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:771
-msgid " -n Read commands but do not execute them."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:772
-msgid " -o option-name"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:773
-msgid " Set the variable corresponding to option-name:"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:774
-msgid " allexport same as -a"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:775
-msgid " braceexpand same as -B"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:777
-msgid " emacs use an emacs-style line editing interface"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:779
-msgid " errexit same as -e"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:780
-msgid " errtrace same as -E"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:781
-msgid " functrace same as -T"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:782
-msgid " hashall same as -h"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:784
-msgid " histexpand same as -H"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:787
-msgid " history enable command history"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:789
-msgid " ignoreeof the shell will not exit upon reading EOF"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:790
-msgid " interactive-comments"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:791
-msgid ""
-" allow comments to appear in interactive commands"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:792
-msgid " keyword same as -k"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:793
-msgid " monitor same as -m"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:794
-msgid " noclobber same as -C"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:795
-msgid " noexec same as -n"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:796
-msgid " noglob same as -f"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:797
-msgid " nolog currently accepted but ignored"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:798
-msgid " notify same as -b"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:799
-msgid " nounset same as -u"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:800
-msgid " onecmd same as -t"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:801
-msgid " physical same as -P"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:802
-msgid ""
-" pipefail the return value of a pipeline is the status of"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:803
-msgid ""
-" the last command to exit with a non-zero status,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:804
-msgid ""
-" or zero if no command exited with a non-zero status"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:805
-msgid " posix change the behavior of bash where the default"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:806
-msgid " operation differs from the 1003.2 standard to"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:807
-msgid " match the standard"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:808
-msgid " privileged same as -p"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:809
-msgid " verbose same as -v"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:811
-msgid " vi use a vi-style line editing interface"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:813
-msgid " xtrace same as -x"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:814
-msgid ""
-" -p Turned on whenever the real and effective user ids do not match."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:815
-msgid " Disables processing of the $ENV file and importing of shell"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:816
-msgid ""
-" functions. Turning this option off causes the effective uid and"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:817
-msgid " gid to be set to the real uid and gid."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:818
-msgid " -t Exit after reading and executing one command."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:819
-msgid " -u Treat unset variables as an error when substituting."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:820
-msgid " -v Print shell input lines as they are read."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:821
-msgid " -x Print commands and their arguments as they are executed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:823
-msgid " -B the shell will perform brace expansion"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:825
-msgid " -C If set, disallow existing regular files to be overwritten"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:826
-msgid " by redirection of output."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:827
-msgid " -E If set, the ERR trap is inherited by shell functions."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:829
-msgid " -H Enable ! style history substitution. This flag is on"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:830
-msgid " by default."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:832
-msgid " -P If set, do not follow symbolic links when executing commands"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:833
-msgid " such as cd which change the current directory."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:834
-msgid " -T If set, the DEBUG trap is inherited by shell functions."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:836
-msgid "Using + rather than - causes these flags to be turned off. The"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:837
-msgid "flags can also be used upon invocation of the shell. The current"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:838
-msgid "set of flags may be found in $-. The remaining n ARGs are positional"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:839
-msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:840
-msgid "ARGs are given, all shell variables are printed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:846
-msgid "For each NAME, remove the corresponding variable or function. Given"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:847
-msgid "the `-v', unset will only act on variables. Given the `-f' flag,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:848
-msgid "unset will only act on functions. With neither flag, unset first"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:849
-msgid "tries to unset a variable, and if that fails, then tries to unset a"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:850
-msgid "function. Some variables cannot be unset; also see readonly."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:856
-msgid "NAMEs are marked for automatic export to the environment of"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:857
-msgid "subsequently executed commands. If the -f option is given,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:858
-msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:859
-msgid "is given, a list of all names that are exported in this shell is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:860
-msgid "printed. An argument of `-n' says to remove the export property"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:861
-msgid "from subsequent NAMEs. An argument of `--' disables further option"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:862
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:874
-msgid "processing."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:868
-msgid "The given NAMEs are marked readonly and the values of these NAMEs may"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:869
-msgid "not be changed by subsequent assignment. If the -f option is given,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:870
-msgid "then functions corresponding to the NAMEs are so marked. If no"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:871
-msgid "arguments are given, or if `-p' is given, a list of all readonly names"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:872
-msgid "is printed. The `-a' option means to treat each NAME as"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:873
-msgid "an array variable. An argument of `--' disables further option"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:880
-msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:881
-msgid "not given, it is assumed to be 1."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:887
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:896
-msgid "Read and execute commands from FILENAME and return. The pathnames"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:888
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:897
-msgid "in $PATH are used to find the directory containing FILENAME. If any"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:889
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:898
-msgid "ARGUMENTS are supplied, they become the positional parameters when"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:890
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:899
-msgid "FILENAME is executed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:906
-msgid "Suspend the execution of this shell until it receives a SIGCONT"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:907
-msgid "signal. The `-f' if specified says not to complain about this"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:908
-msgid "being a login shell if it is; just suspend anyway."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:915
-msgid "Exits with a status of 0 (true) or 1 (false) depending on"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:916
-msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:917
-msgid "expressions are often used to examine the status of a file. There"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:918
-msgid "are string operators as well, and numeric comparison operators."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:920
-msgid "File operators:"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:922
-msgid " -a FILE True if file exists."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:923
-msgid " -b FILE True if file is block special."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:924
-msgid " -c FILE True if file is character special."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:925
-msgid " -d FILE True if file is a directory."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:926
-msgid " -e FILE True if file exists."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:927
-msgid " -f FILE True if file exists and is a regular file."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:928
-msgid " -g FILE True if file is set-group-id."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:929
-msgid " -h FILE True if file is a symbolic link."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:930
-msgid " -L FILE True if file is a symbolic link."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:931
-msgid " -k FILE True if file has its `sticky' bit set."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:932
-msgid " -p FILE True if file is a named pipe."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:933
-msgid " -r FILE True if file is readable by you."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:934
-msgid " -s FILE True if file exists and is not empty."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:935
-msgid " -S FILE True if file is a socket."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:936
-msgid " -t FD True if FD is opened on a terminal."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:937
-msgid " -u FILE True if the file is set-user-id."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:938
-msgid " -w FILE True if the file is writable by you."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:939
-msgid " -x FILE True if the file is executable by you."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:940
-msgid " -O FILE True if the file is effectively owned by you."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:941
-msgid " -G FILE True if the file is effectively owned by your group."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:942
-msgid ""
-" -N FILE True if the file has been modified since it was last read."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:944
-msgid " FILE1 -nt FILE2 True if file1 is newer than file2 (according to"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:945
-msgid " modification date)."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:947
-msgid " FILE1 -ot FILE2 True if file1 is older than file2."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:949
-msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:951
-msgid "String operators:"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:953
-msgid " -z STRING True if string is empty."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:955
-msgid " -n STRING"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:956
-msgid " STRING True if string is not empty."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:958
-msgid " STRING1 = STRING2"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:959
-msgid " True if the strings are equal."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:960
-msgid " STRING1 != STRING2"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:961
-msgid " True if the strings are not equal."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:962
-msgid " STRING1 < STRING2"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:963
-msgid ""
-" True if STRING1 sorts before STRING2 lexicographically."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:964
-msgid " STRING1 > STRING2"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:965
-msgid ""
-" True if STRING1 sorts after STRING2 lexicographically."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:967
-msgid "Other operators:"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:969
-msgid " -o OPTION True if the shell option OPTION is enabled."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:970
-msgid " ! EXPR True if expr is false."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:971
-msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:972
-msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:974
-msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:975
-msgid " -lt, -le, -gt, or -ge."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:977
-msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:978
-msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:979
-msgid "than ARG2."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:985
-msgid "This is a synonym for the \"test\" builtin, but the last"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:986
-msgid "argument must be a literal `]', to match the opening `['."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:992
-msgid "Print the accumulated user and system times for processes run from"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:993
-msgid "the shell."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:999
-msgid "The command ARG is to be read and executed when the shell receives"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1000
-msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1001
-msgid "reset to their original values. If ARG is the null string each"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1002
-msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1003
-msgid "If a SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1004
-msgid "the shell. If a SIGNAL_SPEC is DEBUG, ARG is executed after every"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1005
-msgid "command. If ARG is `-p' then the trap commands associated with"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1006
-msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1007
-msgid "only `-p' is given, trap prints the list of commands associated with"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1008
-msgid ""
-"each signal number. Each SIGNAL_SPEC is either a signal name in <signal.h>"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1009
-msgid "or a signal number. `trap -l' prints a list of signal names and their"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1010
-msgid "corresponding numbers. Note that a signal can be sent to the shell"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1011
-msgid "with \"kill -signal $$\"."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1017
-msgid "For each NAME, indicate how it would be interpreted if used as a"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1018
-msgid "command name."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1020
-msgid "If the -t option is used, `type' outputs a single word which is one of"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1021
-msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1022
-msgid "alias, shell reserved word, shell function, shell builtin, disk file,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1023
-msgid "or unfound, respectively."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1025
-msgid "If the -p flag is used, `type' either returns the name of the disk"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1026
-msgid "file that would be executed, or nothing if `type -t NAME' would not"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1027
-msgid "return `file'."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1029
-msgid "If the -a flag is used, `type' displays all of the places that contain"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1030
-msgid "an executable named `file'. This includes aliases, builtins, and"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1031
-msgid "functions, if and only if the -p flag is not also used."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1033
-msgid "The -f flag suppresses shell function lookup."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1035
-msgid "The -P flag forces a PATH search for each NAME, even if it is an alias,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1036
-msgid "builtin, or function, and returns the name of the disk file that would"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1037
-msgid "be executed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1044
-msgid "Ulimit provides control over the resources available to processes"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1045
-msgid "started by the shell, on systems that allow such control. If an"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1046
-msgid "option is given, it is interpreted as follows:"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1048
-msgid " -S\tuse the `soft' resource limit"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1049
-msgid " -H\tuse the `hard' resource limit"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1050
-msgid " -a\tall current limits are reported"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1051
-msgid " -c\tthe maximum size of core files created"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1052
-msgid " -d\tthe maximum size of a process's data segment"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1053
-msgid " -f\tthe maximum size of files created by the shell"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1054
-msgid " -l\tthe maximum size a process may lock into memory"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1055
-msgid " -m\tthe maximum resident set size"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1056
-msgid " -n\tthe maximum number of open file descriptors"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1057
-msgid " -p\tthe pipe buffer size"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1058
-msgid " -s\tthe maximum stack size"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1059
-msgid " -t\tthe maximum amount of cpu time in seconds"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1060
-msgid " -u\tthe maximum number of user processes"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1061
-msgid " -v\tthe size of virtual memory"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1063
-msgid "If LIMIT is given, it is the new value of the specified resource;"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1064
-msgid "the special LIMIT values `soft', `hard', and `unlimited' stand for"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1065
-msgid ""
-"the current soft limit, the current hard limit, and no limit, respectively."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1066
-msgid "Otherwise, the current value of the specified resource is printed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1067
-msgid "If no option is given, then -f is assumed. Values are in 1024-byte"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1068
-msgid "increments, except for -t, which is in seconds, -p, which is in"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1069
-msgid "increments of 512 bytes, and -u, which is an unscaled number of"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1070
-msgid "processes."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1077
-msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1078
-msgid "`-S' is supplied, the current value of the mask is printed. The `-S'"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1079
-msgid "option makes the output symbolic; otherwise an octal number is output."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1080
-msgid "If `-p' is supplied, and MODE is omitted, the output is in a form"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1081
-msgid "that may be used as input. If MODE begins with a digit, it is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1082
-msgid "interpreted as an octal number, otherwise it is a symbolic mode string"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1083
-msgid "like that accepted by chmod(1)."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1090
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1102
-msgid "Wait for the specified process and report its termination status. If"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1091
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1103
-msgid "N is not given, all currently active child processes are waited for,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1092
-msgid "and the return code is zero. N may be a process ID or a job"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1093
-msgid "specification; if a job spec is given, all processes in the job's"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1094
-msgid "pipeline are waited for."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1104
-msgid "and the return code is zero. N is a process ID; if it is not given,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1105
-msgid "all child processes of the shell are waited for."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1112
-msgid "The `for' loop executes a sequence of commands for each member in a"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1113
-msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1114
-msgid "assumed. For each element in WORDS, NAME is set to that element, and"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1115
-msgid "the COMMANDS are executed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1121
-msgid "Equivalent to"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1122
-msgid "\t(( EXP1 ))"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1123
-msgid "\twhile (( EXP2 )); do"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1124
-msgid "\t\tCOMMANDS"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1125
-msgid "\t\t(( EXP3 ))"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1126
-msgid "\tdone"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1127
-msgid "EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1128
-msgid "omitted, it behaves as if it evaluates to 1."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1134
-msgid "The WORDS are expanded, generating a list of words. The"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1135
-msgid "set of expanded words is printed on the standard error, each"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1136
-msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1137
-msgid "is assumed. The PS3 prompt is then displayed and a line read"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1138
-msgid "from the standard input. If the line consists of the number"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1139
-msgid "corresponding to one of the displayed words, then NAME is set"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1140
-msgid "to that word. If the line is empty, WORDS and the prompt are"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1141
-msgid "redisplayed. If EOF is read, the command completes. Any other"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1142
-msgid "value read causes NAME to be set to null. The line read is saved"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1143
-msgid "in the variable REPLY. COMMANDS are executed after each selection"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1144
-msgid "until a break command is executed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1150
-msgid "Execute PIPELINE and print a summary of the real time, user CPU time,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1151
-msgid "and system CPU time spent executing PIPELINE when it terminates."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1152
-msgid "The return status is the return status of PIPELINE. The `-p' option"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1153
-msgid "prints the timing summary in a slightly different format. This uses"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1154
-msgid "the value of the TIMEFORMAT variable as the output format."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1160
-msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1161
-msgid "`|' is used to separate multiple patterns."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1167
-msgid ""
-"The if COMMANDS are executed. If the exit status is zero, then the then"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1168
-msgid ""
-"COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1169
-msgid ""
-"in turn, and if the exit status is zero, the corresponding then COMMANDS"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1170
-msgid ""
-"are executed and the if command completes. Otherwise, the else COMMANDS"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1171
-msgid ""
-"are executed, if present. The exit status is the exit status of the last"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1172
-msgid "command executed, or zero if no condition tested true."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1178
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1185
-msgid "Expand and execute COMMANDS as long as the final command in the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1179
-msgid "`while' COMMANDS has an exit status of zero."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1186
-msgid "`until' COMMANDS has an exit status which is not zero."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1192
-msgid "Create a simple command invoked by NAME which runs COMMANDS."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1193
-msgid "Arguments on the command line along with NAME are passed to the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1194
-msgid "function as $0 .. $n."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1200
-msgid "Run a set of commands in a group. This is one way to redirect an"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1201
-msgid "entire set of commands."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1207
-msgid "This is similar to the `fg' command. Resume a stopped or background"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1208
-msgid "job. If you specifiy DIGITS, then that job is used. If you specify"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1209
-msgid "WORD, then the job whose name begins with WORD is used. Following the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1210
-msgid "job specification with a `&' places the job in the background."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1216
-msgid "The EXPRESSION is evaluated according to the rules for arithmetic"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1217
-msgid "evaluation. Equivalent to \"let EXPRESSION\"."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1223
-msgid ""
-"Returns a status of 0 or 1 depending on the evaluation of the conditional"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1224
-msgid ""
-"expression EXPRESSION. Expressions are composed of the same primaries used"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1225
-msgid ""
-"by the `test' builtin, and may be combined using the following operators"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1227
-msgid "\t( EXPRESSION )\tReturns the value of EXPRESSION"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1228
-msgid "\t! EXPRESSION\tTrue if EXPRESSION is false; else false"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1229
-msgid "\tEXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1230
-msgid "\tEXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1232
-msgid ""
-"When the `==' and `!=' operators are used, the string to the right of the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1233
-msgid "operator is used as a pattern and pattern matching is performed. The"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1234
-msgid "&& and || operators do not evaluate EXPR2 if EXPR1 is sufficient to"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1235
-msgid "determine the expression's value."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1241
-msgid "BASH_VERSION Version information for this Bash."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1242
-msgid "CDPATH A colon separated list of directories to search"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1243
-msgid "\t\twhen the argument to `cd' is not found in the current"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1244
-msgid "\t\tdirectory."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1245
-msgid "GLOBIGNORE\tA colon-separated list of patterns describing filenames to"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1246
-msgid "\t\tbe ignored by pathname expansion."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1248
-msgid ""
-"HISTFILE The name of the file where your command history is stored."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1249
-msgid "HISTFILESIZE The maximum number of lines this file can contain."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1250
-msgid "HISTSIZE The maximum number of history lines that a running"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1251
-msgid "\t\tshell can access."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1253
-msgid "HOME The complete pathname to your login directory."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1254
-msgid "HOSTNAME\tThe name of the current host."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1255
-msgid "HOSTTYPE The type of CPU this version of Bash is running under."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1256
-msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1257
-msgid "\t\tcharacter as the sole input. If set, then the value"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1258
-msgid "\t\tof it is the number of EOF characters that can be seen"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1259
-msgid "\t\tin a row on an empty line before the shell will exit"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1260
-msgid "\t\t(default 10). When unset, EOF signifies the end of input."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1261
-msgid "MACHTYPE\tA string describing the current system Bash is running on."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1262
-msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1263
-msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1264
-msgid "\t\tfor new mail."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1265
-msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1266
-msgid "PATH A colon-separated list of directories to search when"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1267
-msgid "\t\tlooking for commands."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1268
-msgid "PROMPT_COMMAND A command to be executed before the printing of each"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1269
-msgid "\t\tprimary prompt."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1270
-msgid "PS1 The primary prompt string."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1271
-msgid "PS2 The secondary prompt string."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1272
-msgid "PWD\t\tThe full pathname of the current directory."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1273
-msgid "SHELLOPTS\tA colon-separated list of enabled shell options."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1274
-msgid "TERM The name of the current terminal type."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1275
-msgid "TIMEFORMAT\tThe output format for timing statistics displayed by the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1276
-msgid "\t\t`time' reserved word."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1277
-msgid "auto_resume Non-null means a command word appearing on a line by"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1278
-msgid "\t\titself is first looked for in the list of currently"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1279
-msgid "\t\tstopped jobs. If found there, that job is foregrounded."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1280
-msgid "\t\tA value of `exact' means that the command word must"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1281
-msgid "\t\texactly match a command in the list of stopped jobs. A"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1282
-msgid "\t\tvalue of `substring' means that the command word must"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1283
-msgid "\t\tmatch a substring of the job. Any other value means that"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1284
-msgid "\t\tthe command must be a prefix of a stopped job."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1287
-msgid "histchars Characters controlling history expansion and quick"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1288
-msgid "\t\tsubstitution. The first character is the history"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1289
-msgid "\t\tsubstitution character, usually `!'. The second is"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1290
-msgid "\t\tthe `quick substitution' character, usually `^'. The"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1291
-msgid "\t\tthird is the `history comment' character, usually `#'."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1293
-msgid "HISTIGNORE\tA colon-separated list of patterns used to decide which"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1294
-msgid "\t\tcommands should be saved on the history list."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1302
-msgid "Adds a directory to the top of the directory stack, or rotates"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1303
-msgid "the stack, making the new top of the stack the current working"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1304
-msgid "directory. With no arguments, exchanges the top two directories."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1306
-msgid "+N\tRotates the stack so that the Nth directory (counting"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1307
-msgid "\tfrom the left of the list shown by `dirs', starting with"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1308
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1312
-msgid "\tzero) is at the top."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1310
-msgid "-N\tRotates the stack so that the Nth directory (counting"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1311
-msgid "\tfrom the right of the list shown by `dirs', starting with"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1314
-msgid "-n\tsuppress the normal change of directory when adding directories"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1315
-msgid "\tto the stack, so only the stack is manipulated."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1317
-msgid "dir\tadds DIR to the directory stack at the top, making it the"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1318
-msgid "\tnew current working directory."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1320
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1343
-msgid "You can see the directory stack with the `dirs' command."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1328
-msgid "Removes entries from the directory stack. With no arguments,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1329
-msgid "removes the top directory from the stack, and cd's to the new"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1330
-msgid "top directory."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1332
-msgid "+N\tremoves the Nth entry counting from the left of the list"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1333
-msgid "\tshown by `dirs', starting with zero. For example: `popd +0'"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1334
-msgid "\tremoves the first directory, `popd +1' the second."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1336
-msgid "-N\tremoves the Nth entry counting from the right of the list"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1337
-msgid "\tshown by `dirs', starting with zero. For example: `popd -0'"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1338
-msgid "\tremoves the last directory, `popd -1' the next to last."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1340
-msgid "-n\tsuppress the normal change of directory when removing directories"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1341
-msgid "\tfrom the stack, so only the stack is manipulated."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1351
-msgid "Display the list of currently remembered directories. Directories"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1352
-msgid "find their way onto the list with the `pushd' command; you can get"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1353
-msgid "back up through the list with the `popd' command."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1355
-msgid "The -l flag specifies that `dirs' should not print shorthand versions"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1356
-msgid "of directories which are relative to your home directory. This means"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1357
-msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1358
-msgid "causes `dirs' to print the directory stack with one entry per line,"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1359
-msgid "prepending the directory name with its position in the stack. The -p"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1360
-msgid "flag does the same thing, but the stack position is not prepended."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1361
-msgid "The -c flag clears the directory stack by deleting all of the elements."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1363
-msgid "+N\tdisplays the Nth entry counting from the left of the list shown by"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1364
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1367
-msgid "\tdirs when invoked without options, starting with zero."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1366
-msgid "-N\tdisplays the Nth entry counting from the right of the list shown by"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1374
-msgid "Toggle the values of variables controlling optional behavior."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1375
-msgid "The -s flag means to enable (set) each OPTNAME; the -u flag"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1376
-msgid "unsets each OPTNAME. The -q flag suppresses output; the exit"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1377
-msgid "status indicates whether each OPTNAME is set or unset. The -o"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1378
-msgid "option restricts the OPTNAMEs to those defined for use with"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1379
-msgid "`set -o'. With no options, or with the -p option, a list of all"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1380
-msgid "settable options is displayed, with an indication of whether or"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1381
-msgid "not each is set."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1387
-msgid "printf formats and prints ARGUMENTS under control of the FORMAT. FORMAT"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1388
-msgid "is a character string which contains three types of objects: plain"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1389
-msgid ""
-"characters, which are simply copied to standard output, character escape"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1390
-msgid "sequences which are converted and copied to the standard output, and"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1391
-msgid ""
-"format specifications, each of which causes printing of the next successive"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1392
-msgid "argument. In addition to the standard printf(1) formats, %b means to"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1393
-msgid "expand backslash escape sequences in the corresponding argument, and %q"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1394
-msgid "means to quote the argument in a way that can be reused as shell input."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1401
-msgid "For each NAME, specify how arguments are to be completed."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1402
-msgid "If the -p option is supplied, or if no options are supplied, existing"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1403
-msgid "completion specifications are printed in a way that allows them to be"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1404
-msgid "reused as input. The -r option removes a completion specification for"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1405
-msgid "each NAME, or, if no NAMEs are supplied, all completion specifications."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1413
-msgid "Display the possible completions depending on the options. Intended"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1414
-msgid ""
-"to be used from within a shell function generating possible completions."
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1415
-msgid "If the optional WORD argument is supplied, matches against WORD are"
-msgstr ""
-
-#: /usr/local/build/bash/bash-20031218/builtins/builtins.c:1416
-msgid "generated."
-msgstr ""
+++ /dev/null
-# English translations for GNU bash package.
-# Copyright (C) 2011 Free Software Foundation, Inc.
-# This file is distributed under the same license as the GNU bash package.
-# Automatically generated, 2011.
-#
-# All this catalog "translates" are quotation characters.
-# The msgids must be ASCII and therefore cannot contain real quotation
-# characters, only substitutes like grave accent (0x60), apostrophe (0x27)
-# and double quote (0x22). These substitutes look strange; see
-# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html
-#
-# This catalog translates grave accent (0x60) and apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019).
-# It also translates pairs of apostrophe (0x27) to
-# left single quotation mark (U+2018) and right single quotation mark (U+2019)
-# and pairs of quotation mark (0x22) to
-# left double quotation mark (U+201C) and right double quotation mark (U+201D).
-#
-# When output to an UTF-8 terminal, the quotation characters appear perfectly.
-# When output to an ISO-8859-1 terminal, the single quotation marks are
-# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to
-# grave/acute accent (by libiconv), and the double quotation marks are
-# transliterated to 0x22.
-# When output to an ASCII terminal, the single quotation marks are
-# transliterated to apostrophes, and the double quotation marks are
-# transliterated to 0x22.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: GNU bash 4.2-release\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-05 21:31-0500\n"
-"PO-Revision-Date: 2011-01-28 22:09-0500\n"
-"Last-Translator: Automatically generated\n"
-"Language-Team: none\n"
-"Language: \n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: arrayfunc.c:51
-msgid "bad array subscript"
-msgstr "bad array subscript"
-
-#: arrayfunc.c:330 builtins/declare.def:487
-#, c-format
-msgid "%s: cannot convert indexed to associative array"
-msgstr "%s: cannot convert indexed to associative array"
-
-#: arrayfunc.c:513
-#, c-format
-msgid "%s: invalid associative array key"
-msgstr "%s: invalid associative array key"
-
-#: arrayfunc.c:515
-#, c-format
-msgid "%s: cannot assign to non-numeric index"
-msgstr "%s: cannot assign to non-numeric index"
-
-#: arrayfunc.c:557
-#, c-format
-msgid "%s: %s: must use subscript when assigning associative array"
-msgstr "%s: %s: must use subscript when assigning associative array"
-
-#: bashhist.c:388
-#, c-format
-msgid "%s: cannot create: %s"
-msgstr "%s: cannot create: %s"
-
-#: bashline.c:3841
-msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr "bash_execute_unix_command: cannot find keymap for command"
-
-#: bashline.c:3928
-#, c-format
-msgid "%s: first non-whitespace character is not `\"'"
-msgstr "%s: first non-whitespace character is not ‘\"’"
-
-#: bashline.c:3957
-#, c-format
-msgid "no closing `%c' in %s"
-msgstr "no closing ‘%c’ in %s"
-
-#: bashline.c:3991
-#, c-format
-msgid "%s: missing colon separator"
-msgstr "%s: missing colon separator"
-
-#: builtins/alias.def:132
-#, c-format
-msgid "`%s': invalid alias name"
-msgstr "‘%s’: invalid alias name"
-
-#: builtins/bind.def:123 builtins/bind.def:126
-msgid "line editing not enabled"
-msgstr "line editing not enabled"
-
-#: builtins/bind.def:212
-#, c-format
-msgid "`%s': invalid keymap name"
-msgstr "‘%s’: invalid keymap name"
-
-#: builtins/bind.def:251
-#, c-format
-msgid "%s: cannot read: %s"
-msgstr "%s: cannot read: %s"
-
-#: builtins/bind.def:266
-#, c-format
-msgid "`%s': cannot unbind"
-msgstr "‘%s’: cannot unbind"
-
-#: builtins/bind.def:304 builtins/bind.def:334
-#, c-format
-msgid "`%s': unknown function name"
-msgstr "‘%s’: unknown function name"
-
-#: builtins/bind.def:312
-#, c-format
-msgid "%s is not bound to any keys.\n"
-msgstr "%s is not bound to any keys.\n"
-
-#: builtins/bind.def:316
-#, c-format
-msgid "%s can be invoked via "
-msgstr "%s can be invoked via "
-
-#: builtins/break.def:77 builtins/break.def:117
-msgid "loop count"
-msgstr "loop count"
-
-#: builtins/break.def:137
-msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop"
-
-#: builtins/caller.def:133
-msgid ""
-"Returns the context of the current subroutine call.\n"
-" \n"
-" Without EXPR, returns "
-msgstr ""
-"Returns the context of the current subroutine call.\n"
-" \n"
-" Without EXPR, returns "
-
-#: builtins/cd.def:239
-msgid "HOME not set"
-msgstr "HOME not set"
-
-#: builtins/cd.def:247 builtins/common.c:166 test.c:832
-msgid "too many arguments"
-msgstr "too many arguments"
-
-#: builtins/cd.def:258
-msgid "OLDPWD not set"
-msgstr "OLDPWD not set"
-
-#: builtins/common.c:101
-#, c-format
-msgid "line %d: "
-msgstr "line %d: "
-
-#: builtins/common.c:139 error.c:265
-#, c-format
-msgid "warning: "
-msgstr "warning: "
-
-#: builtins/common.c:153
-#, c-format
-msgid "%s: usage: "
-msgstr "%s: usage: "
-
-#: builtins/common.c:191 shell.c:504 shell.c:786
-#, c-format
-msgid "%s: option requires an argument"
-msgstr "%s: option requires an argument"
-
-#: builtins/common.c:198
-#, c-format
-msgid "%s: numeric argument required"
-msgstr "%s: numeric argument required"
-
-#: builtins/common.c:205
-#, c-format
-msgid "%s: not found"
-msgstr "%s: not found"
-
-#: builtins/common.c:214 shell.c:799
-#, c-format
-msgid "%s: invalid option"
-msgstr "%s: invalid option"
-
-#: builtins/common.c:221
-#, c-format
-msgid "%s: invalid option name"
-msgstr "%s: invalid option name"
-
-#: builtins/common.c:228 general.c:234 general.c:239
-#, c-format
-msgid "`%s': not a valid identifier"
-msgstr "‘%s’: not a valid identifier"
-
-#: builtins/common.c:238
-msgid "invalid octal number"
-msgstr "invalid octal number"
-
-#: builtins/common.c:240
-msgid "invalid hex number"
-msgstr "invalid hex number"
-
-#: builtins/common.c:242 expr.c:1431
-msgid "invalid number"
-msgstr "invalid number"
-
-#: builtins/common.c:250
-#, c-format
-msgid "%s: invalid signal specification"
-msgstr "%s: invalid signal specification"
-
-#: builtins/common.c:257
-#, c-format
-msgid "`%s': not a pid or valid job spec"
-msgstr "‘%s’: not a pid or valid job spec"
-
-#: builtins/common.c:264 error.c:458
-#, c-format
-msgid "%s: readonly variable"
-msgstr "%s: readonly variable"
-
-#: builtins/common.c:272
-#, c-format
-msgid "%s: %s out of range"
-msgstr "%s: %s out of range"
-
-#: builtins/common.c:272 builtins/common.c:274
-msgid "argument"
-msgstr "argument"
-
-#: builtins/common.c:274
-#, c-format
-msgid "%s out of range"
-msgstr "%s out of range"
-
-#: builtins/common.c:282
-#, c-format
-msgid "%s: no such job"
-msgstr "%s: no such job"
-
-#: builtins/common.c:290
-#, c-format
-msgid "%s: no job control"
-msgstr "%s: no job control"
-
-#: builtins/common.c:292
-msgid "no job control"
-msgstr "no job control"
-
-#: builtins/common.c:302
-#, c-format
-msgid "%s: restricted"
-msgstr "%s: restricted"
-
-#: builtins/common.c:304
-msgid "restricted"
-msgstr "restricted"
-
-#: builtins/common.c:312
-#, c-format
-msgid "%s: not a shell builtin"
-msgstr "%s: not a shell builtin"
-
-#: builtins/common.c:321
-#, c-format
-msgid "write error: %s"
-msgstr "write error: %s"
-
-#: builtins/common.c:329
-#, c-format
-msgid "error setting terminal attributes: %s"
-msgstr "error setting terminal attributes: %s"
-
-#: builtins/common.c:331
-#, c-format
-msgid "error getting terminal attributes: %s"
-msgstr "error getting terminal attributes: %s"
-
-#: builtins/common.c:563
-#, c-format
-msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr "%s: error retrieving current directory: %s: %s\n"
-
-#: builtins/common.c:629 builtins/common.c:631
-#, c-format
-msgid "%s: ambiguous job spec"
-msgstr "%s: ambiguous job spec"
-
-#: builtins/complete.def:277
-#, c-format
-msgid "%s: invalid action name"
-msgstr "%s: invalid action name"
-
-#: builtins/complete.def:450 builtins/complete.def:645
-#: builtins/complete.def:855
-#, c-format
-msgid "%s: no completion specification"
-msgstr "%s: no completion specification"
-
-#: builtins/complete.def:697
-msgid "warning: -F option may not work as you expect"
-msgstr "warning: -F option may not work as you expect"
-
-#: builtins/complete.def:699
-msgid "warning: -C option may not work as you expect"
-msgstr "warning: -C option may not work as you expect"
-
-#: builtins/complete.def:828
-msgid "not currently executing completion function"
-msgstr "not currently executing completion function"
-
-#: builtins/declare.def:124
-msgid "can only be used in a function"
-msgstr "can only be used in a function"
-
-#: builtins/declare.def:366
-msgid "cannot use `-f' to make functions"
-msgstr "cannot use ‘-f’ to make functions"
-
-#: builtins/declare.def:378 execute_cmd.c:5253
-#, c-format
-msgid "%s: readonly function"
-msgstr "%s: readonly function"
-
-#: builtins/declare.def:474
-#, c-format
-msgid "%s: cannot destroy array variables in this way"
-msgstr "%s: cannot destroy array variables in this way"
-
-#: builtins/declare.def:481 builtins/read.def:702
-#, c-format
-msgid "%s: cannot convert associative to indexed array"
-msgstr "%s: cannot convert associative to indexed array"
-
-#: builtins/enable.def:137 builtins/enable.def:145
-msgid "dynamic loading not available"
-msgstr "dynamic loading not available"
-
-#: builtins/enable.def:312
-#, c-format
-msgid "cannot open shared object %s: %s"
-msgstr "cannot open shared object %s: %s"
-
-#: builtins/enable.def:335
-#, c-format
-msgid "cannot find %s in shared object %s: %s"
-msgstr "cannot find %s in shared object %s: %s"
-
-#: builtins/enable.def:459
-#, c-format
-msgid "%s: not dynamically loaded"
-msgstr "%s: not dynamically loaded"
-
-#: builtins/enable.def:474
-#, c-format
-msgid "%s: cannot delete: %s"
-msgstr "%s: cannot delete: %s"
-
-#: builtins/evalfile.c:135 builtins/hash.def:171 execute_cmd.c:5100
-#: shell.c:1461
-#, c-format
-msgid "%s: is a directory"
-msgstr "%s: is a directory"
-
-#: builtins/evalfile.c:140
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: not a regular file"
-
-#: builtins/evalfile.c:148
-#, c-format
-msgid "%s: file is too large"
-msgstr "%s: file is too large"
-
-#: builtins/evalfile.c:182 builtins/evalfile.c:200 shell.c:1471
-#, c-format
-msgid "%s: cannot execute binary file"
-msgstr "%s: cannot execute binary file"
-
-#: builtins/exec.def:154 builtins/exec.def:156 builtins/exec.def:228
-#, c-format
-msgid "%s: cannot execute: %s"
-msgstr "%s: cannot execute: %s"
-
-#: builtins/exit.def:65
-#, c-format
-msgid "logout\n"
-msgstr "logout\n"
-
-#: builtins/exit.def:88
-msgid "not login shell: use `exit'"
-msgstr "not login shell: use ‘exit’"
-
-#: builtins/exit.def:120
-#, c-format
-msgid "There are stopped jobs.\n"
-msgstr "There are stopped jobs.\n"
-
-#: builtins/exit.def:122
-#, c-format
-msgid "There are running jobs.\n"
-msgstr "There are running jobs.\n"
-
-#: builtins/fc.def:262
-msgid "no command found"
-msgstr "no command found"
-
-#: builtins/fc.def:312 builtins/fc.def:359
-msgid "history specification"
-msgstr "history specification"
-
-#: builtins/fc.def:380
-#, c-format
-msgid "%s: cannot open temp file: %s"
-msgstr "%s: cannot open temp file: %s"
-
-#: builtins/fg_bg.def:149 builtins/jobs.def:282
-msgid "current"
-msgstr "current"
-
-#: builtins/fg_bg.def:158
-#, c-format
-msgid "job %d started without job control"
-msgstr "job %d started without job control"
-
-#: builtins/getopt.c:110
-#, c-format
-msgid "%s: illegal option -- %c\n"
-msgstr "%s: illegal option -- %c\n"
-
-#: builtins/getopt.c:111
-#, c-format
-msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: option requires an argument -- %c\n"
-
-#: builtins/hash.def:92
-msgid "hashing disabled"
-msgstr "hashing disabled"
-
-#: builtins/hash.def:138
-#, c-format
-msgid "%s: hash table empty\n"
-msgstr "%s: hash table empty\n"
-
-#: builtins/hash.def:245
-#, c-format
-msgid "hits\tcommand\n"
-msgstr "hits\tcommand\n"
-
-#: builtins/help.def:130
-#, c-format
-msgid "Shell commands matching keyword `"
-msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Shell commands matching keyword `"
-msgstr[1] "Shell commands matching keywords `"
-
-#: builtins/help.def:168
-#, c-format
-msgid ""
-"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr ""
-"no help topics match ‘%s’. Try ‘help help’ or ‘man -k %s’ or ‘info %s’."
-
-#: builtins/help.def:185
-#, c-format
-msgid "%s: cannot open: %s"
-msgstr "%s: cannot open: %s"
-
-#: builtins/help.def:337
-#, c-format
-msgid ""
-"These shell commands are defined internally. Type `help' to see this list.\n"
-"Type `help name' to find out more about the function `name'.\n"
-"Use `info bash' to find out more about the shell in general.\n"
-"Use `man -k' or `info' to find out more about commands not in this list.\n"
-"\n"
-"A star (*) next to a name means that the command is disabled.\n"
-"\n"
-msgstr ""
-"These shell commands are defined internally. Type ‘help’ to see this list.\n"
-"Type ‘help name’ to find out more about the function ‘name’.\n"
-"Use ‘info bash’ to find out more about the shell in general.\n"
-"Use ‘man -k’ or ‘info’ to find out more about commands not in this list.\n"
-"\n"
-"A star (*) next to a name means that the command is disabled.\n"
-"\n"
-
-#: builtins/history.def:154
-msgid "cannot use more than one of -anrw"
-msgstr "cannot use more than one of -anrw"
-
-#: builtins/history.def:186
-msgid "history position"
-msgstr "history position"
-
-#: builtins/history.def:366
-#, c-format
-msgid "%s: history expansion failed"
-msgstr "%s: history expansion failed"
-
-#: builtins/inlib.def:71
-#, c-format
-msgid "%s: inlib failed"
-msgstr "%s: inlib failed"
-
-#: builtins/jobs.def:109
-msgid "no other options allowed with `-x'"
-msgstr "no other options allowed with ‘-x’"
-
-#: builtins/kill.def:198
-#, c-format
-msgid "%s: arguments must be process or job IDs"
-msgstr "%s: arguments must be process or job IDs"
-
-#: builtins/kill.def:261
-msgid "Unknown error"
-msgstr "Unknown error"
-
-#: builtins/let.def:95 builtins/let.def:120 expr.c:577 expr.c:592
-msgid "expression expected"
-msgstr "expression expected"
-
-#: builtins/mapfile.def:172
-#, c-format
-msgid "%s: not an indexed array"
-msgstr "%s: not an indexed array"
-
-#: builtins/mapfile.def:256 builtins/read.def:299
-#, c-format
-msgid "%s: invalid file descriptor specification"
-msgstr "%s: invalid file descriptor specification"
-
-#: builtins/mapfile.def:264 builtins/read.def:306
-#, c-format
-msgid "%d: invalid file descriptor: %s"
-msgstr "%d: invalid file descriptor: %s"
-
-#: builtins/mapfile.def:273 builtins/mapfile.def:311
-#, c-format
-msgid "%s: invalid line count"
-msgstr "%s: invalid line count"
-
-#: builtins/mapfile.def:284
-#, c-format
-msgid "%s: invalid array origin"
-msgstr "%s: invalid array origin"
-
-#: builtins/mapfile.def:301
-#, c-format
-msgid "%s: invalid callback quantum"
-msgstr "%s: invalid callback quantum"
-
-#: builtins/mapfile.def:333
-msgid "empty array variable name"
-msgstr "empty array variable name"
-
-#: builtins/mapfile.def:354
-msgid "array variable support required"
-msgstr "array variable support required"
-
-#: builtins/printf.def:397
-#, c-format
-msgid "`%s': missing format character"
-msgstr "‘%s’: missing format character"
-
-#: builtins/printf.def:451
-#, c-format
-msgid "`%c': invalid time format specification"
-msgstr "‘%c’: invalid time format specification"
-
-#: builtins/printf.def:647
-#, c-format
-msgid "`%c': invalid format character"
-msgstr "‘%c’: invalid format character"
-
-#: builtins/printf.def:673
-#, c-format
-msgid "warning: %s: %s"
-msgstr "warning: %s: %s"
-
-#: builtins/printf.def:854
-msgid "missing hex digit for \\x"
-msgstr "missing hex digit for \\x"
-
-#: builtins/printf.def:869
-#, c-format
-msgid "missing unicode digit for \\%c"
-msgstr "missing unicode digit for \\%c"
-
-#: builtins/pushd.def:195
-msgid "no other directory"
-msgstr "no other directory"
-
-#: builtins/pushd.def:462
-msgid "<no current directory>"
-msgstr "<no current directory>"
-
-#: builtins/pushd.def:506
-msgid "directory stack empty"
-msgstr "directory stack empty"
-
-#: builtins/pushd.def:508
-msgid "directory stack index"
-msgstr "directory stack index"
-
-#: builtins/pushd.def:683
-msgid ""
-"Display the list of currently remembered directories. Directories\n"
-" find their way onto the list with the `pushd' command; you can get\n"
-" back up through the list with the `popd' command.\n"
-" \n"
-" Options:\n"
-" -c\tclear the directory stack by deleting all of the elements\n"
-" -l\tdo not print tilde-prefixed versions of directories relative\n"
-" \tto your home directory\n"
-" -p\tprint the directory stack with one entry per line\n"
-" -v\tprint the directory stack with one entry per line prefixed\n"
-" \twith its position in the stack\n"
-" \n"
-" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-" \tdirs when invoked without options, starting with zero.\n"
-" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"\tdirs when invoked without options, starting with zero."
-msgstr ""
-"Display the list of currently remembered directories. Directories\n"
-" find their way onto the list with the ‘pushd’ command; you can get\n"
-" back up through the list with the ‘popd’ command.\n"
-" \n"
-" Options:\n"
-" -c\tclear the directory stack by deleting all of the elements\n"
-" -l\tdo not print tilde-prefixed versions of directories relative\n"
-" \tto your home directory\n"
-" -p\tprint the directory stack with one entry per line\n"
-" -v\tprint the directory stack with one entry per line prefixed\n"
-" \twith its position in the stack\n"
-" \n"
-" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-" \tdirs when invoked without options, starting with zero.\n"
-" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-"\tdirs when invoked without options, starting with zero."
-
-#: builtins/pushd.def:705
-msgid ""
-"Adds a directory to the top of the directory stack, or rotates\n"
-" the stack, making the new top of the stack the current working\n"
-" directory. With no arguments, exchanges the top two directories.\n"
-" \n"
-" Options:\n"
-" -n\tSuppresses the normal change of directory when adding\n"
-" \tdirectories to the stack, so only the stack is manipulated.\n"
-" \n"
-" Arguments:\n"
-" +N\tRotates the stack so that the Nth directory (counting\n"
-" \tfrom the left of the list shown by `dirs', starting with\n"
-" \tzero) is at the top.\n"
-" \n"
-" -N\tRotates the stack so that the Nth directory (counting\n"
-" \tfrom the right of the list shown by `dirs', starting with\n"
-" \tzero) is at the top.\n"
-" \n"
-" dir\tAdds DIR to the directory stack at the top, making it the\n"
-" \tnew current working directory.\n"
-" \n"
-" The `dirs' builtin displays the directory stack."
-msgstr ""
-"Adds a directory to the top of the directory stack, or rotates\n"
-" the stack, making the new top of the stack the current working\n"
-" directory. With no arguments, exchanges the top two directories.\n"
-" \n"
-" Options:\n"
-" -n\tSuppresses the normal change of directory when adding\n"
-" \tdirectories to the stack, so only the stack is manipulated.\n"
-" \n"
-" Arguments:\n"
-" +N\tRotates the stack so that the Nth directory (counting\n"
-" \tfrom the left of the list shown by ‘dirs’, starting with\n"
-" \tzero) is at the top.\n"
-" \n"
-" -N\tRotates the stack so that the Nth directory (counting\n"
-" \tfrom the right of the list shown by ‘dirs’, starting with\n"
-" \tzero) is at the top.\n"
-" \n"
-" dir\tAdds DIR to the directory stack at the top, making it the\n"
-" \tnew current working directory.\n"
-" \n"
-" The ‘dirs’ builtin displays the directory stack."
-
-#: builtins/pushd.def:730
-msgid ""
-"Removes entries from the directory stack. With no arguments, removes\n"
-" the top directory from the stack, and changes to the new top directory.\n"
-" \n"
-" Options:\n"
-" -n\tSuppresses the normal change of directory when removing\n"
-" \tdirectories from the stack, so only the stack is manipulated.\n"
-" \n"
-" Arguments:\n"
-" +N\tRemoves the Nth entry counting from the left of the list\n"
-" \tshown by `dirs', starting with zero. For example: `popd +0'\n"
-" \tremoves the first directory, `popd +1' the second.\n"
-" \n"
-" -N\tRemoves the Nth entry counting from the right of the list\n"
-" \tshown by `dirs', starting with zero. For example: `popd -0'\n"
-" \tremoves the last directory, `popd -1' the next to last.\n"
-" \n"
-" The `dirs' builtin displays the directory stack."
-msgstr ""
-"Removes entries from the directory stack. With no arguments, removes\n"
-" the top directory from the stack, and changes to the new top directory.\n"
-" \n"
-" Options:\n"
-" -n\tSuppresses the normal change of directory when removing\n"
-" \tdirectories from the stack, so only the stack is manipulated.\n"
-" \n"
-" Arguments:\n"
-" +N\tRemoves the Nth entry counting from the left of the list\n"
-" \tshown by ‘dirs’, starting with zero. For example: ‘popd +0’\n"
-" \tremoves the first directory, ‘popd +1’ the second.\n"
-" \n"
-" -N\tRemoves the Nth entry counting from the right of the list\n"
-" \tshown by ‘dirs’, starting with zero. For example: ‘popd -0’\n"
-" \tremoves the last directory, ‘popd -1’ the next to last.\n"
-" \n"
-" The ‘dirs’ builtin displays the directory stack."
-
-#: builtins/read.def:272
-#, c-format
-msgid "%s: invalid timeout specification"
-msgstr "%s: invalid timeout specification"
-
-#: builtins/read.def:644
-#, c-format
-msgid "read error: %d: %s"
-msgstr "read error: %d: %s"
-
-#: builtins/return.def:75
-msgid "can only `return' from a function or sourced script"
-msgstr "can only ‘return’ from a function or sourced script"
-
-#: builtins/set.def:771
-msgid "cannot simultaneously unset a function and a variable"
-msgstr "cannot simultaneously unset a function and a variable"
-
-#: builtins/set.def:812
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: cannot unset"
-
-#: builtins/set.def:829
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: cannot unset: readonly %s"
-
-#: builtins/set.def:841
-#, c-format
-msgid "%s: not an array variable"
-msgstr "%s: not an array variable"
-
-#: builtins/setattr.def:186
-#, c-format
-msgid "%s: not a function"
-msgstr "%s: not a function"
-
-#: builtins/shift.def:71 builtins/shift.def:77
-msgid "shift count"
-msgstr "shift count"
-
-#: builtins/shopt.def:277
-msgid "cannot set and unset shell options simultaneously"
-msgstr "cannot set and unset shell options simultaneously"
-
-#: builtins/shopt.def:342
-#, c-format
-msgid "%s: invalid shell option name"
-msgstr "%s: invalid shell option name"
-
-#: builtins/source.def:130
-msgid "filename argument required"
-msgstr "filename argument required"
-
-#: builtins/source.def:155
-#, c-format
-msgid "%s: file not found"
-msgstr "%s: file not found"
-
-#: builtins/suspend.def:101
-msgid "cannot suspend"
-msgstr "cannot suspend"
-
-#: builtins/suspend.def:111
-msgid "cannot suspend a login shell"
-msgstr "cannot suspend a login shell"
-
-#: builtins/type.def:234
-#, c-format
-msgid "%s is aliased to `%s'\n"
-msgstr "%s is aliased to ‘%s’\n"
-
-#: builtins/type.def:255
-#, c-format
-msgid "%s is a shell keyword\n"
-msgstr "%s is a shell keyword\n"
-
-#: builtins/type.def:274
-#, c-format
-msgid "%s is a function\n"
-msgstr "%s is a function\n"
-
-#: builtins/type.def:296
-#, c-format
-msgid "%s is a shell builtin\n"
-msgstr "%s is a shell builtin\n"
-
-#: builtins/type.def:317 builtins/type.def:393
-#, c-format
-msgid "%s is %s\n"
-msgstr "%s is %s\n"
-
-#: builtins/type.def:337
-#, c-format
-msgid "%s is hashed (%s)\n"
-msgstr "%s is hashed (%s)\n"
-
-#: builtins/ulimit.def:379
-#, c-format
-msgid "%s: invalid limit argument"
-msgstr "%s: invalid limit argument"
-
-#: builtins/ulimit.def:405
-#, c-format
-msgid "`%c': bad command"
-msgstr "‘%c’: bad command"
-
-#: builtins/ulimit.def:434
-#, c-format
-msgid "%s: cannot get limit: %s"
-msgstr "%s: cannot get limit: %s"
-
-#: builtins/ulimit.def:460
-msgid "limit"
-msgstr "limit"
-
-#: builtins/ulimit.def:472 builtins/ulimit.def:772
-#, c-format
-msgid "%s: cannot modify limit: %s"
-msgstr "%s: cannot modify limit: %s"
-
-#: builtins/umask.def:118
-msgid "octal number"
-msgstr "octal number"
-
-#: builtins/umask.def:231
-#, c-format
-msgid "`%c': invalid symbolic mode operator"
-msgstr "‘%c’: invalid symbolic mode operator"
-
-#: builtins/umask.def:286
-#, c-format
-msgid "`%c': invalid symbolic mode character"
-msgstr "‘%c’: invalid symbolic mode character"
-
-#: error.c:90 error.c:325 error.c:327 error.c:329
-msgid " line "
-msgstr " line "
-
-#: error.c:165
-#, c-format
-msgid "last command: %s\n"
-msgstr "last command: %s\n"
-
-#: error.c:173
-#, c-format
-msgid "Aborting..."
-msgstr "Aborting..."
-
-#: error.c:410
-msgid "unknown command error"
-msgstr "unknown command error"
-
-#: error.c:411
-msgid "bad command type"
-msgstr "bad command type"
-
-#: error.c:412
-msgid "bad connector"
-msgstr "bad connector"
-
-#: error.c:413
-msgid "bad jump"
-msgstr "bad jump"
-
-#: error.c:451
-#, c-format
-msgid "%s: unbound variable"
-msgstr "%s: unbound variable"
-
-#: eval.c:181
-#, c-format
-msgid "\atimed out waiting for input: auto-logout\n"
-msgstr "\atimed out waiting for input: auto-logout\n"
-
-#: execute_cmd.c:504
-#, c-format
-msgid "cannot redirect standard input from /dev/null: %s"
-msgstr "cannot redirect standard input from /dev/null: %s"
-
-#: execute_cmd.c:1199
-#, c-format
-msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr "TIMEFORMAT: ‘%c’: invalid format character"
-
-#: execute_cmd.c:2240
-msgid "pipe error"
-msgstr "pipe error"
-
-#: execute_cmd.c:4284
-#, c-format
-msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr ""
-
-#: execute_cmd.c:4777
-#, c-format
-msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s: restricted: cannot specify ‘/’ in command names"
-
-#: execute_cmd.c:4872
-#, c-format
-msgid "%s: command not found"
-msgstr "%s: command not found"
-
-#: execute_cmd.c:5098
-#, c-format
-msgid "%s: %s"
-msgstr "%s: %s"
-
-#: execute_cmd.c:5135
-#, c-format
-msgid "%s: %s: bad interpreter"
-msgstr "%s: %s: bad interpreter"
-
-#: execute_cmd.c:5172
-#, fuzzy, c-format
-msgid "%s: cannot execute binary file: %s"
-msgstr "%s: cannot execute binary file"
-
-#: execute_cmd.c:5244
-#, fuzzy, c-format
-msgid "`%s': is a special builtin"
-msgstr "%s is a shell builtin\n"
-
-#: execute_cmd.c:5296
-#, c-format
-msgid "cannot duplicate fd %d to fd %d"
-msgstr "cannot duplicate fd %d to fd %d"
-
-#: expr.c:258
-msgid "expression recursion level exceeded"
-msgstr "expression recursion level exceeded"
-
-#: expr.c:282
-msgid "recursion stack underflow"
-msgstr "recursion stack underflow"
-
-#: expr.c:430
-msgid "syntax error in expression"
-msgstr "syntax error in expression"
-
-#: expr.c:474
-msgid "attempted assignment to non-variable"
-msgstr "attempted assignment to non-variable"
-
-#: expr.c:493 expr.c:838
-msgid "division by 0"
-msgstr "division by 0"
-
-#: expr.c:540
-msgid "bug: bad expassign token"
-msgstr "bug: bad expassign token"
-
-#: expr.c:589
-msgid "`:' expected for conditional expression"
-msgstr "‘:’ expected for conditional expression"
-
-#: expr.c:895
-msgid "exponent less than 0"
-msgstr "exponent less than 0"
-
-#: expr.c:948
-msgid "identifier expected after pre-increment or pre-decrement"
-msgstr "identifier expected after pre-increment or pre-decrement"
-
-#: expr.c:973
-msgid "missing `)'"
-msgstr "missing ‘)’"
-
-#: expr.c:1024 expr.c:1351
-msgid "syntax error: operand expected"
-msgstr "syntax error: operand expected"
-
-#: expr.c:1353
-msgid "syntax error: invalid arithmetic operator"
-msgstr "syntax error: invalid arithmetic operator"
-
-#: expr.c:1377
-#, c-format
-msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr "%s%s%s: %s (error token is “%s”)"
-
-#: expr.c:1435
-msgid "invalid arithmetic base"
-msgstr "invalid arithmetic base"
-
-#: expr.c:1455
-msgid "value too great for base"
-msgstr "value too great for base"
-
-#: expr.c:1504
-#, c-format
-msgid "%s: expression error\n"
-msgstr "%s: expression error\n"
-
-#: general.c:61
-msgid "getcwd: cannot access parent directories"
-msgstr "getcwd: cannot access parent directories"
-
-#: input.c:99 subst.c:5094
-#, c-format
-msgid "cannot reset nodelay mode for fd %d"
-msgstr "cannot reset nodelay mode for fd %d"
-
-#: input.c:265
-#, c-format
-msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr "cannot allocate new file descriptor for bash input from fd %d"
-
-#: input.c:273
-#, c-format
-msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr "save_bash_input: buffer already exists for new fd %d"
-
-#: jobs.c:470
-msgid "start_pipeline: pgrp pipe"
-msgstr "start_pipeline: pgrp pipe"
-
-#: jobs.c:891
-#, c-format
-msgid "forked pid %d appears in running job %d"
-msgstr "forked pid %d appears in running job %d"
-
-#: jobs.c:1009
-#, c-format
-msgid "deleting stopped job %d with process group %ld"
-msgstr "deleting stopped job %d with process group %ld"
-
-#: jobs.c:1114
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: process %5ld (%s) in the_pipeline"
-
-#: jobs.c:1117
-#, c-format
-msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr "add_process: pid %5ld (%s) marked as still alive"
-
-#: jobs.c:1432
-#, c-format
-msgid "describe_pid: %ld: no such pid"
-msgstr "describe_pid: %ld: no such pid"
-
-#: jobs.c:1447
-#, c-format
-msgid "Signal %d"
-msgstr "Signal %d"
-
-#: jobs.c:1461 jobs.c:1486
-msgid "Done"
-msgstr "Done"
-
-#: jobs.c:1466 siglist.c:123
-msgid "Stopped"
-msgstr "Stopped"
-
-#: jobs.c:1470
-#, c-format
-msgid "Stopped(%s)"
-msgstr "Stopped(%s)"
-
-#: jobs.c:1474
-msgid "Running"
-msgstr "Running"
-
-#: jobs.c:1488
-#, c-format
-msgid "Done(%d)"
-msgstr "Done(%d)"
-
-#: jobs.c:1490
-#, c-format
-msgid "Exit %d"
-msgstr "Exit %d"
-
-#: jobs.c:1493
-msgid "Unknown status"
-msgstr "Unknown status"
-
-#: jobs.c:1580
-#, c-format
-msgid "(core dumped) "
-msgstr "(core dumped) "
-
-#: jobs.c:1599
-#, c-format
-msgid " (wd: %s)"
-msgstr " (wd: %s)"
-
-#: jobs.c:1807
-#, c-format
-msgid "child setpgid (%ld to %ld)"
-msgstr "child setpgid (%ld to %ld)"
-
-#: jobs.c:2135 nojobs.c:585
-#, c-format
-msgid "wait: pid %ld is not a child of this shell"
-msgstr "wait: pid %ld is not a child of this shell"
-
-#: jobs.c:2372
-#, c-format
-msgid "wait_for: No record of process %ld"
-msgstr "wait_for: No record of process %ld"
-
-#: jobs.c:2653
-#, c-format
-msgid "wait_for_job: job %d is stopped"
-msgstr "wait_for_job: job %d is stopped"
-
-#: jobs.c:2875
-#, c-format
-msgid "%s: job has terminated"
-msgstr "%s: job has terminated"
-
-#: jobs.c:2884
-#, c-format
-msgid "%s: job %d already in background"
-msgstr "%s: job %d already in background"
-
-#: jobs.c:3105
-msgid "waitchld: turning on WNOHANG to avoid indefinite block"
-msgstr "waitchld: turning on WNOHANG to avoid indefinite block"
-
-#: jobs.c:3571
-#, c-format
-msgid "%s: line %d: "
-msgstr "%s: line %d: "
-
-#: jobs.c:3585 nojobs.c:818
-#, c-format
-msgid " (core dumped)"
-msgstr " (core dumped)"
-
-#: jobs.c:3597 jobs.c:3610
-#, c-format
-msgid "(wd now: %s)\n"
-msgstr "(wd now: %s)\n"
-
-#: jobs.c:3642
-msgid "initialize_job_control: getpgrp failed"
-msgstr "initialize_job_control: getpgrp failed"
-
-#: jobs.c:3703
-msgid "initialize_job_control: line discipline"
-msgstr "initialize_job_control: line discipline"
-
-#: jobs.c:3713
-msgid "initialize_job_control: setpgid"
-msgstr "initialize_job_control: setpgid"
-
-#: jobs.c:3734 jobs.c:3743
-#, c-format
-msgid "cannot set terminal process group (%d)"
-msgstr "cannot set terminal process group (%d)"
-
-#: jobs.c:3748
-msgid "no job control in this shell"
-msgstr "no job control in this shell"
-
-#: lib/malloc/malloc.c:296
-#, c-format
-msgid "malloc: failed assertion: %s\n"
-msgstr "malloc: failed assertion: %s\n"
-
-#: lib/malloc/malloc.c:312
-#, c-format
-msgid ""
-"\r\n"
-"malloc: %s:%d: assertion botched\r\n"
-msgstr ""
-"\r\n"
-"malloc: %s:%d: assertion botched\r\n"
-
-#: lib/malloc/malloc.c:313
-msgid "unknown"
-msgstr "unknown"
-
-#: lib/malloc/malloc.c:797
-msgid "malloc: block on free list clobbered"
-msgstr "malloc: block on free list clobbered"
-
-#: lib/malloc/malloc.c:874
-msgid "free: called with already freed block argument"
-msgstr "free: called with already freed block argument"
-
-#: lib/malloc/malloc.c:877
-msgid "free: called with unallocated block argument"
-msgstr "free: called with unallocated block argument"
-
-#: lib/malloc/malloc.c:896
-msgid "free: underflow detected; mh_nbytes out of range"
-msgstr "free: underflow detected; mh_nbytes out of range"
-
-#: lib/malloc/malloc.c:902
-msgid "free: start and end chunk sizes differ"
-msgstr "free: start and end chunk sizes differ"
-
-#: lib/malloc/malloc.c:1001
-msgid "realloc: called with unallocated block argument"
-msgstr "realloc: called with unallocated block argument"
-
-#: lib/malloc/malloc.c:1016
-msgid "realloc: underflow detected; mh_nbytes out of range"
-msgstr "realloc: underflow detected; mh_nbytes out of range"
-
-#: lib/malloc/malloc.c:1022
-msgid "realloc: start and end chunk sizes differ"
-msgstr "realloc: start and end chunk sizes differ"
-
-#: lib/malloc/table.c:177
-#, c-format
-msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
-msgstr "register_alloc: alloc table is full with FIND_ALLOC?\n"
-
-#: lib/malloc/table.c:184
-#, c-format
-msgid "register_alloc: %p already in table as allocated?\n"
-msgstr "register_alloc: %p already in table as allocated?\n"
-
-#: lib/malloc/table.c:220
-#, c-format
-msgid "register_free: %p already in table as free?\n"
-msgstr "register_free: %p already in table as free?\n"
-
-#: lib/sh/fmtulong.c:102
-msgid "invalid base"
-msgstr "invalid base"
-
-#: lib/sh/netopen.c:168
-#, c-format
-msgid "%s: host unknown"
-msgstr "%s: host unknown"
-
-#: lib/sh/netopen.c:175
-#, c-format
-msgid "%s: invalid service"
-msgstr "%s: invalid service"
-
-#: lib/sh/netopen.c:306
-#, c-format
-msgid "%s: bad network path specification"
-msgstr "%s: bad network path specification"
-
-#: lib/sh/netopen.c:346
-msgid "network operations not supported"
-msgstr "network operations not supported"
-
-#: locale.c:204
-#, c-format
-msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr "setlocale: LC_ALL: cannot change locale (%s)"
-
-#: locale.c:206
-#, c-format
-msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr "setlocale: LC_ALL: cannot change locale (%s): %s"
-
-#: locale.c:263
-#, c-format
-msgid "setlocale: %s: cannot change locale (%s)"
-msgstr "setlocale: %s: cannot change locale (%s)"
-
-#: locale.c:265
-#, c-format
-msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr "setlocale: %s: cannot change locale (%s): %s"
-
-#: mailcheck.c:433
-msgid "You have mail in $_"
-msgstr "You have mail in $_"
-
-#: mailcheck.c:458
-msgid "You have new mail in $_"
-msgstr "You have new mail in $_"
-
-#: mailcheck.c:474
-#, c-format
-msgid "The mail in %s has been read\n"
-msgstr "The mail in %s has been read\n"
-
-#: make_cmd.c:323
-msgid "syntax error: arithmetic expression required"
-msgstr "syntax error: arithmetic expression required"
-
-#: make_cmd.c:325
-msgid "syntax error: `;' unexpected"
-msgstr "syntax error: ‘;’ unexpected"
-
-#: make_cmd.c:326
-#, c-format
-msgid "syntax error: `((%s))'"
-msgstr "syntax error: ‘((%s))’"
-
-#: make_cmd.c:578
-#, c-format
-msgid "make_here_document: bad instruction type %d"
-msgstr "make_here_document: bad instruction type %d"
-
-#: make_cmd.c:662
-#, c-format
-msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)"
-
-#: make_cmd.c:759
-#, c-format
-msgid "make_redirection: redirection instruction `%d' out of range"
-msgstr "make_redirection: redirection instruction ‘%d’ out of range"
-
-#: parse.y:3173 parse.y:3448
-#, c-format
-msgid "unexpected EOF while looking for matching `%c'"
-msgstr "unexpected EOF while looking for matching ‘%c’"
-
-#: parse.y:4038
-msgid "unexpected EOF while looking for `]]'"
-msgstr "unexpected EOF while looking for ‘]]’"
-
-#: parse.y:4043
-#, c-format
-msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "syntax error in conditional expression: unexpected token ‘%s’"
-
-#: parse.y:4047
-msgid "syntax error in conditional expression"
-msgstr "syntax error in conditional expression"
-
-#: parse.y:4125
-#, c-format
-msgid "unexpected token `%s', expected `)'"
-msgstr "unexpected token ‘%s’, expected ‘)’"
-
-#: parse.y:4129
-msgid "expected `)'"
-msgstr "expected ‘)’"
-
-#: parse.y:4157
-#, c-format
-msgid "unexpected argument `%s' to conditional unary operator"
-msgstr "unexpected argument ‘%s’ to conditional unary operator"
-
-#: parse.y:4161
-msgid "unexpected argument to conditional unary operator"
-msgstr "unexpected argument to conditional unary operator"
-
-#: parse.y:4207
-#, c-format
-msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "unexpected token ‘%s’, conditional binary operator expected"
-
-#: parse.y:4211
-msgid "conditional binary operator expected"
-msgstr "conditional binary operator expected"
-
-#: parse.y:4233
-#, c-format
-msgid "unexpected argument `%s' to conditional binary operator"
-msgstr "unexpected argument ‘%s’ to conditional binary operator"
-
-#: parse.y:4237
-msgid "unexpected argument to conditional binary operator"
-msgstr "unexpected argument to conditional binary operator"
-
-#: parse.y:4248
-#, c-format
-msgid "unexpected token `%c' in conditional command"
-msgstr "unexpected token ‘%c’ in conditional command"
-
-#: parse.y:4251
-#, c-format
-msgid "unexpected token `%s' in conditional command"
-msgstr "unexpected token ‘%s’ in conditional command"
-
-#: parse.y:4255
-#, c-format
-msgid "unexpected token %d in conditional command"
-msgstr "unexpected token %d in conditional command"
-
-#: parse.y:5590
-#, c-format
-msgid "syntax error near unexpected token `%s'"
-msgstr "syntax error near unexpected token ‘%s’"
-
-#: parse.y:5608
-#, c-format
-msgid "syntax error near `%s'"
-msgstr "syntax error near ‘%s’"
-
-#: parse.y:5618
-msgid "syntax error: unexpected end of file"
-msgstr "syntax error: unexpected end of file"
-
-#: parse.y:5618
-msgid "syntax error"
-msgstr "syntax error"
-
-#: parse.y:5680
-#, c-format
-msgid "Use \"%s\" to leave the shell.\n"
-msgstr "Use “%s” to leave the shell.\n"
-
-#: parse.y:5842
-msgid "unexpected EOF while looking for matching `)'"
-msgstr "unexpected EOF while looking for matching ‘)’"
-
-#: pcomplete.c:1079
-#, c-format
-msgid "completion: function `%s' not found"
-msgstr "completion: function ‘%s’ not found"
-
-#: pcomplib.c:182
-#, c-format
-msgid "progcomp_insert: %s: NULL COMPSPEC"
-msgstr "progcomp_insert: %s: NULL COMPSPEC"
-
-#: print_cmd.c:300
-#, c-format
-msgid "print_command: bad connector `%d'"
-msgstr "print_command: bad connector ‘%d’"
-
-#: print_cmd.c:373
-#, c-format
-msgid "xtrace_set: %d: invalid file descriptor"
-msgstr "xtrace_set: %d: invalid file descriptor"
-
-#: print_cmd.c:378
-msgid "xtrace_set: NULL file pointer"
-msgstr "xtrace_set: NULL file pointer"
-
-#: print_cmd.c:382
-#, c-format
-msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
-msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
-
-#: print_cmd.c:1503
-#, c-format
-msgid "cprintf: `%c': invalid format character"
-msgstr "cprintf: ‘%c’: invalid format character"
-
-#: redir.c:122
-msgid "file descriptor out of range"
-msgstr "file descriptor out of range"
-
-#: redir.c:178
-#, c-format
-msgid "%s: ambiguous redirect"
-msgstr "%s: ambiguous redirect"
-
-#: redir.c:182
-#, c-format
-msgid "%s: cannot overwrite existing file"
-msgstr "%s: cannot overwrite existing file"
-
-#: redir.c:187
-#, c-format
-msgid "%s: restricted: cannot redirect output"
-msgstr "%s: restricted: cannot redirect output"
-
-#: redir.c:192
-#, c-format
-msgid "cannot create temp file for here-document: %s"
-msgstr "cannot create temp file for here-document: %s"
-
-#: redir.c:196
-#, c-format
-msgid "%s: cannot assign fd to variable"
-msgstr "%s: cannot assign fd to variable"
-
-#: redir.c:548
-msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr "/dev/(tcp|udp)/host/port not supported without networking"
-
-#: redir.c:818 redir.c:930 redir.c:993 redir.c:1142
-msgid "redirection error: cannot duplicate fd"
-msgstr "redirection error: cannot duplicate fd"
-
-#: shell.c:337
-msgid "could not find /tmp, please create!"
-msgstr "could not find /tmp, please create!"
-
-#: shell.c:341
-msgid "/tmp must be a valid directory name"
-msgstr "/tmp must be a valid directory name"
-
-#: shell.c:888
-#, c-format
-msgid "%c%c: invalid option"
-msgstr "%c%c: invalid option"
-
-#: shell.c:1662
-msgid "I have no name!"
-msgstr "I have no name!"
-
-#: shell.c:1807
-#, c-format
-msgid "GNU bash, version %s-(%s)\n"
-msgstr "GNU bash, version %s-(%s)\n"
-
-#: shell.c:1808
-#, c-format
-msgid ""
-"Usage:\t%s [GNU long option] [option] ...\n"
-"\t%s [GNU long option] [option] script-file ...\n"
-msgstr ""
-"Usage:\t%s [GNU long option] [option] ...\n"
-"\t%s [GNU long option] [option] script-file ...\n"
-
-#: shell.c:1810
-msgid "GNU long options:\n"
-msgstr "GNU long options:\n"
-
-#: shell.c:1814
-msgid "Shell options:\n"
-msgstr "Shell options:\n"
-
-#: shell.c:1815
-msgid "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
-msgstr "\t-irsD or -c command or -O shopt_option\t\t(invocation only)\n"
-
-#: shell.c:1830
-#, c-format
-msgid "\t-%s or -o option\n"
-msgstr "\t-%s or -o option\n"
-
-#: shell.c:1836
-#, c-format
-msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
-msgstr "Type ‘%s -c “help set”’ for more information about shell options.\n"
-
-#: shell.c:1837
-#, c-format
-msgid "Type `%s -c help' for more information about shell builtin commands.\n"
-msgstr "Type ‘%s -c help’ for more information about shell builtin commands.\n"
-
-#: shell.c:1838
-#, c-format
-msgid "Use the `bashbug' command to report bugs.\n"
-msgstr "Use the ‘bashbug’ command to report bugs.\n"
-
-#: sig.c:647
-#, c-format
-msgid "sigprocmask: %d: invalid operation"
-msgstr "sigprocmask: %d: invalid operation"
-
-#: siglist.c:48
-msgid "Bogus signal"
-msgstr "Bogus signal"
-
-#: siglist.c:51
-msgid "Hangup"
-msgstr "Hangup"
-
-#: siglist.c:55
-msgid "Interrupt"
-msgstr "Interrupt"
-
-#: siglist.c:59
-msgid "Quit"
-msgstr "Quit"
-
-#: siglist.c:63
-msgid "Illegal instruction"
-msgstr "Illegal instruction"
-
-#: siglist.c:67
-msgid "BPT trace/trap"
-msgstr "BPT trace/trap"
-
-#: siglist.c:75
-msgid "ABORT instruction"
-msgstr "ABORT instruction"
-
-#: siglist.c:79
-msgid "EMT instruction"
-msgstr "EMT instruction"
-
-#: siglist.c:83
-msgid "Floating point exception"
-msgstr "Floating point exception"
-
-#: siglist.c:87
-msgid "Killed"
-msgstr "Killed"
-
-#: siglist.c:91
-msgid "Bus error"
-msgstr "Bus error"
-
-#: siglist.c:95
-msgid "Segmentation fault"
-msgstr "Segmentation fault"
-
-#: siglist.c:99
-msgid "Bad system call"
-msgstr "Bad system call"
-
-#: siglist.c:103
-msgid "Broken pipe"
-msgstr "Broken pipe"
-
-#: siglist.c:107
-msgid "Alarm clock"
-msgstr "Alarm clock"
-
-#: siglist.c:111
-msgid "Terminated"
-msgstr "Terminated"
-
-#: siglist.c:115
-msgid "Urgent IO condition"
-msgstr "Urgent IO condition"
-
-#: siglist.c:119
-msgid "Stopped (signal)"
-msgstr "Stopped (signal)"
-
-#: siglist.c:127
-msgid "Continue"
-msgstr "Continue"
-
-#: siglist.c:135
-msgid "Child death or stop"
-msgstr "Child death or stop"
-
-#: siglist.c:139
-msgid "Stopped (tty input)"
-msgstr "Stopped (tty input)"
-
-#: siglist.c:143
-msgid "Stopped (tty output)"
-msgstr "Stopped (tty output)"
-
-#: siglist.c:147
-msgid "I/O ready"
-msgstr "I/O ready"
-
-#: siglist.c:151
-msgid "CPU limit"
-msgstr "CPU limit"
-
-#: siglist.c:155
-msgid "File limit"
-msgstr "File limit"
-
-#: siglist.c:159
-msgid "Alarm (virtual)"
-msgstr "Alarm (virtual)"
-
-#: siglist.c:163
-msgid "Alarm (profile)"
-msgstr "Alarm (profile)"
-
-#: siglist.c:167
-msgid "Window changed"
-msgstr "Window changed"
-
-#: siglist.c:171
-msgid "Record lock"
-msgstr "Record lock"
-
-#: siglist.c:175
-msgid "User signal 1"
-msgstr "User signal 1"
-
-#: siglist.c:179
-msgid "User signal 2"
-msgstr "User signal 2"
-
-#: siglist.c:183
-msgid "HFT input data pending"
-msgstr "HFT input data pending"
-
-#: siglist.c:187
-msgid "power failure imminent"
-msgstr "power failure imminent"
-
-#: siglist.c:191
-msgid "system crash imminent"
-msgstr "system crash imminent"
-
-#: siglist.c:195
-msgid "migrate process to another CPU"
-msgstr "migrate process to another CPU"
-
-#: siglist.c:199
-msgid "programming error"
-msgstr "programming error"
-
-#: siglist.c:203
-msgid "HFT monitor mode granted"
-msgstr "HFT monitor mode granted"
-
-#: siglist.c:207
-msgid "HFT monitor mode retracted"
-msgstr "HFT monitor mode retracted"
-
-#: siglist.c:211
-msgid "HFT sound sequence has completed"
-msgstr "HFT sound sequence has completed"
-
-#: siglist.c:215
-msgid "Information request"
-msgstr "Information request"
-
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Unknown Signal #"
-
-#: siglist.c:225
-#, c-format
-msgid "Unknown Signal #%d"
-msgstr "Unknown Signal #%d"
-
-#: subst.c:1335 subst.c:1506
-#, c-format
-msgid "bad substitution: no closing `%s' in %s"
-msgstr "bad substitution: no closing ‘%s’ in %s"
-
-#: subst.c:2801
-#, c-format
-msgid "%s: cannot assign list to array member"
-msgstr "%s: cannot assign list to array member"
-
-#: subst.c:4991 subst.c:5007
-msgid "cannot make pipe for process substitution"
-msgstr "cannot make pipe for process substitution"
-
-#: subst.c:5039
-msgid "cannot make child for process substitution"
-msgstr "cannot make child for process substitution"
-
-#: subst.c:5084
-#, c-format
-msgid "cannot open named pipe %s for reading"
-msgstr "cannot open named pipe %s for reading"
-
-#: subst.c:5086
-#, c-format
-msgid "cannot open named pipe %s for writing"
-msgstr "cannot open named pipe %s for writing"
-
-#: subst.c:5104
-#, c-format
-msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "cannot duplicate named pipe %s as fd %d"
-
-#: subst.c:5296
-msgid "cannot make pipe for command substitution"
-msgstr "cannot make pipe for command substitution"
-
-#: subst.c:5334
-msgid "cannot make child for command substitution"
-msgstr "cannot make child for command substitution"
-
-#: subst.c:5351
-msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "command_substitute: cannot duplicate pipe as fd 1"
-
-#: subst.c:5875
-#, c-format
-msgid "%s: parameter null or not set"
-msgstr "%s: parameter null or not set"
-
-#: subst.c:6141 subst.c:6156
-#, c-format
-msgid "%s: substring expression < 0"
-msgstr "%s: substring expression < 0"
-
-#: subst.c:7284
-#, c-format
-msgid "%s: bad substitution"
-msgstr "%s: bad substitution"
-
-#: subst.c:7361
-#, c-format
-msgid "$%s: cannot assign in this way"
-msgstr "$%s: cannot assign in this way"
-
-#: subst.c:7697
-msgid ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-msgstr ""
-"future versions of the shell will force evaluation as an arithmetic "
-"substitution"
-
-#: subst.c:8165
-#, c-format
-msgid "bad substitution: no closing \"`\" in %s"
-msgstr "bad substitution: no closing “`” in %s"
-
-#: subst.c:9056
-#, c-format
-msgid "no match: %s"
-msgstr "no match: %s"
-
-#: test.c:146
-msgid "argument expected"
-msgstr "argument expected"
-
-#: test.c:155
-#, c-format
-msgid "%s: integer expression expected"
-msgstr "%s: integer expression expected"
-
-#: test.c:263
-msgid "`)' expected"
-msgstr "‘)’ expected"
-
-#: test.c:265
-#, c-format
-msgid "`)' expected, found %s"
-msgstr "‘)’ expected, found %s"
-
-#: test.c:280 test.c:698 test.c:701
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: unary operator expected"
-
-#: test.c:449 test.c:741
-#, c-format
-msgid "%s: binary operator expected"
-msgstr "%s: binary operator expected"
-
-#: test.c:816
-msgid "missing `]'"
-msgstr "missing ‘]’"
-
-#: trap.c:209
-msgid "invalid signal number"
-msgstr "invalid signal number"
-
-#: trap.c:329
-#, c-format
-msgid "run_pending_traps: bad value in trap_list[%d]: %p"
-msgstr "run_pending_traps: bad value in trap_list[%d]: %p"
-
-#: trap.c:333
-#, c-format
-msgid ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-msgstr ""
-"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
-
-#: trap.c:379
-#, c-format
-msgid "trap_handler: bad signal %d"
-msgstr "trap_handler: bad signal %d"
-
-#: variables.c:366
-#, c-format
-msgid "error importing function definition for `%s'"
-msgstr "error importing function definition for ‘%s’"
-
-#: variables.c:764
-#, c-format
-msgid "shell level (%d) too high, resetting to 1"
-msgstr "shell level (%d) too high, resetting to 1"
-
-#: variables.c:1941
-msgid "make_local_variable: no function context at current scope"
-msgstr "make_local_variable: no function context at current scope"
-
-#: variables.c:3192
-msgid "all_local_variables: no function context at current scope"
-msgstr "all_local_variables: no function context at current scope"
-
-#: variables.c:3437
-#, c-format
-msgid "%s has null exportstr"
-msgstr "%s has null exportstr"
-
-#: variables.c:3442 variables.c:3451
-#, c-format
-msgid "invalid character %d in exportstr for %s"
-msgstr "invalid character %d in exportstr for %s"
-
-#: variables.c:3457
-#, c-format
-msgid "no `=' in exportstr for %s"
-msgstr "no ‘=’ in exportstr for %s"
-
-#: variables.c:3917
-msgid "pop_var_context: head of shell_variables not a function context"
-msgstr "pop_var_context: head of shell_variables not a function context"
-
-#: variables.c:3930
-msgid "pop_var_context: no global_variables context"
-msgstr "pop_var_context: no global_variables context"
-
-#: variables.c:4004
-msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr "pop_scope: head of shell_variables not a temporary environment scope"
-
-#: variables.c:4821
-#, c-format
-msgid "%s: %s: cannot open as FILE"
-msgstr "%s: %s: cannot open as FILE"
-
-#: variables.c:4826
-#, c-format
-msgid "%s: %s: invalid value for trace file descriptor"
-msgstr "%s: %s: invalid value for trace file descriptor"
-
-#: version.c:46
-msgid "Copyright (C) 2011 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
-
-#: version.c:47
-msgid ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-
-#: version.c:86 version2.c:83
-#, c-format
-msgid "GNU bash, version %s (%s)\n"
-msgstr "GNU bash, version %s (%s)\n"
-
-#: version.c:91 version2.c:88
-#, c-format
-msgid "This is free software; you are free to change and redistribute it.\n"
-msgstr "This is free software; you are free to change and redistribute it.\n"
-
-#: version.c:92 version2.c:89
-#, c-format
-msgid "There is NO WARRANTY, to the extent permitted by law.\n"
-msgstr "There is NO WARRANTY, to the extent permitted by law.\n"
-
-#: version2.c:86
-#, c-format
-msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-
-#: version2.c:87
-#, c-format
-msgid ""
-"License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-msgstr ""
-"License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
-"html>\n"
-
-#: xmalloc.c:91
-#, c-format
-msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-
-#: xmalloc.c:93
-#, c-format
-msgid "%s: cannot allocate %lu bytes"
-msgstr "%s: cannot allocate %lu bytes"
-
-#: xmalloc.c:163
-#, c-format
-msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-
-#: xmalloc.c:165
-#, c-format
-msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr "%s: %s:%d: cannot allocate %lu bytes"
-
-#: builtins.c:43
-msgid "alias [-p] [name[=value] ... ]"
-msgstr "alias [-p] [name[=value] ... ]"
-
-#: builtins.c:47
-msgid "unalias [-a] name [name ...]"
-msgstr "unalias [-a] name [name ...]"
-
-#: builtins.c:51
-#, fuzzy
-msgid ""
-"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-msgstr ""
-"bind [-lpvsPVS] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
-"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
-
-#: builtins.c:54
-msgid "break [n]"
-msgstr "break [n]"
-
-#: builtins.c:56
-msgid "continue [n]"
-msgstr "continue [n]"
-
-#: builtins.c:58
-msgid "builtin [shell-builtin [arg ...]]"
-msgstr "builtin [shell-builtin [arg ...]]"
-
-#: builtins.c:61
-msgid "caller [expr]"
-msgstr "caller [expr]"
-
-#: builtins.c:64
-msgid "cd [-L|[-P [-e]]] [dir]"
-msgstr "cd [-L|[-P [-e]]] [dir]"
-
-#: builtins.c:66
-msgid "pwd [-LP]"
-msgstr "pwd [-LP]"
-
-#: builtins.c:68
-msgid ":"
-msgstr ":"
-
-#: builtins.c:70
-msgid "true"
-msgstr "true"
-
-#: builtins.c:72
-msgid "false"
-msgstr "false"
-
-#: builtins.c:74
-msgid "command [-pVv] command [arg ...]"
-msgstr "command [-pVv] command [arg ...]"
-
-#: builtins.c:76
-msgid "declare [-aAfFgilrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilrtux] [-p] [name[=value] ...]"
-
-#: builtins.c:78
-msgid "typeset [-aAfFgilrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..."
-
-#: builtins.c:80
-msgid "local [option] name[=value] ..."
-msgstr "local [option] name[=value] ..."
-
-#: builtins.c:83
-msgid "echo [-neE] [arg ...]"
-msgstr "echo [-neE] [arg ...]"
-
-#: builtins.c:87
-msgid "echo [-n] [arg ...]"
-msgstr "echo [-n] [arg ...]"
-
-#: builtins.c:90
-msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr "enable [-a] [-dnps] [-f filename] [name ...]"
-
-#: builtins.c:92
-msgid "eval [arg ...]"
-msgstr "eval [arg ...]"
-
-#: builtins.c:94
-msgid "getopts optstring name [arg]"
-msgstr "getopts optstring name [arg]"
-
-#: builtins.c:96
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-
-#: builtins.c:98
-msgid "exit [n]"
-msgstr "exit [n]"
-
-#: builtins.c:100
-msgid "logout [n]"
-msgstr "logout [n]"
-
-#: builtins.c:103
-msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-
-#: builtins.c:107
-msgid "fg [job_spec]"
-msgstr "fg [job_spec]"
-
-#: builtins.c:111
-msgid "bg [job_spec ...]"
-msgstr "bg [job_spec ...]"
-
-#: builtins.c:114
-msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
-msgstr "hash [-lr] [-p pathname] [-dt] [name ...]"
-
-#: builtins.c:117
-msgid "help [-dms] [pattern ...]"
-msgstr "help [-dms] [pattern ...]"
-
-#: builtins.c:121
-msgid ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-msgstr ""
-"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
-"[arg...]"
-
-#: builtins.c:125
-msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-
-#: builtins.c:129
-msgid "disown [-h] [-ar] [jobspec ...]"
-msgstr "disown [-h] [-ar] [jobspec ...]"
-
-#: builtins.c:132
-msgid ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-msgstr ""
-"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
-"[sigspec]"
-
-#: builtins.c:134
-msgid "let arg [arg ...]"
-msgstr "let arg [arg ...]"
-
-#: builtins.c:136
-msgid ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-msgstr ""
-"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
-"prompt] [-t timeout] [-u fd] [name ...]"
-
-#: builtins.c:138
-msgid "return [n]"
-msgstr "return [n]"
-
-#: builtins.c:140
-msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-
-#: builtins.c:142
-msgid "unset [-f] [-v] [name ...]"
-msgstr "unset [-f] [-v] [name ...]"
-
-#: builtins.c:144
-msgid "export [-fn] [name[=value] ...] or export -p"
-msgstr "export [-fn] [name[=value] ...] or export -p"
-
-#: builtins.c:146
-msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
-msgstr "readonly [-aAf] [name[=value] ...] or readonly -p"
-
-#: builtins.c:148
-msgid "shift [n]"
-msgstr "shift [n]"
-
-#: builtins.c:150
-msgid "source filename [arguments]"
-msgstr "source filename [arguments]"
-
-#: builtins.c:152
-msgid ". filename [arguments]"
-msgstr ". filename [arguments]"
-
-#: builtins.c:155
-msgid "suspend [-f]"
-msgstr "suspend [-f]"
-
-#: builtins.c:158
-msgid "test [expr]"
-msgstr "test [expr]"
-
-#: builtins.c:160
-msgid "[ arg... ]"
-msgstr "[ arg... ]"
-
-#: builtins.c:162
-msgid "times"
-msgstr "times"
-
-#: builtins.c:164
-msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr "trap [-lp] [[arg] signal_spec ...]"
-
-#: builtins.c:166
-msgid "type [-afptP] name [name ...]"
-msgstr "type [-afptP] name [name ...]"
-
-#: builtins.c:169
-#, fuzzy
-msgid "ulimit [-SHabcdefilmnpqrstuvxT] [limit]"
-msgstr "ulimit [-SHacdefilmnpqrstuvx] [limit]"
-
-#: builtins.c:172
-msgid "umask [-p] [-S] [mode]"
-msgstr "umask [-p] [-S] [mode]"
-
-#: builtins.c:175
-#, fuzzy
-msgid "wait [id ...]"
-msgstr "wait [id]"
-
-#: builtins.c:179
-msgid "wait [pid]"
-msgstr "wait [pid]"
-
-#: builtins.c:182
-msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done"
-
-#: builtins.c:184
-msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-
-#: builtins.c:186
-msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr "select NAME [in WORDS ... ;] do COMMANDS; done"
-
-#: builtins.c:188
-msgid "time [-p] pipeline"
-msgstr "time [-p] pipeline"
-
-#: builtins.c:190
-msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-
-#: builtins.c:192
-msgid ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-msgstr ""
-"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
-"COMMANDS; ] fi"
-
-#: builtins.c:194
-msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while COMMANDS; do COMMANDS; done"
-
-#: builtins.c:196
-msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until COMMANDS; do COMMANDS; done"
-
-#: builtins.c:198
-msgid "coproc [NAME] command [redirections]"
-msgstr "coproc [NAME] command [redirections]"
-
-#: builtins.c:200
-msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr "function name { COMMANDS ; } or name () { COMMANDS ; }"
-
-#: builtins.c:202
-msgid "{ COMMANDS ; }"
-msgstr "{ COMMANDS ; }"
-
-#: builtins.c:204
-msgid "job_spec [&]"
-msgstr "job_spec [&]"
-
-#: builtins.c:206
-msgid "(( expression ))"
-msgstr "(( expression ))"
-
-#: builtins.c:208
-msgid "[[ expression ]]"
-msgstr "[[ expression ]]"
-
-#: builtins.c:210
-msgid "variables - Names and meanings of some shell variables"
-msgstr "variables - Names and meanings of some shell variables"
-
-#: builtins.c:213
-msgid "pushd [-n] [+N | -N | dir]"
-msgstr "pushd [-n] [+N | -N | dir]"
-
-#: builtins.c:217
-msgid "popd [-n] [+N | -N]"
-msgstr "popd [-n] [+N | -N]"
-
-#: builtins.c:221
-msgid "dirs [-clpv] [+N] [-N]"
-msgstr "dirs [-clpv] [+N] [-N]"
-
-#: builtins.c:224
-msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr "shopt [-pqsu] [-o] [optname ...]"
-
-#: builtins.c:226
-msgid "printf [-v var] format [arguments]"
-msgstr "printf [-v var] format [arguments]"
-
-#: builtins.c:229
-msgid ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
-"suffix] [name ...]"
-
-#: builtins.c:233
-msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-msgstr ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
-
-#: builtins.c:237
-msgid "compopt [-o|+o option] [-DE] [name ...]"
-msgstr "compopt [-o|+o option] [-DE] [name ...]"
-
-#: builtins.c:240
-msgid ""
-"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-"mapfile [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-
-#: builtins.c:242
-msgid ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-msgstr ""
-"readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c "
-"quantum] [array]"
-
-#: builtins.c:254
-msgid ""
-"Define or display aliases.\n"
-" \n"
-" Without arguments, `alias' prints the list of aliases in the reusable\n"
-" form `alias NAME=VALUE' on standard output.\n"
-" \n"
-" Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
-" A trailing space in VALUE causes the next word to be checked for\n"
-" alias substitution when the alias is expanded.\n"
-" \n"
-" Options:\n"
-" -p\tPrint all defined aliases in a reusable format\n"
-" \n"
-" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
-" defined."
-msgstr ""
-"Define or display aliases.\n"
-" \n"
-" Without arguments, ‘alias’ prints the list of aliases in the reusable\n"
-" form ‘alias NAME=VALUE’ on standard output.\n"
-" \n"
-" Otherwise, an alias is defined for each NAME whose VALUE is given.\n"
-" A trailing space in VALUE causes the next word to be checked for\n"
-" alias substitution when the alias is expanded.\n"
-" \n"
-" Options:\n"
-" -p\tPrint all defined aliases in a reusable format\n"
-" \n"
-" Exit Status:\n"
-" alias returns true unless a NAME is supplied for which no alias has "
-"been\n"
-" defined."
-
-#: builtins.c:276
-msgid ""
-"Remove each NAME from the list of defined aliases.\n"
-" \n"
-" Options:\n"
-" -a\tremove all alias definitions.\n"
-" \n"
-" Return success unless a NAME is not an existing alias."
-msgstr ""
-"Remove each NAME from the list of defined aliases.\n"
-" \n"
-" Options:\n"
-" -a\tremove all alias definitions.\n"
-" \n"
-" Return success unless a NAME is not an existing alias."
-
-#: builtins.c:289
-#, fuzzy
-msgid ""
-"Set Readline key bindings and variables.\n"
-" \n"
-" Bind a key sequence to a Readline function or a macro, or set a\n"
-" Readline variable. The non-option argument syntax is equivalent to\n"
-" that found in ~/.inputrc, but must be passed as a single argument:\n"
-" e.g., bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-" \n"
-" Options:\n"
-" -m keymap Use KEYMAP as the keymap for the duration of this\n"
-" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
-" vi-command, and vi-insert.\n"
-" -l List names of functions.\n"
-" -P List function names and bindings.\n"
-" -p List functions and bindings in a form that can be\n"
-" reused as input.\n"
-" -S List key sequences that invoke macros and their "
-"values\n"
-" -s List key sequences that invoke macros and their "
-"values\n"
-" in a form that can be reused as input.\n"
-" -V List variable names and values\n"
-" -v List variable names and values in a form that can\n"
-" be reused as input.\n"
-" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named "
-"function.\n"
-" -r keyseq Remove the binding for KEYSEQ.\n"
-" -f filename Read key bindings from FILENAME.\n"
-" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
-" \t\t\t\tKEYSEQ is entered.\n"
-" -X\t\t List key sequences bound with -x and associated commands\n"
-" in a form that can be reused as input.\n"
-" \n"
-" Exit Status:\n"
-" bind returns 0 unless an unrecognized option is given or an error occurs."
-msgstr ""
-"Set Readline key bindings and variables.\n"
-" \n"
-" Bind a key sequence to a Readline function or a macro, or set a\n"
-" Readline variable. The non-option argument syntax is equivalent to\n"
-" that found in ~/.inputrc, but must be passed as a single argument:\n"
-" e.g., bind '“\\C-x\\C-r”: re-read-init-file'.\n"
-" \n"
-" Options:\n"
-" -m keymap Use KEYMAP as the keymap for the duration of this\n"
-" command. Acceptable keymap names are emacs,\n"
-" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-"
-"move,\n"
-" vi-command, and vi-insert.\n"
-" -l List names of functions.\n"
-" -P List function names and bindings.\n"
-" -p List functions and bindings in a form that can be\n"
-" reused as input.\n"
-" -S List key sequences that invoke macros and their "
-"values\n"
-" -s List key sequences that invoke macros and their "
-"values\n"
-" in a form that can be reused as input.\n"
-" -V List variable names and values\n"
-" -v List variable names and values in a form that can\n"
-" be reused as input.\n"
-" -q function-name Query about which keys invoke the named function.\n"
-" -u function-name Unbind all keys which are bound to the named "
-"function.\n"
-" -r keyseq Remove the binding for KEYSEQ.\n"
-" -f filename Read key bindings from FILENAME.\n"
-" -x keyseq:shell-command\tCause SHELL-COMMAND to be executed when\n"
-" \t\t\t\tKEYSEQ is entered.\n"
-" \n"
-" Exit Status:\n"
-" bind returns 0 unless an unrecognized option is given or an error occurs."
-
-#: builtins.c:328
-msgid ""
-"Exit for, while, or until loops.\n"
-" \n"
-" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n"
-" loops.\n"
-" \n"
-" Exit Status:\n"
-" The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-"Exit for, while, or until loops.\n"
-" \n"
-" Exit a FOR, WHILE or UNTIL loop. If N is specified, break N enclosing\n"
-" loops.\n"
-" \n"
-" Exit Status:\n"
-" The exit status is 0 unless N is not greater than or equal to 1."
-
-#: builtins.c:340
-msgid ""
-"Resume for, while, or until loops.\n"
-" \n"
-" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
-" If N is specified, resumes the Nth enclosing loop.\n"
-" \n"
-" Exit Status:\n"
-" The exit status is 0 unless N is not greater than or equal to 1."
-msgstr ""
-"Resume for, while, or until loops.\n"
-" \n"
-" Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.\n"
-" If N is specified, resumes the Nth enclosing loop.\n"
-" \n"
-" Exit Status:\n"
-" The exit status is 0 unless N is not greater than or equal to 1."
-
-#: builtins.c:352
-msgid ""
-"Execute shell builtins.\n"
-" \n"
-" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
-" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the "
-"function.\n"
-" \n"
-" Exit Status:\n"
-" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-" not a shell builtin.."
-msgstr ""
-"Execute shell builtins.\n"
-" \n"
-" Execute SHELL-BUILTIN with arguments ARGs without performing command\n"
-" lookup. This is useful when you wish to reimplement a shell builtin\n"
-" as a shell function, but need to execute the builtin within the "
-"function.\n"
-" \n"
-" Exit Status:\n"
-" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
-" not a shell builtin.."
-
-#: builtins.c:367
-msgid ""
-"Return the context of the current subroutine call.\n"
-" \n"
-" Without EXPR, returns \"$line $filename\". With EXPR, returns\n"
-" \"$line $subroutine $filename\"; this extra information can be used to\n"
-" provide a stack trace.\n"
-" \n"
-" The value of EXPR indicates how many call frames to go back before the\n"
-" current one; the top frame is frame 0.\n"
-" \n"
-" Exit Status:\n"
-" Returns 0 unless the shell is not executing a shell function or EXPR\n"
-" is invalid."
-msgstr ""
-"Return the context of the current subroutine call.\n"
-" \n"
-" Without EXPR, returns “$line $filename”. With EXPR, returns\n"
-" “$line $subroutine $filename”; this extra information can be used to\n"
-" provide a stack trace.\n"
-" \n"
-" The value of EXPR indicates how many call frames to go back before the\n"
-" current one; the top frame is frame 0.\n"
-" \n"
-" Exit Status:\n"
-" Returns 0 unless the shell is not executing a shell function or EXPR\n"
-" is invalid."
-
-#: builtins.c:385
-#, fuzzy
-msgid ""
-"Change the shell working directory.\n"
-" \n"
-" Change the current directory to DIR. The default DIR is the value of "
-"the\n"
-" HOME shell variable.\n"
-" \n"
-" The variable CDPATH defines the search path for the directory "
-"containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-" A null directory name is the same as the current directory. If DIR "
-"begins\n"
-" with a slash (/), then CDPATH is not used.\n"
-" \n"
-" If the directory is not found, and the shell option `cdable_vars' is "
-"set,\n"
-" the word is assumed to be a variable name. If that variable has a "
-"value,\n"
-" its value is used for DIR.\n"
-" \n"
-" Options:\n"
-" -L\tforce symbolic links to be followed: resolve symbolic links in\n"
-" \tDIR after processing instances of `..'\n"
-" -P\tuse the physical directory structure without following symbolic\n"
-" \tlinks: resolve symbolic links in DIR before processing instances\n"
-" \tof `..'\n"
-" -e\tif the -P option is supplied, and the current working directory\n"
-" \tcannot be determined successfully, exit with a non-zero status\n"
-" \n"
-" The default is to follow symbolic links, as if `-L' were specified.\n"
-" `..' is processed by removing the immediately previous pathname "
-"component\n"
-" back to a slash or the beginning of DIR.\n"
-" \n"
-" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
-" -P is used; non-zero otherwise."
-msgstr ""
-"Change the shell working directory.\n"
-" \n"
-" Change the current directory to DIR. The default DIR is the value of "
-"the\n"
-" HOME shell variable.\n"
-" \n"
-" The variable CDPATH defines the search path for the directory "
-"containing\n"
-" DIR. Alternative directory names in CDPATH are separated by a colon "
-"(:).\n"
-" A null directory name is the same as the current directory. If DIR "
-"begins\n"
-" with a slash (/), then CDPATH is not used.\n"
-" \n"
-" If the directory is not found, and the shell option ‘cdable_vars’ is "
-"set,\n"
-" the word is assumed to be a variable name. If that variable has a "
-"value,\n"
-" its value is used for DIR.\n"
-" \n"
-" Options:\n"
-" -L\tforce symbolic links to be followed\n"
-" -P\tuse the physical directory structure without following symbolic\n"
-" \tlinks\n"
-" -e\tif the -P option is supplied, and the current working directory\n"
-" \tcannot be determined successfully, exit with a non-zero status\n"
-" \n"
-" The default is to follow symbolic links, as if ‘-L’ were specified.\n"
-" \n"
-" Exit Status:\n"
-" Returns 0 if the directory is changed, and if $PWD is set successfully "
-"when\n"
-" -P is used; non-zero otherwise."
-
-#: builtins.c:420
-msgid ""
-"Print the name of the current working directory.\n"
-" \n"
-" Options:\n"
-" -L\tprint the value of $PWD if it names the current working\n"
-" \tdirectory\n"
-" -P\tprint the physical directory, without any symbolic links\n"
-" \n"
-" By default, `pwd' behaves as if `-L' were specified.\n"
-" \n"
-" Exit Status:\n"
-" Returns 0 unless an invalid option is given or the current directory\n"
-" cannot be read."
-msgstr ""
-"Print the name of the current working directory.\n"
-" \n"
-" Options:\n"
-" -L\tprint the value of $PWD if it names the current working\n"
-" \tdirectory\n"
-" -P\tprint the physical directory, without any symbolic links\n"
-" \n"
-" By default, ‘pwd’ behaves as if ‘-L’ were specified.\n"
-" \n"
-" Exit Status:\n"
-" Returns 0 unless an invalid option is given or the current directory\n"
-" cannot be read."
-
-#: builtins.c:437
-msgid ""
-"Null command.\n"
-" \n"
-" No effect; the command does nothing.\n"
-" \n"
-" Exit Status:\n"
-" Always succeeds."
-msgstr ""
-"Null command.\n"
-" \n"
-" No effect; the command does nothing.\n"
-" \n"
-" Exit Status:\n"
-" Always succeeds."
-
-#: builtins.c:448
-msgid ""
-"Return a successful result.\n"
-" \n"
-" Exit Status:\n"
-" Always succeeds."
-msgstr ""
-"Return a successful result.\n"
-" \n"
-" Exit Status:\n"
-" Always succeeds."
-
-#: builtins.c:457
-msgid ""
-"Return an unsuccessful result.\n"
-" \n"
-" Exit Status:\n"
-" Always fails."
-msgstr ""
-"Return an unsuccessful result.\n"
-" \n"
-" Exit Status:\n"
-" Always fails."
-
-#: builtins.c:466
-msgid ""
-"Execute a simple command or display information about commands.\n"
-" \n"
-" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
-" on disk when a function with the same name exists.\n"
-" \n"
-" Options:\n"
-" -p\tuse a default value for PATH that is guaranteed to find all of\n"
-" \tthe standard utilities\n"
-" -v\tprint a description of COMMAND similar to the `type' builtin\n"
-" -V\tprint a more verbose description of each COMMAND\n"
-" \n"
-" Exit Status:\n"
-" Returns exit status of COMMAND, or failure if COMMAND is not found."
-msgstr ""
-"Execute a simple command or display information about commands.\n"
-" \n"
-" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
-" information about the specified COMMANDs. Can be used to invoke "
-"commands\n"
-" on disk when a function with the same name exists.\n"
-" \n"
-" Options:\n"
-" -p\tuse a default value for PATH that is guaranteed to find all of\n"
-" \tthe standard utilities\n"
-" -v\tprint a description of COMMAND similar to the ‘type’ builtin\n"
-" -V\tprint a more verbose description of each COMMAND\n"
-" \n"
-" Exit Status:\n"
-" Returns exit status of COMMAND, or failure if COMMAND is not found."
-
-#: builtins.c:485
-msgid ""
-"Set variable values and attributes.\n"
-" \n"
-" Declare variables and give them attributes. If no NAMEs are given,\n"
-" display the attributes and values of all variables.\n"
-" \n"
-" Options:\n"
-" -f\trestrict action or display to function names and definitions\n"
-" -F\trestrict display to function names only (plus line number and\n"
-" \tsource file when debugging)\n"
-" -g\tcreate global variables when used in a shell function; otherwise\n"
-" \tignored\n"
-" -p\tdisplay the attributes and value of each NAME\n"
-" \n"
-" Options which set attributes:\n"
-" -a\tto make NAMEs indexed arrays (if supported)\n"
-" -A\tto make NAMEs associative arrays (if supported)\n"
-" -i\tto make NAMEs have the `integer' attribute\n"
-" -l\tto convert NAMEs to lower case on assignment\n"
-" -r\tto make NAMEs readonly\n"
-" -t\tto make NAMEs have the `trace' attribute\n"
-" -u\tto convert NAMEs to upper case on assignment\n"
-" -x\tto make NAMEs export\n"
-" \n"
-" Using `+' instead of `-' turns off the given attribute.\n"
-" \n"
-" Variables with the integer attribute have arithmetic evaluation (see\n"
-" the `let' command) performed when the variable is assigned a value.\n"
-" \n"
-" When used in a function, `declare' makes NAMEs local, as with the "
-"`local'\n"
-" command. The `-g' option suppresses this behavior.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-"Set variable values and attributes.\n"
-" \n"
-" Declare variables and give them attributes. If no NAMEs are given,\n"
-" display the attributes and values of all variables.\n"
-" \n"
-" Options:\n"
-" -f\trestrict action or display to function names and definitions\n"
-" -F\trestrict display to function names only (plus line number and\n"
-" \tsource file when debugging)\n"
-" -g\tcreate global variables when used in a shell function; otherwise\n"
-" \tignored\n"
-" -p\tdisplay the attributes and value of each NAME\n"
-" \n"
-" Options which set attributes:\n"
-" -a\tto make NAMEs indexed arrays (if supported)\n"
-" -A\tto make NAMEs associative arrays (if supported)\n"
-" -i\tto make NAMEs have the ‘integer’ attribute\n"
-" -l\tto convert NAMEs to lower case on assignment\n"
-" -r\tto make NAMEs readonly\n"
-" -t\tto make NAMEs have the ‘trace’ attribute\n"
-" -u\tto convert NAMEs to upper case on assignment\n"
-" -x\tto make NAMEs export\n"
-" \n"
-" Using ‘+’ instead of ‘-’ turns off the given attribute.\n"
-" \n"
-" Variables with the integer attribute have arithmetic evaluation (see\n"
-" the ‘let’ command) performed when the variable is assigned a value.\n"
-" \n"
-" When used in a function, ‘declare’ makes NAMEs local, as with the "
-"‘local’\n"
-" command. The ‘-g’ option suppresses this behavior.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or an error occurs."
-
-#: builtins.c:523
-msgid ""
-"Set variable values and attributes.\n"
-" \n"
-" Obsolete. See `help declare'."
-msgstr ""
-"Set variable values and attributes.\n"
-" \n"
-" Obsolete. See ‘help declare’."
-
-#: builtins.c:531
-msgid ""
-"Define local variables.\n"
-" \n"
-" Create a local variable called NAME, and give it VALUE. OPTION can\n"
-" be any option accepted by `declare'.\n"
-" \n"
-" Local variables can only be used within a function; they are visible\n"
-" only to the function where they are defined and its children.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied, an error occurs,\n"
-" or the shell is not executing a function."
-msgstr ""
-"Define local variables.\n"
-" \n"
-" Create a local variable called NAME, and give it VALUE. OPTION can\n"
-" be any option accepted by ‘declare’.\n"
-" \n"
-" Local variables can only be used within a function; they are visible\n"
-" only to the function where they are defined and its children.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied, an error occurs,\n"
-" or the shell is not executing a function."
-
-#: builtins.c:548
-#, fuzzy
-msgid ""
-"Write arguments to the standard output.\n"
-" \n"
-" Display the ARGs, separated by a single space character and followed by "
-"a\n"
-" newline, on the standard output.\n"
-" \n"
-" Options:\n"
-" -n\tdo not append a newline\n"
-" -e\tenable interpretation of the following backslash escapes\n"
-" -E\texplicitly suppress interpretation of backslash escapes\n"
-" \n"
-" `echo' interprets the following backslash-escaped characters:\n"
-" \\a\talert (bell)\n"
-" \\b\tbackspace\n"
-" \\c\tsuppress further output\n"
-" \\e\tescape character\n"
-" \\E\tescape character\n"
-" \\f\tform feed\n"
-" \\n\tnew line\n"
-" \\r\tcarriage return\n"
-" \\t\thorizontal tab\n"
-" \\v\tvertical tab\n"
-" \\\\\tbackslash\n"
-" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n"
-" \t0 to 3 octal digits\n"
-" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
-" \tcan be one or two hex digits\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless a write error occurs."
-msgstr ""
-"Write arguments to the standard output.\n"
-" \n"
-" Display the ARGs on the standard output followed by a newline.\n"
-" \n"
-" Options:\n"
-" -n\tdo not append a newline\n"
-" -e\tenable interpretation of the following backslash escapes\n"
-" -E\texplicitly suppress interpretation of backslash escapes\n"
-" \n"
-" ‘echo’ interprets the following backslash-escaped characters:\n"
-" \\a\talert (bell)\n"
-" \\b\tbackspace\n"
-" \\c\tsuppress further output\n"
-" \\e\tescape character\n"
-" \\f\tform feed\n"
-" \\n\tnew line\n"
-" \\r\tcarriage return\n"
-" \\t\thorizontal tab\n"
-" \\v\tvertical tab\n"
-" \\\\\tbackslash\n"
-" \\0nnn\tthe character whose ASCII code is NNN (octal). NNN can be\n"
-" \t0 to 3 octal digits\n"
-" \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n"
-" \tcan be one or two hex digits\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless a write error occurs."
-
-#: builtins.c:584
-msgid ""
-"Write arguments to the standard output.\n"
-" \n"
-" Display the ARGs on the standard output followed by a newline.\n"
-" \n"
-" Options:\n"
-" -n\tdo not append a newline\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless a write error occurs."
-msgstr ""
-"Write arguments to the standard output.\n"
-" \n"
-" Display the ARGs on the standard output followed by a newline.\n"
-" \n"
-" Options:\n"
-" -n\tdo not append a newline\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless a write error occurs."
-
-#: builtins.c:599
-msgid ""
-"Enable and disable shell builtins.\n"
-" \n"
-" Enables and disables builtin shell commands. Disabling allows you to\n"
-" execute a disk command which has the same name as a shell builtin\n"
-" without using a full pathname.\n"
-" \n"
-" Options:\n"
-" -a\tprint a list of builtins showing whether or not each is enabled\n"
-" -n\tdisable each NAME or display a list of disabled builtins\n"
-" -p\tprint the list of builtins in a reusable format\n"
-" -s\tprint only the names of Posix `special' builtins\n"
-" \n"
-" Options controlling dynamic loading:\n"
-" -f\tLoad builtin NAME from shared object FILENAME\n"
-" -d\tRemove a builtin loaded with -f\n"
-" \n"
-" Without options, each NAME is enabled.\n"
-" \n"
-" To use the `test' found in $PATH instead of the shell builtin\n"
-" version, type `enable -n test'.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless NAME is not a shell builtin or an error occurs."
-msgstr ""
-"Enable and disable shell builtins.\n"
-" \n"
-" Enables and disables builtin shell commands. Disabling allows you to\n"
-" execute a disk command which has the same name as a shell builtin\n"
-" without using a full pathname.\n"
-" \n"
-" Options:\n"
-" -a\tprint a list of builtins showing whether or not each is enabled\n"
-" -n\tdisable each NAME or display a list of disabled builtins\n"
-" -p\tprint the list of builtins in a reusable format\n"
-" -s\tprint only the names of Posix ‘special’ builtins\n"
-" \n"
-" Options controlling dynamic loading:\n"
-" -f\tLoad builtin NAME from shared object FILENAME\n"
-" -d\tRemove a builtin loaded with -f\n"
-" \n"
-" Without options, each NAME is enabled.\n"
-" \n"
-" To use the ‘test’ found in $PATH instead of the shell builtin\n"
-" version, type ‘enable -n test’.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless NAME is not a shell builtin or an error occurs."
-
-#: builtins.c:627
-msgid ""
-"Execute arguments as a shell command.\n"
-" \n"
-" Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
-" and execute the resulting commands.\n"
-" \n"
-" Exit Status:\n"
-" Returns exit status of command or success if command is null."
-msgstr ""
-"Execute arguments as a shell command.\n"
-" \n"
-" Combine ARGs into a single string, use the result as input to the "
-"shell,\n"
-" and execute the resulting commands.\n"
-" \n"
-" Exit Status:\n"
-" Returns exit status of command or success if command is null."
-
-#: builtins.c:639
-msgid ""
-"Parse option arguments.\n"
-" \n"
-" Getopts is used by shell procedures to parse positional parameters\n"
-" as options.\n"
-" \n"
-" OPTSTRING contains the option letters to be recognized; if a letter\n"
-" is followed by a colon, the option is expected to have an argument,\n"
-" which should be separated from it by white space.\n"
-" \n"
-" Each time it is invoked, getopts will place the next option in the\n"
-" shell variable $name, initializing name if it does not exist, and\n"
-" the index of the next argument to be processed into the shell\n"
-" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n"
-" a shell script is invoked. When an option requires an argument,\n"
-" getopts places that argument into the shell variable OPTARG.\n"
-" \n"
-" getopts reports errors in one of two ways. If the first character\n"
-" of OPTSTRING is a colon, getopts uses silent error reporting. In\n"
-" this mode, no error messages are printed. If an invalid option is\n"
-" seen, getopts places the option character found into OPTARG. If a\n"
-" required argument is not found, getopts places a ':' into NAME and\n"
-" sets OPTARG to the option character found. If getopts is not in\n"
-" silent mode, and an invalid option is seen, getopts places '?' into\n"
-" NAME and unsets OPTARG. If a required argument is not found, a '?'\n"
-" is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-" printed.\n"
-" \n"
-" If the shell variable OPTERR has the value 0, getopts disables the\n"
-" printing of error messages, even if the first character of\n"
-" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n"
-" \n"
-" Getopts normally parses the positional parameters ($0 - $9), but if\n"
-" more arguments are given, they are parsed instead.\n"
-" \n"
-" Exit Status:\n"
-" Returns success if an option is found; fails if the end of options is\n"
-" encountered or an error occurs."
-msgstr ""
-"Parse option arguments.\n"
-" \n"
-" Getopts is used by shell procedures to parse positional parameters\n"
-" as options.\n"
-" \n"
-" OPTSTRING contains the option letters to be recognized; if a letter\n"
-" is followed by a colon, the option is expected to have an argument,\n"
-" which should be separated from it by white space.\n"
-" \n"
-" Each time it is invoked, getopts will place the next option in the\n"
-" shell variable $name, initializing name if it does not exist, and\n"
-" the index of the next argument to be processed into the shell\n"
-" variable OPTIND. OPTIND is initialized to 1 each time the shell or\n"
-" a shell script is invoked. When an option requires an argument,\n"
-" getopts places that argument into the shell variable OPTARG.\n"
-" \n"
-" getopts reports errors in one of two ways. If the first character\n"
-" of OPTSTRING is a colon, getopts uses silent error reporting. In\n"
-" this mode, no error messages are printed. If an invalid option is\n"
-" seen, getopts places the option character found into OPTARG. If a\n"
-" required argument is not found, getopts places a ‘:’ into NAME and\n"
-" sets OPTARG to the option character found. If getopts is not in\n"
-" silent mode, and an invalid option is seen, getopts places ‘?’ into\n"
-" NAME and unsets OPTARG. If a required argument is not found, a ‘?’\n"
-" is placed in NAME, OPTARG is unset, and a diagnostic message is\n"
-" printed.\n"
-" \n"
-" If the shell variable OPTERR has the value 0, getopts disables the\n"
-" printing of error messages, even if the first character of\n"
-" OPTSTRING is not a colon. OPTERR has the value 1 by default.\n"
-" \n"
-" Getopts normally parses the positional parameters ($0 - $9), but if\n"
-" more arguments are given, they are parsed instead.\n"
-" \n"
-" Exit Status:\n"
-" Returns success if an option is found; fails if the end of options is\n"
-" encountered or an error occurs."
-
-#: builtins.c:681
-msgid ""
-"Replace the shell with the given command.\n"
-" \n"
-" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
-"specified,\n"
-" any redirections take effect in the current shell.\n"
-" \n"
-" Options:\n"
-" -a name\tpass NAME as the zeroth argument to COMMAND\n"
-" -c\t\texecute COMMAND with an empty environment\n"
-" -l\t\tplace a dash in the zeroth argument to COMMAND\n"
-" \n"
-" If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
-" the shell option `execfail' is set.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error "
-"occurs."
-msgstr ""
-"Replace the shell with the given command.\n"
-" \n"
-" Execute COMMAND, replacing this shell with the specified program.\n"
-" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
-"specified,\n"
-" any redirections take effect in the current shell.\n"
-" \n"
-" Options:\n"
-" -a name\tpass NAME as the zeroth argument to COMMAND\n"
-" -c\t\texecute COMMAND with an empty environment\n"
-" -l\t\tplace a dash in the zeroth argument to COMMAND\n"
-" \n"
-" If the command cannot be executed, a non-interactive shell exits, "
-"unless\n"
-" the shell option ‘execfail’ is set.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless COMMAND is not found or a redirection error "
-"occurs."
-
-#: builtins.c:702
-msgid ""
-"Exit the shell.\n"
-" \n"
-" Exits the shell with a status of N. If N is omitted, the exit status\n"
-" is that of the last command executed."
-msgstr ""
-"Exit the shell.\n"
-" \n"
-" Exits the shell with a status of N. If N is omitted, the exit status\n"
-" is that of the last command executed."
-
-#: builtins.c:711
-msgid ""
-"Exit a login shell.\n"
-" \n"
-" Exits a login shell with exit status N. Returns an error if not "
-"executed\n"
-" in a login shell."
-msgstr ""
-"Exit a login shell.\n"
-" \n"
-" Exits a login shell with exit status N. Returns an error if not "
-"executed\n"
-" in a login shell."
-
-#: builtins.c:721
-msgid ""
-"Display or execute commands from the history list.\n"
-" \n"
-" fc is used to list or edit and re-execute commands from the history "
-"list.\n"
-" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
-" string, which means the most recent command beginning with that\n"
-" string.\n"
-" \n"
-" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
-"EDITOR,\n"
-" \t\tthen vi\n"
-" -l \tlist lines instead of editing\n"
-" -n\tomit line numbers when listing\n"
-" -r\treverse the order of the lines (newest listed first)\n"
-" \n"
-" With the `fc -s [pat=rep ...] [command]' format, COMMAND is\n"
-" re-executed after the substitution OLD=NEW is performed.\n"
-" \n"
-" A useful alias to use with this is r='fc -s', so that typing `r cc'\n"
-" runs the last command beginning with `cc' and typing `r' re-executes\n"
-" the last command.\n"
-" \n"
-" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error "
-"occurs."
-msgstr ""
-"Display or execute commands from the history list.\n"
-" \n"
-" fc is used to list or edit and re-execute commands from the history "
-"list.\n"
-" FIRST and LAST can be numbers specifying the range, or FIRST can be a\n"
-" string, which means the most recent command beginning with that\n"
-" string.\n"
-" \n"
-" Options:\n"
-" -e ENAME\tselect which editor to use. Default is FCEDIT, then "
-"EDITOR,\n"
-" \t\tthen vi\n"
-" -l \tlist lines instead of editing\n"
-" -n\tomit line numbers when listing\n"
-" -r\treverse the order of the lines (newest listed first)\n"
-" \n"
-" With the ‘fc -s [pat=rep ...] [command]’ format, COMMAND is\n"
-" re-executed after the substitution OLD=NEW is performed.\n"
-" \n"
-" A useful alias to use with this is r='fc -s', so that typing ‘r cc’\n"
-" runs the last command beginning with ‘cc’ and typing ‘r’ re-executes\n"
-" the last command.\n"
-" \n"
-" Exit Status:\n"
-" Returns success or status of executed command; non-zero if an error "
-"occurs."
-
-#: builtins.c:751
-msgid ""
-"Move job to the foreground.\n"
-" \n"
-" Place the job identified by JOB_SPEC in the foreground, making it the\n"
-" current job. If JOB_SPEC is not present, the shell's notion of the\n"
-" current job is used.\n"
-" \n"
-" Exit Status:\n"
-" Status of command placed in foreground, or failure if an error occurs."
-msgstr ""
-"Move job to the foreground.\n"
-" \n"
-" Place the job identified by JOB_SPEC in the foreground, making it the\n"
-" current job. If JOB_SPEC is not present, the shell's notion of the\n"
-" current job is used.\n"
-" \n"
-" Exit Status:\n"
-" Status of command placed in foreground, or failure if an error occurs."
-
-#: builtins.c:766
-msgid ""
-"Move jobs to the background.\n"
-" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-" had been started with `&'. If JOB_SPEC is not present, the shell's "
-"notion\n"
-" of the current job is used.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-"Move jobs to the background.\n"
-" \n"
-" Place the jobs identified by each JOB_SPEC in the background, as if "
-"they\n"
-" had been started with ‘&’. If JOB_SPEC is not present, the shell's "
-"notion\n"
-" of the current job is used.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless job control is not enabled or an error occurs."
-
-#: builtins.c:780
-msgid ""
-"Remember or display program locations.\n"
-" \n"
-" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is "
-"displayed.\n"
-" \n"
-" Options:\n"
-" -d\t\tforget the remembered location of each NAME\n"
-" -l\t\tdisplay in a format that may be reused as input\n"
-" -p pathname\tuse PATHNAME is the full pathname of NAME\n"
-" -r\t\tforget all remembered locations\n"
-" -t\t\tprint the remembered location of each NAME, preceding\n"
-" \t\teach location with the corresponding NAME if multiple\n"
-" \t\tNAMEs are given\n"
-" Arguments:\n"
-" NAME\t\tEach NAME is searched for in $PATH and added to the list\n"
-" \t\tof remembered commands.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless NAME is not found or an invalid option is given."
-msgstr ""
-"Remember or display program locations.\n"
-" \n"
-" Determine and remember the full pathname of each command NAME. If\n"
-" no arguments are given, information about remembered commands is "
-"displayed.\n"
-" \n"
-" Options:\n"
-" -d\t\tforget the remembered location of each NAME\n"
-" -l\t\tdisplay in a format that may be reused as input\n"
-" -p pathname\tuse PATHNAME is the full pathname of NAME\n"
-" -r\t\tforget all remembered locations\n"
-" -t\t\tprint the remembered location of each NAME, preceding\n"
-" \t\teach location with the corresponding NAME if multiple\n"
-" \t\tNAMEs are given\n"
-" Arguments:\n"
-" NAME\t\tEach NAME is searched for in $PATH and added to the list\n"
-" \t\tof remembered commands.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless NAME is not found or an invalid option is given."
-
-#: builtins.c:805
-msgid ""
-"Display information about builtin commands.\n"
-" \n"
-" Displays brief summaries of builtin commands. If PATTERN is\n"
-" specified, gives detailed help on all commands matching PATTERN,\n"
-" otherwise the list of help topics is printed.\n"
-" \n"
-" Options:\n"
-" -d\toutput short description for each topic\n"
-" -m\tdisplay usage in pseudo-manpage format\n"
-" -s\toutput only a short usage synopsis for each topic matching\n"
-" \tPATTERN\n"
-" \n"
-" Arguments:\n"
-" PATTERN\tPattern specifiying a help topic\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is "
-"given."
-msgstr ""
-"Display information about builtin commands.\n"
-" \n"
-" Displays brief summaries of builtin commands. If PATTERN is\n"
-" specified, gives detailed help on all commands matching PATTERN,\n"
-" otherwise the list of help topics is printed.\n"
-" \n"
-" Options:\n"
-" -d\toutput short description for each topic\n"
-" -m\tdisplay usage in pseudo-manpage format\n"
-" -s\toutput only a short usage synopsis for each topic matching\n"
-" \tPATTERN\n"
-" \n"
-" Arguments:\n"
-" PATTERN\tPattern specifiying a help topic\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless PATTERN is not found or an invalid option is "
-"given."
-
-#: builtins.c:829
-msgid ""
-"Display or manipulate the history list.\n"
-" \n"
-" Display the history list with line numbers, prefixing each modified\n"
-" entry with a `*'. An argument of N lists only the last N entries.\n"
-" \n"
-" Options:\n"
-" -c\tclear the history list by deleting all of the entries\n"
-" -d offset\tdelete the history entry at offset OFFSET.\n"
-" \n"
-" -a\tappend history lines from this session to the history file\n"
-" -n\tread all history lines not already read from the history file\n"
-" -r\tread the history file and append the contents to the history\n"
-" \tlist\n"
-" -w\twrite the current history to the history file\n"
-" \tand append them to the history list\n"
-" \n"
-" -p\tperform history expansion on each ARG and display the result\n"
-" \twithout storing it in the history list\n"
-" -s\tappend the ARGs to the history list as a single entry\n"
-" \n"
-" If FILENAME is given, it is used as the history file. Otherwise,\n"
-" if $HISTFILE has a value, that is used, else ~/.bash_history.\n"
-" \n"
-" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
-" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed "
-"otherwise.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-"Display or manipulate the history list.\n"
-" \n"
-" Display the history list with line numbers, prefixing each modified\n"
-" entry with a ‘*’. An argument of N lists only the last N entries.\n"
-" \n"
-" Options:\n"
-" -c\tclear the history list by deleting all of the entries\n"
-" -d offset\tdelete the history entry at offset OFFSET.\n"
-" \n"
-" -a\tappend history lines from this session to the history file\n"
-" -n\tread all history lines not already read from the history file\n"
-" -r\tread the history file and append the contents to the history\n"
-" \tlist\n"
-" -w\twrite the current history to the history file\n"
-" \tand append them to the history list\n"
-" \n"
-" -p\tperform history expansion on each ARG and display the result\n"
-" \twithout storing it in the history list\n"
-" -s\tappend the ARGs to the history list as a single entry\n"
-" \n"
-" If FILENAME is given, it is used as the history file. Otherwise,\n"
-" if $HISTFILE has a value, that is used, else ~/.bash_history.\n"
-" \n"
-" If the $HISTTIMEFORMAT variable is set and not null, its value is used\n"
-" as a format string for strftime(3) to print the time stamp associated\n"
-" with each displayed history entry. No time stamps are printed "
-"otherwise.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or an error occurs."
-
-#: builtins.c:865
-msgid ""
-"Display status of jobs.\n"
-" \n"
-" Lists the active jobs. JOBSPEC restricts output to that job.\n"
-" Without options, the status of all active jobs is displayed.\n"
-" \n"
-" Options:\n"
-" -l\tlists process IDs in addition to the normal information\n"
-" -n\tlist only processes that have changed status since the last\n"
-" \tnotification\n"
-" -p\tlists process IDs only\n"
-" -r\trestrict output to running jobs\n"
-" -s\trestrict output to stopped jobs\n"
-" \n"
-" If -x is supplied, COMMAND is run after all job specifications that\n"
-" appear in ARGS have been replaced with the process ID of that job's\n"
-" process group leader.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or an error occurs.\n"
-" If -x is used, returns the exit status of COMMAND."
-msgstr ""
-"Display status of jobs.\n"
-" \n"
-" Lists the active jobs. JOBSPEC restricts output to that job.\n"
-" Without options, the status of all active jobs is displayed.\n"
-" \n"
-" Options:\n"
-" -l\tlists process IDs in addition to the normal information\n"
-" -n\tlist only processes that have changed status since the last\n"
-" \tnotification\n"
-" -p\tlists process IDs only\n"
-" -r\trestrict output to running jobs\n"
-" -s\trestrict output to stopped jobs\n"
-" \n"
-" If -x is supplied, COMMAND is run after all job specifications that\n"
-" appear in ARGS have been replaced with the process ID of that job's\n"
-" process group leader.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or an error occurs.\n"
-" If -x is used, returns the exit status of COMMAND."
-
-#: builtins.c:892
-msgid ""
-"Remove jobs from current shell.\n"
-" \n"
-" Removes each JOBSPEC argument from the table of active jobs. Without\n"
-" any JOBSPECs, the shell uses its notion of the current job.\n"
-" \n"
-" Options:\n"
-" -a\tremove all jobs if JOBSPEC is not supplied\n"
-" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n"
-" \tshell receives a SIGHUP\n"
-" -r\tremove only running jobs\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option or JOBSPEC is given."
-msgstr ""
-"Remove jobs from current shell.\n"
-" \n"
-" Removes each JOBSPEC argument from the table of active jobs. Without\n"
-" any JOBSPECs, the shell uses its notion of the current job.\n"
-" \n"
-" Options:\n"
-" -a\tremove all jobs if JOBSPEC is not supplied\n"
-" -h\tmark each JOBSPEC so that SIGHUP is not sent to the job if the\n"
-" \tshell receives a SIGHUP\n"
-" -r\tremove only running jobs\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option or JOBSPEC is given."
-
-#: builtins.c:911
-msgid ""
-"Send a signal to a job.\n"
-" \n"
-" Send the processes identified by PID or JOBSPEC the signal named by\n"
-" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n"
-" SIGTERM is assumed.\n"
-" \n"
-" Options:\n"
-" -s sig\tSIG is a signal name\n"
-" -n sig\tSIG is a signal number\n"
-" -l\tlist the signal names; if arguments follow `-l' they are\n"
-" \tassumed to be signal numbers for which names should be listed\n"
-" \n"
-" Kill is a shell builtin for two reasons: it allows job IDs to be used\n"
-" instead of process IDs, and allows processes to be killed if the limit\n"
-" on processes that you can create is reached.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or an error occurs."
-msgstr ""
-"Send a signal to a job.\n"
-" \n"
-" Send the processes identified by PID or JOBSPEC the signal named by\n"
-" SIGSPEC or SIGNUM. If neither SIGSPEC nor SIGNUM is present, then\n"
-" SIGTERM is assumed.\n"
-" \n"
-" Options:\n"
-" -s sig\tSIG is a signal name\n"
-" -n sig\tSIG is a signal number\n"
-" -l\tlist the signal names; if arguments follow ‘-l’ they are\n"
-" \tassumed to be signal numbers for which names should be listed\n"
-" \n"
-" Kill is a shell builtin for two reasons: it allows job IDs to be used\n"
-" instead of process IDs, and allows processes to be killed if the limit\n"
-" on processes that you can create is reached.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or an error occurs."
-
-#: builtins.c:934
-msgid ""
-"Evaluate arithmetic expressions.\n"
-" \n"
-" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
-" fixed-width integers with no check for overflow, though division by 0\n"
-" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are "
-"listed\n"
-" in order of decreasing precedence.\n"
-" \n"
-" \tid++, id--\tvariable post-increment, post-decrement\n"
-" \t++id, --id\tvariable pre-increment, pre-decrement\n"
-" \t-, +\t\tunary minus, plus\n"
-" \t!, ~\t\tlogical and bitwise negation\n"
-" \t**\t\texponentiation\n"
-" \t*, /, %\t\tmultiplication, division, remainder\n"
-" \t+, -\t\taddition, subtraction\n"
-" \t<<, >>\t\tleft and right bitwise shifts\n"
-" \t<=, >=, <, >\tcomparison\n"
-" \t==, !=\t\tequality, inequality\n"
-" \t&\t\tbitwise AND\n"
-" \t^\t\tbitwise XOR\n"
-" \t|\t\tbitwise OR\n"
-" \t&&\t\tlogical AND\n"
-" \t||\t\tlogical OR\n"
-" \texpr ? expr : expr\n"
-" \t\t\tconditional operator\n"
-" \t=, *=, /=, %=,\n"
-" \t+=, -=, <<=, >>=,\n"
-" \t&=, ^=, |=\tassignment\n"
-" \n"
-" Shell variables are allowed as operands. The name of the variable\n"
-" is replaced by its value (coerced to a fixed-width integer) within\n"
-" an expression. The variable need not have its integer attribute\n"
-" turned on to be used in an expression.\n"
-" \n"
-" Operators are evaluated in order of precedence. Sub-expressions in\n"
-" parentheses are evaluated first and may override the precedence\n"
-" rules above.\n"
-" \n"
-" Exit Status:\n"
-" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
-msgstr ""
-"Evaluate arithmetic expressions.\n"
-" \n"
-" Evaluate each ARG as an arithmetic expression. Evaluation is done in\n"
-" fixed-width integers with no check for overflow, though division by 0\n"
-" is trapped and flagged as an error. The following list of operators is\n"
-" grouped into levels of equal-precedence operators. The levels are "
-"listed\n"
-" in order of decreasing precedence.\n"
-" \n"
-" \tid++, id--\tvariable post-increment, post-decrement\n"
-" \t++id, --id\tvariable pre-increment, pre-decrement\n"
-" \t-, +\t\tunary minus, plus\n"
-" \t!, ~\t\tlogical and bitwise negation\n"
-" \t**\t\texponentiation\n"
-" \t*, /, %\t\tmultiplication, division, remainder\n"
-" \t+, -\t\taddition, subtraction\n"
-" \t<<, >>\t\tleft and right bitwise shifts\n"
-" \t<=, >=, <, >\tcomparison\n"
-" \t==, !=\t\tequality, inequality\n"
-" \t&\t\tbitwise AND\n"
-" \t^\t\tbitwise XOR\n"
-" \t|\t\tbitwise OR\n"
-" \t&&\t\tlogical AND\n"
-" \t||\t\tlogical OR\n"
-" \texpr ? expr : expr\n"
-" \t\t\tconditional operator\n"
-" \t=, *=, /=, %=,\n"
-" \t+=, -=, <<=, >>=,\n"
-" \t&=, ^=, |=\tassignment\n"
-" \n"
-" Shell variables are allowed as operands. The name of the variable\n"
-" is replaced by its value (coerced to a fixed-width integer) within\n"
-" an expression. The variable need not have its integer attribute\n"
-" turned on to be used in an expression.\n"
-" \n"
-" Operators are evaluated in order of precedence. Sub-expressions in\n"
-" parentheses are evaluated first and may override the precedence\n"
-" rules above.\n"
-" \n"
-" Exit Status:\n"
-" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
-
-#: builtins.c:979
-#, fuzzy
-msgid ""
-"Read a line from the standard input and split it into fields.\n"
-" \n"
-" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with "
-"word\n"
-" splitting, and the first word is assigned to the first NAME, the second\n"
-" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as "
-"word\n"
-" delimiters.\n"
-" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
-" \n"
-" Options:\n"
-" -a array\tassign the words read to sequential indices of the array\n"
-" \t\tvariable ARRAY, starting at zero\n"
-" -d delim\tcontinue until the first character of DELIM is read, rather\n"
-" \t\tthan newline\n"
-" -e\t\tuse Readline to obtain the line in an interactive shell\n"
-" -i text\tUse TEXT as the initial text for Readline\n"
-" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
-" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n"
-" \t\tcharacters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
-" \t\tEOF is encountered or read times out, ignoring any delimiter\n"
-" -p prompt\toutput the string PROMPT without a trailing newline before\n"
-" \t\tattempting to read\n"
-" -r\t\tdo not allow backslashes to escape any characters\n"
-" -s\t\tdo not echo input coming from a terminal\n"
-" -t timeout\ttime out and return failure if a complete line of input "
-"is\n"
-" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n"
-" \t\tvariable is the default timeout. TIMEOUT may be a\n"
-" \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n"
-" \t\twithout trying to read any data, returning success only if\n"
-" \t\tinput is available on the specified file descriptor. The\n"
-" \t\texit status is greater than 128 if the timeout is exceeded\n"
-" -u fd\t\tread from file descriptor FD instead of the standard input\n"
-" \n"
-" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times "
-"out\n"
-" (in which case it's greater than 128), a variable assignment error "
-"occurs,\n"
-" or an invalid file descriptor is supplied as the argument to -u."
-msgstr ""
-"Read a line from the standard input and split it into fields.\n"
-" \n"
-" Reads a single line from the standard input, or from file descriptor FD\n"
-" if the -u option is supplied. The line is split into fields as with "
-"word\n"
-" splitting, and the first word is assigned to the first NAME, the second\n"
-" word to the second NAME, and so on, with any leftover words assigned to\n"
-" the last NAME. Only the characters found in $IFS are recognized as "
-"word\n"
-" delimiters.\n"
-" \n"
-" If no NAMEs are supplied, the line read is stored in the REPLY "
-"variable.\n"
-" \n"
-" Options:\n"
-" -a array\tassign the words read to sequential indices of the array\n"
-" \t\tvariable ARRAY, starting at zero\n"
-" -d delim\tcontinue until the first character of DELIM is read, rather\n"
-" \t\tthan newline\n"
-" -e\t\tuse Readline to obtain the line in an interactive shell\n"
-" -i text\tUse TEXT as the initial text for Readline\n"
-" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
-" \t\tfor a newline, but honor a delimiter if fewer than NCHARS\n"
-" \t\tcharacters are read before the delimiter\n"
-" -N nchars\treturn only after reading exactly NCHARS characters, "
-"unless\n"
-" \t\tEOF is encountered or read times out, ignoring any delimiter\n"
-" -p prompt\toutput the string PROMPT without a trailing newline before\n"
-" \t\tattempting to read\n"
-" -r\t\tdo not allow backslashes to escape any characters\n"
-" -s\t\tdo not echo input coming from a terminal\n"
-" -t timeout\ttime out and return failure if a complete line of input "
-"is\n"
-" \t\tnot read withint TIMEOUT seconds. The value of the TMOUT\n"
-" \t\tvariable is the default timeout. TIMEOUT may be a\n"
-" \t\tfractional number. If TIMEOUT is 0, read returns success only\n"
-" \t\tif input is available on the specified file descriptor. The\n"
-" \t\texit status is greater than 128 if the timeout is exceeded\n"
-" -u fd\t\tread from file descriptor FD instead of the standard input\n"
-" \n"
-" Exit Status:\n"
-" The return code is zero, unless end-of-file is encountered, read times "
-"out,\n"
-" or an invalid file descriptor is supplied as the argument to -u."
-
-#: builtins.c:1024
-msgid ""
-"Return from a shell function.\n"
-" \n"
-" Causes a function or sourced script to exit with the return value\n"
-" specified by N. If N is omitted, the return status is that of the\n"
-" last command executed within the function or script.\n"
-" \n"
-" Exit Status:\n"
-" Returns N, or failure if the shell is not executing a function or script."
-msgstr ""
-"Return from a shell function.\n"
-" \n"
-" Causes a function or sourced script to exit with the return value\n"
-" specified by N. If N is omitted, the return status is that of the\n"
-" last command executed within the function or script.\n"
-" \n"
-" Exit Status:\n"
-" Returns N, or failure if the shell is not executing a function or script."
-
-#: builtins.c:1037
-#, fuzzy
-msgid ""
-"Set or unset values of shell options and positional parameters.\n"
-" \n"
-" Change the value of shell attributes and positional parameters, or\n"
-" display the names and values of shell variables.\n"
-" \n"
-" Options:\n"
-" -a Mark variables which are modified or created for export.\n"
-" -b Notify of job termination immediately.\n"
-" -e Exit immediately if a command exits with a non-zero status.\n"
-" -f Disable file name generation (globbing).\n"
-" -h Remember the location of commands as they are looked up.\n"
-" -k All assignment arguments are placed in the environment for a\n"
-" command, not just those that precede the command name.\n"
-" -m Job control is enabled.\n"
-" -n Read commands but do not execute them.\n"
-" -o option-name\n"
-" Set the variable corresponding to option-name:\n"
-" allexport same as -a\n"
-" braceexpand same as -B\n"
-" emacs use an emacs-style line editing interface\n"
-" errexit same as -e\n"
-" errtrace same as -E\n"
-" functrace same as -T\n"
-" hashall same as -h\n"
-" histexpand same as -H\n"
-" history enable command history\n"
-" ignoreeof the shell will not exit upon reading EOF\n"
-" interactive-comments\n"
-" allow comments to appear in interactive commands\n"
-" keyword same as -k\n"
-" monitor same as -m\n"
-" noclobber same as -C\n"
-" noexec same as -n\n"
-" noglob same as -f\n"
-" nolog currently accepted but ignored\n"
-" notify same as -b\n"
-" nounset same as -u\n"
-" onecmd same as -t\n"
-" physical same as -P\n"
-" pipefail the return value of a pipeline is the status of\n"
-" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero "
-"status\n"
-" posix change the behavior of bash where the default\n"
-" operation differs from the Posix standard to\n"
-" match the standard\n"
-" privileged same as -p\n"
-" verbose same as -v\n"
-" vi use a vi-style line editing interface\n"
-" xtrace same as -x\n"
-" -p Turned on whenever the real and effective user ids do not match.\n"
-" Disables processing of the $ENV file and importing of shell\n"
-" functions. Turning this option off causes the effective uid and\n"
-" gid to be set to the real uid and gid.\n"
-" -t Exit after reading and executing one command.\n"
-" -u Treat unset variables as an error when substituting.\n"
-" -v Print shell input lines as they are read.\n"
-" -x Print commands and their arguments as they are executed.\n"
-" -B the shell will perform brace expansion\n"
-" -C If set, disallow existing regular files to be overwritten\n"
-" by redirection of output.\n"
-" -E If set, the ERR trap is inherited by shell functions.\n"
-" -H Enable ! style history substitution. This flag is on\n"
-" by default when the shell is interactive.\n"
-" -P If set, do not resolve symbolic links when executing commands\n"
-" such as cd which change the current directory.\n"
-" -T If set, the DEBUG trap is inherited by shell functions.\n"
-" -- Assign any remaining arguments to the positional parameters.\n"
-" If there are no remaining arguments, the positional parameters\n"
-" are unset.\n"
-" - Assign any remaining arguments to the positional parameters.\n"
-" The -x and -v options are turned off.\n"
-" \n"
-" Using + rather than - causes these flags to be turned off. The\n"
-" flags can also be used upon invocation of the shell. The current\n"
-" set of flags may be found in $-. The remaining n ARGs are positional\n"
-" parameters and are assigned, in order, to $1, $2, .. $n. If no\n"
-" ARGs are given, all shell variables are printed.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given."
-msgstr ""
-"Set or unset values of shell options and positional parameters.\n"
-" \n"
-" Change the value of shell attributes and positional parameters, or\n"
-" display the names and values of shell variables.\n"
-" \n"
-" Options:\n"
-" -a Mark variables which are modified or created for export.\n"
-" -b Notify of job termination immediately.\n"
-" -e Exit immediately if a command exits with a non-zero status.\n"
-" -f Disable file name generation (globbing).\n"
-" -h Remember the location of commands as they are looked up.\n"
-" -k All assignment arguments are placed in the environment for a\n"
-" command, not just those that precede the command name.\n"
-" -m Job control is enabled.\n"
-" -n Read commands but do not execute them.\n"
-" -o option-name\n"
-" Set the variable corresponding to option-name:\n"
-" allexport same as -a\n"
-" braceexpand same as -B\n"
-" emacs use an emacs-style line editing interface\n"
-" errexit same as -e\n"
-" errtrace same as -E\n"
-" functrace same as -T\n"
-" hashall same as -h\n"
-" histexpand same as -H\n"
-" history enable command history\n"
-" ignoreeof the shell will not exit upon reading EOF\n"
-" interactive-comments\n"
-" allow comments to appear in interactive commands\n"
-" keyword same as -k\n"
-" monitor same as -m\n"
-" noclobber same as -C\n"
-" noexec same as -n\n"
-" noglob same as -f\n"
-" nolog currently accepted but ignored\n"
-" notify same as -b\n"
-" nounset same as -u\n"
-" onecmd same as -t\n"
-" physical same as -P\n"
-" pipefail the return value of a pipeline is the status of\n"
-" the last command to exit with a non-zero status,\n"
-" or zero if no command exited with a non-zero "
-"status\n"
-" posix change the behavior of bash where the default\n"
-" operation differs from the Posix standard to\n"
-" match the standard\n"
-" privileged same as -p\n"
-" verbose same as -v\n"
-" vi use a vi-style line editing interface\n"
-" xtrace same as -x\n"
-" -p Turned on whenever the real and effective user ids do not match.\n"
-" Disables processing of the $ENV file and importing of shell\n"
-" functions. Turning this option off causes the effective uid and\n"
-" gid to be set to the real uid and gid.\n"
-" -t Exit after reading and executing one command.\n"
-" -u Treat unset variables as an error when substituting.\n"
-" -v Print shell input lines as they are read.\n"
-" -x Print commands and their arguments as they are executed.\n"
-" -B the shell will perform brace expansion\n"
-" -C If set, disallow existing regular files to be overwritten\n"
-" by redirection of output.\n"
-" -E If set, the ERR trap is inherited by shell functions.\n"
-" -H Enable ! style history substitution. This flag is on\n"
-" by default when the shell is interactive.\n"
-" -P If set, do not follow symbolic links when executing commands\n"
-" such as cd which change the current directory.\n"
-" -T If set, the DEBUG trap is inherited by shell functions.\n"
-" -- Assign any remaining arguments to the positional parameters.\n"
-" If there are no remaining arguments, the positional parameters\n"
-" are unset.\n"
-" - Assign any remaining arguments to the positional parameters.\n"
-" The -x and -v options are turned off.\n"
-" \n"
-" Using + rather than - causes these flags to be turned off. The\n"
-" flags can also be used upon invocation of the shell. The current\n"
-" set of flags may be found in $-. The remaining n ARGs are positional\n"
-" parameters and are assigned, in order, to $1, $2, .. $n. If no\n"
-" ARGs are given, all shell variables are printed.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given."
-
-#: builtins.c:1122
-msgid ""
-"Unset values and attributes of shell variables and functions.\n"
-" \n"
-" For each NAME, remove the corresponding variable or function.\n"
-" \n"
-" Options:\n"
-" -f\ttreat each NAME as a shell function\n"
-" -v\ttreat each NAME as a shell variable\n"
-" \n"
-" Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
-" tries to unset a function.\n"
-" \n"
-" Some variables cannot be unset; also see `readonly'.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or a NAME is read-only."
-msgstr ""
-"Unset values and attributes of shell variables and functions.\n"
-" \n"
-" For each NAME, remove the corresponding variable or function.\n"
-" \n"
-" Options:\n"
-" -f\ttreat each NAME as a shell function\n"
-" -v\ttreat each NAME as a shell variable\n"
-" \n"
-" Without options, unset first tries to unset a variable, and if that "
-"fails,\n"
-" tries to unset a function.\n"
-" \n"
-" Some variables cannot be unset; also see ‘readonly’.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or a NAME is read-only."
-
-#: builtins.c:1142
-msgid ""
-"Set export attribute for shell variables.\n"
-" \n"
-" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before "
-"exporting.\n"
-" \n"
-" Options:\n"
-" -f\trefer to shell functions\n"
-" -n\tremove the export property from each NAME\n"
-" -p\tdisplay a list of all exported variables and functions\n"
-" \n"
-" An argument of `--' disables further option processing.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-"Set export attribute for shell variables.\n"
-" \n"
-" Marks each NAME for automatic export to the environment of subsequently\n"
-" executed commands. If VALUE is supplied, assign VALUE before "
-"exporting.\n"
-" \n"
-" Options:\n"
-" -f\trefer to shell functions\n"
-" -n\tremove the export property from each NAME\n"
-" -p\tdisplay a list of all exported variables and functions\n"
-" \n"
-" An argument of ‘--’ disables further option processing.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or NAME is invalid."
-
-#: builtins.c:1161
-msgid ""
-"Mark shell variables as unchangeable.\n"
-" \n"
-" Mark each NAME as read-only; the values of these NAMEs may not be\n"
-" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n"
-" before marking as read-only.\n"
-" \n"
-" Options:\n"
-" -a\trefer to indexed array variables\n"
-" -A\trefer to associative array variables\n"
-" -f\trefer to shell functions\n"
-" -p\tdisplay a list of all readonly variables and functions\n"
-" \n"
-" An argument of `--' disables further option processing.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or NAME is invalid."
-msgstr ""
-"Mark shell variables as unchangeable.\n"
-" \n"
-" Mark each NAME as read-only; the values of these NAMEs may not be\n"
-" changed by subsequent assignment. If VALUE is supplied, assign VALUE\n"
-" before marking as read-only.\n"
-" \n"
-" Options:\n"
-" -a\trefer to indexed array variables\n"
-" -A\trefer to associative array variables\n"
-" -f\trefer to shell functions\n"
-" -p\tdisplay a list of all readonly variables and functions\n"
-" \n"
-" An argument of ‘--’ disables further option processing.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or NAME is invalid."
-
-#: builtins.c:1182
-msgid ""
-"Shift positional parameters.\n"
-" \n"
-" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n"
-" not given, it is assumed to be 1.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless N is negative or greater than $#."
-msgstr ""
-"Shift positional parameters.\n"
-" \n"
-" Rename the positional parameters $N+1,$N+2 ... to $1,$2 ... If N is\n"
-" not given, it is assumed to be 1.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless N is negative or greater than $#."
-
-#: builtins.c:1194 builtins.c:1209
-msgid ""
-"Execute commands from a file in the current shell.\n"
-" \n"
-" Read and execute commands from FILENAME in the current shell. The\n"
-" entries in $PATH are used to find the directory containing FILENAME.\n"
-" If any ARGUMENTS are supplied, they become the positional parameters\n"
-" when FILENAME is executed.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed in FILENAME; fails if\n"
-" FILENAME cannot be read."
-msgstr ""
-"Execute commands from a file in the current shell.\n"
-" \n"
-" Read and execute commands from FILENAME in the current shell. The\n"
-" entries in $PATH are used to find the directory containing FILENAME.\n"
-" If any ARGUMENTS are supplied, they become the positional parameters\n"
-" when FILENAME is executed.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed in FILENAME; fails if\n"
-" FILENAME cannot be read."
-
-#: builtins.c:1225
-msgid ""
-"Suspend shell execution.\n"
-" \n"
-" Suspend the execution of this shell until it receives a SIGCONT signal.\n"
-" Unless forced, login shells cannot be suspended.\n"
-" \n"
-" Options:\n"
-" -f\tforce the suspend, even if the shell is a login shell\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless job control is not enabled or an error occurs."
-msgstr ""
-"Suspend shell execution.\n"
-" \n"
-" Suspend the execution of this shell until it receives a SIGCONT signal.\n"
-" Unless forced, login shells cannot be suspended.\n"
-" \n"
-" Options:\n"
-" -f\tforce the suspend, even if the shell is a login shell\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless job control is not enabled or an error occurs."
-
-#: builtins.c:1241
-msgid ""
-"Evaluate conditional expression.\n"
-" \n"
-" Exits with a status of 0 (true) or 1 (false) depending on\n"
-" the evaluation of EXPR. Expressions may be unary or binary. Unary\n"
-" expressions are often used to examine the status of a file. There\n"
-" are string operators and numeric comparison operators as well.\n"
-" \n"
-" The behavior of test depends on the number of arguments. Read the\n"
-" bash manual page for the complete specification.\n"
-" \n"
-" File operators:\n"
-" \n"
-" -a FILE True if file exists.\n"
-" -b FILE True if file is block special.\n"
-" -c FILE True if file is character special.\n"
-" -d FILE True if file is a directory.\n"
-" -e FILE True if file exists.\n"
-" -f FILE True if file exists and is a regular file.\n"
-" -g FILE True if file is set-group-id.\n"
-" -h FILE True if file is a symbolic link.\n"
-" -L FILE True if file is a symbolic link.\n"
-" -k FILE True if file has its `sticky' bit set.\n"
-" -p FILE True if file is a named pipe.\n"
-" -r FILE True if file is readable by you.\n"
-" -s FILE True if file exists and is not empty.\n"
-" -S FILE True if file is a socket.\n"
-" -t FD True if FD is opened on a terminal.\n"
-" -u FILE True if the file is set-user-id.\n"
-" -w FILE True if the file is writable by you.\n"
-" -x FILE True if the file is executable by you.\n"
-" -O FILE True if the file is effectively owned by you.\n"
-" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last "
-"read.\n"
-" \n"
-" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
-" modification date).\n"
-" \n"
-" FILE1 -ot FILE2 True if file1 is older than file2.\n"
-" \n"
-" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n"
-" \n"
-" String operators:\n"
-" \n"
-" -z STRING True if string is empty.\n"
-" \n"
-" -n STRING\n"
-" STRING True if string is not empty.\n"
-" \n"
-" STRING1 = STRING2\n"
-" True if the strings are equal.\n"
-" STRING1 != STRING2\n"
-" True if the strings are not equal.\n"
-" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
-" STRING1 > STRING2\n"
-" True if STRING1 sorts after STRING2 lexicographically.\n"
-" \n"
-" Other operators:\n"
-" \n"
-" -o OPTION True if the shell option OPTION is enabled.\n"
-" -v VAR\t True if the shell variable VAR is set\n"
-" ! EXPR True if expr is false.\n"
-" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
-" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
-" \n"
-" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n"
-" -lt, -le, -gt, or -ge.\n"
-" \n"
-" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
-" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
-" than ARG2.\n"
-" \n"
-" Exit Status:\n"
-" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
-" false or an invalid argument is given."
-msgstr ""
-"Evaluate conditional expression.\n"
-" \n"
-" Exits with a status of 0 (true) or 1 (false) depending on\n"
-" the evaluation of EXPR. Expressions may be unary or binary. Unary\n"
-" expressions are often used to examine the status of a file. There\n"
-" are string operators and numeric comparison operators as well.\n"
-" \n"
-" The behavior of test depends on the number of arguments. Read the\n"
-" bash manual page for the complete specification.\n"
-" \n"
-" File operators:\n"
-" \n"
-" -a FILE True if file exists.\n"
-" -b FILE True if file is block special.\n"
-" -c FILE True if file is character special.\n"
-" -d FILE True if file is a directory.\n"
-" -e FILE True if file exists.\n"
-" -f FILE True if file exists and is a regular file.\n"
-" -g FILE True if file is set-group-id.\n"
-" -h FILE True if file is a symbolic link.\n"
-" -L FILE True if file is a symbolic link.\n"
-" -k FILE True if file has its ‘sticky’ bit set.\n"
-" -p FILE True if file is a named pipe.\n"
-" -r FILE True if file is readable by you.\n"
-" -s FILE True if file exists and is not empty.\n"
-" -S FILE True if file is a socket.\n"
-" -t FD True if FD is opened on a terminal.\n"
-" -u FILE True if the file is set-user-id.\n"
-" -w FILE True if the file is writable by you.\n"
-" -x FILE True if the file is executable by you.\n"
-" -O FILE True if the file is effectively owned by you.\n"
-" -G FILE True if the file is effectively owned by your group.\n"
-" -N FILE True if the file has been modified since it was last "
-"read.\n"
-" \n"
-" FILE1 -nt FILE2 True if file1 is newer than file2 (according to\n"
-" modification date).\n"
-" \n"
-" FILE1 -ot FILE2 True if file1 is older than file2.\n"
-" \n"
-" FILE1 -ef FILE2 True if file1 is a hard link to file2.\n"
-" \n"
-" String operators:\n"
-" \n"
-" -z STRING True if string is empty.\n"
-" \n"
-" -n STRING\n"
-" STRING True if string is not empty.\n"
-" \n"
-" STRING1 = STRING2\n"
-" True if the strings are equal.\n"
-" STRING1 != STRING2\n"
-" True if the strings are not equal.\n"
-" STRING1 < STRING2\n"
-" True if STRING1 sorts before STRING2 "
-"lexicographically.\n"
-" STRING1 > STRING2\n"
-" True if STRING1 sorts after STRING2 lexicographically.\n"
-" \n"
-" Other operators:\n"
-" \n"
-" -o OPTION True if the shell option OPTION is enabled.\n"
-" -v VAR\t True if the shell variable VAR is set\n"
-" ! EXPR True if expr is false.\n"
-" EXPR1 -a EXPR2 True if both expr1 AND expr2 are true.\n"
-" EXPR1 -o EXPR2 True if either expr1 OR expr2 is true.\n"
-" \n"
-" arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,\n"
-" -lt, -le, -gt, or -ge.\n"
-" \n"
-" Arithmetic binary operators return true if ARG1 is equal, not-equal,\n"
-" less-than, less-than-or-equal, greater-than, or greater-than-or-equal\n"
-" than ARG2.\n"
-" \n"
-" Exit Status:\n"
-" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
-" false or an invalid argument is given."
-
-#: builtins.c:1321
-msgid ""
-"Evaluate conditional expression.\n"
-" \n"
-" This is a synonym for the \"test\" builtin, but the last argument must\n"
-" be a literal `]', to match the opening `['."
-msgstr ""
-"Evaluate conditional expression.\n"
-" \n"
-" This is a synonym for the “test” builtin, but the last argument must\n"
-" be a literal ‘]’, to match the opening ‘[’."
-
-#: builtins.c:1330
-msgid ""
-"Display process times.\n"
-" \n"
-" Prints the accumulated user and system times for the shell and all of "
-"its\n"
-" child processes.\n"
-" \n"
-" Exit Status:\n"
-" Always succeeds."
-msgstr ""
-"Display process times.\n"
-" \n"
-" Prints the accumulated user and system times for the shell and all of "
-"its\n"
-" child processes.\n"
-" \n"
-" Exit Status:\n"
-" Always succeeds."
-
-#: builtins.c:1342
-msgid ""
-"Trap signals and other events.\n"
-" \n"
-" Defines and activates handlers to be run when the shell receives "
-"signals\n"
-" or other conditions.\n"
-" \n"
-" ARG is a command to be read and executed when the shell receives the\n"
-" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n"
-" is supplied) or `-', each specified signal is reset to its original\n"
-" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
-" shell and by the commands it invokes.\n"
-" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
-"If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
-"If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-" script run by the . or source builtins finishes executing. A "
-"SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
-" shell to exit when the -e option is enabled.\n"
-" \n"
-" If no arguments are supplied, trap prints the list of commands "
-"associated\n"
-" with each signal.\n"
-" \n"
-" Options:\n"
-" -l\tprint a list of signal names and their corresponding numbers\n"
-" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
-" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
-" Signal names are case insensitive and the SIG prefix is optional. A\n"
-" signal may be sent to the shell with \"kill -signal $$\".\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
-msgstr ""
-"Trap signals and other events.\n"
-" \n"
-" Defines and activates handlers to be run when the shell receives "
-"signals\n"
-" or other conditions.\n"
-" \n"
-" ARG is a command to be read and executed when the shell receives the\n"
-" signal(s) SIGNAL_SPEC. If ARG is absent (and a single SIGNAL_SPEC\n"
-" is supplied) or ‘-’, each specified signal is reset to its original\n"
-" value. If ARG is the null string each SIGNAL_SPEC is ignored by the\n"
-" shell and by the commands it invokes.\n"
-" \n"
-" If a SIGNAL_SPEC is EXIT (0) ARG is executed on exit from the shell. "
-"If\n"
-" a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command. "
-"If\n"
-" a SIGNAL_SPEC is RETURN, ARG is executed each time a shell function or "
-"a\n"
-" script run by the . or source builtins finishes executing. A "
-"SIGNAL_SPEC\n"
-" of ERR means to execute ARG each time a command's failure would cause "
-"the\n"
-" shell to exit when the -e option is enabled.\n"
-" \n"
-" If no arguments are supplied, trap prints the list of commands "
-"associated\n"
-" with each signal.\n"
-" \n"
-" Options:\n"
-" -l\tprint a list of signal names and their corresponding numbers\n"
-" -p\tdisplay the trap commands associated with each SIGNAL_SPEC\n"
-" \n"
-" Each SIGNAL_SPEC is either a signal name in <signal.h> or a signal "
-"number.\n"
-" Signal names are case insensitive and the SIG prefix is optional. A\n"
-" signal may be sent to the shell with “kill -signal $$”.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless a SIGSPEC is invalid or an invalid option is "
-"given."
-
-#: builtins.c:1378
-msgid ""
-"Display information about command type.\n"
-" \n"
-" For each NAME, indicate how it would be interpreted if used as a\n"
-" command name.\n"
-" \n"
-" Options:\n"
-" -a\tdisplay all locations containing an executable named NAME;\n"
-" \tincludes aliases, builtins, and functions, if and only if\n"
-" \tthe `-p' option is not also used\n"
-" -f\tsuppress shell function lookup\n"
-" -P\tforce a PATH search for each NAME, even if it is an alias,\n"
-" \tbuiltin, or function, and returns the name of the disk file\n"
-" \tthat would be executed\n"
-" -p\treturns either the name of the disk file that would be executed,\n"
-" \tor nothing if `type -t NAME' would not return `file'.\n"
-" -t\toutput a single word which is one of `alias', `keyword',\n"
-" \t`function', `builtin', `file' or `', if NAME is an alias, shell\n"
-" \treserved word, shell function, shell builtin, disk file, or not\n"
-" \tfound, respectively\n"
-" \n"
-" Arguments:\n"
-" NAME\tCommand name to be interpreted.\n"
-" \n"
-" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not "
-"found."
-msgstr ""
-"Display information about command type.\n"
-" \n"
-" For each NAME, indicate how it would be interpreted if used as a\n"
-" command name.\n"
-" \n"
-" Options:\n"
-" -a\tdisplay all locations containing an executable named NAME;\n"
-" \tincludes aliases, builtins, and functions, if and only if\n"
-" \tthe ‘-p’ option is not also used\n"
-" -f\tsuppress shell function lookup\n"
-" -P\tforce a PATH search for each NAME, even if it is an alias,\n"
-" \tbuiltin, or function, and returns the name of the disk file\n"
-" \tthat would be executed\n"
-" -p\treturns either the name of the disk file that would be executed,\n"
-" \tor nothing if ‘type -t NAME’ would not return ‘file’.\n"
-" -t\toutput a single word which is one of ‘alias’, ‘keyword’,\n"
-" \t‘function’, ‘builtin’, ‘file’ or ‘’, if NAME is an alias, shell\n"
-" \treserved word, shell function, shell builtin, disk file, or not\n"
-" \tfound, respectively\n"
-" \n"
-" Arguments:\n"
-" NAME\tCommand name to be interpreted.\n"
-" \n"
-" Exit Status:\n"
-" Returns success if all of the NAMEs are found; fails if any are not "
-"found."
-
-#: builtins.c:1409
-#, fuzzy
-msgid ""
-"Modify shell resource limits.\n"
-" \n"
-" Provides control over the resources available to the shell and "
-"processes\n"
-" it creates, on systems that allow such control.\n"
-" \n"
-" Options:\n"
-" -S\tuse the `soft' resource limit\n"
-" -H\tuse the `hard' resource limit\n"
-" -a\tall current limits are reported\n"
-" -b\tthe socket buffer size\n"
-" -c\tthe maximum size of core files created\n"
-" -d\tthe maximum size of a process's data segment\n"
-" -e\tthe maximum scheduling priority (`nice')\n"
-" -f\tthe maximum size of files written by the shell and its children\n"
-" -i\tthe maximum number of pending signals\n"
-" -l\tthe maximum size a process may lock into memory\n"
-" -m\tthe maximum resident set size\n"
-" -n\tthe maximum number of open file descriptors\n"
-" -p\tthe pipe buffer size\n"
-" -q\tthe maximum number of bytes in POSIX message queues\n"
-" -r\tthe maximum real-time scheduling priority\n"
-" -s\tthe maximum stack size\n"
-" -t\tthe maximum amount of cpu time in seconds\n"
-" -u\tthe maximum number of user processes\n"
-" -v\tthe size of virtual memory\n"
-" -x\tthe maximum number of file locks\n"
-" -T the maximum number of threads\n"
-" \n"
-" Not all options are available on all platforms.\n"
-" \n"
-" If LIMIT is given, it is the new value of the specified resource; the\n"
-" special LIMIT values `soft', `hard', and `unlimited' stand for the\n"
-" current soft limit, the current hard limit, and no limit, respectively.\n"
-" Otherwise, the current value of the specified resource is printed. If\n"
-" no option is given, then -f is assumed.\n"
-" \n"
-" Values are in 1024-byte increments, except for -t, which is in seconds,\n"
-" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
-" number of processes.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-"Modify shell resource limits.\n"
-" \n"
-" Provides control over the resources available to the shell and "
-"processes\n"
-" it creates, on systems that allow such control.\n"
-" \n"
-" Options:\n"
-" -S\tuse the ‘soft’ resource limit\n"
-" -H\tuse the ‘hard’ resource limit\n"
-" -a\tall current limits are reported\n"
-" -b\tthe socket buffer size\n"
-" -c\tthe maximum size of core files created\n"
-" -d\tthe maximum size of a process's data segment\n"
-" -e\tthe maximum scheduling priority (‘nice’)\n"
-" -f\tthe maximum size of files written by the shell and its children\n"
-" -i\tthe maximum number of pending signals\n"
-" -l\tthe maximum size a process may lock into memory\n"
-" -m\tthe maximum resident set size\n"
-" -n\tthe maximum number of open file descriptors\n"
-" -p\tthe pipe buffer size\n"
-" -q\tthe maximum number of bytes in POSIX message queues\n"
-" -r\tthe maximum real-time scheduling priority\n"
-" -s\tthe maximum stack size\n"
-" -t\tthe maximum amount of cpu time in seconds\n"
-" -u\tthe maximum number of user processes\n"
-" -v\tthe size of virtual memory\n"
-" -x\tthe maximum number of file locks\n"
-" \n"
-" If LIMIT is given, it is the new value of the specified resource; the\n"
-" special LIMIT values ‘soft’, ‘hard’, and ‘unlimited’ stand for the\n"
-" current soft limit, the current hard limit, and no limit, respectively.\n"
-" Otherwise, the current value of the specified resource is printed. If\n"
-" no option is given, then -f is assumed.\n"
-" \n"
-" Values are in 1024-byte increments, except for -t, which is in seconds,\n"
-" -p, which is in increments of 512 bytes, and -u, which is an unscaled\n"
-" number of processes.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or an error occurs."
-
-#: builtins.c:1457
-msgid ""
-"Display or set file mode mask.\n"
-" \n"
-" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n"
-" the current value of the mask.\n"
-" \n"
-" If MODE begins with a digit, it is interpreted as an octal number;\n"
-" otherwise it is a symbolic mode string like that accepted by chmod(1).\n"
-" \n"
-" Options:\n"
-" -p\tif MODE is omitted, output in a form that may be reused as input\n"
-" -S\tmakes the output symbolic; otherwise an octal number is output\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless MODE is invalid or an invalid option is given."
-msgstr ""
-"Display or set file mode mask.\n"
-" \n"
-" Sets the user file-creation mask to MODE. If MODE is omitted, prints\n"
-" the current value of the mask.\n"
-" \n"
-" If MODE begins with a digit, it is interpreted as an octal number;\n"
-" otherwise it is a symbolic mode string like that accepted by chmod(1).\n"
-" \n"
-" Options:\n"
-" -p\tif MODE is omitted, output in a form that may be reused as input\n"
-" -S\tmakes the output symbolic; otherwise an octal number is output\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless MODE is invalid or an invalid option is given."
-
-#: builtins.c:1477
-#, fuzzy
-msgid ""
-"Wait for job completion and return exit status.\n"
-" \n"
-" Waits for each process identified by an ID, which may be a process ID or "
-"a\n"
-" job specification, and reports its termination status. If ID is not\n"
-" given, waits for all currently active child processes, and the return\n"
-" status is zero. If ID is a a job specification, waits for all "
-"processes\n"
-" in that job's pipeline.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
-msgstr ""
-"Wait for job completion and return exit status.\n"
-" \n"
-" Waits for the process identified by ID, which may be a process ID or a\n"
-" job specification, and reports its termination status. If ID is not\n"
-" given, waits for all currently active child processes, and the return\n"
-" status is zero. If ID is a a job specification, waits for all "
-"processes\n"
-" in the job's pipeline.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
-" given."
-
-#: builtins.c:1495
-msgid ""
-"Wait for process completion and return exit status.\n"
-" \n"
-" Waits for the specified process and reports its termination status. If\n"
-" PID is not given, all currently active child processes are waited for,\n"
-" and the return code is zero. PID must be a process ID.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
-" given."
-msgstr ""
-"Wait for process completion and return exit status.\n"
-" \n"
-" Waits for the specified process and reports its termination status. If\n"
-" PID is not given, all currently active child processes are waited for,\n"
-" and the return code is zero. PID must be a process ID.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of ID; fails if ID is invalid or an invalid option "
-"is\n"
-" given."
-
-#: builtins.c:1510
-msgid ""
-"Execute commands for each member in a list.\n"
-" \n"
-" The `for' loop executes a sequence of commands for each member in a\n"
-" list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is\n"
-" assumed. For each element in WORDS, NAME is set to that element, and\n"
-" the COMMANDS are executed.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-msgstr ""
-"Execute commands for each member in a list.\n"
-" \n"
-" The ‘for’ loop executes a sequence of commands for each member in a\n"
-" list of items. If ‘in WORDS ...;’ is not present, then ‘in “$@”’ is\n"
-" assumed. For each element in WORDS, NAME is set to that element, and\n"
-" the COMMANDS are executed.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-
-#: builtins.c:1524
-msgid ""
-"Arithmetic for loop.\n"
-" \n"
-" Equivalent to\n"
-" \t(( EXP1 ))\n"
-" \twhile (( EXP2 )); do\n"
-" \t\tCOMMANDS\n"
-" \t\t(( EXP3 ))\n"
-" \tdone\n"
-" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n"
-" omitted, it behaves as if it evaluates to 1.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-msgstr ""
-"Arithmetic for loop.\n"
-" \n"
-" Equivalent to\n"
-" \t(( EXP1 ))\n"
-" \twhile (( EXP2 )); do\n"
-" \t\tCOMMANDS\n"
-" \t\t(( EXP3 ))\n"
-" \tdone\n"
-" EXP1, EXP2, and EXP3 are arithmetic expressions. If any expression is\n"
-" omitted, it behaves as if it evaluates to 1.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-
-#: builtins.c:1542
-msgid ""
-"Select words from a list and execute commands.\n"
-" \n"
-" The WORDS are expanded, generating a list of words. The\n"
-" set of expanded words is printed on the standard error, each\n"
-" preceded by a number. If `in WORDS' is not present, `in \"$@\"'\n"
-" is assumed. The PS3 prompt is then displayed and a line read\n"
-" from the standard input. If the line consists of the number\n"
-" corresponding to one of the displayed words, then NAME is set\n"
-" to that word. If the line is empty, WORDS and the prompt are\n"
-" redisplayed. If EOF is read, the command completes. Any other\n"
-" value read causes NAME to be set to null. The line read is saved\n"
-" in the variable REPLY. COMMANDS are executed after each selection\n"
-" until a break command is executed.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-msgstr ""
-"Select words from a list and execute commands.\n"
-" \n"
-" The WORDS are expanded, generating a list of words. The\n"
-" set of expanded words is printed on the standard error, each\n"
-" preceded by a number. If ‘in WORDS’ is not present, ‘in “$@”’\n"
-" is assumed. The PS3 prompt is then displayed and a line read\n"
-" from the standard input. If the line consists of the number\n"
-" corresponding to one of the displayed words, then NAME is set\n"
-" to that word. If the line is empty, WORDS and the prompt are\n"
-" redisplayed. If EOF is read, the command completes. Any other\n"
-" value read causes NAME to be set to null. The line read is saved\n"
-" in the variable REPLY. COMMANDS are executed after each selection\n"
-" until a break command is executed.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-
-#: builtins.c:1563
-msgid ""
-"Report time consumed by pipeline's execution.\n"
-" \n"
-" Execute PIPELINE and print a summary of the real time, user CPU time,\n"
-" and system CPU time spent executing PIPELINE when it terminates.\n"
-" \n"
-" Options:\n"
-" -p\tprint the timing summary in the portable Posix format\n"
-" \n"
-" The value of the TIMEFORMAT variable is used as the output format.\n"
-" \n"
-" Exit Status:\n"
-" The return status is the return status of PIPELINE."
-msgstr ""
-"Report time consumed by pipeline's execution.\n"
-" \n"
-" Execute PIPELINE and print a summary of the real time, user CPU time,\n"
-" and system CPU time spent executing PIPELINE when it terminates.\n"
-" \n"
-" Options:\n"
-" -p\tprint the timing summary in the portable Posix format\n"
-" \n"
-" The value of the TIMEFORMAT variable is used as the output format.\n"
-" \n"
-" Exit Status:\n"
-" The return status is the return status of PIPELINE."
-
-#: builtins.c:1580
-msgid ""
-"Execute commands based on pattern matching.\n"
-" \n"
-" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n"
-" `|' is used to separate multiple patterns.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-msgstr ""
-"Execute commands based on pattern matching.\n"
-" \n"
-" Selectively execute COMMANDS based upon WORD matching PATTERN. The\n"
-" ‘|’ is used to separate multiple patterns.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-
-#: builtins.c:1592
-msgid ""
-"Execute commands based on conditional.\n"
-" \n"
-" The `if COMMANDS' list is executed. If its exit status is zero, then "
-"the\n"
-" `then COMMANDS' list is executed. Otherwise, each `elif COMMANDS' list "
-"is\n"
-" executed in turn, and if its exit status is zero, the corresponding\n"
-" `then COMMANDS' list is executed and the if command completes. "
-"Otherwise,\n"
-" the `else COMMANDS' list is executed, if present. The exit status of "
-"the\n"
-" entire construct is the exit status of the last command executed, or "
-"zero\n"
-" if no condition tested true.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-msgstr ""
-"Execute commands based on conditional.\n"
-" \n"
-" The ‘if COMMANDS’ list is executed. If its exit status is zero, then "
-"the\n"
-" ‘then COMMANDS’ list is executed. Otherwise, each ‘elif COMMANDS’ list "
-"is\n"
-" executed in turn, and if its exit status is zero, the corresponding\n"
-" ‘then COMMANDS’ list is executed and the if command completes. "
-"Otherwise,\n"
-" the ‘else COMMANDS’ list is executed, if present. The exit status of "
-"the\n"
-" entire construct is the exit status of the last command executed, or "
-"zero\n"
-" if no condition tested true.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-
-#: builtins.c:1609
-msgid ""
-"Execute commands as long as a test succeeds.\n"
-" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `while' COMMANDS has an exit status of zero.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-msgstr ""
-"Execute commands as long as a test succeeds.\n"
-" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" ‘while’ COMMANDS has an exit status of zero.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-
-#: builtins.c:1621
-msgid ""
-"Execute commands as long as a test does not succeed.\n"
-" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" `until' COMMANDS has an exit status which is not zero.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-msgstr ""
-"Execute commands as long as a test does not succeed.\n"
-" \n"
-" Expand and execute COMMANDS as long as the final command in the\n"
-" ‘until’ COMMANDS has an exit status which is not zero.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-
-#: builtins.c:1633
-msgid ""
-"Create a coprocess named NAME.\n"
-" \n"
-" Execute COMMAND asynchronously, with the standard output and standard\n"
-" input of the command connected via a pipe to file descriptors assigned\n"
-" to indices 0 and 1 of an array variable NAME in the executing shell.\n"
-" The default NAME is \"COPROC\".\n"
-" \n"
-" Exit Status:\n"
-" Returns the exit status of COMMAND."
-msgstr ""
-"Create a coprocess named NAME.\n"
-" \n"
-" Execute COMMAND asynchronously, with the standard output and standard\n"
-" input of the command connected via a pipe to file descriptors assigned\n"
-" to indices 0 and 1 of an array variable NAME in the executing shell.\n"
-" The default NAME is “COPROC”.\n"
-" \n"
-" Exit Status:\n"
-" Returns the exit status of COMMAND."
-
-#: builtins.c:1647
-msgid ""
-"Define shell function.\n"
-" \n"
-" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is "
-"invoked,\n"
-" the arguments are passed to the function as $1...$n, and the function's\n"
-" name is in $FUNCNAME.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless NAME is readonly."
-msgstr ""
-"Define shell function.\n"
-" \n"
-" Create a shell function named NAME. When invoked as a simple command,\n"
-" NAME runs COMMANDs in the calling shell's context. When NAME is "
-"invoked,\n"
-" the arguments are passed to the function as $1...$n, and the function's\n"
-" name is in $FUNCNAME.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless NAME is readonly."
-
-#: builtins.c:1661
-msgid ""
-"Group commands as a unit.\n"
-" \n"
-" Run a set of commands in a group. This is one way to redirect an\n"
-" entire set of commands.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-msgstr ""
-"Group commands as a unit.\n"
-" \n"
-" Run a set of commands in a group. This is one way to redirect an\n"
-" entire set of commands.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the last command executed."
-
-#: builtins.c:1673
-msgid ""
-"Resume job in foreground.\n"
-" \n"
-" Equivalent to the JOB_SPEC argument to the `fg' command. Resume a\n"
-" stopped or background job. JOB_SPEC can specify either a job name\n"
-" or a job number. Following JOB_SPEC with a `&' places the job in\n"
-" the background, as if the job specification had been supplied as an\n"
-" argument to `bg'.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the resumed job."
-msgstr ""
-"Resume job in foreground.\n"
-" \n"
-" Equivalent to the JOB_SPEC argument to the ‘fg’ command. Resume a\n"
-" stopped or background job. JOB_SPEC can specify either a job name\n"
-" or a job number. Following JOB_SPEC with a ‘&’ places the job in\n"
-" the background, as if the job specification had been supplied as an\n"
-" argument to ‘bg’.\n"
-" \n"
-" Exit Status:\n"
-" Returns the status of the resumed job."
-
-#: builtins.c:1688
-msgid ""
-"Evaluate arithmetic expression.\n"
-" \n"
-" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
-" \n"
-" Exit Status:\n"
-" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-msgstr ""
-"Evaluate arithmetic expression.\n"
-" \n"
-" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to “let EXPRESSION”.\n"
-" \n"
-" Exit Status:\n"
-" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-
-#: builtins.c:1700
-msgid ""
-"Execute conditional command.\n"
-" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries "
-"used\n"
-" by the `test' builtin, and may be combined using the following "
-"operators:\n"
-" \n"
-" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
-" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
-" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
-" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
-" \n"
-" When the `==' and `!=' operators are used, the string to the right of\n"
-" the operator is used as a pattern and pattern matching is performed.\n"
-" When the `=~' operator is used, the string to the right of the operator\n"
-" is matched as a regular expression.\n"
-" \n"
-" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
-" determine the expression's value.\n"
-" \n"
-" Exit Status:\n"
-" 0 or 1 depending on value of EXPRESSION."
-msgstr ""
-"Execute conditional command.\n"
-" \n"
-" Returns a status of 0 or 1 depending on the evaluation of the "
-"conditional\n"
-" expression EXPRESSION. Expressions are composed of the same primaries "
-"used\n"
-" by the ‘test’ builtin, and may be combined using the following "
-"operators:\n"
-" \n"
-" ( EXPRESSION )\tReturns the value of EXPRESSION\n"
-" ! EXPRESSION\t\tTrue if EXPRESSION is false; else false\n"
-" EXPR1 && EXPR2\tTrue if both EXPR1 and EXPR2 are true; else false\n"
-" EXPR1 || EXPR2\tTrue if either EXPR1 or EXPR2 is true; else false\n"
-" \n"
-" When the ‘==’ and ‘!=’ operators are used, the string to the right of\n"
-" the operator is used as a pattern and pattern matching is performed.\n"
-" When the ‘=~’ operator is used, the string to the right of the operator\n"
-" is matched as a regular expression.\n"
-" \n"
-" The && and || operators do not evaluate EXPR2 if EXPR1 is sufficient to\n"
-" determine the expression's value.\n"
-" \n"
-" Exit Status:\n"
-" 0 or 1 depending on value of EXPRESSION."
-
-#: builtins.c:1726
-msgid ""
-"Common shell variable names and usage.\n"
-" \n"
-" BASH_VERSION\tVersion information for this Bash.\n"
-" CDPATH\tA colon-separated list of directories to search\n"
-" \t\tfor directories given as arguments to `cd'.\n"
-" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
-" \t\tbe ignored by pathname expansion.\n"
-" HISTFILE\tThe name of the file where your command history is stored.\n"
-" HISTFILESIZE\tThe maximum number of lines this file can contain.\n"
-" HISTSIZE\tThe maximum number of history lines that a running\n"
-" \t\tshell can access.\n"
-" HOME\tThe complete pathname to your login directory.\n"
-" HOSTNAME\tThe name of the current host.\n"
-" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n"
-" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n"
-" \t\tcharacter as the sole input. If set, then the value\n"
-" \t\tof it is the number of EOF characters that can be seen\n"
-" \t\tin a row on an empty line before the shell will exit\n"
-" \t\t(default 10). When unset, EOF signifies the end of input.\n"
-" MACHTYPE\tA string describing the current system Bash is running on.\n"
-" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
-" MAILPATH\tA colon-separated list of filenames which Bash checks\n"
-" \t\tfor new mail.\n"
-" OSTYPE\tThe version of Unix this version of Bash is running on.\n"
-" PATH\tA colon-separated list of directories to search when\n"
-" \t\tlooking for commands.\n"
-" PROMPT_COMMAND\tA command to be executed before the printing of each\n"
-" \t\tprimary prompt.\n"
-" PS1\t\tThe primary prompt string.\n"
-" PS2\t\tThe secondary prompt string.\n"
-" PWD\t\tThe full pathname of the current directory.\n"
-" SHELLOPTS\tA colon-separated list of enabled shell options.\n"
-" TERM\tThe name of the current terminal type.\n"
-" TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
-" \t\t`time' reserved word.\n"
-" auto_resume\tNon-null means a command word appearing on a line by\n"
-" \t\titself is first looked for in the list of currently\n"
-" \t\tstopped jobs. If found there, that job is foregrounded.\n"
-" \t\tA value of `exact' means that the command word must\n"
-" \t\texactly match a command in the list of stopped jobs. A\n"
-" \t\tvalue of `substring' means that the command word must\n"
-" \t\tmatch a substring of the job. Any other value means that\n"
-" \t\tthe command must be a prefix of a stopped job.\n"
-" histchars\tCharacters controlling history expansion and quick\n"
-" \t\tsubstitution. The first character is the history\n"
-" \t\tsubstitution character, usually `!'. The second is\n"
-" \t\tthe `quick substitution' character, usually `^'. The\n"
-" \t\tthird is the `history comment' character, usually `#'.\n"
-" HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
-" \t\tcommands should be saved on the history list.\n"
-msgstr ""
-"Common shell variable names and usage.\n"
-" \n"
-" BASH_VERSION\tVersion information for this Bash.\n"
-" CDPATH\tA colon-separated list of directories to search\n"
-" \t\tfor directories given as arguments to ‘cd’.\n"
-" GLOBIGNORE\tA colon-separated list of patterns describing filenames to\n"
-" \t\tbe ignored by pathname expansion.\n"
-" HISTFILE\tThe name of the file where your command history is stored.\n"
-" HISTFILESIZE\tThe maximum number of lines this file can contain.\n"
-" HISTSIZE\tThe maximum number of history lines that a running\n"
-" \t\tshell can access.\n"
-" HOME\tThe complete pathname to your login directory.\n"
-" HOSTNAME\tThe name of the current host.\n"
-" HOSTTYPE\tThe type of CPU this version of Bash is running under.\n"
-" IGNOREEOF\tControls the action of the shell on receipt of an EOF\n"
-" \t\tcharacter as the sole input. If set, then the value\n"
-" \t\tof it is the number of EOF characters that can be seen\n"
-" \t\tin a row on an empty line before the shell will exit\n"
-" \t\t(default 10). When unset, EOF signifies the end of input.\n"
-" MACHTYPE\tA string describing the current system Bash is running on.\n"
-" MAILCHECK\tHow often, in seconds, Bash checks for new mail.\n"
-" MAILPATH\tA colon-separated list of filenames which Bash checks\n"
-" \t\tfor new mail.\n"
-" OSTYPE\tThe version of Unix this version of Bash is running on.\n"
-" PATH\tA colon-separated list of directories to search when\n"
-" \t\tlooking for commands.\n"
-" PROMPT_COMMAND\tA command to be executed before the printing of each\n"
-" \t\tprimary prompt.\n"
-" PS1\t\tThe primary prompt string.\n"
-" PS2\t\tThe secondary prompt string.\n"
-" PWD\t\tThe full pathname of the current directory.\n"
-" SHELLOPTS\tA colon-separated list of enabled shell options.\n"
-" TERM\tThe name of the current terminal type.\n"
-" TIMEFORMAT\tThe output format for timing statistics displayed by the\n"
-" \t\t‘time’ reserved word.\n"
-" auto_resume\tNon-null means a command word appearing on a line by\n"
-" \t\titself is first looked for in the list of currently\n"
-" \t\tstopped jobs. If found there, that job is foregrounded.\n"
-" \t\tA value of ‘exact’ means that the command word must\n"
-" \t\texactly match a command in the list of stopped jobs. A\n"
-" \t\tvalue of ‘substring’ means that the command word must\n"
-" \t\tmatch a substring of the job. Any other value means that\n"
-" \t\tthe command must be a prefix of a stopped job.\n"
-" histchars\tCharacters controlling history expansion and quick\n"
-" \t\tsubstitution. The first character is the history\n"
-" \t\tsubstitution character, usually ‘!’. The second is\n"
-" \t\tthe ‘quick substitution’ character, usually ‘^’. The\n"
-" \t\tthird is the ‘history comment’ character, usually ‘#’.\n"
-" HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
-" \t\tcommands should be saved on the history list.\n"
-
-#: builtins.c:1783
-msgid ""
-"Add directories to stack.\n"
-" \n"
-" Adds a directory to the top of the directory stack, or rotates\n"
-" the stack, making the new top of the stack the current working\n"
-" directory. With no arguments, exchanges the top two directories.\n"
-" \n"
-" Options:\n"
-" -n\tSuppresses the normal change of directory when adding\n"
-" \tdirectories to the stack, so only the stack is manipulated.\n"
-" \n"
-" Arguments:\n"
-" +N\tRotates the stack so that the Nth directory (counting\n"
-" \tfrom the left of the list shown by `dirs', starting with\n"
-" \tzero) is at the top.\n"
-" \n"
-" -N\tRotates the stack so that the Nth directory (counting\n"
-" \tfrom the right of the list shown by `dirs', starting with\n"
-" \tzero) is at the top.\n"
-" \n"
-" dir\tAdds DIR to the directory stack at the top, making it the\n"
-" \tnew current working directory.\n"
-" \n"
-" The `dirs' builtin displays the directory stack.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid argument is supplied or the directory\n"
-" change fails."
-msgstr ""
-"Add directories to stack.\n"
-" \n"
-" Adds a directory to the top of the directory stack, or rotates\n"
-" the stack, making the new top of the stack the current working\n"
-" directory. With no arguments, exchanges the top two directories.\n"
-" \n"
-" Options:\n"
-" -n\tSuppresses the normal change of directory when adding\n"
-" \tdirectories to the stack, so only the stack is manipulated.\n"
-" \n"
-" Arguments:\n"
-" +N\tRotates the stack so that the Nth directory (counting\n"
-" \tfrom the left of the list shown by ‘dirs’, starting with\n"
-" \tzero) is at the top.\n"
-" \n"
-" -N\tRotates the stack so that the Nth directory (counting\n"
-" \tfrom the right of the list shown by ‘dirs’, starting with\n"
-" \tzero) is at the top.\n"
-" \n"
-" dir\tAdds DIR to the directory stack at the top, making it the\n"
-" \tnew current working directory.\n"
-" \n"
-" The ‘dirs’ builtin displays the directory stack.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid argument is supplied or the directory\n"
-" change fails."
-
-#: builtins.c:1817
-msgid ""
-"Remove directories from stack.\n"
-" \n"
-" Removes entries from the directory stack. With no arguments, removes\n"
-" the top directory from the stack, and changes to the new top directory.\n"
-" \n"
-" Options:\n"
-" -n\tSuppresses the normal change of directory when removing\n"
-" \tdirectories from the stack, so only the stack is manipulated.\n"
-" \n"
-" Arguments:\n"
-" +N\tRemoves the Nth entry counting from the left of the list\n"
-" \tshown by `dirs', starting with zero. For example: `popd +0'\n"
-" \tremoves the first directory, `popd +1' the second.\n"
-" \n"
-" -N\tRemoves the Nth entry counting from the right of the list\n"
-" \tshown by `dirs', starting with zero. For example: `popd -0'\n"
-" \tremoves the last directory, `popd -1' the next to last.\n"
-" \n"
-" The `dirs' builtin displays the directory stack.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid argument is supplied or the directory\n"
-" change fails."
-msgstr ""
-"Remove directories from stack.\n"
-" \n"
-" Removes entries from the directory stack. With no arguments, removes\n"
-" the top directory from the stack, and changes to the new top directory.\n"
-" \n"
-" Options:\n"
-" -n\tSuppresses the normal change of directory when removing\n"
-" \tdirectories from the stack, so only the stack is manipulated.\n"
-" \n"
-" Arguments:\n"
-" +N\tRemoves the Nth entry counting from the left of the list\n"
-" \tshown by ‘dirs’, starting with zero. For example: ‘popd +0’\n"
-" \tremoves the first directory, ‘popd +1’ the second.\n"
-" \n"
-" -N\tRemoves the Nth entry counting from the right of the list\n"
-" \tshown by ‘dirs’, starting with zero. For example: ‘popd -0’\n"
-" \tremoves the last directory, ‘popd -1’ the next to last.\n"
-" \n"
-" The ‘dirs’ builtin displays the directory stack.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid argument is supplied or the directory\n"
-" change fails."
-
-#: builtins.c:1847
-msgid ""
-"Display directory stack.\n"
-" \n"
-" Display the list of currently remembered directories. Directories\n"
-" find their way onto the list with the `pushd' command; you can get\n"
-" back up through the list with the `popd' command.\n"
-" \n"
-" Options:\n"
-" -c\tclear the directory stack by deleting all of the elements\n"
-" -l\tdo not print tilde-prefixed versions of directories relative\n"
-" \tto your home directory\n"
-" -p\tprint the directory stack with one entry per line\n"
-" -v\tprint the directory stack with one entry per line prefixed\n"
-" \twith its position in the stack\n"
-" \n"
-" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-" \tdirs when invoked without options, starting with zero.\n"
-" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-" \tdirs when invoked without options, starting with zero.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-"Display directory stack.\n"
-" \n"
-" Display the list of currently remembered directories. Directories\n"
-" find their way onto the list with the ‘pushd’ command; you can get\n"
-" back up through the list with the ‘popd’ command.\n"
-" \n"
-" Options:\n"
-" -c\tclear the directory stack by deleting all of the elements\n"
-" -l\tdo not print tilde-prefixed versions of directories relative\n"
-" \tto your home directory\n"
-" -p\tprint the directory stack with one entry per line\n"
-" -v\tprint the directory stack with one entry per line prefixed\n"
-" \twith its position in the stack\n"
-" \n"
-" Arguments:\n"
-" +N\tDisplays the Nth entry counting from the left of the list shown "
-"by\n"
-" \tdirs when invoked without options, starting with zero.\n"
-" \n"
-" -N\tDisplays the Nth entry counting from the right of the list shown "
-"by\n"
-" \tdirs when invoked without options, starting with zero.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or an error occurs."
-
-#: builtins.c:1876
-msgid ""
-"Set and unset shell options.\n"
-" \n"
-" Change the setting of each shell option OPTNAME. Without any option\n"
-" arguments, list all shell options with an indication of whether or not "
-"each\n"
-" is set.\n"
-" \n"
-" Options:\n"
-" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
-" -p\tprint each shell option with an indication of its status\n"
-" -q\tsuppress output\n"
-" -s\tenable (set) each OPTNAME\n"
-" -u\tdisable (unset) each OPTNAME\n"
-" \n"
-" Exit Status:\n"
-" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
-" given or OPTNAME is disabled."
-msgstr ""
-"Set and unset shell options.\n"
-" \n"
-" Change the setting of each shell option OPTNAME. Without any option\n"
-" arguments, list all shell options with an indication of whether or not "
-"each\n"
-" is set.\n"
-" \n"
-" Options:\n"
-" -o\trestrict OPTNAMEs to those defined for use with ‘set -o’\n"
-" -p\tprint each shell option with an indication of its status\n"
-" -q\tsuppress output\n"
-" -s\tenable (set) each OPTNAME\n"
-" -u\tdisable (unset) each OPTNAME\n"
-" \n"
-" Exit Status:\n"
-" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
-" given or OPTNAME is disabled."
-
-#: builtins.c:1897
-#, fuzzy
-msgid ""
-"Formats and prints ARGUMENTS under control of the FORMAT.\n"
-" \n"
-" Options:\n"
-" -v var\tassign the output to shell variable VAR rather than\n"
-" \t\tdisplay it on the standard output\n"
-" \n"
-" FORMAT is a character string which contains three types of objects: "
-"plain\n"
-" characters, which are simply copied to standard output; character "
-"escape\n"
-" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next "
-"successive\n"
-" argument.\n"
-" \n"
-" In addition to the standard format specifications described in printf"
-"(1),\n"
-" printf interprets:\n"
-" \n"
-" %b\texpand backslash escape sequences in the corresponding argument\n"
-" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T output the date-time string resulting from using FMT as a "
-"format\n"
-" string for strftime(3)\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or "
-"assignment\n"
-" error occurs."
-msgstr ""
-"Formats and prints ARGUMENTS under control of the FORMAT.\n"
-" \n"
-" Options:\n"
-" -v var\tassign the output to shell variable VAR rather than\n"
-" \t\tdisplay it on the standard output\n"
-" \n"
-" FORMAT is a character string which contains three types of objects: "
-"plain\n"
-" characters, which are simply copied to standard output; character "
-"escape\n"
-" sequences, which are converted and copied to the standard output; and\n"
-" format specifications, each of which causes printing of the next "
-"successive\n"
-" argument.\n"
-" \n"
-" In addition to the standard format specifications described in printf"
-"(1)\n"
-" and printf(3), printf interprets:\n"
-" \n"
-" %b\texpand backslash escape sequences in the corresponding argument\n"
-" %q\tquote the argument in a way that can be reused as shell input\n"
-" %(fmt)T output the date-time string resulting from using FMT as a "
-"format\n"
-" string for strftime(3)\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or a write or "
-"assignment\n"
-" error occurs."
-
-#: builtins.c:1926
-msgid ""
-"Specify how arguments are to be completed by Readline.\n"
-" \n"
-" For each NAME, specify how arguments are to be completed. If no "
-"options\n"
-" are supplied, existing completion specifications are printed in a way "
-"that\n"
-" allows them to be reused as input.\n"
-" \n"
-" Options:\n"
-" -p\tprint existing completion specifications in a reusable format\n"
-" -r\tremove a completion specification for each NAME, or, if no\n"
-" \tNAMEs are supplied, all completion specifications\n"
-" -D\tapply the completions and actions as the default for commands\n"
-" \twithout any specific completion defined\n"
-" -E\tapply the completions and actions to \"empty\" commands --\n"
-" \tcompletion attempted on a blank line\n"
-" \n"
-" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. The -D option takes\n"
-" precedence over -E.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-"Specify how arguments are to be completed by Readline.\n"
-" \n"
-" For each NAME, specify how arguments are to be completed. If no "
-"options\n"
-" are supplied, existing completion specifications are printed in a way "
-"that\n"
-" allows them to be reused as input.\n"
-" \n"
-" Options:\n"
-" -p\tprint existing completion specifications in a reusable format\n"
-" -r\tremove a completion specification for each NAME, or, if no\n"
-" \tNAMEs are supplied, all completion specifications\n"
-" -D\tapply the completions and actions as the default for commands\n"
-" \twithout any specific completion defined\n"
-" -E\tapply the completions and actions to “empty” commands --\n"
-" \tcompletion attempted on a blank line\n"
-" \n"
-" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. The -D option takes\n"
-" precedence over -E.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or an error occurs."
-
-#: builtins.c:1954
-msgid ""
-"Display possible completions depending on the options.\n"
-" \n"
-" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches "
-"against\n"
-" WORD are generated.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or an error occurs."
-msgstr ""
-"Display possible completions depending on the options.\n"
-" \n"
-" Intended to be used from within a shell function generating possible\n"
-" completions. If the optional WORD argument is supplied, matches "
-"against\n"
-" WORD are generated.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or an error occurs."
-
-#: builtins.c:1969
-msgid ""
-"Modify or display completion options.\n"
-" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, "
-"print\n"
-" the completion options for each NAME or the current completion "
-"specification.\n"
-" \n"
-" Options:\n"
-" \t-o option\tSet completion option OPTION for each NAME\n"
-" \t-D\t\tChange options for the \"default\" command completion\n"
-" \t-E\t\tChange options for the \"empty\" command completion\n"
-" \n"
-" Using `+o' instead of `-o' turns off the specified option.\n"
-" \n"
-" Arguments:\n"
-" \n"
-" Each NAME refers to a command for which a completion specification must\n"
-" have previously been defined using the `complete' builtin. If no NAMEs\n"
-" are supplied, compopt must be called by a function currently generating\n"
-" completions, and the options for that currently-executing completion\n"
-" generator are modified.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or NAME does not\n"
-" have a completion specification defined."
-msgstr ""
-"Modify or display completion options.\n"
-" \n"
-" Modify the completion options for each NAME, or, if no NAMEs are "
-"supplied,\n"
-" the completion currently being executed. If no OPTIONs are given, "
-"print\n"
-" the completion options for each NAME or the current completion "
-"specification.\n"
-" \n"
-" Options:\n"
-" \t-o option\tSet completion option OPTION for each NAME\n"
-" \t-D\t\tChange options for the “default” command completion\n"
-" \t-E\t\tChange options for the “empty” command completion\n"
-" \n"
-" Using ‘+o’ instead of ‘-o’ turns off the specified option.\n"
-" \n"
-" Arguments:\n"
-" \n"
-" Each NAME refers to a command for which a completion specification must\n"
-" have previously been defined using the ‘complete’ builtin. If no NAMEs\n"
-" are supplied, compopt must be called by a function currently generating\n"
-" completions, and the options for that currently-executing completion\n"
-" generator are modified.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is supplied or NAME does not\n"
-" have a completion specification defined."
-
-#: builtins.c:1999
-msgid ""
-"Read lines from the standard input into an indexed array variable.\n"
-" \n"
-" Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable "
-"MAPFILE\n"
-" is the default ARRAY.\n"
-" \n"
-" Options:\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
-"copied.\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
-"index is 0.\n"
-" -s count \tDiscard the first COUNT lines read.\n"
-" -t\t\tRemove a trailing newline from each line read.\n"
-" -u fd\t\tRead lines from file descriptor FD instead of the standard "
-"input.\n"
-" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n"
-" -c quantum\tSpecify the number of lines read between each call to "
-"CALLBACK.\n"
-" \n"
-" Arguments:\n"
-" ARRAY\t\tArray variable name to use for file data.\n"
-" \n"
-" If -C is supplied without -c, the default quantum is 5000. When\n"
-" CALLBACK is evaluated, it is supplied the index of the next array\n"
-" element to be assigned and the line to be assigned to that element\n"
-" as additional arguments.\n"
-" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
-" assigning to it.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
-" not an indexed array."
-msgstr ""
-"Read lines from the standard input into an indexed array variable.\n"
-" \n"
-" Read lines from the standard input into the indexed array variable "
-"ARRAY, or\n"
-" from file descriptor FD if the -u option is supplied. The variable "
-"MAPFILE\n"
-" is the default ARRAY.\n"
-" \n"
-" Options:\n"
-" -n count\tCopy at most COUNT lines. If COUNT is 0, all lines are "
-"copied.\n"
-" -O origin\tBegin assigning to ARRAY at index ORIGIN. The default "
-"index is 0.\n"
-" -s count \tDiscard the first COUNT lines read.\n"
-" -t\t\tRemove a trailing newline from each line read.\n"
-" -u fd\t\tRead lines from file descriptor FD instead of the standard "
-"input.\n"
-" -C callback\tEvaluate CALLBACK each time QUANTUM lines are read.\n"
-" -c quantum\tSpecify the number of lines read between each call to "
-"CALLBACK.\n"
-" \n"
-" Arguments:\n"
-" ARRAY\t\tArray variable name to use for file data.\n"
-" \n"
-" If -C is supplied without -c, the default quantum is 5000. When\n"
-" CALLBACK is evaluated, it is supplied the index of the next array\n"
-" element to be assigned and the line to be assigned to that element\n"
-" as additional arguments.\n"
-" \n"
-" If not supplied with an explicit origin, mapfile will clear ARRAY "
-"before\n"
-" assigning to it.\n"
-" \n"
-" Exit Status:\n"
-" Returns success unless an invalid option is given or ARRAY is readonly "
-"or\n"
-" not an indexed array."
-
-#: builtins.c:2033
-msgid ""
-"Read lines from a file into an array variable.\n"
-" \n"
-" A synonym for `mapfile'."
-msgstr ""
-"Read lines from a file into an array variable.\n"
-" \n"
-" A synonym for ‘mapfile’."
+++ /dev/null
-#! /bin/bash
-
-DATE=$(date +%Y%m%d)
-
-PARENT=/fs2/chet/bash
-FROOT=bash-$DATE
-DIR=$PARENT/$FROOT
-TARF=${FROOT}.tar
-SRC=/usr/homes/chet/src/bash/src
-
-fflag= sflag= dflag=
-while getopts "dfsp:" opt
-do
- case $opt in
- d) dflag=1 ;;
- f) fflag=1 ;;
- p) PARENT=$OPTARG
- if [ ! -d "$PARENT" ]; then
- echo "mk-takehome: $PARENT: directory does not exist" 2>&1
- exit 2
- fi ;;
- s) sflag=1 ;;
- *) echo "mk-takehome: usage: mk-takehome [-dfs]" 2>&1
- exit 2;;
- esac
-done
-
-shift $(($OPTIND - 1))
-
-if [ -n "$fflag" ]; then
- rm -rf "$DIR"
-fi
-
-mkdir $DIR || exit 1
-
-cd $DIR || exit 1
-
-cd $SRC || exit 1
-
-tar cf - . | (cd $DIR ; tar xvpf - )
-
-cd $DIR || exit 1
-
-find . -type f -name '*~' -print | xargs rm -f
-
-find . -type d -name 'savedir' -print | xargs rm -rf
-
-rm parser-built y.tab.c y.tab.h
-# bison -y -d parse.y # make sure y.tab.h present for dependencies
-
-rm -f d d? ddd ddd? # convention for temp diff files
-
-cd $PARENT || exit 1
-
-tar cvf ${TARF} $FROOT
-
-gzip -v ${TARF}
-
-REMHOST=z4
-
-if [ -n "$sflag" ]; then
- scp ${TARF}.gz ${REMHOST}:
-fi
-
-if [ -n "$dflag" ]; then
- if [ ! -d $HOME/Dropbox ]; then
- HOME=~chet
- fi
- cp ${TARF}.gz $HOME/Dropbox/
-fi
+++ /dev/null
-BUILD_DIR=/usr/local/build/bash/bash-20041216-gprof
-THIS_SH=$BUILD_DIR/bash
-PATH=$PATH:$BUILD_DIR
-
-export THIS_SH PATH
-
-rm -f /tmp/xx
-
-/bin/sh "$@"
+++ /dev/null
-BUILD_DIR=/usr/local/build/bash/bash-current
-THIS_SH=ksh93
-PATH=$PATH:$BUILD_DIR
-
-export THIS_SH PATH
-
-rm -f /tmp/xx
-
-/bin/sh "$@"
+++ /dev/null
-echo ff{c,b,a}
-echo f{d,e,f}g
-echo {l,n,m}xyz
-echo {abc\,def}
-echo {abc}
-
-echo \{a,b,c,d,e}
-echo {x,y,\{a,b,c}}
-echo {x\,y,\{abc\},trie}
-
-echo /usr/{ucb/{ex,edit},lib/{ex,how_ex}}
-
-echo XXXX\{`echo a b c | tr ' ' ','`\}
-eval echo XXXX\{`echo a b c | tr ' ' ','`\}
-
-echo {}
-echo { }
-echo }
-echo {
-echo abcd{efgh
-
-echo foo {1,2} bar
-echo `zecho foo {1,2} bar`
-echo $(zecho foo {1,2} bar)
+++ /dev/null
-VAR='[[:alpha:]]'
-
-[[ $VAR =~ '[[:alpha:]]' ]] && echo match 1
-
-[[ a =~ '[[:alpha:]]' ]] || echo match 2
-
-[[ a =~ [[:alpha:]] ]] && echo match 3
-
-[[ a =~ $VAR ]] && echo match 4
-
-[[ a =~ "$VAR" ]] || echo match 5
-
-line=aab
-[[ $line =~ [[:space:]]*(a)?b ]] && echo match 6
-
-V="alphabet"
-[[ $V == alphabet ]] && echo yes 1
-[[ $V == "alphabet" ]] && echo yes 2
-[[ $V == 'alphabet' ]] && echo yes 3
-[[ $V =~ alphabet ]] && echo yes 4
-[[ $V =~ "alphabet" ]] && echo yes 5
-[[ $V =~ 'alphabet' ]] && echo yes 6
-
-DOG="Dog name - 01 - Wiggles"
-REPAT='([[:alpha:][:blank:]]*)- ([[:digit:]]*) - (.*)$'
-if [[ $DOG =~ ([[:alpha:][:blank:]]*)-\ ([[:digit:]]*)\ -\ (.*)$ ]]
-then
- echo Dog ${BASH_REMATCH[2]} is ${BASH_REMATCH[3]}
-fi
-if [[ $DOG =~ $REPAT ]]
-then
- echo Dog ${BASH_REMATCH[2]} is ${BASH_REMATCH[3]}
-fi
-
-[[ $REPAT =~ "$REPAT" ]] && echo rematch 1
-
-v="one two buckle my shoe"
-[[ ${v} =~ "one two" ]] && echo matches 7
-
-[[ ${v} =~ (one two) ]] && echo matches 8
-
-[[ ${v} =~ one\ two ]] && echo matches 9
-
-# problems in pre-patched bash-4.2
-[[ "hello\ 1world" =~ llo\ 1 ]] && echo match control-a 1
-[[ "hello\ 1world" =~ \ 1world ]] && echo match control-a 2
-[[ "hello\ 1world" =~ \ 1world$ ]] && echo match control-a 3
-[[ "hello\ 1world" =~ \ 1 ]] && echo match control-a 4
-[[ "hello\ 1world" =~ o\ 1world$ ]] && echo match control-a 5
+++ /dev/null
-a()
-{
- cat <<-'+' | tr "\t" " " | tr -s " "
- cat - | utkSort
- itkSchemaToColumnType
- atkCacheToColumnType \"$npName\" | atkActiveTableLineSelect
-| utkSort
- atkCacheToColumnType \"$npName\" |
-atkTransactionTableLineSelect | utkSort
- itkDirToColumnType \"$dirName\" | atkActiveTableLineSelect |
-utkSort
- itkDirToColumnType \"$dirName\" | atkActiveTableLineSelect |
-utkSort
- +
-}
-
-type a
-
-b()
-{
- cat /etc/passwd | cat - <<-'+' | tr -s " "
- more
- passwords
- from
- the
- file
- +
-}
-
-type b
-
-c()
-{
- cat /etc/passwd | tr -s " " | cat - <<-'+' | cat - <<-'foo'
- more
- passwords
- from
- the
- file
- +
-last
-bunch
-of
-words
-foo
-}
-
-type c
+++ /dev/null
-1
-2
-3
-4
+++ /dev/null
-if : ; then
- set -e
- N=95
- while :; do
- # expr returns 1 if expression is null or 0
- set +e
- N_MOD_100=`expr $N % 100`
- set -e
- echo $N_MOD_100
- N=`expr $N + 1`
- if [ $N -eq 110 ]; then
- break
- fi
- done
- set +e
-fi
-
-(
-set -e
-false
-echo bad
-)
-echo $?
-
-x=$(
-set -e
-false
-echo bad
-)
-echo $? $x
-
-# command subst should not inherit -e
-set -e
-echo $(false; echo ok)
-
-if set +e
-then
- false
-fi
-echo hi
-
-set -e
-
-# a failing command in the compound list following a while, until, or
-# if should not cause the shell to exit
-
-while false; do
- echo hi
-done
-echo while succeeded
-
-x=1
-until (( x == 4 )); do
- x=4
-done
-echo until succeeded: $x
-
-if false; then
- echo oops
-fi
-echo if succeeded
-
-# failing commands that are part of an AND or OR list should not
-# cause the shell to exit
-false && echo AND list failed
-echo AND list succeeded
-
-false || echo OR list succeeded
-
-! false
-echo ! succeeded
-
-# make sure eval preserves the state of the -e flag and `!' reserved word
-set -e
-if eval false; then
- echo oops
-fi
-echo eval succeeded
-
-! eval false
-echo ! eval succeeded -- 1
-
-! eval '(exit 5)'
-echo ! eval succeeded -- 2
-
-set -e
-until builtin false; do echo a; break; done
-echo $?
-
-until eval false; do echo b; break; done
-echo $?
-
-: ${TMPDIR:=/tmp}
-FN=$TMPDIR/set-e-$$
-cat > $FN << EOF
-false
-echo after 1
-false
-EOF
-
-set -e
-until . $FN; do echo a; break; done
-echo $?
-
-rm -f $FN
+++ /dev/null
-# this is needed because posix mode restricts tilde expansion to assignment
-# statements preceding a command, instead of the default of expanding all
-# assignment statements on the line (e.g., after `export'). Without this,
-# the next-to-last test fails
-set +o posix
-
-HOME=/usr/xyz
-SHELL=~/bash
-echo ~ch\et
-echo ~/"foo"
-echo "~chet"/"foo"
-echo \~chet/"foo"
-echo \~chet/bar
-echo ~\chet/bar
-echo ~chet""/bar
-echo ":~chet/"
-echo abcd~chet
-echo "SHELL=~/bash"
-echo $SHELL
-echo abcd:~chet
-path=/usr/ucb:/bin:~/bin:~/tmp/bin:/usr/bin
-echo $path
-
-cd /usr
-cd /tmp
-echo ~-
-echo ~+
-
-XPATH=/bin:/usr/bin:.
-
-# yes tilde expansion
-PPATH=$XPATH:~/bin
-echo "$PPATH"
-
-# no tilde expansion
-PPATH="$XPATH:~/bin"
-echo "$PPATH"
-
-# yes tilde expansion
-export PPATH=$XPATH:~/bin
-echo "$PPATH"
-declare -x PPATH=$XPATH:~/bin
-echo "$PPATH"
-
-# no tilde expansion
-export PPATH="$XPATH:~/bin"
-echo "$PPATH"
-declare -x PPATH="$XPATH:~/bin"
-echo "$PPATH"
-
-# more tests of tilde expansion when executing case commands
-case ~ in
-$HOME) echo ok 1;;
-*) echo bad 1 ;;
-esac
-
-case ~ in
-~) echo ok 2 ;;
-\~) echo bad 2a ;;
-*) echo bad 2b ;;
-esac
-
-case $unset in
-"") echo ok 3 ;;
-*) echo bad 3 ;;
-esac