From: Chet Ramey Date: Tue, 4 Feb 2014 14:48:38 +0000 (-0500) Subject: bash-20140131 remove leftover and stray files X-Git-Tag: bash-4.4-alpha~99 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=387affeb7431a5e3a14e683f9312ab13b4bcb114;p=thirdparty%2Fbash.git bash-20140131 remove leftover and stray files --- diff --git a/CWRU/history-syslog.1 b/CWRU/history-syslog.1 deleted file mode 100644 index d5240d371..000000000 --- a/CWRU/history-syslog.1 +++ /dev/null @@ -1,47 +0,0 @@ -#Date: Mon, 14 Dec 1998 23:10:43 -0800 -#From: John Kinsella -#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) -+ */ -+ #define SYSLOG_HISTORY 1 -+ -+ #if defined (SYSLOG_HISTORY) -+ # include -+ #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 -+ * 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 diff --git a/CWRU/misc/sigs.dSYM/Contents/Info.plist b/CWRU/misc/sigs.dSYM/Contents/Info.plist deleted file mode 100644 index 078424b90..000000000 --- a/CWRU/misc/sigs.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.sigs - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/CWRU/misc/sigs.dSYM/Contents/Resources/DWARF/sigs b/CWRU/misc/sigs.dSYM/Contents/Resources/DWARF/sigs deleted file mode 100644 index 09e76fd95..000000000 Binary files a/CWRU/misc/sigs.dSYM/Contents/Resources/DWARF/sigs and /dev/null differ diff --git a/CWRU/misc/sigstat.dSYM/Contents/Info.plist b/CWRU/misc/sigstat.dSYM/Contents/Info.plist deleted file mode 100644 index 801b23e99..000000000 --- a/CWRU/misc/sigstat.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.sigstat - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/CWRU/misc/sigstat.dSYM/Contents/Resources/DWARF/sigstat b/CWRU/misc/sigstat.dSYM/Contents/Resources/DWARF/sigstat deleted file mode 100644 index c7e7682c6..000000000 Binary files a/CWRU/misc/sigstat.dSYM/Contents/Resources/DWARF/sigstat and /dev/null differ diff --git a/builtins/readsave b/builtins/readsave deleted file mode 100644 index 8c26c792c..000000000 --- a/builtins/readsave +++ /dev/null @@ -1,17 +0,0 @@ -#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 diff --git a/doc/Makefile.tmp b/doc/Makefile.tmp deleted file mode 100644 index 76763dd11..000000000 --- a/doc/Makefile.tmp +++ /dev/null @@ -1,294 +0,0 @@ -# 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 diff --git a/doc/foo.html b/doc/foo.html deleted file mode 100644 index 92de12e1e..000000000 --- a/doc/foo.html +++ /dev/null @@ -1,10220 +0,0 @@ - - -Bash Reference Manual - - - - - - - - - - -

Bash Reference Manual

-
-

Table of Contents

- -
- - - -
-


- -Next: , -Previous: (dir), -Up: (dir) - -
- -

Bash Features

- -

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. - -

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 (sh), the Korn Shell -(ksh), and the C-shell (csh and its successor, -tcsh). The following menu breaks the features up into -categories based upon which one of these other shells inspired the -feature. - -

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. - -

- -
-


- -Next: , -Previous: Top, -Up: Top - -
- -

1 Introduction

- - - -
-


- - -Next: , -Up: Introduction - -
- -

1.1 What is Bash?

- -

Bash is the shell, or command language interpreter, -for the gnu operating system. -The name is an acronym for the `Bourne-Again SHell', -a pun on Stephen Bourne, the author of the direct ancestor of -the current Unix shell sh, -which appeared in the Seventh Edition Bell Labs Research version -of Unix. - -

Bash is largely compatible with sh and incorporates useful -features from the Korn shell ksh and the C shell csh. -It is intended to be a conformant implementation of the ieee -posix Shell and Tools portion of the ieee posix -specification (ieee Standard 1003.1). -It offers functional improvements over sh for both interactive and -programming use. - -

While the gnu operating system provides other shells, including -a version of csh, Bash is the default shell. -Like other gnu software, Bash is quite portable. It currently runs -on nearly every version of Unix and a few other operating systems − -independently-supported ports exist for ms-dos, os/2, -and Windows platforms. - -

-


- - -Previous: What is Bash?, -Up: Introduction - -
- -

1.2 What is a shell?

- -

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. - -

A Unix shell is both a command interpreter and a programming -language. As a command interpreter, the shell provides the user -interface to the rich set of gnu utilities. The programming -language features allow these utilities to be combined. -Files containing commands can be created, and become -commands themselves. These new commands have the same status as -system commands in directories such as /bin, allowing users -or groups to establish custom environments to automate their common -tasks. - -

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. - -

A shell allows execution of gnu commands, both synchronously and -asynchronously. -The shell waits for synchronous commands to complete before accepting -more input; asynchronous commands continue to execute in parallel -with the shell while it reads and executes additional commands. -The redirection constructs permit -fine-grained control of the input and output of those commands. -Moreover, the shell allows control over the contents of commands' -environments. - -

Shells also provide a small set of built-in -commands (builtins) implementing functionality impossible -or inconvenient to obtain via separate utilities. -For example, cd, break, continue, and -exec) cannot be implemented outside of the shell because -they directly manipulate the shell itself. -The history, getopts, kill, or pwd -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. - -

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. - -

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. - -

-


- -Next: , -Previous: Introduction, -Up: Top - -
- -

2 Definitions

- -

These definitions are used throughout the remainder of this manual. - -

-
POSIX
A family of open system standards based on Unix. Bash -is primarily concerned with the Shell and Utilities portion of the -posix 1003.1 standard. - -
blank
A space or tab character. - -
builtin
A command that is implemented internally by the shell itself, rather -than by an executable program somewhere in the file system. - -
control operator
A word that performs a control function. It is a newline -or one of the following: -`||', `&&', `&', `;', `;;', -`|', `(', or `)'. - -
exit status
The value returned by a command to its caller. The value is restricted -to eight bits, so the maximum value is 255. - -
field
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. - -
filename
A string of characters used to identify a file. - -
job
A set of processes comprising a pipeline, and any processes descended -from it, that are all in the same process group. - -
job control
A mechanism by which users can selectively stop (suspend) and restart -(resume) execution of processes. - -
metacharacter
A character that, when unquoted, separates words. A metacharacter is -a blank or one of the following characters: -`|', `&', `;', `(', `)', `<', or -`>'. - -
name
A word consisting solely of letters, numbers, and underscores, -and beginning with a letter or underscore. Names are used as -shell variable and function names. -Also referred to as an identifier. - -
operator
A control operator or a redirection operator. -See Redirections, for a list of redirection operators. - -
process group
A collection of related processes each having the same process -group id. - -
process group ID
A unique identifier that represents a process group -during its lifetime. - -
reserved word
A word that has a special meaning to the shell. Most reserved -words introduce shell flow control constructs, such as for and -while. - -
return status
A synonym for exit status. - -
signal
A mechanism by which a process may be notified by the kernel -of an event occurring in the system. - -
special builtin
A shell builtin command that has been classified as special by the -posix standard. - -
token
A sequence of characters considered a single unit by the shell. It is -either a word or an operator. - -
word
A token that is not an operator. -
- -
-


- -Next: , -Previous: Definitions, -Up: Top - -
- -

3 Basic Shell Features

- -

-Bash is an acronym for `Bourne-Again SHell'. -The Bourne shell is -the traditional Unix shell originally written by Stephen Bourne. -All of the Bourne shell builtin commands are available in Bash, -The rules for evaluation and quoting are taken from the posix -specification for the `standard' Unix shell. - -

This chapter briefly summarizes the shell's `building blocks': -commands, control structures, shell functions, shell parameters, -shell expansions, -redirections, which are a way to direct input and output from -and to named files, and how the shell executes commands. - -

- -
-


- -Next: , -Up: Basic Shell Features - -
- -

3.1 Shell Syntax

- - - -

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 (`#'), and the rest -of that line. - -

Otherwise, roughly speaking, the shell reads its input and -divides the input into words and operators, employing the quoting rules -to select which meanings to assign various words and characters. - -

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. - -

-


- -Next: , -Up: Shell Syntax - -
- -

3.1.1 Shell Operation

- -

The following is a brief description of the shell's operation when it -reads and executes a command. Basically, the shell does the -following: - -

    -
  1. Reads its input from a file (see Shell Scripts), from a string -supplied as an argument to the -c invocation option -(see Invoking Bash), or from the user's terminal. - -
  2. Breaks the input into words and operators, obeying the quoting rules -described in Quoting. These tokens are separated by -metacharacters. Alias expansion is performed by this step -(see Aliases). - -
  3. Parses the tokens into simple and compound commands -(see Shell Commands). - -
  4. Performs the various shell expansions (see Shell Expansions), breaking -the expanded tokens into lists of filenames (see Filename Expansion) -and commands and arguments. - -
  5. Performs any necessary redirections (see Redirections) and removes -the redirection operators and their operands from the argument list. - -
  6. Executes the command (see Executing Commands). - -
  7. Optionally waits for the command to complete and collects its exit -status (see Exit Status). - -
- -
-


- -Next: , -Previous: Shell Operation, -Up: Shell Syntax - -
- -

3.1.2 Quoting

- -

- -

- -

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. - -

Each of the shell metacharacters (see Definitions) -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 History Interaction), the -history expansion character, usually `!', must be quoted -to prevent history expansion. See Bash History Facilities, for -more details concerning history expansion. - -

There are three quoting mechanisms: the -escape character, single quotes, and double quotes. - -

-


- -Next: , -Up: Quoting - -
- -
3.1.2.1 Escape Character
- -

A non-quoted backslash `\' is the Bash escape character. -It preserves the literal value of the next character that follows, -with the exception of newline. If a \newline pair -appears, and the backslash itself is not quoted, the \newline -is treated as a line continuation (that is, it is removed from -the input stream and effectively ignored). - -

-


- -Next: , -Previous: Escape Character, -Up: Quoting - -
- -
3.1.2.2 Single Quotes
- -

Enclosing characters in single quotes (`'') 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. - -

-


- -Next: , -Previous: Single Quotes, -Up: Quoting - -
- -
3.1.2.3 Double Quotes
- -

Enclosing characters in double quotes (`"') preserves the literal value -of all characters within the quotes, with the exception of -`$', ``', `\', -and, when history expansion is enabled, `!'. -The characters `$' and ``' -retain their special meaning within double quotes (see Shell Expansions). -The backslash retains its special meaning only when followed by one of -the following characters: -`$', ``', `"', `\', or newline. -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 `!' -appearing in double quotes is escaped using a backslash. -The backslash preceding the `!' is not removed. - -

The special parameters `*' and `@' have special meaning -when in double quotes (see Shell Parameter Expansion). - -

-


- - -Next: , -Previous: Double Quotes, -Up: Quoting - -
- -
3.1.2.4 ANSI-C Quoting
- -

-Words of the form $'string' are treated specially. The -word expands to string, with backslash-escaped characters replaced -as specified by the ANSI C standard. Backslash escape sequences, if -present, are decoded as follows: - -

-
\a
alert (bell) -
\b
backspace -
\e
an escape character (not ANSI C) -
\f
form feed -
\n
newline -
\r
carriage return -
\t
horizontal tab -
\v
vertical tab -
\\
backslash -
\'
single quote -
\nnn
the eight-bit character whose value is the octal value nnn -(one to three digits) -
\xHH
the eight-bit character whose value is the hexadecimal value HH -(one or two hex digits) -
\cx
a control-x character -
- -

The expanded result is single-quoted, as if the dollar sign had not -been present. - -

-


- -Previous: ANSI-C Quoting, -Up: Quoting - -
- -
3.1.2.5 Locale-Specific Translation
- -

-A double-quoted string preceded by a dollar sign (`$') will cause -the string to be translated according to the current locale. -If the current locale is C or POSIX, the dollar sign -is ignored. -If the string is translated and replaced, the replacement is -double-quoted. - -

Some systems use the message catalog selected by the LC_MESSAGES -shell variable. Others create the name of the message catalog from the -value of the TEXTDOMAIN shell variable, possibly adding a -suffix of `.mo'. If you use the TEXTDOMAIN variable, you -may need to set the TEXTDOMAINDIR variable to the location of -the message catalog files. Still others use both variables in this -fashion: -TEXTDOMAINDIR/LC_MESSAGES/LC_MESSAGES/TEXTDOMAIN.mo. - -

-


- -Previous: Quoting, -Up: Shell Syntax - -
- -

3.1.3 Comments

- -

-In a non-interactive shell, or an interactive shell in which the -interactive_comments option to the shopt -builtin is enabled (see The Shopt Builtin), -a word beginning with `#' -causes that word and all remaining characters on that line to -be ignored. An interactive shell without the interactive_comments -option enabled does not allow comments. The interactive_comments -option is on by default in interactive shells. -See Interactive Shells, for a description of what makes -a shell interactive. - -

-


- -Next: , -Previous: Shell Syntax, -Up: Basic Shell Features - -
- -

3.2 Shell Commands

- -

-A simple shell command such as echo a b c consists of the command -itself followed by arguments, separated by spaces. - -

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. - -

- -
-


- -Next: , -Up: Shell Commands - -
- -

3.2.1 Simple Commands

- -

-A simple command is the kind of command encountered most often. -It's just a sequence of words separated by blanks, terminated -by one of the shell's control operators (see Definitions). The -first word generally specifies a command to be executed, with the -rest of the words being that command's arguments. - -

The return status (see Exit Status) of a simple command is -its exit status as provided -by the posix 1003.1 waitpid function, or 128+n if -the command was terminated by signal n. - -

-


- -Next: , -Previous: Simple Commands, -Up: Shell Commands - -
- -

3.2.2 Pipelines

- -

-A pipeline is a sequence of simple commands separated by -`|'. - -

The format for a pipeline is -

     [time [-p]] [!] command1 [| command2 ...]
-
-

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. - -

The reserved word time 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 -p option changes the output format to that specified -by posix. -The TIMEFORMAT variable may be set to a format string that -specifies how the timing information should be displayed. -See Bash Variables, for a description of the available formats. -The use of time as a reserved word permits the timing of -shell builtins, shell functions, and pipelines. An external -time command cannot time these easily. - -

If the pipeline is not executed asynchronously (see Lists), the -shell waits for all commands in the pipeline to complete. - -

Each command in a pipeline is executed in its own subshell -(see Command Execution Environment). The exit -status of a pipeline is the exit status of the last command in the -pipeline, unless the pipefail option is enabled -(see The Set Builtin). -If pipefail 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 `!' 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. - -

-


- -Next: , -Previous: Pipelines, -Up: Shell Commands - -
- -

3.2.3 Lists of Commands

- -

-A list is a sequence of one or more pipelines separated by one -of the operators `;', `&', `&&', or `||', -and optionally terminated by one of `;', `&', or a -newline. - -

Of these list operators, `&&' and `||' -have equal precedence, followed by `;' and `&', -which have equal precedence. - -

A sequence of one or more newlines may appear in a list -to delimit commands, equivalent to a semicolon. - -

If a command is terminated by the control operator `&', -the shell executes the command asynchronously in a subshell. -This is known as executing the command in the background. -The shell does not wait for the command to finish, and the return -status is 0 (true). -When job control is not active (see Job Control), -the standard input for asynchronous commands, in the absence of any -explicit redirections, is redirected from /dev/null. - -

Commands separated by a `;' 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. - -

The control operators `&&' and `||' -denote and lists and or lists, respectively. -An and list has the form -

     command1 && command2
-
-

command2 is executed if, and only if, command1 -returns an exit status of zero. - -

An or list has the form -

     command1 || command2
-
-

command2 is executed if, and only if, command1 -returns a non-zero exit status. - -

The return status of -and and or lists is the exit status of the last command -executed in the list. - -

-


- -Previous: Lists, -Up: Shell Commands - -
- -

3.2.4 Compound Commands

- -

- -

- -

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 Redirections) associated with a compound command -apply to all commands within that compound command unless explicitly overridden. - -

Bash provides looping constructs, conditional commands, and mechanisms -to group commands and execute them as a unit. - -

- -
3.2.4.1 Looping Constructs
- -

-Bash supports the following looping constructs. - -

Note that wherever a `;' appears in the description of a -command's syntax, it may be replaced with one or more newlines. - -

-
until
The syntax of the until command is: -
          until test-commands; do consequent-commands; done
-     
-

Execute consequent-commands as long as -test-commands has an exit status which is not zero. -The return status is the exit status of the last command executed -in consequent-commands, or zero if none was executed. - -

while
The syntax of the while command is: -
          while test-commands; do consequent-commands; done
-     
-

Execute consequent-commands as long as -test-commands has an exit status of zero. -The return status is the exit status of the last command executed -in consequent-commands, or zero if none was executed. - -

for
The syntax of the for command is: - -
          for name [in words ...]; do commands; done
-     
-

Expand words, and execute commands once for each member -in the resultant list, with name bound to the current member. -If `in words' is not present, the for command -executes the commands once for each positional parameter that is -set, as if `in "$@"' had been specified -(see Special Parameters). -The return status is the exit status of the last command that executes. -If there are no items in the expansion of words, no commands are -executed, and the return status is zero. - -

An alternate form of the for command is also supported: - -

          for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
-     
-

First, the arithmetic expression expr1 is evaluated according -to the rules described below (see Shell Arithmetic). -The arithmetic expression expr2 is then evaluated repeatedly -until it evaluates to zero. -Each time expr2 evaluates to a non-zero value, commands are -executed and the arithmetic expression expr3 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 list -that is executed, or false if any of the expressions is invalid. - -

- -

The break and continue builtins (see Bourne Shell Builtins) -may be used to control loop execution. - -

-


- -Next: , -Previous: Looping Constructs, -Up: Compound Commands - -
- -
3.2.4.2 Conditional Constructs
- -

-

-
if
The syntax of the if command is: - -
          if test-commands; then
-            consequent-commands;
-          [elif more-test-commands; then
-            more-consequents;]
-          [else alternate-consequents;]
-          fi
-     
-

The test-commands list is executed, and if its return status is zero, -the consequent-commands list is executed. -If test-commands returns a non-zero status, each elif list -is executed in turn, and if its exit status is zero, -the corresponding more-consequents is executed and the -command completes. -If `else alternate-consequents' is present, and -the final command in the final if or elif clause -has a non-zero exit status, then alternate-consequents is executed. -The return status is the exit status of the last command executed, or -zero if no condition tested true. - -

case
The syntax of the case command is: - -
          case word in [ [(] pattern [| pattern]...) command-list ;;]... esac
-     
-

case will selectively execute the command-list corresponding to -the first pattern that matches word. -If the shell option nocasematch -(see the description of shopt in The Shopt Builtin) -is enabled, the match is performed without regard to the case -of alphabetic characters. -The `|' is used to separate multiple patterns, and the `)' -operator terminates a pattern list. -A list of patterns and an associated command-list is known -as a clause. Each clause must be terminated with `;;'. -The word undergoes tilde expansion, parameter expansion, command -substitution, arithmetic expansion, and quote removal before matching is -attempted. Each pattern undergoes tilde expansion, parameter -expansion, command substitution, and arithmetic expansion. - -

There may be an arbitrary number of case clauses, each terminated -by a `;;'. The first pattern that matches determines the -command-list that is executed. - -

Here is an example using case in a script that could be used to -describe one interesting feature of an animal: - -

          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."
-     
-

The return status is zero if no pattern is matched. Otherwise, the -return status is the exit status of the command-list executed. - -

select
-The select construct allows the easy generation of menus. -It has almost the same syntax as the for command: - -
          select name [in words ...]; do commands; done
-     
-

The list of words following in 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 -`in words' is omitted, the positional parameters are printed, -as if `in "$@"' had been specified. -The PS3 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 name is set to that word. -If the line is empty, the words and prompt are displayed again. -If EOF is read, the select command completes. -Any other value read causes name to be set to null. -The line read is saved in the variable REPLY. - -

The commands are executed after each selection until a -break command is executed, at which -point the select command completes. - -

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. - -

          select fname in *;
-          do
-          	echo you picked $fname \($REPLY\)
-          	break;
-          done
-     
-
((...))
-
          (( expression ))
-     
-

The arithmetic expression is evaluated according to the rules -described below (see Shell Arithmetic). -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 -

          let "expression"
-     
-

See Bash Builtins, for a full description of the let builtin. - -

[[...]]
-
          [[ expression ]]
-     
-

Return a status of 0 or 1 depending on the evaluation of -the conditional expression expression. -Expressions are composed of the primaries described below in -Bash Conditional Expressions. -Word splitting and filename expansion are not performed on the words -between the `[[' and `]]'; tilde expansion, parameter and -variable expansion, arithmetic expansion, command substitution, process -substitution, and quote removal are performed. -Conditional operators such as `-f' must be unquoted to be recognized -as primaries. - -

When the `==' and `!=' operators are used, the string to the -right of the operator is considered a pattern and matched according -to the rules described below in Pattern Matching. -If the shell option nocasematch -(see the description of shopt in The Shopt Builtin) -is enabled, the match is performed without regard to the case -of alphabetic characters. -The return value is 0 if the string matches (`==') or does not -match (`!=')the pattern, and 1 otherwise. -Any part of the pattern may be quoted to force it to be matched as a -string. - -

An additional binary operator, `=~', is available, with the same -precedence as `==' and `!='. -When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in regex3)). -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 nocasematch -(see the description of shopt in The Shopt Builtin) -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 BASH_REMATCH. -The element of BASH_REMATCH with index 0 is the portion of the string -matching the entire regular expression. -The element of BASH_REMATCH with index n is the portion of the -string matching the nth parenthesized subexpression. - -

Expressions may be combined using the following operators, listed -in decreasing order of precedence: - -

-
( expression )
Returns the value of expression. -This may be used to override the normal precedence of operators. - -
! expression
True if expression is false. - -
expression1 && expression2
True if both expression1 and expression2 are true. - -
expression1 || expression2
True if either expression1 or expression2 is true. -
- The && and || operators do not evaluate expression2 if the -value of expression1 is sufficient to determine the return -value of the entire conditional expression. - -
- -
-


- -Previous: Conditional Constructs, -Up: Compound Commands - -
- -
3.2.4.3 Grouping Commands
- -

-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. - -

-
()
-
          ( list )
-     
-

Placing a list of commands between parentheses causes a subshell -environment to be created (see Command Execution Environment), and each -of the commands in list to be executed in that subshell. Since the -list is executed in a subshell, variable assignments do not remain in -effect after the subshell completes. - -

{}
-
          { list; }
-     
-

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 list is required. -

- -

In addition to the creation of a subshell, there is a subtle difference -between these two constructs due to historical reasons. The braces -are reserved words, so they must be separated from the list -by blanks. The parentheses are operators, and are -recognized as separate tokens by the shell even if they are not separated -from the list by whitespace. - -

The exit status of both of these constructs is the exit status of -list. - -

-


- -Next: , -Previous: Shell Commands, -Up: Basic Shell Features - -
- -

3.3 Shell Functions

- -

-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. - -

Functions are declared using this syntax: - -

     [ function ] name () compound-command [ redirections ]
-
-

This defines a shell function named name. The reserved -word function is optional. -If the function reserved -word is supplied, the parentheses are optional. -The body of the function is the compound command -compound-command (see Compound Commands). -That command is usually a list enclosed between { and }, but -may be any compound command listed above. -compound-command is executed whenever name is specified as the -name of a command. -Any redirections (see Redirections) associated with the shell function -are performed when the function is executed. - -

A function definition may be deleted using the -f option to the -unset builtin (see Bourne Shell Builtins). - -

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. - -

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 -blanks 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 list must be terminated by a semicolon, -a `&', or a newline. - -

When a function is executed, the arguments to the -function become the positional parameters -during its execution (see Positional Parameters). -The special parameter `#' that expands to the number of -positional parameters is updated to reflect the change. -Special parameter 0 is unchanged. -The first element of the FUNCNAME 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 DEBUG and RETURN traps -are not inherited unless the function has been given the -trace attribute using the declare builtin or -the -o functrace option has been enabled with -the set builtin, -(in which case all functions inherit the DEBUG and RETURN traps). -See Bourne Shell Builtins, for the description of the -trap builtin. - -

If the builtin command return -is executed in a function, the function completes and -execution resumes with the next command after the function -call. -Any command associated with the RETURN trap is executed -before execution resumes. -When a function completes, the values of the -positional parameters and the special parameter `#' -are restored to the values they had prior to the function's -execution. If a numeric argument is given to return, -that is the function's return status; otherwise the function's -return status is the exit status of the last command executed -before the return. - -

Variables local to the function may be declared with the -local builtin. These variables are visible only to -the function and the commands it invokes. - -

Function names and definitions may be listed with the --f option to the declare or typeset -builtin commands (see Bash Builtins). -The -F option to declare or typeset -will list the function names only -(and optionally the source file and line number, if the extdebug -shell option is enabled). -Functions may be exported so that subshells -automatically have them defined with the --f option to the export builtin -(see Bourne Shell Builtins). -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. - -

Functions may be recursive. No limit is placed on the number of -recursive calls. - -

-


- -Next: , -Previous: Shell Functions, -Up: Basic Shell Features - -
- -

3.4 Shell Parameters

- -

- -

- -

A parameter is an entity that stores values. -It can be a name, a number, or one of the special characters -listed below. -A variable is a parameter denoted by a name. -A variable has a value and zero or more attributes. -Attributes are assigned using the declare builtin command -(see the description of the declare builtin in Bash Builtins). - -

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 unset builtin command. - -

A variable may be assigned to by a statement of the form -

     name=[value]
-
-

If value -is not given, the variable is assigned the null string. All -values undergo tilde expansion, parameter and variable expansion, -command substitution, arithmetic expansion, and quote -removal (detailed below). If the variable has its integer -attribute set, then value -is evaluated as an arithmetic expression even if the $((...)) -expansion is not used (see Arithmetic Expansion). -Word splitting is not performed, with the exception -of "$@" as explained below. -Filename expansion is not performed. -Assignment statements may also appear as arguments to the -alias, -declare, typeset, export, readonly, -and local builtin commands. - -

In the context where an assignment statement is assigning a value -to a shell variable or array index (see Arrays), the `+=' -operator can be used to -append to or add to the variable's previous value. -When `+=' is applied to a variable for which the integer attribute -has been set, value is evaluated as an arithmetic expression and -added to the variable's current value, which is also evaluated. -When `+=' is applied to an array variable using compound assignment -(see Arrays), the -variable's value is not unset (as it is when using `='), 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, value is expanded and -appended to the variable's value. - -

-


- -Next: , -Up: Shell Parameters - -
- -

3.4.1 Positional Parameters

- -

-A positional parameter is a parameter denoted by one or more -digits, other than the single digit 0. Positional parameters are -assigned from the shell's arguments when it is invoked, -and may be reassigned using the set builtin command. -Positional parameter N may be referenced as ${N}, or -as $N when N consists of a single digit. -Positional parameters may not be assigned to with assignment statements. -The set and shift builtins are used to set and -unset them (see Shell Builtin Commands). -The positional parameters are -temporarily replaced when a shell function is executed -(see Shell Functions). - -

When a positional parameter consisting of more than a single -digit is expanded, it must be enclosed in braces. - -

-


- -Previous: Positional Parameters, -Up: Shell Parameters - -
- -

3.4.2 Special Parameters

- -

-The shell treats several parameters specially. These parameters may -only be referenced; assignment to them is not allowed. - -

-
*
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 IFS -special variable. That is, "$*" is equivalent -to "$1c$2c...", where c -is the first character of the value of the IFS -variable. -If IFS is unset, the parameters are separated by spaces. -If IFS is null, the parameters are joined without intervening -separators. - -
@
Expands to the positional parameters, starting from one. When the -expansion occurs within double quotes, each parameter expands to a -separate word. That is, "$@" is equivalent to -"$1" "$2" .... -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, "$@" and -$@ -expand to nothing (i.e., they are removed). - -
#
Expands to the number of positional parameters in decimal. - -
?
Expands to the exit status of the most recently executed foreground -pipeline. - -
-
(A hyphen.) Expands to the current option flags as specified upon -invocation, by the set -builtin command, or those set by the shell itself -(such as the -i option). - -
$
Expands to the process id of the shell. In a () subshell, it -expands to the process id of the invoking shell, not the subshell. - -
!
Expands to the process id of the most recently executed background -(asynchronous) command. - -
0
Expands to the name of the shell or shell script. This is set at -shell initialization. If Bash is invoked with a file of commands -(see Shell Scripts), $0 is set to the name of that file. -If Bash is started with the -c option (see Invoking Bash), -then $0 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. - -
_
(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. -
- -
-


- -Next: , -Previous: Shell Parameters, -Up: Basic Shell Features - -
- -

3.5 Shell Expansions

- -

-Expansion is performed on the command line after it has been split into -tokens. There are seven kinds of expansion performed: -

    -
  • brace expansion -
  • tilde expansion -
  • parameter and variable expansion -
  • command substitution -
  • arithmetic expansion -
  • word splitting -
  • filename expansion -
- - - -

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. - -

On systems that can support it, there is an additional expansion -available: process substitution. This is performed at the -same time as parameter, variable, and arithmetic expansion and -command substitution. - -

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 -"$@" (see Special Parameters) and "${name[@]}" -(see Arrays). - -

After all expansions, quote removal (see Quote Removal) -is performed. - -

-


- -Next: , -Up: Shell Expansions - -
- -

3.5.1 Brace Expansion

- -

-Brace expansion is a mechanism by which arbitrary strings may be generated. -This mechanism is similar to -filename expansion (see Filename Expansion), -but the file names generated need not exist. -Patterns to be brace expanded take the form of an optional preamble, -followed by either a series of comma-separated strings or a seqeunce expression -between a pair of braces, -followed by an optional postscript. -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. - -

Brace expansions may be nested. -The results of each expanded string are not sorted; left to right order -is preserved. -For example, -

     bash$ echo a{d,c,b}e
-     ade ace abe
-
-

A sequence expression takes the form {x..y}, -where x and y are either integers or single characters. -When integers are supplied, the expression expands to each number between -x and y, inclusive. -When characters are supplied, the expression expands to each character -lexicographically between x and y, inclusive. Note that -both x and y must be of the same type. - -

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 `${' -is not considered eligible for brace expansion. - -

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. - -

A { or `,' may be quoted with a backslash to prevent its -being considered part of a brace expression. -To avoid conflicts with parameter expansion, the string `${' -is not considered eligible for brace expansion. - -

This construct is typically used as shorthand when the common -prefix of the strings to be generated is longer than in the -above example: -

     mkdir /usr/local/src/bash/{old,new,dist,bugs}
-
-

or -

     chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
-
-
-


- -Next: , -Previous: Brace Expansion, -Up: Shell Expansions - -
- -

3.5.2 Tilde Expansion

- -

-If a word begins with an unquoted tilde character (`~'), all of the -characters up to the first unquoted slash (or all characters, -if there is no unquoted slash) are considered a tilde-prefix. -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 login name. -If this login name is the null string, the tilde is replaced with the -value of the HOME shell variable. -If HOME 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. - -

If the tilde-prefix is `~+', the value of -the shell variable PWD replaces the tilde-prefix. -If the tilde-prefix is `~-', the value of the shell variable -OLDPWD, if it is set, is substituted. - -

If the characters following the tilde in the tilde-prefix consist of a -number N, optionally prefixed by a `+' or a `-', -the tilde-prefix is replaced with the -corresponding element from the directory stack, as it would be displayed -by the dirs builtin invoked with the characters following tilde -in the tilde-prefix as an argument (see The Directory Stack). -If the tilde-prefix, sans the tilde, consists of a number without a -leading `+' or `-', `+' is assumed. - -

If the login name is invalid, or the tilde expansion fails, the word is -left unchanged. - -

Each variable assignment is checked for unquoted tilde-prefixes immediately -following a `:' or the first `='. -In these cases, tilde expansion is also performed. -Consequently, one may use file names with tildes in assignments to -PATH, MAILPATH, and CDPATH, -and the shell assigns the expanded value. - -

The following table shows how Bash treats unquoted tilde-prefixes: - -

-
~
The value of $HOME -
~/foo
$HOME/foo - -
~fred/foo
The subdirectory foo of the home directory of the user -fred - -
~+/foo
$PWD/foo - -
~-/foo
${OLDPWD-'~-'}/foo - -
~N
The string that would be displayed by `dirs +N' - -
~+N
The string that would be displayed by `dirs +N' - -
~-N
The string that would be displayed by `dirs -N' - -
- -
-


- -Next: , -Previous: Tilde Expansion, -Up: Shell Expansions - -
- -

3.5.3 Shell Parameter Expansion

- -

-The `$' 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. - -

When braces are used, the matching ending brace is the first `}' -not escaped by a backslash or within a quoted string, and not within an -embedded arithmetic expansion, command substitution, or parameter -expansion. - -

The basic form of parameter expansion is ${parameter}. -The value of parameter is substituted. The braces are required -when parameter -is a positional parameter with more than one digit, -or when parameter -is followed by a character that is not to be -interpreted as part of its name. - -

If the first character of parameter is an exclamation point, -a level of variable indirection is introduced. -Bash uses the value of the variable formed from the rest of -parameter 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 parameter itself. -This is known as indirect expansion. -The exceptions to this are the expansions of ${!prefix*} -and ${!name[@]} -described below. -The exclamation point must immediately follow the left brace in order to -introduce indirection. - -

In each of the cases below, word is subject to tilde expansion, -parameter expansion, command substitution, and arithmetic expansion. - -

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. - -

-
${parameter:−word}
If parameter is unset or null, the expansion of -word is substituted. Otherwise, the value of -parameter is substituted. - -
${parameter:=word}
If parameter -is unset or null, the expansion of word -is assigned to parameter. -The value of parameter is then substituted. -Positional parameters and special parameters may not be assigned to -in this way. - -
${parameter:?word}
If parameter -is null or unset, the expansion of word (or a message -to that effect if word -is not present) is written to the standard error and the shell, if it -is not interactive, exits. Otherwise, the value of parameter is -substituted. - -
${parameter:+word}
If parameter -is null or unset, nothing is substituted, otherwise the expansion of -word is substituted. - -
${parameter:offset}
${parameter:offset:length}
Expands to up to length characters of parameter -starting at the character specified by offset. -If length is omitted, expands to the substring of -parameter starting at the character specified by offset. -length and offset are arithmetic expressions -(see Shell Arithmetic). -This is referred to as Substring Expansion. - -

length must evaluate to a number greater than or equal to zero. -If offset evaluates to a number less than zero, the value -is used as an offset from the end of the value of parameter. -If parameter is `@', the result is length positional -parameters beginning at offset. -If parameter is an array name indexed by `@' or `*', -the result is the length -members of the array beginning with ${parameter[offset]}. -A negative offset 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 `:-' expansion. -Substring indexing is zero-based unless the positional parameters -are used, in which case the indexing starts at 1 by default. -If offset is 0, and the positional parameters are used, $@ is -prefixed to the list. - -

${!prefix*}
${!prefix@}
Expands to the names of variables whose names begin with prefix, -separated by the first character of the IFS special variable. -When `@' is used and the expansion appears within double quotes, each -variable name expands to a separate word. - -
${!name[@]}
${!name[*]}
If name is an array variable, expands to the list of array indices -(keys) assigned in name. -If name is not an array, expands to 0 if name is set and null -otherwise. -When `@' is used and the expansion appears within double quotes, each -key expands to a separate word. - -
${#parameter}
The length in characters of the expanded value of parameter is -substituted. -If parameter is `*' or `@', the value substituted -is the number of positional parameters. -If parameter is an array name subscripted by `*' or `@', -the value substituted is the number of elements in the array. - -
${parameter#word}
${parameter##word}
The word -is expanded to produce a pattern just as in filename -expansion (see Filename Expansion). If the pattern matches -the beginning of the expanded value of parameter, -then the result of the expansion is the expanded value of parameter -with the shortest matching pattern (the `#' case) or the -longest matching pattern (the `##' case) deleted. -If parameter is `@' or `*', -the pattern removal operation is applied to each positional -parameter in turn, and the expansion is the resultant list. -If parameter is an array variable subscripted with -`@' or `*', -the pattern removal operation is applied to each member of the -array in turn, and the expansion is the resultant list. - -
${parameter%word}
${parameter%%word}
The word is expanded to produce a pattern just as in -filename expansion. -If the pattern matches a trailing portion of the expanded value of -parameter, then the result of the expansion is the value of -parameter with the shortest matching pattern (the `%' case) -or the longest matching pattern (the `%%' case) deleted. -If parameter is `@' or `*', -the pattern removal operation is applied to each positional -parameter in turn, and the expansion is the resultant list. -If parameter -is an array variable subscripted with `@' or `*', -the pattern removal operation is applied to each member of the -array in turn, and the expansion is the resultant list. - -
${parameter/pattern/string}
-The pattern is expanded to produce a pattern just as in -filename expansion. -Parameter is expanded and the longest match of pattern -against its value is replaced with string. -If pattern begins with `/', all matches of pattern are -replaced with string. Normally only the first match is replaced. -If pattern begins with `#', it must match at the beginning -of the expanded value of parameter. -If pattern begins with `%', it must match at the end -of the expanded value of parameter. -If string is null, matches of pattern are deleted -and the / following pattern may be omitted. -If parameter is `@' or `*', -the substitution operation is applied to each positional -parameter in turn, and the expansion is the resultant list. -If parameter -is an array variable subscripted with `@' or `*', -the substitution operation is applied to each member of the -array in turn, and the expansion is the resultant list. - -
- - - -

3.5.4 Command Substitution

- -

-Command substitution allows the output of a command to replace -the command itself. -Command substitution occurs when a command is enclosed as follows: -

     $(command)
-
-

or -

     `command`
-
-

Bash performs the expansion by executing command 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 $(cat file) can be -replaced by the equivalent but faster $(< file). - -

When the old-style backquote form of substitution is used, -backslash retains its literal meaning except when followed by -`$', ``', or `\'. -The first backquote not preceded by a backslash terminates the -command substitution. -When using the $(command) form, all characters between -the parentheses make up the command; none are treated specially. - -

Command substitutions may be nested. To nest when using the backquoted -form, escape the inner backquotes with backslashes. - -

If the substitution appears within double quotes, word splitting and -filename expansion are not performed on the results. - -

-


- -Next: , -Previous: Command Substitution, -Up: Shell Expansions - -
- -

3.5.5 Arithmetic Expansion

- -

-Arithmetic expansion allows the evaluation of an arithmetic expression -and the substitution of the result. The format for arithmetic expansion is: - -

     $(( expression ))
-
-

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. - -

The evaluation is performed according to the rules listed below -(see Shell Arithmetic). -If the expression is invalid, Bash prints a message indicating -failure to the standard error and no substitution occurs. - -

-


- -Next: , -Previous: Arithmetic Expansion, -Up: Shell Expansions - -
- -

3.5.6 Process Substitution

- -

-Process substitution is supported on systems that support named -pipes (fifos) or the /dev/fd method of naming open files. -It takes the form of -

     <(list)
-
-

or -

     >(list)
-
-

The process list is run with its input or output connected to a -fifo or some file in /dev/fd. The name of this file is -passed as an argument to the current command as the result of the -expansion. If the >(list) form is used, writing to -the file will provide input for list. If the -<(list) form is used, the file passed as an -argument should be read to obtain the output of list. -Note that no space may appear between the < or > -and the left parenthesis, otherwise the construct would be interpreted -as a redirection. - -

When available, process substitution is performed simultaneously with -parameter and variable expansion, command substitution, and arithmetic -expansion. - -

-


- -Next: , -Previous: Process Substitution, -Up: Shell Expansions - -
- -

3.5.7 Word Splitting

- -

-The shell scans the results of parameter expansion, command substitution, -and arithmetic expansion that did not occur within double quotes for -word splitting. - -

The shell treats each character of $IFS as a delimiter, and splits -the results of the other expansions into words on these characters. -If IFS is unset, or its value is exactly <space><tab><newline>, -the default, then sequences of - <space>, <tab>, and <newline> -at the beginning and end of the results of the previous -expansions are ignored, and any sequence of IFS -characters not at the beginning or end serves to delimit words. -If IFS has a value other than the default, then sequences of -the whitespace characters space and tab -are ignored at the beginning and end of the -word, as long as the whitespace character is in the -value of IFS (an IFS whitespace character). -Any character in IFS that is not IFS -whitespace, along with any adjacent IFS -whitespace characters, delimits a field. A sequence of IFS -whitespace characters is also treated as a delimiter. -If the value of IFS is null, no word splitting occurs. - -

Explicit null arguments ("" or '') 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. - -

Note that if no expansion occurs, no splitting -is performed. - -

-


- -Next: , -Previous: Word Splitting, -Up: Shell Expansions - -
- -

3.5.8 Filename Expansion

- - - -After word splitting, unless the -f option has been set -(see The Set Builtin), Bash scans each word for the characters -`*', `?', and `['. -If one of these characters appears, then the word is -regarded as a pattern, -and replaced with an alphabetically sorted list of -file names matching the pattern. If no matching file names are found, -and the shell option nullglob is disabled, the word is left -unchanged. -If the nullglob option is set, and no matches are found, the word -is removed. -If the failglob shell option is set, and no matches are found, -an error message is printed and the command is not executed. -If the shell option nocaseglob is enabled, the match is performed -without regard to the case of alphabetic characters. - -

When a pattern is used for filename generation, the character `.' -at the start of a filename or immediately following a slash -must be matched explicitly, unless the shell option dotglob is set. -When matching a file name, the slash character must always be -matched explicitly. -In other cases, the `.' character is not treated specially. - -

See the description of shopt in The Shopt Builtin, -for a description of the nocaseglob, nullglob, -failglob, and dotglob options. - -

The GLOBIGNORE -shell variable may be used to restrict the set of filenames matching a -pattern. If GLOBIGNORE -is set, each matching filename that also matches one of the patterns in -GLOBIGNORE is removed from the list of matches. The filenames -. and .. -are always ignored when GLOBIGNORE -is set and not null. -However, setting GLOBIGNORE to a non-null value has the effect of -enabling the dotglob -shell option, so all other filenames beginning with a -`.' will match. -To get the old behavior of ignoring filenames beginning with a -`.', make `.*' one of the patterns in GLOBIGNORE. -The dotglob option is disabled when GLOBIGNORE -is unset. - -

-


- -Up: Filename Expansion - -
- -
3.5.8.1 Pattern Matching
- -

-Any character that appears in a pattern, other than the special pattern -characters described below, matches itself. -The nul character may not occur in a pattern. -A backslash escapes the following character; the -escaping backslash is discarded when matching. -The special pattern characters must be quoted if they are to be matched -literally. - -

The special pattern characters have the following meanings: -

-
*
Matches any string, including the null string. -
?
Matches any single character. -
[...]
Matches any one of the enclosed characters. A pair of characters -separated by a hyphen denotes a range expression; -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 -`[' is a `!' or a `^' -then any character not enclosed is matched. A `' -may be matched by including it as the first or last character -in the set. A `]' 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 LC_COLLATE shell variable, -if set. - -

For example, in the default C locale, `[a-dx-z]' is equivalent to -`[abcdxyz]'. Many locales sort characters in dictionary order, and in -these locales `[a-dx-z]' is typically not equivalent to `[abcdxyz]'; -it might be equivalent to `[aBbCcDdxXyYz]', for example. To obtain -the traditional interpretation of ranges in bracket expressions, you can -force the use of the C locale by setting the LC_COLLATE or -LC_ALL environment variable to the value `C'. - -

Within `[' and `]', character classes can be specified -using the syntax -[:class:], where class is one of the -following classes defined in the posix standard: -

          alnum   alpha   ascii   blank   cntrl   digit   graph   lower
-          print   punct   space   upper   word    xdigit
-     
-

A character class matches any character belonging to that class. -The word character class matches letters, digits, and the character -`_'. - -

Within `[' and `]', an equivalence class can be -specified using the syntax [=c=], which -matches all characters with the same collation weight (as defined -by the current locale) as the character c. - -

Within `[' and `]', the syntax [.symbol.] -matches the collating symbol symbol. -

- -

If the extglob shell option is enabled using the shopt -builtin, several extended pattern matching operators are recognized. -In the following description, a pattern-list is a list of one -or more patterns separated by a `|'. -Composite patterns may be formed using one or more of the following -sub-patterns: - -

-
?(pattern-list)
Matches zero or one occurrence of the given patterns. - -
*(pattern-list)
Matches zero or more occurrences of the given patterns. - -
+(pattern-list)
Matches one or more occurrences of the given patterns. - -
@(pattern-list)
Matches one of the given patterns. - -
!(pattern-list)
Matches anything except one of the given patterns. -
- -
-


- -Previous: Filename Expansion, -Up: Shell Expansions - -
- -

3.5.9 Quote Removal

- -

After the preceding expansions, all unquoted occurrences of the -characters `\', `'', and `"' that did not -result from one of the above expansions are removed. - -

-


- -Next: , -Previous: Shell Expansions, -Up: Basic Shell Features - -
- -

3.6 Redirections

- -

-Before a command is executed, its input and output -may be redirected -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. - -

In the following descriptions, if the file descriptor number is -omitted, and the first character of the redirection operator is -`<', the redirection refers to the standard input (file -descriptor 0). If the first character of the redirection operator -is `>', the redirection refers to the standard output (file -descriptor 1). - -

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. - -

Note that the order of redirections is significant. For example, -the command -

     ls > dirlist 2>&1
-
-

directs both standard output (file descriptor 1) and standard error -(file descriptor 2) to the file dirlist, while the command -

     ls 2>&1 > dirlist
-
-

directs only the standard output to file dirlist, -because the standard error was duplicated as standard output -before the standard output was redirected to dirlist. - -

Bash handles several filenames specially when they are used in -redirections, as described in the following table: - -

-
/dev/fd/fd
If fd is a valid integer, file descriptor fd is duplicated. - -
/dev/stdin
File descriptor 0 is duplicated. - -
/dev/stdout
File descriptor 1 is duplicated. - -
/dev/stderr
File descriptor 2 is duplicated. - -
/dev/tcp/host/port
If host is a valid hostname or Internet address, and port -is an integer port number or service name, Bash attempts to open a TCP -connection to the corresponding socket. - -
/dev/udp/host/port
If host is a valid hostname or Internet address, and port -is an integer port number or service name, Bash attempts to open a UDP -connection to the corresponding socket. - -
- -

A failure to open or create a file causes the redirection to fail. - -

Redirections using file descriptors greater than 9 should be used with -care, as they may conflict with file descriptors the shell uses -internally. - -

3.6.1 Redirecting Input

- -

Redirection of input causes the file whose name results from -the expansion of word -to be opened for reading on file descriptor n, -or the standard input (file descriptor 0) if n -is not specified. - -

The general format for redirecting input is: -

     [n]<word
-
-

3.6.2 Redirecting Output

- -

Redirection of output causes the file whose name results from -the expansion of word -to be opened for writing on file descriptor n, -or the standard output (file descriptor 1) if n -is not specified. If the file does not exist it is created; -if it does exist it is truncated to zero size. - -

The general format for redirecting output is: -

     [n]>[|]word
-
-

If the redirection operator is `>', and the noclobber -option to the set builtin has been enabled, the redirection -will fail if the file whose name results from the expansion of -word exists and is a regular file. -If the redirection operator is `>|', or the redirection operator is -`>' and the noclobber option is not enabled, the redirection -is attempted even if the file named by word exists. - -

3.6.3 Appending Redirected Output

- -

Redirection of output in this fashion -causes the file whose name results from -the expansion of word -to be opened for appending on file descriptor n, -or the standard output (file descriptor 1) if n -is not specified. If the file does not exist it is created. - -

The general format for appending output is: -

     [n]>>word
-
-

3.6.4 Redirecting Standard Output and Standard Error

- -

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 word with this construct. - -

There are two formats for redirecting standard output and -standard error: -

     &>word
-
-

and -

     >&word
-
-

Of the two forms, the first is preferred. -This is semantically equivalent to -

     >word 2>&1
-
-

3.6.5 Here Documents

- -

This type of redirection instructs the shell to read input from the -current source until a line containing only word -(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. - -

The format of here-documents is: -

     <<[−]word
-             here-document
-     delimiter
-
-

No parameter expansion, command substitution, arithmetic expansion, -or filename expansion is performed on -word. If any characters in word are quoted, the -delimiter is the result of quote removal on word, -and the lines in the here-document are not expanded. -If word 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 \newline is ignored, and `\' -must be used to quote the characters -`\', `$', and ``'. - -

If the redirection operator is `<<-', -then all leading tab characters are stripped from input lines and the -line containing delimiter. -This allows here-documents within shell scripts to be indented in a -natural fashion. - -

3.6.6 Here Strings

- -

A variant of here documents, the format is: -

     <<< word
-
-

The word is expanded and supplied to the command on its standard -input. - -

3.6.7 Duplicating File Descriptors

- -

The redirection operator -

     [n]<&word
-
-

is used to duplicate input file descriptors. -If word -expands to one or more digits, the file descriptor denoted by n -is made to be a copy of that file descriptor. -If the digits in word do not specify a file descriptor open for -input, a redirection error occurs. -If word -evaluates to `-', file descriptor n is closed. If -n is not specified, the standard input (file descriptor 0) is used. - -

The operator -

     [n]>&word
-
-

is used similarly to duplicate output file descriptors. If -n is not specified, the standard output (file descriptor 1) is used. -If the digits in word do not specify a file descriptor open for -output, a redirection error occurs. -As a special case, if n is omitted, and word does not -expand to one or more digits, the standard output and standard -error are redirected as described previously. - -

3.6.8 Moving File Descriptors

- -

The redirection operator -

     [n]<&digit-
-
-

moves the file descriptor digit to file descriptor n, -or the standard input (file descriptor 0) if n is not specified. -digit is closed after being duplicated to n. - -

Similarly, the redirection operator -

     [n]>&digit-
-
-

moves the file descriptor digit to file descriptor n, -or the standard output (file descriptor 1) if n is not specified. - -

3.6.9 Opening File Descriptors for Reading and Writing

- -

The redirection operator -

     [n]<>word
-
-

causes the file whose name is the expansion of word -to be opened for both reading and writing on file descriptor -n, or on file descriptor 0 if n -is not specified. If the file does not exist, it is created. - -

-


- -Next: , -Previous: Redirections, -Up: Basic Shell Features - -
- -

3.7 Executing Commands

- - - - - -

3.7.1 Simple Command Expansion

- -

-When a simple command is executed, the shell performs the following -expansions, assignments, and redirections, from left to right. - -

    -
  1. The words that the parser has marked as variable assignments (those -preceding the command name) and redirections are saved for later -processing. - -
  2. The words that are not variable assignments or redirections are -expanded (see Shell Expansions). -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. - -
  3. Redirections are performed as described above (see Redirections). - -
  4. The text after the `=' in each variable assignment undergoes tilde -expansion, parameter expansion, command substitution, arithmetic expansion, -and quote removal before being assigned to the variable. -
- -

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. - -

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. - -

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. - -

- -

3.7.2 Command Search and Execution

- -

-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. - -

    -
  1. 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 Shell Functions. - -
  2. 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. - -
  3. If the name is neither a shell function nor a builtin, -and contains no slashes, Bash searches each element of -$PATH 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 PATH searches -(see the description of hash in Bourne Shell Builtins). -A full search of the directories in $PATH -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. - -
  4. 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. - -
  5. 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 -shell script and the shell executes it as described in -Shell Scripts. - -
  6. If the command was not begun asynchronously, the shell waits for -the command to complete and collects its exit status. - -
- -
-


- -Next: , -Previous: Command Search and Execution, -Up: Executing Commands - -
- -

3.7.3 Command Execution Environment

- -

-The shell has an execution environment, which consists of the -following: - -

    -
  • open files inherited by the shell at invocation, as modified by -redirections supplied to the exec builtin - -
  • the current working directory as set by cd, pushd, or -popd, or inherited by the shell at invocation - -
  • the file creation mode mask as set by umask or inherited from -the shell's parent - -
  • current traps set by trap - -
  • shell parameters that are set by variable assignment or with set -or inherited from the shell's parent in the environment - -
  • shell functions defined during execution or inherited from the shell's -parent in the environment - -
  • options enabled at invocation (either by default or with command-line -arguments) or by set - -
  • options enabled by shopt (see The Shopt Builtin) - -
  • shell aliases defined with alias (see Aliases) - -
  • various process ids, including those of background jobs -(see Lists), the value of $$, and the value of -$PPID - -
- -

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. - -

    -
  • the shell's open files, plus any modifications and additions specified -by redirections to the command - -
  • the current working directory - -
  • the file creation mode mask - -
  • shell variables and functions marked for export, along with variables -exported for the command, passed in the environment (see Environment) - -
  • traps caught by the shell are reset to the values inherited from the -shell's parent, and traps ignored by the shell are ignored - -
- -

A command invoked in this separate environment cannot affect the -shell's execution environment. - -

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. - -

If a command is followed by a `&' and job control is not active, the -default standard input for the command is the empty file /dev/null. -Otherwise, the invoked command inherits the file descriptors of the calling -shell as modified by redirections. - -

-


- -Next: , -Previous: Command Execution Environment, -Up: Executing Commands - -
- -

3.7.4 Environment

- -

-When a program is invoked it is given an array of strings -called the environment. -This is a list of name-value pairs, of the form name=value. - -

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 export -to child processes. Executed commands inherit the environment. -The export and `declare -x' -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 unset and `export -n' -commands, plus any additions via the export and -`declare -x' commands. - -

The environment for any simple command -or function may be augmented temporarily by prefixing it with -parameter assignments, as described in Shell Parameters. -These assignment statements affect only the environment seen -by that command. - -

If the -k option is set (see The Set Builtin), then all -parameter assignments are placed in the environment for a command, -not just those that precede the command name. - -

When Bash invokes an external command, the variable `$_' -is set to the full path name of the command and passed to that -command in its environment. - -

-


- -Next: , -Previous: Environment, -Up: Executing Commands - -
- -

3.7.5 Exit Status

- -

-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 N, -Bash uses the value 128+N as the exit status. - -

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. - -

If a command fails because of an error during expansion or redirection, -the exit status is greater than zero. - -

The exit status is used by the Bash conditional commands -(see Conditional Constructs) and some of the list -constructs (see Lists). - -

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. - -

-


- -Previous: Exit Status, -Up: Executing Commands - -
- -

3.7.6 Signals

- -

-When Bash is interactive, in the absence of any traps, it ignores -SIGTERM (so that `kill 0' does not kill an interactive shell), -and SIGINT -is caught and handled (so that the wait builtin is interruptible). -When Bash receives a SIGINT, it breaks out of any executing loops. -In all cases, Bash ignores SIGQUIT. -If job control is in effect (see Job Control), Bash -ignores SIGTTIN, SIGTTOU, and SIGTSTP. - -

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 SIGINT and SIGQUIT in addition to these inherited -handlers. -Commands run as a result of -command substitution ignore the keyboard-generated job control signals -SIGTTIN, SIGTTOU, and SIGTSTP. - -

The shell exits by default upon receipt of a SIGHUP. -Before exiting, an interactive shell resends the SIGHUP to -all jobs, running or stopped. -Stopped jobs are sent SIGCONT to ensure that they receive -the SIGHUP. -To prevent the shell from sending the SIGHUP signal to a -particular job, it should be removed -from the jobs table with the disown -builtin (see Job Control Builtins) or marked -to not receive SIGHUP using disown -h. - -

If the huponexit shell option has been set with shopt -(see The Shopt Builtin), Bash sends a SIGHUP to all jobs when -an interactive login shell exits. - -

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 wait builtin, the reception of a signal for -which a trap has been set will cause the wait builtin to return -immediately with an exit status greater than 128, immediately after -which the trap is executed. - -

-


- -Previous: Executing Commands, -Up: Basic Shell Features - -
- -

3.8 Shell Scripts

- -

-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 -c nor -s option is supplied -(see Invoking Bash), -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 $PATH if not found there. - -

When Bash runs -a shell script, it sets the special parameter 0 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. - -

A shell script may be made executable by using the chmod command -to turn on the execute bit. When Bash finds such a file while -searching the $PATH for a command, it spawns a subshell to -execute it. In other words, executing -

     filename arguments
-
-

is equivalent to executing -

     bash filename arguments
-
-

if filename 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 hash in Bourne Shell Builtins) -are retained by the child. - -

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 `#!', the remainder of the line specifies -an interpreter for the program. -Thus, you can specify Bash, awk, Perl, or some other -interpreter and write the rest of the script file in that language. - -

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. - -

Bash scripts often begin with #! /bin/bash (assuming that -Bash has been installed in /bin), since this ensures that -Bash will be used to interpret the script, even if it is executed -under another shell. - -

-


- -Next: , -Previous: Basic Shell Features, -Up: Top - -
- -

4 Shell Builtin Commands

- - - -

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 Simple Commands), 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. - -

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. - -

Several builtin commands are described in other chapters: builtin -commands which provide the Bash interface to the job control -facilities (see Job Control Builtins), the directory stack -(see Directory Stack Builtins), the command history -(see Bash History Builtins), and the programmable completion -facilities (see Programmable Completion Builtins). - -

Many of the builtins have been extended by posix or Bash. - -

Unless otherwise noted, each builtin command documented as accepting -options preceded by `-' accepts `--' -to signify the end of the options. -For example, the :, true, false, and test -builtins do not accept options. - -

-


- -Next: , -Up: Shell Builtin Commands - -
- -

4.1 Bourne Shell Builtins

- -

The following shell builtin commands are inherited from the Bourne Shell. -These commands are implemented as specified by the posix standard. - -

-
: (a colon)
-
          : [arguments]
-     
-

Do nothing beyond expanding arguments and performing redirections. -The return status is zero. - -

. (a period)
-
          . filename [arguments]
-     
-

Read and execute commands from the filename argument in the -current shell context. If filename does not contain a slash, -the PATH variable is used to find filename. -When Bash is not in posix mode, the current directory is searched -if filename is not found in $PATH. -If any arguments are supplied, they become the positional -parameters when filename 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 filename is not found, or -cannot be read, the return status is non-zero. -This builtin is equivalent to source. - -

break
-
          break [n]
-     
-

Exit from a for, while, until, or select loop. -If n is supplied, the nth enclosing loop is exited. -n must be greater than or equal to 1. -The return status is zero unless n is not greater than or equal to 1. - -

cd
-
          cd [-L|-P] [directory]
-     
-

Change the current working directory to directory. -If directory is not given, the value of the HOME shell -variable is used. -If the shell variable CDPATH exists, it is used as a search path. -If directory begins with a slash, CDPATH is not used. - -

The -P option means to not follow symbolic links; symbolic -links are followed by default or with the -L option. -If directory is `-', it is equivalent to $OLDPWD. - -

If a non-empty directory name from CDPATH is used, or if -`-' is the first argument, and the directory change is -successful, the absolute pathname of the new working directory is -written to the standard output. - -

The return status is zero if the directory is successfully changed, -non-zero otherwise. - -

continue
-
          continue [n]
-     
-

Resume the next iteration of an enclosing for, while, -until, or select loop. -If n is supplied, the execution of the nth enclosing loop -is resumed. -n must be greater than or equal to 1. -The return status is zero unless n is not greater than or equal to 1. - -

eval
-
          eval [arguments]
-     
-

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 eval. -If there are no arguments or only empty arguments, the return status is -zero. - -

exec
-
          exec [-cl] [-a name] [command [arguments]]
-     
-

If command -is supplied, it replaces the shell without creating a new process. -If the -l option is supplied, the shell places a dash at the -beginning of the zeroth argument passed to command. -This is what the login program does. -The -c option causes command to be executed with an empty -environment. -If -a is supplied, the shell passes name as the zeroth -argument to command. -If no command 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. - -

exit
-
          exit [n]
-     
-

Exit the shell, returning a status of n to the shell's parent. -If n is omitted, the exit status is that of the last command executed. -Any trap on EXIT is executed before the shell terminates. - -

export
-
          export [-fn] [-p] [name[=value]]
-     
-

Mark each name to be passed to child processes -in the environment. If the -f option is supplied, the names -refer to shell functions; otherwise the names refer to shell variables. -The -n option means to no longer mark each name for export. -If no names are supplied, or if the -p option is given, a -list of exported names is displayed. -The -p option displays output in a form that may be reused as input. -If a variable name is followed by =value, the value of -the variable is set to value. - -

The return status is zero unless an invalid option is supplied, one of -the names is not a valid shell variable name, or -f is supplied -with a name that is not a shell function. - -

getopts
-
          getopts optstring name [args]
-     
-

getopts is used by shell scripts to parse positional parameters. -optstring 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 (`:') and question mark (`?') may not be -used as option characters. -Each time it is invoked, getopts -places the next option in the shell variable name, initializing -name if it does not exist, -and the index of the next argument to be processed into the -variable OPTIND. -OPTIND is initialized to 1 each time the shell or a shell script -is invoked. -When an option requires an argument, -getopts places that argument into the variable OPTARG. -The shell does not reset OPTIND automatically; it must be manually -reset between multiple calls to getopts within the same shell -invocation if a new set of parameters is to be used. - -

When the end of options is encountered, getopts exits with a -return value greater than zero. -OPTIND is set to the index of the first non-option argument, -and name is set to `?'. - -

getopts -normally parses the positional parameters, but if more arguments are -given in args, getopts parses those instead. - -

getopts can report errors in two ways. If the first character of -optstring is a colon, silent -error reporting is used. In normal operation diagnostic messages -are printed when invalid options or missing option arguments are -encountered. -If the variable OPTERR -is set to 0, no error messages will be displayed, even if the first -character of optstring is not a colon. - -

If an invalid option is seen, -getopts places `?' into name and, if not silent, -prints an error message and unsets OPTARG. -If getopts is silent, the option character found is placed in -OPTARG and no diagnostic message is printed. - -

If a required argument is not found, and getopts -is not silent, a question mark (`?') is placed in name, -OPTARG is unset, and a diagnostic message is printed. -If getopts is silent, then a colon (`:') is placed in -name and OPTARG is set to the option character found. - -

hash
-
          hash [-r] [-p filename] [-dt] [name]
-     
-

Remember the full pathnames of commands specified as name arguments, -so they need not be searched for on subsequent invocations. -The commands are found by searching through the directories listed in -$PATH. -The -p option inhibits the path search, and filename is -used as the location of name. -The -r option causes the shell to forget all remembered locations. -The -d option causes the shell to forget the remembered location -of each name. -If the -t option is supplied, the full pathname to which each -name corresponds is printed. If multiple name arguments are -supplied with -t the name is printed before the hashed -full pathname. -The -l option causes output to be displayed in a format -that may be reused as input. -If no arguments are given, or if only -l is supplied, -information about remembered commands is printed. -The return status is zero unless a name is not found or an invalid -option is supplied. - -

pwd
-
          pwd [-LP]
-     
-

Print the absolute pathname of the current working directory. -If the -P option is supplied, the pathname printed will not -contain symbolic links. -If the -L 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. - -

readonly
-
          readonly [-apf] [name[=value]] ...
-     
-

Mark each name as readonly. -The values of these names may not be changed by subsequent assignment. -If the -f option is supplied, each name refers to a shell -function. -The -a option means each name refers to an array variable. -If no name arguments are given, or if the -p -option is supplied, a list of all readonly names is printed. -The -p option causes output to be displayed in a format that -may be reused as input. -If a variable name is followed by =value, the value of -the variable is set to value. -The return status is zero unless an invalid option is supplied, one of -the name arguments is not a valid shell variable or function name, -or the -f option is supplied with a name that is not a shell function. - -

return
-
          return [n]
-     
-

Cause a shell function to exit with the return value n. -If n 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 . (or source) builtin, returning either n or -the exit status of the last command executed within the script as the exit -status of the script. -Any command associated with the RETURN trap is executed -before execution resumes after the function or script. -The return status is non-zero if return is used outside a function -and not during the execution of a script by . or source. - -

shift
-
          shift [n]
-     
-

Shift the positional parameters to the left by n. -The positional parameters from n+1 ... $# are -renamed to $1 ... $#-n. -Parameters represented by the numbers $# to $#-n+1 -are unset. -n must be a non-negative number less than or equal to $#. -If n is zero or greater than $#, the positional parameters -are not changed. -If n is not supplied, it is assumed to be 1. -The return status is zero unless n is greater than $# or -less than zero, non-zero otherwise. - -

test
[
Evaluate a conditional expression expr. -Each operator and operand must be a separate argument. -Expressions are composed of the primaries described below in -Bash Conditional Expressions. -test does not accept any options, nor does it accept and ignore -an argument of -- as signifying the end of options. - -

When the [ form is used, the last argument to the command must -be a ]. - -

Expressions may be combined using the following operators, listed in -decreasing order of precedence. - -

-
! expr
True if expr is false. - -
( expr )
Returns the value of expr. -This may be used to override the normal precedence of operators. - -
expr1 -a expr2
True if both expr1 and expr2 are true. - -
expr1 -o expr2
True if either expr1 or expr2 is true. -
- -

The test and [ builtins evaluate conditional -expressions using a set of rules based on the number of arguments. - -

-
0 arguments
The expression is false. - -
1 argument
The expression is true if and only if the argument is not null. - -
2 arguments
If the first argument is `!', 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 Bash Conditional Expressions), the expression -is true if the unary test is true. -If the first argument is not a valid unary operator, the expression is -false. - -
3 arguments
If the second argument is one of the binary conditional -operators (see Bash Conditional Expressions), 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 `!', the value is the negation of -the two-argument test using the second and third arguments. -If the first argument is exactly `(' and the third argument is -exactly `)', the result is the one-argument test of the second -argument. -Otherwise, the expression is false. -The `-a' and `-o' operators are considered binary operators -in this case. - -
4 arguments
If the first argument is `!', 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. - -
5 or more arguments
The expression is parsed and evaluated according to precedence -using the rules listed above. -
- -
times
-
          times
-     
-

Print out the user and system times used by the shell and its children. -The return status is zero. - -

trap
-
          trap [-lp] [arg] [sigspec ...]
-     
-

The commands in arg are to be read and executed when the -shell receives signal sigspec. If arg is absent (and -there is a single sigspec) or -equal to `-', each specified signal's disposition is reset -to the value it had when the shell was started. -If arg is the null string, then the signal specified by -each sigspec is ignored by the shell and commands it invokes. -If arg is not present and -p has been supplied, -the shell displays the trap commands associated with each sigspec. -If no arguments are supplied, or -only -p is given, trap prints the list of commands -associated with each signal number in a form that may be reused as -shell input. -The -l option causes the shell to print a list of signal names -and their corresponding numbers. -Each sigspec is either a signal name or a signal number. -Signal names are case insensitive and the SIG prefix is optional. -If a sigspec -is 0 or EXIT, arg is executed when the shell exits. -If a sigspec is DEBUG, the command arg is executed -before every simple command, for command, case command, -select command, every arithmetic for command, and before -the first command executes in a shell function. -Refer to the description of the extglob option to the -shopt builtin (see The Shopt Builtin) for details of its -effect on the DEBUG trap. -If a sigspec is ERR, the command arg -is executed whenever a simple command has a non-zero exit status, -subject to the following conditions. -The ERR trap is not executed if the failed command is part of the -command list immediately following an until or while keyword, -part of the test in an if statement, -part of a && or || list, or if the command's return -status is being inverted using !. -These are the same conditions obeyed by the errexit option. -If a sigspec is RETURN, the command arg is executed -each time a shell function or a script executed with the . or -source builtins finishes executing. - -

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. - -

The return status is zero unless a sigspec does not specify a -valid signal. - -

umask
-
          umask [-p] [-S] [mode]
-     
-

Set the shell process's file creation mask to mode. If -mode 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 chmod command. If mode is -omitted, the current value of the mask is printed. If the -S -option is supplied without a mode argument, the mask is printed -in a symbolic format. -If the -p option is supplied, and mode -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 mode argument is supplied, and non-zero otherwise. - -

Note that when the mode is interpreted as an octal number, each number -of the umask is subtracted from 7. Thus, a umask of 022 -results in permissions of 755. - -

unset
-
          unset [-fv] [name]
-     
-

Each variable or function name is removed. -If no options are supplied, or the -v option is given, each -name refers to a shell variable. -If the -f option is given, the names 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 name is readonly. -

- - - -

4.2 Bash Builtin Commands

- -

This section describes builtin commands which are unique to -or have been extended in Bash. -Some of these commands are specified in the posix standard. - -

-
alias
-
          alias [-p] [name[=value] ...]
-     
-

Without arguments or with the -p option, alias 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 name -whose value is given. If no value is given, the name -and value of the alias is printed. -Aliases are described in Aliases. - -

bind
-
          bind [-m keymap] [-lpsvPSV]
-          bind [-m keymap] [-q function] [-u function] [-r keyseq]
-          bind [-m keymap] -f filename
-          bind [-m keymap] -x keyseq:shell-command
-          bind [-m keymap] keyseq:function-name
-          bind readline-command
-     
-

Display current Readline (see Command Line Editing) -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 Readline Init File), -but each binding or command must be passed as a separate argument; e.g., -`"\C-x\C-r":re-read-init-file'. -Options, if supplied, have the following meanings: - -

-
-m keymap
Use keymap as the keymap to be affected by -the subsequent bindings. Acceptable keymap -names are -emacs, -emacs-standard, -emacs-meta, -emacs-ctlx, -vi, -vi-move, -vi-command, and -vi-insert. -vi is equivalent to vi-command; -emacs is equivalent to emacs-standard. - -
-l
List the names of all Readline functions. - -
-p
Display Readline function names and bindings in such a way that they -can be used as input or in a Readline initialization file. - -
-P
List current Readline function names and bindings. - -
-v
Display Readline variable names and values in such a way that they -can be used as input or in a Readline initialization file. - -
-V
List current Readline variable names and values. - -
-s
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. - -
-S
Display Readline key sequences bound to macros and the strings they output. - -
-f filename
Read key bindings from filename. - -
-q function
Query about which keys invoke the named function. - -
-u function
Unbind all keys bound to the named function. - -
-r keyseq
Remove any current binding for keyseq. - -
-x keyseq:shell-command
Cause shell-command to be executed whenever keyseq is -entered. - -
- -

The return status is zero unless an invalid option is supplied or an -error occurs. - -

builtin
-
          builtin [shell-builtin [args]]
-     
-

Run a shell builtin, passing it args, 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 shell-builtin is not a shell -builtin command. - -

caller
-
          caller [expr]
-     
-

Returns the context of any active subroutine call (a shell function or -a script executed with the . or source builtins). - -

Without expr, caller displays the line number and source -filename of the current subroutine call. -If a non-negative integer is supplied as expr, caller -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. - -

The return value is 0 unless the shell is not executing a subroutine -call or expr does not correspond to a valid position in the -call stack. - -

command
-
          command [-pVv] command [arguments ...]
-     
-

Runs command with arguments ignoring any shell function -named command. -Only shell builtin commands or commands found by searching the -PATH are executed. -If there is a shell function named ls, running `command ls' -within the function will execute the external command ls -instead of calling the function recursively. -The -p option means to use a default value for PATH -that is guaranteed to find all of the standard utilities. -The return status in this case is 127 if command cannot be -found or an error occurred, and the exit status of command -otherwise. - -

If either the -V or -v option is supplied, a -description of command is printed. The -v option -causes a single word indicating the command or file name used to -invoke command to be displayed; the -V option produces -a more verbose description. In this case, the return status is -zero if command is found, and non-zero if not. - -

declare
-
          declare [-afFirtx] [-p] [name[=value] ...]
-     
-

Declare variables and give them attributes. If no names -are given, then display the values of variables instead. - -

The -p option will display the attributes and values of each -name. -When -p is used, additional options are ignored. -The -F option inhibits the display of function definitions; -only the function name and attributes are printed. -If the extdebug shell option is enabled using shopt -(see The Shopt Builtin), the source file name and line number where -the function is defined are displayed as well. --F implies -f. -The following options can be used to restrict output to variables with -the specified attributes or to give variables attributes: - -

-
-a
Each name is an array variable (see Arrays). - -
-f
Use function names only. - -
-i
The variable is to be treated as -an integer; arithmetic evaluation (see Shell Arithmetic) is -performed when the variable is assigned a value. - -
-r
Make names readonly. These names cannot then be assigned values -by subsequent assignment statements or unset. - -
-t
Give each name the trace attribute. -Traced functions inherit the DEBUG and RETURN traps from -the calling shell. -The trace attribute has no special meaning for variables. - -
-x
Mark each name for export to subsequent commands via -the environment. -
- -

Using `+' instead of `-' turns off the attribute instead, -with the exceptions that `+a' -may not be used to destroy an array variable and `+r' will not -remove the readonly attribute. -When used in a function, declare makes each name local, -as with the local command. If a variable name is followed by -=value, the value of the variable is set to value. - -

The return status is zero unless an invalid option is encountered, -an attempt is made to define a function using `-f foo=bar', -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 Arrays), -one of the names 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 -f. - -

echo
-
          echo [-neE] [arg ...]
-     
-

Output the args, separated by spaces, terminated with a -newline. -The return status is always 0. -If -n is specified, the trailing newline is suppressed. -If the -e option is given, interpretation of the following -backslash-escaped characters is enabled. -The -E option disables the interpretation of these escape characters, -even on systems where they are interpreted by default. -The xpg_echo shell option may be used to -dynamically determine whether or not echo expands these -escape characters by default. -echo does not interpret -- to mean the end of options. - -

echo interprets the following escape sequences: -

-
\a
alert (bell) -
\b
backspace -
\c
suppress trailing newline -
\e
escape -
\f
form feed -
\n
new line -
\r
carriage return -
\t
horizontal tab -
\v
vertical tab -
\\
backslash -
\0nnn
the eight-bit character whose value is the octal value nnn -(zero to three octal digits) -
\xHH
the eight-bit character whose value is the hexadecimal value HH -(one or two hex digits) -
- -
enable
-
          enable [-a] [-dnps] [-f filename] [name ...]
-     
-

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 -n is used, the names become disabled. Otherwise -names are enabled. For example, to use the test binary -found via $PATH instead of the shell builtin version, type -`enable -n test'. - -

If the -p option is supplied, or no name arguments appear, -a list of shell builtins is printed. With no other arguments, the list -consists of all enabled shell builtins. -The -a option means to list -each builtin with an indication of whether or not it is enabled. - -

The -f option means to load the new builtin command name -from shared object filename, on systems that support dynamic loading. -The -d option will delete a builtin loaded with -f. - -

If there are no options, a list of the shell builtins is displayed. -The -s option restricts enable to the posix special -builtins. If -s is used with -f, the new builtin becomes -a special builtin (see Special Builtins). - -

The return status is zero unless a name is not a shell builtin -or there is an error loading a new builtin from a shared object. - -

help
-
          help [-s] [pattern]
-     
-

Display helpful information about builtin commands. -If pattern is specified, help gives detailed help -on all commands matching pattern, otherwise a list of -the builtins is printed. -The -s option restricts the information displayed to a short -usage synopsis. -The return status is zero unless no command matches pattern. - -

let
-
          let expression [expression]
-     
-

The let builtin allows arithmetic to be performed on shell -variables. Each expression is evaluated according to the -rules given below in Shell Arithmetic. If the -last expression evaluates to 0, let returns 1; -otherwise 0 is returned. - -

local
-
          local [option] name[=value] ...
-     
-

For each argument, a local variable named name is created, -and assigned value. -The option can be any of the options accepted by declare. -local can only be used within a function; it makes the variable -name have a visible scope restricted to that function and its -children. The return status is zero unless local is used outside -a function, an invalid name is supplied, or name is a -readonly variable. - -

logout
-
          logout [n]
-     
-

Exit a login shell, returning a status of n to the shell's -parent. - -

printf
-
          printf [-v var] format [arguments]
-     
-

Write the formatted arguments to the standard output under the -control of the format. -The format 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 -argument. -In addition to the standard printf(1) formats, `%b' causes -printf to expand backslash escape sequences in the corresponding -argument, -(except that `\c' terminates output, backslashes in -`\'', `\"', and `\?' are not removed, and octal escapes -beginning with `\0' may contain up to four digits), -and `%q' causes printf to output the -corresponding argument in a format that can be reused as shell input. - -

The -v option causes the output to be assigned to the variable -var rather than being printed to the standard output. - -

The format is reused as necessary to consume all of the arguments. -If the format requires more arguments 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. - -

read
-
          read [-ers] [-a aname] [-d delim] [-n nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
-     
-

One line is read from the standard input, or from the file descriptor -fd supplied as an argument to the -u option, and the first word -is assigned to the first name, the second word to the second name, -and so on, with leftover words and their intervening separators assigned -to the last name. -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 IFS variable -are used to split the line into words. -The backslash character `\' 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 REPLY. -The return code is zero, unless end-of-file is encountered, read -times out, or an invalid file descriptor is supplied as the argument to --u. -Options, if supplied, have the following meanings: - -

-
-a aname
The words are assigned to sequential indices of the array variable -aname, starting at 0. -All elements are removed from aname before the assignment. -Other name arguments are ignored. - -
-d delim
The first character of delim is used to terminate the input line, -rather than newline. - -
-e
Readline (see Command Line Editing) is used to obtain the line. - -
-n nchars
read returns after reading nchars characters rather than -waiting for a complete line of input. - -
-p prompt
Display prompt, without a trailing newline, before attempting -to read any input. -The prompt is displayed only if input is coming from a terminal. - -
-r
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. - -
-s
Silent mode. If input is coming from a terminal, characters are -not echoed. - -
-t timeout
Cause read to time out and return failure if a complete line of -input is not read within timeout seconds. -This option has no effect if read is not reading input from the -terminal or a pipe. - -
-u fd
Read input from file descriptor fd. - -
- -
source
-
          source filename
-     
-

A synonym for . (see Bourne Shell Builtins). - -

type
-
          type [-afptP] [name ...]
-     
-

For each name, indicate how it would be interpreted if used as a -command name. - -

If the -t option is used, type prints a single word -which is one of `alias', `function', `builtin', -`file' or `keyword', -if name is an alias, shell function, shell builtin, -disk file, or shell reserved word, respectively. -If the name is not found, then nothing is printed, and -type returns a failure status. - -

If the -p option is used, type either returns the name -of the disk file that would be executed, or nothing if -t -would not return `file'. - -

The -P option forces a path search for each name, even if --t would not return `file'. - -

If a command is hashed, -p and -P print the hashed value, -not necessarily the file that appears first in $PATH. - -

If the -a option is used, type returns all of the places -that contain an executable named file. -This includes aliases and functions, if and only if the -p option -is not also used. - -

If the -f option is used, type does not attempt to find -shell functions, as with the command builtin. - -

The return status is zero if any of the names are found, non-zero -if none are found. - -

typeset
-
          typeset [-afFrxi] [-p] [name[=value] ...]
-     
-

The typeset command is supplied for compatibility with the Korn -shell; however, it has been deprecated in favor of the declare -builtin command. - -

ulimit
-
          ulimit [-acdefilmnpqrstuvxSH] [limit]
-     
-

ulimit 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: -

-
-S
Change and report the soft limit associated with a resource. - -
-H
Change and report the hard limit associated with a resource. - -
-a
All current limits are reported. - -
-c
The maximum size of core files created. - -
-d
The maximum size of a process's data segment. - -
-e
The maximum scheduling priority ("nice"). - -
-f
The maximum size of files written by the shell and its children. - -
-i
The maximum number of pending signals. - -
-l
The maximum size that may be locked into memory. - -
-m
The maximum resident set size. - -
-n
The maximum number of open file descriptors. - -
-p
The pipe buffer size. - -
-q
The maximum number of bytes in POSIX message queues. - -
-r
The maximum real-time scheduling priority. - -
-s
The maximum stack size. - -
-t
The maximum amount of cpu time in seconds. - -
-u
The maximum number of processes available to a single user. - -
-v
The maximum amount of virtual memory available to the process. - -
-x
The maximum number of file locks. - -
- -

If limit is given, it is the new value of the specified resource; -the special limit values hard, soft, and -unlimited 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 -H option is supplied. -When setting new limits, if neither -H nor -S is supplied, -both the hard and soft limits are set. -If no option is given, then -f is assumed. Values are in 1024-byte -increments, except for -t, which is in seconds, -p, -which is in units of 512-byte blocks, and -n and -u, which -are unscaled values. - -

The return status is zero unless an invalid option or argument is supplied, -or an error occurs while setting a new limit. - -

unalias
-
          unalias [-a] [name ... ]
-     
-

Remove each name from the list of aliases. If -a is -supplied, all aliases are removed. -Aliases are described in Aliases. - -

- -
-


- -Next: , -Previous: Bash Builtins, -Up: Shell Builtin Commands - -
- -

4.3 Modifying Shell Behavior

- - - - - -

4.3.1 The Set Builtin

- -

This builtin is so complicated that it deserves its own section. set -allows you to change the values of shell options and set the positional -parameters, or to display the names and values of shell variables. - -

-
set
-
          set [--abefhkmnptuvxBCEHPT] [-o option] [argument ...]
-          set [+abefhkmnptuvxBCEHPT] [+o option] [argument ...]
-     
-

If no options or arguments are supplied, set displays the names -and values of all shell variables and functions, sorted according to the -current locale, in a format that may be reused as input -for setting or resetting the currently-set variables. -Read-only variables cannot be reset. -In posix mode, only shell variables are listed. - -

When options are supplied, they set or unset shell attributes. -Options, if specified, have the following meanings: - -

-
-a
Mark variables and function which are modified or created for export -to the environment of subsequent commands. - -
-b
Cause the status of terminated background jobs to be reported -immediately, rather than before printing the next primary prompt. - -
-e
Exit immediately if a simple command (see Simple Commands) exits -with a non-zero status, unless the command that fails is part of the -command list immediately following a while or until keyword, -part of the test in an if statement, -part of a && or || list, -any command in a pipeline but the last, -or if the command's return status is being inverted using !. -A trap on ERR, if set, is executed before the shell exits. - -
-f
Disable file name generation (globbing). - -
-h
Locate and remember (hash) commands as they are looked up for execution. -This option is enabled by default. - -
-k
All arguments in the form of assignment statements are placed -in the environment for a command, not just those that precede -the command name. - -
-m
Job control is enabled (see Job Control). - -
-n
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. - -
-o option-name
-Set the option corresponding to option-name: - -
-
allexport
Same as -a. - -
braceexpand
Same as -B. - -
emacs
Use an emacs-style line editing interface (see Command Line Editing). - -
errexit
Same as -e. - -
errtrace
Same as -E. - -
functrace
Same as -T. - -
hashall
Same as -h. - -
histexpand
Same as -H. - -
history
Enable command history, as described in Bash History Facilities. -This option is on by default in interactive shells. - -
ignoreeof
An interactive shell will not exit upon reading EOF. - -
keyword
Same as -k. - -
monitor
Same as -m. - -
noclobber
Same as -C. - -
noexec
Same as -n. - -
noglob
Same as -f. - -
nolog
Currently ignored. - -
notify
Same as -b. - -
nounset
Same as -u. - -
onecmd
Same as -t. - -
physical
Same as -P. - -
pipefail
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. - -
posix
Change the behavior of Bash where the default operation differs -from the posix standard to match the standard -(see Bash POSIX Mode). -This is intended to make Bash behave as a strict superset of that -standard. - -
privileged
Same as -p. - -
verbose
Same as -v. - -
vi
Use a vi-style line editing interface. - -
xtrace
Same as -x. -
- -
-p
Turn on privileged mode. -In this mode, the $BASH_ENV and $ENV files are not -processed, shell functions are not inherited from the environment, -and the SHELLOPTS 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 -p option is not supplied, these actions -are taken and the effective user id is set to the real user id. -If the -p 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. - -
-t
Exit after reading and executing one command. - -
-u
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. - -
-v
Print shell input lines as they are read. - -
-x
Print a trace of simple commands, for commands, case -commands, select commands, and arithmetic for commands -and their arguments or associated word lists after they are -expanded and before they are executed. The value of the PS4 -variable is expanded and the resultant value is printed before -the command and its expanded arguments. - -
-B
The shell will perform brace expansion (see Brace Expansion). -This option is on by default. - -
-C
Prevent output redirection using `>', `>&', and `<>' -from overwriting existing files. - -
-E
If set, any trap on ERR is inherited by shell functions, command -substitutions, and commands executed in a subshell environment. -The ERR trap is normally not inherited in such cases. - -
-H
Enable `!' style history substitution (see History Interaction). -This option is on by default for interactive shells. - -
-P
If set, do not follow symbolic links when performing commands such as -cd 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. - -

For example, if /usr/sys is a symbolic link to /usr/local/sys -then: -

               $ cd /usr/sys; echo $PWD
-               /usr/sys
-               $ cd ..; pwd
-               /usr
-          
-

If set -P is on, then: -

               $ cd /usr/sys; echo $PWD
-               /usr/local/sys
-               $ cd ..; pwd
-               /usr/local
-          
-
-T
If set, any trap on DEBUG and RETURN are inherited by -shell functions, command substitutions, and commands executed -in a subshell environment. -The DEBUG and RETURN traps are normally not inherited -in such cases. - -
--
If no arguments follow this option, then the positional parameters are -unset. Otherwise, the positional parameters are set to the -arguments, even if some of them begin with a `-'. - -
-
Signal the end of options, cause all remaining arguments -to be assigned to the positional parameters. The -x -and -v options are turned off. -If there are no arguments, the positional parameters remain unchanged. -
- -

Using `+' rather than `-' 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 $-. - -

The remaining N arguments are positional parameters and are -assigned, in order, to $1, $2, ... $N. -The special parameter # is set to N. - -

The return status is always zero unless an invalid option is supplied. -

- -
-


- -Previous: The Set Builtin, -Up: Modifying Shell Behavior - -
- -

4.3.2 The Shopt Builtin

- -

This builtin allows you to change additional shell optional behavior. - -

-
shopt
-
          shopt [-pqsu] [-o] [optname ...]
-     
-

Toggle the values of variables controlling optional shell behavior. -With no options, or with the -p option, a list of all settable -options is displayed, with an indication of whether or not each is set. -The -p option causes output to be displayed in a form that -may be reused as input. -Other options have the following meanings: - -

-
-s
Enable (set) each optname. - -
-u
Disable (unset) each optname. - -
-q
Suppresses normal output; the return status -indicates whether the optname is set or unset. -If multiple optname arguments are given with -q, -the return status is zero if all optnames are enabled; -non-zero otherwise. - -
-o
Restricts the values of -optname to be those defined for the -o option to the -set builtin (see The Set Builtin). -
- -

If either -s or -u -is used with no optname arguments, the display is limited to -those options which are set or unset, respectively. - -

Unless otherwise noted, the shopt options are disabled (off) -by default. - -

The return status when listing options is zero if all optnames -are enabled, non-zero otherwise. When setting or unsetting options, -the return status is zero unless an optname is not a valid shell -option. - -

The list of shopt options is: -

-
autocd
If set, a command name that is the name of a directory is executed as if -it were the argument to the cd command. -This option is only used by interactive shells. - -
cdable_vars
If this is set, an argument to the cd builtin command that -is not a directory is assumed to be the name of a variable whose -value is the directory to change to. - -
cdspell
If set, minor errors in the spelling of a directory component in a -cd 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. - -
checkhash
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. - -
checkjobs
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 Job Control). -The shell always postpones exiting if any jobs are stopped. - -
checkwinsize
If set, Bash checks the window size after each command -and, if necessary, updates the values of -LINES and COLUMNS. - -
cmdhist
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. - -
dotglob
If set, Bash includes filenames beginning with a `.' in -the results of filename expansion. - -
execfail
If this is set, a non-interactive shell will not exit if -it cannot execute the file specified as an argument to the exec -builtin command. An interactive shell does not exit if exec -fails. - -
expand_aliases
If set, aliases are expanded as described below under Aliases, -Aliases. -This option is enabled by default for interactive shells. - -
extdebug
If set, behavior intended for use by debuggers is enabled: - -
    -
  1. The -F option to the declare builtin (see Bash Builtins) -displays the source file name and line number corresponding to each function -name supplied as an argument. - -
  2. If the command run by the DEBUG trap returns a non-zero value, the -next command is skipped and not executed. - -
  3. If the command run by the DEBUG trap returns a value of 2, and the -shell is executing in a subroutine (a shell function or a shell script -executed by the . or source builtins), a call to -return is simulated. - -
  4. BASH_ARGC and BASH_ARGV are updated as described in their -descriptions (see Bash Variables). - -
  5. Function tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -DEBUG and RETURN traps. - -
  6. Error tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -ERROR trap. -
- -
extglob
If set, the extended pattern matching features described above -(see Pattern Matching) are enabled. - -
extquote
If set, $'string' and $"string" quoting is -performed within ${parameter} expansions -enclosed in double quotes. This option is enabled by default. - -
failglob
If set, patterns which fail to match filenames during pathname expansion -result in an expansion error. - -
force_fignore
If set, the suffixes specified by the FIGNORE shell variable -cause words to be ignored when performing word completion even if -the ignored words are the only possible completions. -See Bash Variables, for a description of FIGNORE. -This option is enabled by default. - -
gnu_errfmt
If set, shell error messages are written in the standard gnu error -message format. - -
histappend
If set, the history list is appended to the file named by the value -of the HISTFILE -variable when the shell exits, rather than overwriting the file. - -
histreedit
If set, and Readline -is being used, a user is given the opportunity to re-edit a -failed history substitution. - -
histverify
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. - -
hostcomplete
If set, and Readline is being used, Bash will attempt to perform -hostname completion when a word containing a `@' is being -completed (see Commands For Completion). This option is enabled -by default. - -
huponexit
If set, Bash will send SIGHUP to all jobs when an interactive -login shell exits (see Signals). - -
interactive_comments
Allow a word beginning with `#' -to cause that word and all remaining characters on that -line to be ignored in an interactive shell. -This option is enabled by default. - -
lithist
If enabled, and the cmdhist -option is enabled, multi-line commands are saved to the history with -embedded newlines rather than using semicolon separators where possible. - -
login_shell
The shell sets this option if it is started as a login shell -(see Invoking Bash). -The value may not be changed. - -
mailwarn
If set, and a file that Bash is checking for mail has been -accessed since the last time it was checked, the message -"The mail in mailfile has been read" is displayed. - -
no_empty_cmd_completion
If set, and Readline is being used, Bash will not attempt to search -the PATH for possible completions when completion is attempted -on an empty line. - -
nocaseglob
If set, Bash matches filenames in a case-insensitive fashion when -performing filename expansion. - -
nocasematch
If set, Bash matches patterns in a case-insensitive fashion when -performing matching while executing case or [[ -conditional commands. - -
nullglob
If set, Bash allows filename patterns which match no -files to expand to a null string, rather than themselves. - -
progcomp
If set, the programmable completion facilities -(see Programmable Completion) are enabled. -This option is enabled by default. - -
promptvars
If set, prompt strings undergo -parameter expansion, command substitution, arithmetic -expansion, and quote removal after being expanded -as described below (see Printing a Prompt). -This option is enabled by default. - -
restricted_shell
The shell sets this option if it is started in restricted mode -(see The Restricted Shell). -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. - -
shift_verbose
If this is set, the shift -builtin prints an error message when the shift count exceeds the -number of positional parameters. - -
sourcepath
If set, the source builtin uses the value of PATH -to find the directory containing the file supplied as an argument. -This option is enabled by default. - -
xpg_echo
If set, the echo builtin expands backslash-escape sequences -by default. - -
- -

The return status when listing options is zero if all optnames -are enabled, non-zero otherwise. -When setting or unsetting options, the return status is zero unless an -optname is not a valid shell option. - -

- - - -

4.4 Special Builtins

- -

-For historical reasons, the posix standard has classified -several builtin commands as special. -When Bash is executing in posix mode, the special builtins -differ from other builtin commands in three respects: - -

    -
  1. Special builtins are found before shell functions during command lookup. - -
  2. If a special builtin returns an error status, a non-interactive shell exits. - -
  3. Assignment statements preceding the command stay in effect in the shell -environment after the command completes. -
- -

When Bash is not executing in posix mode, these builtins behave no -differently than the rest of the Bash builtin commands. -The Bash posix mode is described in Bash POSIX Mode. - -

These are the posix special builtins: -

     break : . continue eval exec exit export readonly return set
-     shift trap unset
-
-
-


- -Next: , -Previous: Shell Builtin Commands, -Up: Top - -
- -

5 Shell Variables

- - - -

This chapter describes the shell variables that Bash uses. -Bash automatically assigns default values to a number of variables. - -

-


- -Next: , -Up: Shell Variables - -
- -

5.1 Bourne Shell Variables

- -

Bash uses certain shell variables in the same way as the Bourne shell. -In some cases, Bash assigns a default value to the variable. - -

-
CDPATH
A colon-separated list of directories used as a search path for -the cd builtin command. - -
HOME
The current user's home directory; the default for the cd builtin -command. -The value of this variable is also used by tilde expansion -(see Tilde Expansion). - -
IFS
A list of characters that separate fields; used when the shell splits -words as part of expansion. - -
MAIL
If this parameter is set to a filename and the MAILPATH variable -is not set, Bash informs the user of the arrival of mail in -the specified file. - -
MAILPATH
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 `?'. -When used in the text of the message, $_ expands to the name of -the current mail file. - -
OPTARG
The value of the last option argument processed by the getopts builtin. - -
OPTIND
The index of the last option argument processed by the getopts builtin. - -
PATH
A colon-separated list of directories in which the shell looks for -commands. -A zero-length (null) directory name in the value of PATH indicates the -current directory. -A null directory name may appear as two adjacent colons, or as an initial -or trailing colon. - -
PS1
The primary prompt string. The default value is `\s-\v\$ '. -See Printing a Prompt, for the complete list of escape -sequences that are expanded before PS1 is displayed. - -
PS2
The secondary prompt string. The default value is `> '. - -
- -
-


- -Previous: Bourne Shell Variables, -Up: Shell Variables - -
- -

5.2 Bash Variables

- -

These variables are set or used by Bash, but other shells -do not normally treat them specially. - -

A few variables used by Bash are described in different chapters: -variables for controlling the job control facilities -(see Job Control Variables). - -

-
BASH
The full pathname used to execute the current instance of Bash. - -
BASHPID
Expands to the process id of the current Bash process. -This differs from $$ under certain circumstances, such as subshells -that do not require Bash to be re-initialized. - -
BASH_ARGC
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 . or source) is at the top of the stack. When a -subroutine is executed, the number of parameters passed is pushed onto -BASH_ARGC. -The shell sets BASH_ARGC only when in extended debugging mode -(see The Shopt Builtin -for a description of the extdebug option to the shopt -builtin). - -
BASH_ARGV
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 BASH_ARGV. -The shell sets BASH_ARGV only when in extended debugging mode -(see The Shopt Builtin -for a description of the extdebug option to the shopt -builtin). - -
BASH_COMMAND
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. - -
BASH_ENV
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 Bash Startup Files. - -
BASH_EXECUTION_STRING
The command argument to the -c invocation option. - -
BASH_LINENO
An array variable whose members are the line numbers in source files -corresponding to each member of FUNCNAME. -${BASH_LINENO[$i]} is the line number in the source file where -${FUNCNAME[$i]} was called. -The corresponding source file name is ${BASH_SOURCE[$i]}. -Use LINENO to obtain the current line number. - -
BASH_REMATCH
An array variable whose members are assigned by the `=~' binary -operator to the [[ conditional command -(see Conditional Constructs). -The element with index 0 is the portion of the string -matching the entire regular expression. -The element with index n is the portion of the -string matching the nth parenthesized subexpression. -This variable is read-only. - -
BASH_SOURCE
An array variable whose members are the source filenames corresponding -to the elements in the FUNCNAME array variable. - -
BASH_SUBSHELL
Incremented by one each time a subshell or subshell environment is spawned. -The initial value is 0. - -
BASH_VERSINFO
A readonly array variable (see Arrays) -whose members hold version information for this instance of Bash. -The values assigned to the array members are as follows: - -
-
BASH_VERSINFO[0]
The major version number (the release). - -
BASH_VERSINFO[1]
The minor version number (the version). - -
BASH_VERSINFO[2]
The patch level. - -
BASH_VERSINFO[3]
The build version. - -
BASH_VERSINFO[4]
The release status (e.g., beta1). - -
BASH_VERSINFO[5]
The value of MACHTYPE. - -
- -
BASH_VERSION
The version number of the current instance of Bash. - -
COLUMNS
Used by the select builtin command to determine the terminal width -when printing selection lists. Automatically set upon receipt of a -SIGWINCH. - -
COMP_CWORD
An index into ${COMP_WORDS} of the word containing the current -cursor position. -This variable is available only in shell functions invoked by the -programmable completion facilities (see Programmable Completion). - -
COMP_LINE
The current command line. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see Programmable Completion). - -
COMP_POINT
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 ${#COMP_LINE}. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see Programmable Completion). - -
COMP_TYPE
Set to an integer value corresponding to the type of completion attempted -that caused a completion function to be called: -TAB, for normal completion, -`?', for listing completions after successive tabs, -`!', for listing alternatives on partial word completion, -`@', to list completions if the word is not unmodified, -or -`%', for menu completion. -This variable is available only in shell functions and external -commands invoked by the -programmable completion facilities (see Programmable Completion). - -
COMP_KEY
The key (or final key of a key sequence) used to invoke the current -completion function. - -
COMP_WORDBREAKS
The set of characters that the Readline library treats as word -separators when performing word completion. -If COMP_WORDBREAKS is unset, it loses its special properties, -even if it is subsequently reset. - -
COMP_WORDS
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 Programmable Completion). - -
COMPREPLY
An array variable from which Bash reads the possible completions -generated by a shell function invoked by the programmable completion -facility (see Programmable Completion). - -
DIRSTACK
An array variable containing the current contents of the directory stack. -Directories appear in the stack in the order they are displayed by the -dirs builtin. -Assigning to members of this array variable may be used to modify -directories already in the stack, but the pushd and popd -builtins must be used to add and remove directories. -Assignment to this variable will not change the current directory. -If DIRSTACK is unset, it loses its special properties, even if -it is subsequently reset. - -
EMACS
If Bash finds this variable in the environment when the shell -starts with value `t', it assumes that the shell is running in an -emacs shell buffer and disables line editing. - -
EUID
The numeric effective user id of the current user. This variable -is readonly. - -
FCEDIT
The editor used as a default by the -e option to the fc -builtin command. - -
FIGNORE
A colon-separated list of suffixes to ignore when performing -filename completion. -A file name whose suffix matches one of the entries in -FIGNORE -is excluded from the list of matched file names. A sample -value is `.o:~' - -
FUNCNAME
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 "main". -This variable exists only when a shell function is executing. -Assignments to FUNCNAME have no effect and return an error status. -If FUNCNAME is unset, it loses its special properties, even if -it is subsequently reset. - -
GLOBIGNORE
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 GLOBIGNORE, it is removed from the list -of matches. - -
GROUPS
An array variable containing the list of groups of which the current -user is a member. -Assignments to GROUPS have no effect and return an error status. -If GROUPS is unset, it loses its special properties, even if it is -subsequently reset. - -
histchars
Up to three characters which control history expansion, quick -substitution, and tokenization (see History Interaction). -The first character is the -history expansion character, that is, the character which signifies the -start of a history expansion, normally `!'. The second character is the -character which signifies `quick substitution' when seen as the first -character on a line, normally `^'. 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 `#'. 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. - -
HISTCMD
The history number, or index in the history list, of the current -command. If HISTCMD is unset, it loses its special properties, -even if it is subsequently reset. - -
HISTCONTROL
A colon-separated list of values controlling how commands are saved on -the history list. -If the list of values includes `ignorespace', lines which begin -with a space character are not saved in the history list. -A value of `ignoredups' causes lines which match the previous -history entry to not be saved. -A value of `ignoreboth' is shorthand for -`ignorespace' and `ignoredups'. -A value of `erasedups' 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 HISTCONTROL 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 HISTIGNORE. -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 -HISTCONTROL. - -
HISTFILE
The name of the file to which the command history is saved. The -default value is ~/.bash_history. - -
HISTFILESIZE
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. - -
HISTIGNORE
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 `*' is appended). Each pattern is tested -against the line after the checks specified by HISTCONTROL -are applied. In addition to the normal shell pattern matching -characters, `&' matches the previous history line. `&' -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 -HISTIGNORE. - -

HISTIGNORE subsumes the function of HISTCONTROL. A -pattern of `&' is identical to ignoredups, and a -pattern of `[ ]*' is identical to ignorespace. -Combining these two patterns, separating them with a colon, -provides the functionality of ignoreboth. - -

HISTSIZE
The maximum number of commands to remember on the history list. -The default value is 500. - -
HISTTIMEFORMAT
If this variable is set and not null, its value is used as a format string -for strftime to print the time stamp associated with each history -entry displayed by the history builtin. -If this variable is set, time stamps are written to the history file so -they may be preserved across shell sessions. - -
HOSTFILE
Contains the name of a file in the same format as /etc/hosts 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 HOSTFILE is set, but has no value, Bash attempts to read -/etc/hosts to obtain the list of possible hostname completions. -When HOSTFILE is unset, the hostname list is cleared. - -
HOSTNAME
The name of the current host. - -
HOSTTYPE
A string describing the machine Bash is running on. - -
IGNOREEOF
Controls the action of the shell on receipt of an EOF character -as the sole input. If set, the value denotes the number -of consecutive EOF 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 EOF signifies the end of -input to the shell. This is only in effect for interactive shells. - -
INPUTRC
The name of the Readline initialization file, overriding the default -of ~/.inputrc. - -
LANG
Used to determine the locale category for any category not specifically -selected with a variable starting with LC_. - -
LC_ALL
This variable overrides the value of LANG and any other -LC_ variable specifying a locale category. - -
LC_COLLATE
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 Filename Expansion). - -
LC_CTYPE
This variable determines the interpretation of characters and the -behavior of character classes within filename expansion and pattern -matching (see Filename Expansion). - -
LC_MESSAGES
This variable determines the locale used to translate double-quoted -strings preceded by a `$' (see Locale Translation). - -
LC_NUMERIC
This variable determines the locale category used for number formatting. - -
LINENO
The line number in the script or shell function currently executing. - -
LINES
Used by the select builtin command to determine the column length -for printing selection lists. Automatically set upon receipt of a -SIGWINCH. - -
MACHTYPE
A string that fully describes the system type on which Bash -is executing, in the standard gnu cpu-company-system format. - -
MAILCHECK
How often (in seconds) that the shell should check for mail in the -files specified in the MAILPATH or MAIL 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. - -
OLDPWD
The previous working directory as set by the cd builtin. - -
OPTERR
If set to the value 1, Bash displays error messages -generated by the getopts builtin command. - -
OSTYPE
A string describing the operating system Bash is running on. - -
PIPESTATUS
An array variable (see Arrays) -containing a list of exit status values from the processes -in the most-recently-executed foreground pipeline (which may -contain only a single command). - -
POSIXLY_CORRECT
If this variable is in the environment when bash starts, the shell -enters posix mode (see Bash POSIX Mode) before reading the -startup files, as if the --posix invocation option had been supplied. -If it is set while the shell is running, bash enables posix mode, -as if the command -
          set -o posix
-     
-

had been executed. - -

PPID
The process id of the shell's parent process. This variable -is readonly. - -
PROMPT_COMMAND
If set, the value is interpreted as a command to execute -before the printing of each primary prompt ($PS1). - -
PS3
The value of this variable is used as the prompt for the -select command. If this variable is not set, the -select command prompts with `#? ' - -
PS4
The value is the prompt printed before the command line is echoed -when the -x option is set (see The Set Builtin). -The first character of PS4 is replicated multiple times, as -necessary, to indicate multiple levels of indirection. -The default is `+ '. - -
PWD
The current working directory as set by the cd builtin. - -
RANDOM
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. - -
REPLY
The default variable for the read builtin. - -
SECONDS
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. - -
SHELL
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. - -
SHELLOPTS
A colon-separated list of enabled shell options. Each word in -the list is a valid argument for the -o option to the -set builtin command (see The Set Builtin). -The options appearing in SHELLOPTS are those reported -as `on' by `set -o'. -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. - -
SHLVL
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. - -
TIMEFORMAT
The value of this parameter is used as a format string specifying -how the timing information for pipelines prefixed with the time -reserved word should be displayed. -The `%' 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. - -
-
%%
A literal `%'. - -
%[p][l]R
The elapsed time in seconds. - -
%[p][l]U
The number of CPU seconds spent in user mode. - -
%[p][l]S
The number of CPU seconds spent in system mode. - -
%P
The CPU percentage, computed as (%U + %S) / %R. -
- -

The optional p 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 p greater than 3 are changed to 3. -If p is not specified, the value 3 is used. - -

The optional l specifies a longer format, including minutes, of -the form MMmSS.FFs. -The value of p determines whether or not the fraction is included. - -

If this variable is not set, Bash acts as if it had the value -

          $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
-     
-

If the value is null, no timing information is displayed. -A trailing newline is added when the format string is displayed. - -

TMOUT
If set to a value greater than zero, TMOUT is treated as the -default timeout for the read builtin (see Bash Builtins). -The select command (see Conditional Constructs) terminates -if input does not arrive after TMOUT seconds when input is coming -from a terminal. - -

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. - -

TMPDIR
If set, Bash uses its value as the name of a directory in which -Bash creates temporary files for the shell's use. - -
UID
The numeric real user id of the current user. This variable is readonly. - -
- -
-


- -Next: , -Previous: Shell Variables, -Up: Top - -
- -

6 Bash Features

- -

This section describes features unique to Bash. - -

- -
-


- -Next: , -Up: Bash Features - -
- -

6.1 Invoking Bash

- -
     bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument ...]
-     bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] -c string [argument ...]
-     bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument ...]
-
-

In addition to the single-character shell command-line options -(see The Set Builtin), 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. - -

-
--debugger
Arrange for the debugger profile to be executed before the shell -starts. Turns on extended debugging mode (see The Shopt Builtin -for a description of the extdebug option to the shopt -builtin) and shell function tracing -(see The Set Builtin for a description of the -o functrace -option). - -
--dump-po-strings
A list of all double-quoted strings preceded by `$' -is printed on the standard output -in the gnu gettext PO (portable object) file format. -Equivalent to -D except for the output format. - -
--dump-strings
Equivalent to -D. - -
--help
Display a usage message on standard output and exit successfully. - -
--init-file filename
--rcfile filename
Execute commands from filename (instead of ~/.bashrc) -in an interactive shell. - -
--login
Equivalent to -l. - -
--noediting
Do not use the gnu Readline library (see Command Line Editing) -to read command lines when the shell is interactive. - -
--noprofile
Don't load the system-wide startup file /etc/profile -or any of the personal initialization files -~/.bash_profile, ~/.bash_login, or ~/.profile -when Bash is invoked as a login shell. - -
--norc
Don't read the ~/.bashrc initialization file in an -interactive shell. This is on by default if the shell is -invoked as sh. - -
--posix
Change the behavior of Bash where the default operation differs -from the posix standard to match the standard. This -is intended to make Bash behave as a strict superset of that -standard. See Bash POSIX Mode, for a description of the Bash -posix mode. - -
--restricted
Make the shell a restricted shell (see The Restricted Shell). - -
--verbose
Equivalent to -v. Print shell input lines as they're read. - -
--version
Show version information for this instance of -Bash on the standard output and exit successfully. - -
- -

There are several single-character options that may be supplied at -invocation which are not available with the set builtin. - -

-
-c string
Read and execute commands from string after processing the -options, then exit. Any remaining arguments are assigned to the -positional parameters, starting with $0. - -
-i
Force the shell to run interactively. Interactive shells are -described in Interactive Shells. - -
-l
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 `exec -l bash'. -When the shell is not interactive, the login shell startup files will -be executed. -`exec bash -l' or `exec bash --login' -will replace the current shell with a Bash login shell. -See Bash Startup Files, for a description of the special behavior -of a login shell. - -
-r
Make the shell a restricted shell (see The Restricted Shell). - -
-s
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. - -
-D
A list of all double-quoted strings preceded by `$' -is printed on the standard output. -These are the strings that -are subject to language translation when the current locale -is not C or POSIX (see Locale Translation). -This implies the -n option; no commands will be executed. - -
[-+]O [shopt_option]
shopt_option is one of the shell options accepted by the -shopt builtin (see The Shopt Builtin). -If shopt_option is present, -O sets the value of that option; -+O unsets it. -If shopt_option is not supplied, the names and values of the shell -options accepted by shopt are printed on the standard output. -If the invocation option is +O, the output is displayed in a format -that may be reused as input. - -
--
A -- signals the end of options and disables further option -processing. -Any arguments after the -- are treated as filenames and arguments. - -
- -

A login shell is one whose first character of argument zero is -`-', or one invoked with the --login option. - -

An interactive shell is one started without non-option arguments, -unless -s is specified, -without specifying the -c option, and whose input and output are both -connected to terminals (as determined by isatty(3)), or one -started with the -i option. See Interactive Shells, for more -information. - -

If arguments remain after option processing, and neither the --c nor the -s -option has been supplied, the first argument is assumed to -be the name of a file containing shell commands (see Shell Scripts). -When Bash is invoked in this fashion, $0 -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. - -

-


- -Next: , -Previous: Invoking Bash, -Up: Bash Features - -
- -

6.2 Bash Startup Files

- -

-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 Tilde Expansion). - -

Interactive shells are described in Interactive Shells. - -

Invoked as an interactive login shell, or with --login
- -

When Bash is invoked as an interactive login shell, or as a -non-interactive shell with the --login option, it first reads and -executes commands from the file /etc/profile, if that file exists. -After reading that file, it looks for ~/.bash_profile, -~/.bash_login, and ~/.profile, in that order, and reads -and executes commands from the first one that exists and is readable. -The --noprofile option may be used when the shell is started to -inhibit this behavior. - -

When a login shell exits, Bash reads and executes commands from -the file ~/.bash_logout, if it exists. - -

Invoked as an interactive non-login shell
- -

When an interactive shell that is not a login shell is started, Bash -reads and executes commands from ~/.bashrc, if that file exists. -This may be inhibited by using the --norc option. -The --rcfile file option will force Bash to read and -execute commands from file instead of ~/.bashrc. - -

So, typically, your ~/.bash_profile contains the line -

     if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
-
-

after (or before) any login-specific initializations. - -

Invoked non-interactively
- -

When Bash is started non-interactively, to run a shell script, -for example, it looks for the variable BASH_ENV 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: -

     if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
-
-

but the value of the PATH variable is not used to search for the -file name. - -

As noted above, if a non-interactive shell is invoked with the ---login option, Bash attempts to read and execute commands from the -login shell startup files. - -

Invoked with name sh
- -

If Bash is invoked with the name sh, it tries to mimic the -startup behavior of historical versions of sh as closely as -possible, while conforming to the posix standard as well. - -

When invoked as an interactive login shell, or as a non-interactive -shell with the --login option, it first attempts to read -and execute commands from /etc/profile and ~/.profile, in -that order. -The --noprofile option may be used to inhibit this behavior. -When invoked as an interactive shell with the name sh, Bash -looks for the variable ENV, 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 sh does not attempt to read and execute -commands from any other startup files, the --rcfile option has -no effect. -A non-interactive shell invoked with the name sh does not attempt -to read any other startup files. - -

When invoked as sh, Bash enters posix mode after -the startup files are read. - -

Invoked in posix mode
- -

When Bash is started in posix mode, as with the ---posix command line option, it follows the posix standard -for startup files. -In this mode, interactive shells expand the ENV variable -and commands are read and executed from the file whose name is the -expanded value. -No other startup files are read. - -

Invoked by remote shell daemon
- -

Bash attempts to determine when it is being run by the remote shell -daemon, usually rshd. If Bash determines it is being run by -rshd, it reads and executes commands from ~/.bashrc, if that -file exists and is readable. -It will not do this if invoked as sh. -The --norc option may be used to inhibit this behavior, and the ---rcfile option may be used to force another file to be read, but -rshd does not generally invoke the shell with those options or -allow them to be specified. - -

Invoked with unequal effective and real uid/gids
- -

If Bash is started with the effective user (group) id not equal to the -real user (group) id, and the -p option is not supplied, no startup -files are read, shell functions are not inherited from the environment, -the SHELLOPTS variable, if it appears in the environment, is ignored, -and the effective user id is set to the real user id. -If the -p option is supplied at invocation, the startup behavior is -the same, but the effective user id is not reset. - -

- -

6.3 Interactive Shells

- -

- -

- - - -

6.3.1 What is an Interactive Shell?

- -

An interactive shell -is one started without non-option arguments, unless -s is -specified, without specifying the -c option, and -whose input and error output are both -connected to terminals (as determined by isatty(3)), -or one started with the -i option. - -

An interactive shell generally reads from and writes to a user's -terminal. - -

The -s invocation option may be used to set the positional parameters -when an interactive shell is started. - -

- -

6.3.2 Is this Shell Interactive?

- -

To determine within a startup script whether or not Bash is -running interactively, -test the value of the `-' special parameter. -It contains i when the shell is interactive. For example: - -

     case "$-" in
-     *i*)	echo This shell is interactive ;;
-     *)	echo This shell is not interactive ;;
-     esac
-
-

Alternatively, startup scripts may examine the variable -PS1; it is unset in non-interactive shells, and set in -interactive shells. Thus: - -

     if [ -z "$PS1" ]; then
-             echo This shell is not interactive
-     else
-             echo This shell is interactive
-     fi
-
- - -

6.3.3 Interactive Shell Behavior

- -

When the shell is running interactively, it changes its behavior in -several ways. - -

    -
  1. Startup files are read and executed as described in Bash Startup Files. - -
  2. Job Control (see Job Control) is enabled by default. When job -control is in effect, Bash ignores the keyboard-generated job control -signals SIGTTIN, SIGTTOU, and SIGTSTP. - -
  3. Bash expands and displays PS1 before reading the first line -of a command, and expands and displays PS2 before reading the -second and subsequent lines of a multi-line command. - -
  4. Bash executes the value of the PROMPT_COMMAND variable as a command -before printing the primary prompt, $PS1 -(see Bash Variables). - -
  5. Readline (see Command Line Editing) is used to read commands from -the user's terminal. - -
  6. Bash inspects the value of the ignoreeof option to set -o -instead of exiting immediately when it receives an EOF on its -standard input when reading a command (see The Set Builtin). - -
  7. Command history (see Bash History Facilities) -and history expansion (see History Interaction) -are enabled by default. -Bash will save the command history to the file named by $HISTFILE -when an interactive shell exits. - -
  8. Alias expansion (see Aliases) is performed by default. - -
  9. In the absence of any traps, Bash ignores SIGTERM -(see Signals). - -
  10. In the absence of any traps, SIGINT is caught and handled -((see Signals). -SIGINT will interrupt some shell builtins. - -
  11. An interactive login shell sends a SIGHUP to all jobs on exit -if the huponexit shell option has been enabled (see Signals). - -
  12. The -n invocation option is ignored, and `set -n' has -no effect (see The Set Builtin). - -
  13. Bash will check for mail periodically, depending on the values of the -MAIL, MAILPATH, and MAILCHECK shell variables -(see Bash Variables). - -
  14. Expansion errors due to references to unbound shell variables after -`set -u' has been enabled will not cause the shell to exit -(see The Set Builtin). - -
  15. The shell will not exit on expansion errors caused by var being unset -or null in ${var:?word} expansions -(see Shell Parameter Expansion). - -
  16. Redirection errors encountered by shell builtins will not cause the -shell to exit. - -
  17. When running in posix mode, a special builtin returning an error -status will not cause the shell to exit (see Bash POSIX Mode). - -
  18. A failed exec will not cause the shell to exit -(see Bourne Shell Builtins). - -
  19. Parser syntax errors will not cause the shell to exit. - -
  20. Simple spelling correction for directory arguments to the cd -builtin is enabled by default (see the description of the cdspell -option to the shopt builtin in The Shopt Builtin). - -
  21. The shell will check the value of the TMOUT variable and exit -if a command is not read within the specified number of seconds after -printing $PS1 (see Bash Variables). - -
- -
-


- -Next: , -Previous: Interactive Shells, -Up: Bash Features - -
- -

6.4 Bash Conditional Expressions

- -

-Conditional expressions are used by the [[ compound command -and the test and [ builtin commands. - -

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 file argument to one of the primaries is of the form -/dev/fd/N, then file descriptor N is checked. -If the file argument to one of the primaries is one of -/dev/stdin, /dev/stdout, or /dev/stderr, file -descriptor 0, 1, or 2, respectively, is checked. - -

Unless otherwise specified, primaries that operate on files follow symbolic -links and operate on the target of the link, rather than the link itself. - -

-
-a file
True if file exists. - -
-b file
True if file exists and is a block special file. - -
-c file
True if file exists and is a character special file. - -
-d file
True if file exists and is a directory. - -
-e file
True if file exists. - -
-f file
True if file exists and is a regular file. - -
-g file
True if file exists and its set-group-id bit is set. - -
-h file
True if file exists and is a symbolic link. - -
-k file
True if file exists and its "sticky" bit is set. - -
-p file
True if file exists and is a named pipe (FIFO). - -
-r file
True if file exists and is readable. - -
-s file
True if file exists and has a size greater than zero. - -
-t fd
True if file descriptor fd is open and refers to a terminal. - -
-u file
True if file exists and its set-user-id bit is set. - -
-w file
True if file exists and is writable. - -
-x file
True if file exists and is executable. - -
-O file
True if file exists and is owned by the effective user id. - -
-G file
True if file exists and is owned by the effective group id. - -
-L file
True if file exists and is a symbolic link. - -
-S file
True if file exists and is a socket. - -
-N file
True if file exists and has been modified since it was last read. - -
file1 -nt file2
True if file1 is newer (according to modification date) -than file2, or if file1 exists and file2 does not. - -
file1 -ot file2
True if file1 is older than file2, -or if file2 exists and file1 does not. - -
file1 -ef file2
True if file1 and file2 refer to the same device and -inode numbers. - -
-o optname
True if shell option optname is enabled. -The list of options appears in the description of the -o -option to the set builtin (see The Set Builtin). - -
-z string
True if the length of string is zero. - -
-n string
string
True if the length of string is non-zero. - -
string1 == string2
True if the strings are equal. -`=' may be used in place of `==' for strict posix compliance. - -
string1 != string2
True if the strings are not equal. - -
string1 < string2
True if string1 sorts before string2 lexicographically -in the current locale. - -
string1 > string2
True if string1 sorts after string2 lexicographically -in the current locale. - -
arg1 OP arg2
OP is one of -`-eq', `-ne', `-lt', `-le', `-gt', or `-ge'. -These arithmetic binary operators return true if arg1 -is equal to, not equal to, less than, less than or equal to, -greater than, or greater than or equal to arg2, -respectively. Arg1 and arg2 -may be positive or negative integers. - -
- -
-


- -Next: , -Previous: Bash Conditional Expressions, -Up: Bash Features - -
- -

6.5 Shell Arithmetic

- -

-The shell allows arithmetic expressions to be evaluated, as one of -the shell expansions or by the let and the -i option -to the declare builtins. - -

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. - -

-
id++ id--
variable post-increment and post-decrement - -
++id --id
variable pre-increment and pre-decrement - -
- +
unary minus and plus - -
! ~
logical and bitwise negation - -
**
exponentiation - -
* / %
multiplication, division, remainder - -
+ -
addition, subtraction - -
<< >>
left and right bitwise shifts - -
<= >= < >
comparison - -
== !=
equality and inequality - -
&
bitwise AND - -
^
bitwise exclusive OR - -
|
bitwise OR - -
&&
logical AND - -
||
logical OR - -
expr ? expr : expr
conditional operator - -
= *= /= %= += -= <<= >>= &= ^= |=
assignment - -
expr1 , expr2
comma -
- -

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 -integer attribute using `declare -i' 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. - -

Constants with a leading 0 are interpreted as octal numbers. -A leading `0x' or `0X' denotes hexadecimal. Otherwise, -numbers take the form [base#]n, where base -is a decimal number between 2 and 64 representing the arithmetic -base, and n is a number in that base. If base# is -omitted, then base 10 is used. -The digits greater than 9 are represented by the lowercase letters, -the uppercase letters, `@', and `_', in that order. -If base is less than or equal to 36, lowercase and uppercase -letters may be used interchangeably to represent numbers between 10 -and 35. - -

Operators are evaluated in order of precedence. Sub-expressions in -parentheses are evaluated first and may override the precedence -rules above. - -

-


- -Next: , -Previous: Shell Arithmetic, -Up: Bash Features - -
- -

6.6 Aliases

- -

-Aliases 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 alias and unalias builtin commands. - -

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 `/', `$', ``', `=' 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 ls to "ls -F", -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. - -

Aliases are created and listed with the alias -command, and removed with the unalias command. - -

There is no mechanism for using arguments in the replacement text, -as in csh. -If arguments are needed, a shell function should be used -(see Shell Functions). - -

Aliases are not expanded when the shell is not interactive, -unless the expand_aliases shell option is set using -shopt (see The Shopt Builtin). - -

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 alias -in compound commands. - -

For almost every purpose, shell functions are preferred over aliases. - -

-


- -Next: , -Previous: Aliases, -Up: Bash Features - -
- -

6.7 Arrays

- -

-Bash provides one-dimensional array variables. Any variable may be used as -an array; the declare 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. - -

An array is created automatically if any variable is assigned to using -the syntax -

     name[subscript]=value
-
-

The subscript -is treated as an arithmetic expression that must evaluate to a number -greater than or equal to zero. To explicitly declare an array, use -

     declare -a name
-
-

The syntax -

     declare -a name[subscript]
-
-

is also accepted; the subscript is ignored. Attributes may be -specified for an array variable using the declare and -readonly builtins. Each attribute applies to all members of -an array. - -

Arrays are assigned to using compound assignments of the form -

     name=(value1 ... valuen)
-
-

where each -value is of the form [[subscript]=]string. 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 declare -builtin. Individual array elements may be assigned to using the -name[subscript]=value syntax introduced above. - -

Any element of an array may be referenced using -${name[subscript]}. -The braces are required to avoid -conflicts with the shell's filename expansion operators. If the -subscript is `@' or `*', the word expands to all members -of the array name. These subscripts differ only when the word -appears within double quotes. -If the word is double-quoted, -${name[*]} expands to a single word with -the value of each array member separated by the first character of the -IFS variable, and ${name[@]} expands each element of -name to a separate word. When there are no array members, -${name[@]} 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 `@' and `*'. -${#name[subscript]} expands to the length of -${name[subscript]}. -If subscript is `@' or -`*', the expansion is the number of elements in the array. -Referencing an array variable without a subscript is equivalent to -referencing element zero. - -

The unset builtin is used to destroy arrays. -unset name[subscript] -destroys the array element at index subscript. -Care must be taken to avoid unwanted side effects caused by filename -generation. -unset name, where name is an array, removes the -entire array. A subscript of `*' or `@' also removes the -entire array. - -

The declare, local, and readonly -builtins each accept a -a -option to specify an array. The read -builtin accepts a -a -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 set and declare -builtins display array values in a way that allows them to be -reused as input. - -

-


- -Next: , -Previous: Arrays, -Up: Bash Features - -
- -

6.8 The Directory Stack

- -

- -

- -

The directory stack is a list of recently-visited directories. The -pushd builtin adds directories to the stack as it changes -the current directory, and the popd builtin removes specified -directories from the stack and changes the current directory to -the directory removed. The dirs builtin displays the contents -of the directory stack. - -

The contents of the directory stack are also visible -as the value of the DIRSTACK shell variable. - -

-


- -Up: The Directory Stack - -
- -

6.8.1 Directory Stack Builtins

- -
-
dirs
-
          dirs [+N | -N] [-clpv]
-     
-

Display the list of currently remembered directories. Directories -are added to the list with the pushd command; the -popd command removes directories from the list. -

-
+N
Displays the Nth directory (counting from the left of the -list printed by dirs when invoked without options), starting -with zero. -
-N
Displays the Nth directory (counting from the right of the -list printed by dirs when invoked without options), starting -with zero. -
-c
Clears the directory stack by deleting all of the elements. -
-l
Produces a longer listing; the default listing format uses a -tilde to denote the home directory. -
-p
Causes dirs to print the directory stack with one entry per -line. -
-v
Causes dirs to print the directory stack with one entry per -line, prefixing each entry with its index in the stack. -
- -
popd
-
          popd [+N | -N] [-n]
-     
-

Remove the top entry from the directory stack, and cd -to the new top directory. -When no arguments are given, popd -removes the top directory from the stack and -performs a cd to the new top directory. The -elements are numbered from 0 starting at the first directory listed with -dirs; i.e., popd is equivalent to popd +0. -

-
+N
Removes the Nth directory (counting from the left of the -list printed by dirs), starting with zero. -
-N
Removes the Nth directory (counting from the right of the -list printed by dirs), starting with zero. -
-n
Suppresses the normal change of directory when removing directories -from the stack, so that only the stack is manipulated. -
- -


pushd
-
          pushd [-n] [+N | -N | dir ]
-     
-

Save the current directory on the top of the directory stack -and then cd to dir. -With no arguments, pushd exchanges the top two directories. - -

-
-n
Suppresses the normal change of directory when adding directories -to the stack, so that only the stack is manipulated. -
+N
Brings the Nth directory (counting from the left of the -list printed by dirs, starting with zero) to the top of -the list by rotating the stack. -
-N
Brings the Nth directory (counting from the right of the -list printed by dirs, starting with zero) to the top of -the list by rotating the stack. -
dir
Makes the current working directory be the top of the stack, and then -executes the equivalent of `cd dir'. -cds to dir. -
- -
- -
-


- -Next: , -Previous: The Directory Stack, -Up: Bash Features - -
- -

6.9 Controlling the Prompt

- -

-The value of the variable PROMPT_COMMAND is examined just before -Bash prints each primary prompt. If PROMPT_COMMAND is set and -has a non-null value, then the -value is executed just as if it had been typed on the command line. - -

In addition, the following table describes the special characters which -can appear in the prompt variables: - -

-
\a
A bell character. -
\d
The date, in "Weekday Month Date" format (e.g., "Tue May 26"). -
\D{format}
The format is passed to strftime(3) and the result is inserted -into the prompt string; an empty format results in a locale-specific -time representation. The braces are required. -
\e
An escape character. -
\h
The hostname, up to the first `.'. -
\H
The hostname. -
\j
The number of jobs currently managed by the shell. -
\l
The basename of the shell's terminal device name. -
\n
A newline. -
\r
A carriage return. -
\s
The name of the shell, the basename of $0 (the portion -following the final slash). -
\t
The time, in 24-hour HH:MM:SS format. -
\T
The time, in 12-hour HH:MM:SS format. -
\@
The time, in 12-hour am/pm format. -
\A
The time, in 24-hour HH:MM format. -
\u
The username of the current user. -
\v
The version of Bash (e.g., 2.00) -
\V
The release of Bash, version + patchlevel (e.g., 2.00.0) -
\w
The current working directory, with $HOME abbreviated with a tilde. -
\W
The basename of $PWD, with $HOME abbreviated with a tilde. -
\!
The history number of this command. -
\#
The command number of this command. -
\$
If the effective uid is 0, #, otherwise $. -
\nnn
The character whose ASCII code is the octal value nnn. -
\\
A backslash. -
\[
Begin a sequence of non-printing characters. This could be used to -embed a terminal control sequence into the prompt. -
\]
End a sequence of non-printing characters. -
- -

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 Bash History Facilities), while the command number is -the position in the sequence of commands executed during the current -shell session. - -

After the string is decoded, it is expanded via -parameter expansion, command substitution, arithmetic -expansion, and quote removal, subject to the value of the -promptvars shell option (see Bash Builtins). - -

-


- -Next: , -Previous: Printing a Prompt, -Up: Bash Features - -
- -

6.10 The Restricted Shell

- -

-If Bash is started with the name rbash, or the ---restricted -or --r -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 bash -with the exception that the following are disallowed or not performed: - -

    -
  • Changing directories with the cd builtin. -
  • Setting or unsetting the values of the SHELL, PATH, -ENV, or BASH_ENV variables. -
  • Specifying command names containing slashes. -
  • Specifying a filename containing a slash as an argument to the . -builtin command. -
  • Specifying a filename containing a slash as an argument to the -p -option to the hash builtin command. -
  • Importing function definitions from the shell environment at startup. -
  • Parsing the value of SHELLOPTS from the shell environment at startup. -
  • Redirecting output using the `>', `>|', `<>', `>&', -`&>', and `>>' redirection operators. -
  • Using the exec builtin to replace the shell with another command. -
  • Adding or deleting builtin commands with the --f and -d options to the enable builtin. -
  • Using the enable builtin command to enable disabled shell builtins. -
  • Specifying the -p option to the command builtin. -
  • Turning off restricted mode with `set +r' or `set +o restricted'. -
- -

These restrictions are enforced after any startup files are read. - -

When a command that is found to be a shell script is executed -(see Shell Scripts), rbash turns off any restrictions in -the shell spawned to execute the script. - -

-


- -Previous: The Restricted Shell, -Up: Bash Features - -
- -

6.11 Bash POSIX Mode

- -

-Starting Bash with the --posix command-line option or executing -`set -o posix' while Bash is running will cause Bash to conform more -closely to the posix standard by changing the behavior to -match that specified by posix in areas where the Bash default differs. - -

When invoked as sh, Bash enters posix mode after reading the -startup files. - -

The following list is what's changed when `posix mode' is in effect: - -

    -
  1. When a command in the hash table no longer exists, Bash will re-search -$PATH to find the new location. This is also available with -`shopt -s checkhash'. - -
  2. The message printed by the job control code and builtins when a job -exits with a non-zero status is `Done(status)'. - -
  3. The message printed by the job control code and builtins when a job -is stopped is `Stopped(signame)', where signame is, for -example, SIGTSTP. - -
  4. The bg 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. - -
  5. Reserved words appearing in a context where reserved words are recognized -do not undergo alias expansion. - -
  6. The posix PS1 and PS2 expansions of `!' to -the history number and `!!' to `!' are enabled, -and parameter expansion is performed on the values of PS1 and -PS2 regardless of the setting of the promptvars option. - -
  7. The posix startup files are executed ($ENV) rather than -the normal Bash files. - -
  8. Tilde expansion is only performed on assignments preceding a command -name, rather than on all assignment statements on the line. - -
  9. The default history file is ~/.sh_history (this is the -default value of $HISTFILE). - -
  10. The output of `kill -l' prints all the signal names on a single line, -separated by spaces, without the `SIG' prefix. - -
  11. The kill builtin does not accept signal names with a `SIG' -prefix. - -
  12. Non-interactive shells exit if filename in . filename -is not found. - -
  13. Non-interactive shells exit if a syntax error in an arithmetic expansion -results in an invalid expression. - -
  14. Redirection operators do not perform filename expansion on the word -in the redirection unless the shell is interactive. - -
  15. Redirection operators do not perform word splitting on the word in the -redirection. - -
  16. Function names must be valid shell names. 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. - -
  17. posix special builtins are found before shell functions -during command lookup. - -
  18. If a posix special builtin returns an error status, a -non-interactive shell exits. The fatal errors are those listed in -the POSIX standard, and include things like passing incorrect options, -redirection errors, variable assignment errors for assignments preceding -the command name, and so on. - -
  19. If CDPATH is set, the cd builtin will not implicitly -append the current directory to it. This means that cd will -fail if no valid directory name can be constructed from -any of the entries in $CDPATH, even if the a directory with -the same name as the name given as an argument to cd exists -in the current directory. - -
  20. 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. - -
  21. A non-interactive shell exits with an error status if the iteration -variable in a for statement or the selection variable in a -select statement is a readonly variable. - -
  22. Process substitution is not available. - -
  23. Assignment statements preceding posix special builtins -persist in the shell environment after the builtin completes. - -
  24. Assignment statements preceding shell function calls persist in the -shell environment after the function returns, as if a posix -special builtin command had been executed. - -
  25. The export and readonly builtin commands display their -output in the format required by posix. - -
  26. The trap builtin displays signal names without the leading -SIG. - -
  27. The trap 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 `-' as the -first argument. - -
  28. The . and source builtins do not search the current directory -for the filename argument if it is not found by searching PATH. - -
  29. Subshells spawned to execute command substitutions inherit the value of -the -e option from the parent shell. When not in posix mode, -Bash clears the -e option in such subshells. - -
  30. Alias expansion is always enabled, even in non-interactive shells. - -
  31. When the alias builtin displays alias definitions, it does not -display them with a leading `alias ' unless the -p option -is supplied. - -
  32. When the set builtin is invoked without options, it does not display -shell function names and definitions. - -
  33. When the set builtin is invoked without options, it displays -variable values without quotes, unless they contain shell metacharacters, -even if the result contains nonprinting characters. - -
  34. When the cd builtin is invoked in logical mode, and the pathname -constructed from $PWD and the directory name supplied as an argument -does not refer to an existing directory, cd will fail instead of -falling back to physical mode. - -
  35. When the pwd builtin is supplied the -P option, it resets -$PWD to a pathname containing no symlinks. - -
  36. The pwd 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 --P option. - -
  37. When listing the history, the fc builtin does not include an -indication of whether or not a history entry has been modified. - -
  38. The default editor used by fc is ed. - -
  39. The type and command 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 $PATH. - -
  40. The vi editing mode will invoke the vi editor directly when -the `v' command is run, instead of checking $FCEDIT and -$EDITOR. - -
  41. When the xpg_echo option is enabled, Bash does not attempt to interpret -any arguments to echo as options. Each argument is displayed, after -escape characters are converted. - -
- -

There is other posix behavior that Bash does not implement by -default even when in posix mode. -Specifically: - -

    - -
  1. The fc builtin checks $EDITOR as a program to edit history -entries if FCEDIT is unset, rather than defaulting directly to -ed. fc uses ed if EDITOR is unset. - -
  2. As noted above, Bash requires the xpg_echo option to be enabled for -the echo builtin to be fully conformant. - -
- -

Bash can be configured to be posix-conformant by default, by specifying -the --enable-strict-posix-default to configure when building -(see Optional Features). - -

-


- -Next: , -Previous: Bash Features, -Up: Top - -
- -

7 Job Control

- -

This chapter discusses what job control is, how it works, and how -Bash allows you to access its facilities. - -

- -
-


- -Next: , -Up: Job Control - -
- -

7.1 Job Control Basics

- -

-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. - -

The shell associates a job with each pipeline. It keeps a -table of currently executing jobs, which may be listed with the -jobs command. When Bash starts a job -asynchronously, it prints a line that looks -like: -

     [1] 25647
-
-

indicating that this job is job number 1 and that the process id -of the last process in the pipeline associated with this job is -25647. All of the processes in a single pipeline are members of -the same job. Bash uses the job abstraction as the -basis for job control. - -

To facilitate the implementation of the user interface to job -control, the operating system maintains the notion of a current terminal -process group id. Members of this process group (processes whose -process group id is equal to the current terminal process group -id) receive keyboard-generated signals such as SIGINT. -These processes are said to be in the foreground. Background -processes are those whose process group id differs from the -terminal's; such processes are immune to keyboard-generated -signals. Only foreground processes are allowed to read from or -write to the terminal. Background processes which attempt to -read from (write to) the terminal are sent a SIGTTIN -(SIGTTOU) signal by the terminal driver, which, unless -caught, suspends the process. - -

If the operating system on which Bash is running supports -job control, Bash contains facilities to use it. Typing the -suspend character (typically `^Z', Control-Z) while a -process is running causes that process to be stopped and returns -control to Bash. Typing the delayed suspend character -(typically `^Y', 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 bg command to continue it in the -background, the fg command to continue it in the -foreground, or the kill command to kill it. A `^Z' -takes effect immediately, and has the additional side effect of -causing pending output and typeahead to be discarded. - -

There are a number of ways to refer to a job in the shell. The -character `%' introduces a job name. - -

Job number n may be referred to as `%n'. -The symbols `%%' and `%+' 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 `%' (with no accompanying job specification) also refers -to the current job. -The previous job may be referenced using `%-'. In output -pertaining to jobs (e.g., the output of the jobs command), -the current job is always flagged with a `+', and the -previous job with a `-'. - -

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, `%ce' refers -to a stopped ce job. Using `%?ce', on the -other hand, refers to any job containing the string `ce' in -its command line. If the prefix or substring matches more than one job, -Bash reports an error. - -

Simply naming a job can be used to bring it into the foreground: -`%1' is a synonym for `fg %1', bringing job 1 from the -background into the foreground. Similarly, `%1 &' resumes -job 1 in the background, equivalent to `bg %1' - -

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 -b option to the set builtin is enabled, -Bash reports such changes immediately (see The Set Builtin). -Any trap on SIGCHLD is executed for each child process -that exits. - -

If an attempt to exit Bash is made while jobs are stopped, (or running, if -the checkjobs option is enabled – see The Shopt Builtin), the -shell prints a warning message, and if the checkjobs option is -enabled, lists the jobs and their statuses. -The jobs 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. - -

-


- -Next: , -Previous: Job Control Basics, -Up: Job Control - -
- -

7.2 Job Control Builtins

- -
-
bg
-
          bg [jobspec ...]
-     
-

Resume each suspended job jobspec in the background, as if it -had been started with `&'. -If jobspec 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 -jobspec was not found or specifies a job -that was started without job control. - -

fg
-
          fg [jobspec]
-     
-

Resume the job jobspec in the foreground and make it the current job. -If jobspec 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, jobspec does not specify a valid job or -jobspec specifies a job that was started without job control. - -

jobs
-
          jobs [-lnprs] [jobspec]
-          jobs -x command [arguments]
-     
-

The first form lists the active jobs. The options have the -following meanings: - -

-
-l
List process ids in addition to the normal information. - -
-n
Display information only about jobs that have changed status since -the user was last notified of their status. - -
-p
List only the process id of the job's process group leader. - -
-r
Restrict output to running jobs. - -
-s
Restrict output to stopped jobs. -
- -

If jobspec is given, -output is restricted to information about that job. -If jobspec is not supplied, the status of all jobs is -listed. - -

If the -x option is supplied, jobs replaces any -jobspec found in command or arguments with the -corresponding process group id, and executes command, -passing it arguments, returning its exit status. - -

kill
-
          kill [-s sigspec] [-n signum] [-sigspec] jobspec or pid
-          kill -l [exit_status]
-     
-

Send a signal specified by sigspec or signum to the process -named by job specification jobspec or process id pid. -sigspec is either a case-insensitive signal name such as -SIGINT (with or without the SIG prefix) -or a signal number; signum is a signal number. -If sigspec and signum are not present, SIGTERM is used. -The -l option lists the signal names. -If any arguments are supplied when -l is given, the names of the -signals corresponding to the arguments are listed, and the return status -is zero. -exit_status 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. - -

wait
-
          wait [jobspec or pid ...]
-     
-

Wait until the child process specified by each process id pid -or job specification jobspec 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 jobspec nor pid specifies an active child process -of the shell, the return status is 127. - -

disown
-
          disown [-ar] [-h] [jobspec ...]
-     
-

Without options, each jobspec is removed from the table of -active jobs. -If the -h option is given, the job is not removed from the table, -but is marked so that SIGHUP is not sent to the job if the shell -receives a SIGHUP. -If jobspec is not present, and neither the -a nor -r -option is supplied, the current job is used. -If no jobspec is supplied, the -a option means to remove or -mark all jobs; the -r option without a jobspec -argument restricts operation to running jobs. - -

suspend
-
          suspend [-f]
-     
-

Suspend the execution of this shell until it receives a -SIGCONT signal. The -f option means to suspend -even if the shell is a login shell. - -

- -

When job control is not active, the kill and wait -builtins do not accept jobspec arguments. They must be -supplied process ids. - -

-


- -Previous: Job Control Builtins, -Up: Job Control - -
- -

7.3 Job Control Variables

- -
-
auto_resume
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 `exact', -the string supplied must match the name of a stopped job exactly; -if set to `substring', -the string supplied needs to match a substring of the name of a -stopped job. The `substring' value provides functionality -analogous to the `%?' job id (see Job Control Basics). -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 `%' job id. - -
- -

- - - - - -

-


- -Next: , -Previous: Using History Interactively, -Up: Top - -
- -

8 Command Line Editing

- -

This chapter describes the basic features of the gnu -command line editing interface. -Command line editing is provided by the Readline library, which is -used by several different programs, including Bash. - -

- - - -

8.1 Introduction to Line Editing

- -

The following paragraphs describe the notation used to represent -keystrokes. - -

The text C-k is read as `Control-K' and describes the character -produced when the <k> key is pressed while the Control key -is depressed. - -

The text M-k 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. - -

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> -first, and then typing <k>. -Either process is known as metafying the <k> key. - -

The text M-C-k is read as `Meta-Control-k' and describes the -character produced by metafying C-k. - -

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 Readline Init File). -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. - -

- -

8.2 Readline Interaction

- -

-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. - -

- - - -

8.2.1 Readline Bare Essentials

- -

-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. - -

Sometimes you may mistype a character, and -not notice the error until you have typed several other characters. In -that case, you can type C-b to move the cursor to the left, and then -correct your mistake. Afterwards, you can move the cursor to the right -with C-f. - -

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. - -

-
C-b
Move back one character. -
C-f
Move forward one character. -
<DEL> or <Backspace>
Delete the character to the left of the cursor. -
C-d
Delete the character underneath the cursor. -
Printing characters
Insert the character into the line at the cursor. -
C-_ or C-x C-u
Undo the last editing command. You can undo all the way back to an -empty line. -
- -

(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 C-d, rather -than the character to the left of the cursor.) - -

- -

8.2.2 Readline Movement Commands

- -

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 C-b, C-f, -C-d, and <DEL>. Here are some commands for moving more rapidly -about the line. - -

-
C-a
Move to the start of the line. -
C-e
Move to the end of the line. -
M-f
Move forward a word, where a word is composed of letters and digits. -
M-b
Move backward a word. -
C-l
Clear the screen, reprinting the current line at the top. -
- -

Notice how C-f moves forward a character, while M-f moves -forward a word. It is a loose convention that control keystrokes -operate on characters while meta keystrokes operate on words. - -

- -

8.2.3 Readline Killing Commands

- -

-Killing text means to delete the text from the line, but to save -it away for later use, usually by yanking (re-inserting) -it back into the line. -(`Cut' and `paste' are more recent jargon for `kill' and `yank'.) - -

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. - -

When you use a kill command, the text is saved in a kill-ring. -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. - -Here is the list of commands for killing text. - -

-
C-k
Kill the text from the current cursor position to the end of the line. - -
M-d
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 M-f. - -
M-<DEL>
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 M-b. - -
C-w
Kill from the cursor to the previous whitespace. This is different than -M-<DEL> because the word boundaries differ. - -
- -

Here is how to yank the text back into the line. Yanking -means to copy the most-recently-killed text from the kill buffer. - -

-
C-y
Yank the most recently killed text back into the buffer at the cursor. - -
M-y
Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is C-y or M-y. -
- -
-


- -Next: , -Previous: Readline Killing Commands, -Up: Readline Interaction - -
- -

8.2.4 Readline Arguments

- -

You can pass numeric arguments to Readline commands. Sometimes the -argument acts as a repeat count, other times it is the sign 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 `M-- C-k'. - -

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 (`-'), 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 C-d command an argument of 10, you could type `M-1 0 C-d', -which will delete the next ten characters on the input line. - -

-


- -Previous: Readline Arguments, -Up: Readline Interaction - -
- -

8.2.5 Searching for Commands in the History

- -

Readline provides commands for searching through the command history -(see Bash History Facilities) -for lines containing a specified string. -There are two search modes: incremental and non-incremental. - -

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 -C-r. Typing C-s searches forward through the history. -The characters present in the value of the isearch-terminators variable -are used to terminate an incremental search. -If that variable has not been assigned a value, the <ESC> and -C-J characters will terminate an incremental search. -C-g 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. - -

To find other matching entries in the history list, type C-r or -C-s 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. - -

Readline remembers the last incremental search string. If two -C-rs are typed without any intervening characters defining a new -search string, any remembered search string is used. - -

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. - -

- -

8.3 Readline Init File

- -

-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 inputrc file, conventionally in his home directory. -The name of this -file is taken from the value of the shell variable INPUTRC. If -that variable is unset, the default is ~/.inputrc. If that -file does not exist or cannot be read, the ultimate default is -/etc/inputrc. - -

When a program which uses the Readline library starts up, the -init file is read, and the key bindings are set. - -

In addition, the C-x C-r command re-reads this init file, thus -incorporating any changes that you might have made to it. - -

- - - -

8.3.1 Readline Init File Syntax

- -

There are only a few basic constructs allowed in the -Readline init file. Blank lines are ignored. -Lines beginning with a `#' are comments. -Lines beginning with a `$' indicate conditional -constructs (see Conditional Init Constructs). Other lines -denote variable settings and key bindings. - -

-
Variable Settings
You can modify the run-time behavior of Readline by -altering the values of variables in Readline -using the set command within the init file. -The syntax is simple: - -
          set variable value
-     
-

Here, for example, is how to -change from the default Emacs-like key binding to use -vi line editing commands: - -

          set editing-mode vi
-     
-

Variable names and values, where appropriate, are recognized without regard -to case. Unrecognized variable names are ignored. - -

Boolean variables (those that can be set to on or off) are set to on if -the value is null or empty, on (case-insensitive), or 1. Any other -value results in the variable being set to off. - -

The bind -V command lists the current Readline variable names -and values. See Bash Builtins. - -

A great deal of run-time behavior is changeable with the following -variables. - -

-

-
bell-style
Controls what happens when Readline wants to ring the terminal bell. -If set to `none', Readline never rings the bell. If set to -`visible', Readline uses a visible bell if one is available. -If set to `audible' (the default), Readline attempts to ring -the terminal's bell. - -
bind-tty-special-chars
If set to `on', Readline attempts to bind the control characters -treated specially by the kernel's terminal driver to their Readline -equivalents. - -
comment-begin
The string to insert at the beginning of the line when the -insert-comment command is executed. The default value -is "#". - -
completion-ignore-case
If set to `on', Readline performs filename matching and completion -in a case-insensitive fashion. -The default value is `off'. - -
completion-query-items
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 100. - -
convert-meta
If set to `on', Readline will convert characters with the -eighth bit set to an ascii key sequence by stripping the eighth -bit and prefixing an <ESC> character, converting them to a -meta-prefixed key sequence. The default value is `on'. - -
disable-completion
If set to `On', Readline will inhibit word completion. -Completion characters will be inserted into the line as if they had -been mapped to self-insert. The default is `off'. - -
editing-mode
The editing-mode 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 `emacs' or `vi'. - -
enable-keypad
When set to `on', Readline will try to enable the application -keypad when it is called. Some systems need this to enable the -arrow keys. The default is `off'. - -
expand-tilde
If set to `on', tilde expansion is performed when Readline -attempts word completion. The default is `off'. - -
history-preserve-point
If set to `on', the history code attempts to place point at the -same location on each history line retrieved with previous-history -or next-history. The default is `off'. - -
horizontal-scroll-mode
This variable can be set to either `on' or `off'. Setting it -to `on' 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 `off'. - -
input-meta
If set to `on', 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 `off'. The name meta-flag is a -synonym for this variable. - -
isearch-terminators
The string of characters that should terminate an incremental search without -subsequently executing the character as a command (see Searching). -If this variable has not been given a value, the characters <ESC> and -C-J will terminate an incremental search. - -
keymap
Sets Readline's idea of the current keymap for key binding commands. -Acceptable keymap names are -emacs, -emacs-standard, -emacs-meta, -emacs-ctlx, -vi, -vi-move, -vi-command, and -vi-insert. -vi is equivalent to vi-command; emacs is -equivalent to emacs-standard. The default value is emacs. -The value of the editing-mode variable also affects the -default keymap. - -
mark-directories
If set to `on', completed directory names have a slash -appended. The default is `on'. - -
mark-modified-lines
This variable, when set to `on', causes Readline to display an -asterisk (`*') at the start of history lines which have been modified. -This variable is `off' by default. - -
mark-symlinked-directories
If set to `on', completed names which are symbolic links -to directories have a slash appended (subject to the value of -mark-directories). -The default is `off'. - -
match-hidden-files
This variable, when set to `on', causes Readline to match files whose -names begin with a `.' (hidden files) when performing filename -completion, unless the leading `.' is -supplied by the user in the filename to be completed. -This variable is `on' by default. - -
output-meta
If set to `on', Readline will display characters with the -eighth bit set directly rather than as a meta-prefixed escape -sequence. The default is `off'. - -
page-completions
If set to `on', Readline uses an internal more-like pager -to display a screenful of possible completions at a time. -This variable is `on' by default. - -
print-completions-horizontally
If set to `on', Readline will display completions with matches -sorted horizontally in alphabetical order, rather than down the screen. -The default is `off'. - -
show-all-if-ambiguous
This alters the default behavior of the completion functions. If -set to `on', -words which have more than one possible completion cause the -matches to be listed immediately instead of ringing the bell. -The default value is `off'. - -
show-all-if-unmodified
This alters the default behavior of the completion functions in -a fashion similar to show-all-if-ambiguous. -If set to `on', -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 `off'. - -
visible-stats
If set to `on', a character denoting a file's type -is appended to the filename when listing possible -completions. The default is `off'. - -
- -
Key Bindings
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. - -

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. - -

In addition to command names, readline allows keys to be bound -to a string that is inserted when the key is pressed (a macro). - -

The bind -p command displays Readline function names and -bindings in a format that can put directly into an initialization file. -See Bash Builtins. - -

-
keynamefunction-name or macro
keyname is the name of a key spelled out in English. For example: -
               Control-u: universal-argument
-               Meta-Rubout: backward-kill-word
-               Control-o: "> output"
-          
-

In the above example, C-u is bound to the function -universal-argument, -M-DEL is bound to the function backward-kill-word, and -C-o is bound to run the macro -expressed on the right hand side (that is, to insert the text -`> output' into the line). - -

A number of symbolic character names are recognized while -processing this key binding syntax: -DEL, -ESC, -ESCAPE, -LFD, -NEWLINE, -RET, -RETURN, -RUBOUT, -SPACE, -SPC, -and -TAB. - -

"keyseq": function-name or macro
keyseq differs from keyname above in that strings -denoting an entire key sequence can be specified, by placing -the key sequence in double quotes. Some gnu Emacs style key -escapes can be used, as in the following example, but the -special character names are not recognized. - -
               "\C-u": universal-argument
-               "\C-x\C-r": re-read-init-file
-               "\e[11~": "Function Key 1"
-          
-

In the above example, C-u is again bound to the function -universal-argument (just as it was in the first example), -`C-x C-r' is bound to the function re-read-init-file, -and `<ESC> <[> <1> <1> <~>' is bound to insert -the text `Function Key 1'. - -

- -

The following gnu Emacs style escape sequences are available when -specifying key sequences: - -

-
\C-
control prefix -
\M-
meta prefix -
\e
an escape character -
\\
backslash -
\"
<">, a double quotation mark -
\'
<'>, a single quote or apostrophe -
- -

In addition to the gnu Emacs style escape sequences, a second -set of backslash escapes is available: - -

-
\a
alert (bell) -
\b
backspace -
\d
delete -
\f
form feed -
\n
newline -
\r
carriage return -
\t
horizontal tab -
\v
vertical tab -
\nnn
the eight-bit character whose value is the octal value nnn -(one to three digits) -
\xHH
the eight-bit character whose value is the hexadecimal value HH -(one or two hex digits) -
- -

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 `"' and `''. -For example, the following binding will make `C-x \' -insert a single `\' into the line: -

          "\C-x\\": "\\"
-     
-
- - - -

8.3.2 Conditional Init Constructs

- -

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. - -

-
$if
The $if 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. - -
-
mode
The mode= form of the $if directive is used to test -whether Readline is in emacs or vi mode. -This may be used in conjunction -with the `set keymap' command, for instance, to set bindings in -the emacs-standard and emacs-ctlx keymaps only if -Readline is starting out in emacs mode. - -
term
The term= 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 -`=' is tested against both the full name of the terminal and -the portion of the terminal name before the first `-'. This -allows sun to match both sun and sun-cmd, -for instance. - -
application
The application construct is used to include -application-specific settings. Each program using the Readline -library sets the application name, 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: -
               $if Bash
-               # Quote the current or previous word
-               "\C-xq": "\eb\"\ef\""
-               $endif
-          
-
- -
$endif
This command, as seen in the previous example, terminates an -$if command. - -
$else
Commands in this branch of the $if directive are executed if -the test fails. - -
$include
This directive takes a single filename as an argument and reads commands -and bindings from that file. -For example, the following directive reads from /etc/inputrc: -
          $include /etc/inputrc
-     
-
- - - -

8.3.3 Sample Init File

- -

Here is an example of an inputrc file. This illustrates key -binding, variable assignment, and conditional syntax. - -

     
-     # 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
-
-
-


- -Next: , -Previous: Readline Init File, -Up: Command Line Editing - -
- -

8.4 Bindable Readline Commands

- - - -

This section describes Readline commands that may be bound to key -sequences. -You can list your key bindings by executing -bind -P or, for a more terse format, suitable for an -inputrc file, bind -p. (See Bash Builtins.) -Command names without an accompanying key sequence are unbound by default. - -

In the following descriptions, point refers to the current cursor -position, and mark refers to a cursor position saved by the -set-mark command. -The text between the point and mark is referred to as the region. - -

- -

8.4.1 Commands For Moving

- -
-
beginning-of-line (C-a)
Move to the start of the current line. - -
end-of-line (C-e)
Move to the end of the line. - -
forward-char (C-f)
Move forward a character. - -
backward-char (C-b)
Move back a character. - -
forward-word (M-f)
Move forward to the end of the next word. Words are composed of -letters and digits. - -
backward-word (M-b)
Move back to the start of the current or previous word. Words are -composed of letters and digits. - -
clear-screen (C-l)
Clear the screen and redraw the current line, -leaving the current line at the top of the screen. - -
redraw-current-line ()
Refresh the current line. By default, this is unbound. - -
- - - -

8.4.2 Commands For Manipulating The History

- -
-
accept-line (Newline or Return)
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 HISTCONTROL and HISTIGNORE variables. -If this line is a modified history line, then restore the history line -to its original state. - -
previous-history (C-p)
Move `back' through the history list, fetching the previous command. - -
next-history (C-n)
Move `forward' through the history list, fetching the next command. - -
beginning-of-history (M-<)
Move to the first line in the history. - -
end-of-history (M->)
Move to the end of the input history, i.e., the line currently -being entered. - -
reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through -the history as necessary. This is an incremental search. - -
forward-search-history (C-s)
Search forward starting at the current line and moving `down' through -the the history as necessary. This is an incremental search. - -
non-incremental-reverse-search-history (M-p)
Search backward starting at the current line and moving `up' -through the history as necessary using a non-incremental search -for a string supplied by the user. - -
non-incremental-forward-search-history (M-n)
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. - -
history-search-forward ()
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. - -
history-search-backward ()
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. - -
yank-nth-arg (M-C-y)
Insert the first argument to the previous command (usually -the second word on the previous line) at point. -With an argument n, -insert the nth word from the previous command (the words -in the previous command begin with word 0). A negative argument -inserts the nth word from the end of the previous command. -Once the argument n is computed, the argument is extracted -as if the `!n' history expansion had been specified. - -
yank-last-arg (M-. or M-_)
Insert last argument to the previous command (the last word of the -previous history entry). With an -argument, behave exactly like yank-nth-arg. -Successive calls to yank-last-arg 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 `!$' history expansion had been specified. - -
- - - -

8.4.3 Commands For Changing Text

- -
-
delete-char (C-d)
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 delete-char, then -return eof. - -
backward-delete-char (Rubout)
Delete the character behind the cursor. A numeric argument means -to kill the characters instead of deleting them. - -
forward-backward-delete-char ()
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. - -
quoted-insert (C-q or C-v)
Add the next character typed to the line verbatim. This is -how to insert key sequences like C-q, for example. - -
self-insert (a, b, A, 1, !, ...)
Insert yourself. - -
transpose-chars (C-t)
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. - -
transpose-words (M-t)
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. - -
upcase-word (M-u)
Uppercase the current (or following) word. With a negative argument, -uppercase the previous word, but do not move the cursor. - -
downcase-word (M-l)
Lowercase the current (or following) word. With a negative argument, -lowercase the previous word, but do not move the cursor. - -
capitalize-word (M-c)
Capitalize the current (or following) word. With a negative argument, -capitalize the previous word, but do not move the cursor. - -
overwrite-mode ()
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 -emacs mode; vi mode does overwrite differently. -Each call to readline() starts in insert mode. - -

In overwrite mode, characters bound to self-insert replace -the text at point rather than pushing the text to the right. -Characters bound to backward-delete-char replace the character -before point with a space. - -

By default, this command is unbound. - -

- - - -

8.4.4 Killing And Yanking

- -
-
kill-line (C-k)
Kill the text from point to the end of the line. - -
backward-kill-line (C-x Rubout)
Kill backward to the beginning of the line. - -
unix-line-discard (C-u)
Kill backward from the cursor to the beginning of the current line. - -
kill-whole-line ()
Kill all characters on the current line, no matter where point is. -By default, this is unbound. - -
kill-word (M-d)
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 forward-word. - -
backward-kill-word (M-<DEL>)
Kill the word behind point. -Word boundaries are the same as backward-word. - -
unix-word-rubout (C-w)
Kill the word behind point, using white space as a word boundary. -The killed text is saved on the kill-ring. - -
unix-filename-rubout ()
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. - -
delete-horizontal-space ()
Delete all spaces and tabs around point. By default, this is unbound. - -
kill-region ()
Kill the text in the current region. -By default, this command is unbound. - -
copy-region-as-kill ()
Copy the text in the region to the kill buffer, so it can be yanked -right away. By default, this command is unbound. - -
copy-backward-word ()
Copy the word before point to the kill buffer. -The word boundaries are the same as backward-word. -By default, this command is unbound. - -
copy-forward-word ()
Copy the word following point to the kill buffer. -The word boundaries are the same as forward-word. -By default, this command is unbound. - -
yank (C-y)
Yank the top of the kill ring into the buffer at point. - -
yank-pop (M-y)
Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is yank or yank-pop. -
- - - -

8.4.5 Specifying Numeric Arguments

- -
-
digit-argument (M-0, M-1, ... M--)
Add this digit to the argument already accumulating, or start a new -argument. M-- starts a negative argument. - -
universal-argument ()
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 universal-argument -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. -
- -
-


- -Next: , -Previous: Numeric Arguments, -Up: Bindable Readline Commands - -
- -

8.4.6 Letting Readline Type For You

- -
-
complete (<TAB>)
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 `$'), username (if the text begins with -`~'), hostname (if the text begins with `@'), or -command (including aliases and functions) in turn. If none -of these produces a match, filename completion is attempted. - -
possible-completions (M-?)
List the possible completions of the text before point. - -
insert-completions (M-*)
Insert all completions of the text before point that would have -been generated by possible-completions. - -
menu-complete ()
Similar to complete, but replaces the word to be completed -with a single match from the list of possible completions. -Repeated execution of menu-complete 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 bell-style) -and the original text is restored. -An argument of n moves n 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. - -
delete-char-or-list ()
Deletes the character under the cursor if not at the beginning or -end of the line (like delete-char). -If at the end of the line, behaves identically to -possible-completions. -This command is unbound by default. - -
complete-filename (M-/)
Attempt filename completion on the text before point. - -
possible-filename-completions (C-x /)
List the possible completions of the text before point, -treating it as a filename. - -
complete-username (M-~)
Attempt completion on the text before point, treating -it as a username. - -
possible-username-completions (C-x ~)
List the possible completions of the text before point, -treating it as a username. - -
complete-variable (M-$)
Attempt completion on the text before point, treating -it as a shell variable. - -
possible-variable-completions (C-x $)
List the possible completions of the text before point, -treating it as a shell variable. - -
complete-hostname (M-@)
Attempt completion on the text before point, treating -it as a hostname. - -
possible-hostname-completions (C-x @)
List the possible completions of the text before point, -treating it as a hostname. - -
complete-command (M-!)
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. - -
possible-command-completions (C-x !)
List the possible completions of the text before point, -treating it as a command name. - -
dynamic-complete-history (M-<TAB>)
Attempt completion on the text before point, comparing -the text against lines from the history list for possible -completion matches. - -
complete-into-braces (M-{)
Perform filename completion and insert the list of possible completions -enclosed within braces so the list is available to the shell -(see Brace Expansion). - -
- - - -

8.4.7 Keyboard Macros

- -
-
start-kbd-macro (C-x ()
Begin saving the characters typed into the current keyboard macro. - -
end-kbd-macro (C-x ))
Stop saving the characters typed into the current keyboard macro -and save the definition. - -
call-last-kbd-macro (C-x e)
Re-execute the last keyboard macro defined, by making the characters -in the macro appear as if typed at the keyboard. - -
- -
-


- -Previous: Keyboard Macros, -Up: Bindable Readline Commands - -
- -

8.4.8 Some Miscellaneous Commands

- -
-
re-read-init-file (C-x C-r)
Read in the contents of the inputrc file, and incorporate -any bindings or variable assignments found there. - -
abort (C-g)
Abort the current editing command and -ring the terminal's bell (subject to the setting of -bell-style). - -
do-uppercase-version (M-a, M-b, M-x, ...)
If the metafied character x is lowercase, run the command -that is bound to the corresponding uppercase character. - -
prefix-meta (<ESC>)
Metafy the next character typed. This is for keyboards -without a meta key. Typing `<ESC> f' is equivalent to typing -M-f. - -
undo (C-_ or C-x C-u)
Incremental undo, separately remembered for each line. - -
revert-line (M-r)
Undo all changes made to this line. This is like executing the undo -command enough times to get back to the beginning. - -
tilde-expand (M-&)
Perform tilde expansion on the current word. - -
set-mark (C-@)
Set the mark to the point. If a -numeric argument is supplied, the mark is set to that position. - -
exchange-point-and-mark (C-x C-x)
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. - -
character-search (C-])
A character is read and point is moved to the next occurrence of that -character. A negative count searches for previous occurrences. - -
character-search-backward (M-C-])
A character is read and point is moved to the previous occurrence -of that character. A negative count searches for subsequent -occurrences. - -
insert-comment (M-#)
Without a numeric argument, the value of the comment-begin -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 comment-begin, the value is inserted, otherwise -the characters in comment-begin 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 comment-begin 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. - -
dump-functions ()
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 inputrc file. This command is unbound by default. - -
dump-variables ()
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 inputrc file. This command is unbound by default. - -
dump-macros ()
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 inputrc file. This command is unbound by default. - -
glob-complete-word (M-g)
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. - -
glob-expand-word (C-x *)
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 `*' is appended before -pathname expansion. - -
glob-list-expansions (C-x g)
The list of expansions that would have been generated by -glob-expand-word is displayed, and the line is redrawn. -If a numeric argument is supplied, a `*' is appended before -pathname expansion. - -
display-shell-version (C-x C-v)
Display version information about the current instance of Bash. - -
shell-expand-line (M-C-e)
Expand the line as the shell does. -This performs alias and history expansion as well as all of the shell -word expansions (see Shell Expansions). - -
history-expand-line (M-^)
Perform history expansion on the current line. - -
magic-space ()
Perform history expansion on the current line and insert a space -(see History Interaction). - -
alias-expand-line ()
Perform alias expansion on the current line (see Aliases). - -
history-and-alias-expand-line ()
Perform history and alias expansion on the current line. - -
insert-last-argument (M-. or M-_)
A synonym for yank-last-arg. - -
operate-and-get-next (C-o)
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. - -
edit-and-execute-command (C-xC-e)
Invoke an editor on the current command line, and execute the result as shell -commands. -Bash attempts to invoke -$VISUAL, $EDITOR, and emacs -as the editor, in that order. - -
- - - -

8.5 Readline vi Mode

- -

While the Readline library does not have a full set of vi -editing functions, it does contain enough to allow simple editing -of the line. The Readline vi mode behaves as specified in -the posix 1003.2 standard. - -

In order to switch interactively between emacs and vi -editing modes, use the `set -o emacs' and `set -o vi' -commands (see The Set Builtin). -The Readline default is emacs mode. - -

When you enter a line in vi mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing <ESC> -switches you into `command' mode, where you can edit the text of the -line with the standard vi movement keys, move to previous -history lines with `k' and subsequent lines with `j', and -so forth. - -

- -

8.6 Programmable Completion

- -

-When word completion is attempted for an argument to a command for -which a completion specification (a compspec) has been defined -using the complete builtin (see Programmable Completion Builtins), -the programmable completion facilities are invoked. - -

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. - -

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 Commands For Completion) is performed. - -

First, the actions specified by the compspec are used. -Only matches which are prefixed by the word being completed are -returned. -When the -f or -d option is used for filename or -directory name completion, the shell variable FIGNORE is -used to filter the matches. -See Bash Variables, for a description of FIGNORE. - -

Any completions specified by a filename expansion pattern to the --G option are generated next. -The words generated by the pattern need not match the word being completed. -The GLOBIGNORE shell variable is not used to filter the matches, -but the FIGNORE shell variable is used. - -

Next, the string specified as the argument to the -W option -is considered. -The string is first split using the characters in the IFS -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 Shell Expansions). -The results are split using the rules described above -(see Word Splitting). -The results of the expansion are prefix-matched against the word being -completed, and the matching words become the possible completions. - -

After these matches have been generated, any shell function or command -specified with the -F and -C options is invoked. -When the command or function is invoked, the COMP_LINE, -COMP_POINT, COMP_KEY, and COMP_TYPE variables are -assigned values as described above (see Bash Variables). -If a shell function is being invoked, the COMP_WORDS and -COMP_CWORD 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. - -

Any function specified with -F is invoked first. -The function may use any of the shell facilities, including the -compgen builtin described below -(see Programmable Completion Builtins), to generate the matches. -It must put the possible completions in the COMPREPLY array -variable. - -

Next, any command specified with the -C 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. - -

After all of the possible completions are generated, any filter -specified with the -X option is applied to the list. -The filter is a pattern as used for pathname expansion; a `&' -in the pattern is replaced with the text of the word being completed. -A literal `&' 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 `!' negates the pattern; in this case any completion -not matching the pattern will be removed. - -

Finally, any prefix and suffix specified with the -P and -S -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. - -

If the previously-applied actions do not generate any matches, and the --o dirnames option was supplied to complete when the -compspec was defined, directory name completion is attempted. - -

If the -o plusdirs option was supplied to complete when -the compspec was defined, directory name completion is attempted and any -matches are added to the results of the other actions. - -

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 -o bashdefault option was supplied to complete when -the compspec was defined, the default Bash completions are attempted -if the compspec generates no matches. -If the -o default option was supplied to complete 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. - -

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 mark-directories Readline variable, regardless -of the setting of the mark-symlinked-directories Readline variable. - -

-


- -Previous: Programmable Completion, -Up: Command Line Editing - -
- -

8.7 Programmable Completion Builtins

- -

-Two builtin commands are available to manipulate the programmable completion -facilities. - -

-
compgen
-
          compgen [option] [word]
-     
-

Generate possible completion matches for word according to -the options, which may be any option accepted by the -complete -builtin with the exception of -p and -r, and write -the matches to the standard output. -When using the -F or -C options, the various shell variables -set by the programmable completion facilities, while available, will not -have useful values. - -

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 word is specified, only those completions matching word -will be displayed. - -

The return value is true unless an invalid option is supplied, or no -matches were generated. - -

complete
-
          complete [-abcdefgjksuv] [-o comp-option] [-A action] [-G globpat] [-W wordlist]
-          [-F function] [-C command] [-X filterpat]
-          [-P prefix] [-S suffix] name [name ...]
-          complete -pr [name ...]
-     
-

Specify how arguments to each name should be completed. -If the -p 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 -r option removes a completion specification for -each name, or, if no names are supplied, all -completion specifications. - -

The process of applying these completion specifications when word completion -is attempted is described above (see Programmable Completion). - -

Other options, if specified, have the following meanings. -The arguments to the -G, -W, and -X options -(and, if necessary, the -P and -S options) -should be quoted to protect them from expansion before the -complete builtin is invoked. - -

-
-o comp-option
The comp-option controls several aspects of the compspec's behavior -beyond the simple generation of completions. -comp-option may be one of: - -
-
bashdefault
Perform the rest of the default Bash completions if the compspec -generates no matches. - -
default
Use Readline's default filename completion if the compspec generates -no matches. - -
dirnames
Perform directory name completion if the compspec generates no matches. - -
filenames
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 -F. - -
nospace
Tell Readline not to append a space (the default) to words completed at -the end of the line. - -
plusdirs
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. - -
- -
-A action
The action may be one of the following to generate a list of possible -completions: - -
-
alias
Alias names. May also be specified as -a. - -
arrayvar
Array variable names. - -
binding
Readline key binding names (see Bindable Readline Commands). - -
builtin
Names of shell builtin commands. May also be specified as -b. - -
command
Command names. May also be specified as -c. - -
directory
Directory names. May also be specified as -d. - -
disabled
Names of disabled shell builtins. - -
enabled
Names of enabled shell builtins. - -
export
Names of exported shell variables. May also be specified as -e. - -
file
File names. May also be specified as -f. - -
function
Names of shell functions. - -
group
Group names. May also be specified as -g. - -
helptopic
Help topics as accepted by the help builtin (see Bash Builtins). - -
hostname
Hostnames, as taken from the file specified by the -HOSTFILE shell variable (see Bash Variables). - -
job
Job names, if job control is active. May also be specified as -j. - -
keyword
Shell reserved words. May also be specified as -k. - -
running
Names of running jobs, if job control is active. - -
service
Service names. May also be specified as -s. - -
setopt
Valid arguments for the -o option to the set builtin -(see The Set Builtin). - -
shopt
Shell option names as accepted by the shopt builtin -(see Bash Builtins). - -
signal
Signal names. - -
stopped
Names of stopped jobs, if job control is active. - -
user
User names. May also be specified as -u. - -
variable
Names of all shell variables. May also be specified as -v. -
- -
-G globpat
The filename expansion pattern globpat is expanded to generate -the possible completions. - -
-W wordlist
The wordlist is split using the characters in the -IFS 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. - -
-C command
command is executed in a subshell environment, and its output is -used as the possible completions. - -
-F function
The shell function function is executed in the current shell -environment. -When it finishes, the possible completions are retrieved from the value -of the COMPREPLY array variable. - -
-X filterpat
filterpat 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 -filterpat is removed from the list. -A leading `!' in filterpat negates the pattern; in this -case, any completion not matching filterpat is removed. - -
-P prefix
prefix is added at the beginning of each possible completion -after all other options have been applied. - -
-S suffix
suffix is appended to each possible completion -after all other options have been applied. -
- -

The return value is true unless an invalid option is supplied, an option -other than -p or -r is supplied without a name -argument, an attempt is made to remove a completion specification for -a name for which no specification exists, or -an error occurs adding a completion specification. - -

- - -
-


- -Next: , -Previous: Job Control, -Up: Top - -
- -

9 Using History Interactively

- -

This chapter describes how to use the gnu History Library -interactively, from a user's standpoint. -It should be considered a user's guide. -For information on using the gnu History Library in other programs, -see the gnu Readline Library Manual. - -

- - - -

9.1 Bash History Facilities

- -

-When the -o history option to the set builtin -is enabled (see The Set Builtin), -the shell provides access to the command history, -the list of commands previously typed. -The value of the HISTSIZE shell variable is used as the -number of commands to save in a history list. -The text of the last $HISTSIZE -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 -HISTIGNORE and HISTCONTROL. - -

When the shell starts up, the history is initialized from the -file named by the HISTFILE variable (default ~/.bash_history). -The file named by the value of HISTFILE is truncated, if -necessary, to contain no more than the number of lines specified by -the value of the HISTFILESIZE variable. -When an interactive shell exits, the last -$HISTSIZE lines are copied from the history list to the file -named by $HISTFILE. -If the histappend shell option is set (see Bash Builtins), -the lines are appended to the history file, -otherwise the history file is overwritten. -If HISTFILE -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 $HISTFILESIZE -lines. If HISTFILESIZE is not set, no truncation is performed. - -

If the HISTTIMEFORMAT is set, the time stamp information -associated with each history entry is written to the history file. - -

The builtin command fc may be used to list or edit and re-execute -a portion of the history list. -The history 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 Commands For History). - -

The shell allows control over which commands are saved on the history -list. The HISTCONTROL and HISTIGNORE -variables may be set to cause the shell to save only a subset of the -commands entered. -The cmdhist -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 lithist -shell option causes the shell to save the command with embedded newlines -instead of semicolons. -The shopt builtin is used to set these options. -See Bash Builtins, for a description of shopt. - -

- -

9.2 Bash History Builtins

- -

-Bash provides two builtin commands which manipulate the -history list and history file. - -

-
fc
-
          fc [-e ename] [-lnr] [first] [last]
-          fc -s [pat=rep] [command]
-     
-

Fix Command. In the first form, a range of commands from first to -last is selected from the history list. Both first and -last 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 last is not specified it is set to -first. If first is not specified it is set to the previous -command for editing and −16 for listing. If the -l flag is -given, the commands are listed on standard output. The -n flag -suppresses the command numbers when listing. The -r flag -reverses the order of the listing. Otherwise, the editor given by -ename is invoked on a file containing those commands. If -ename is not given, the value of the following variable expansion -is used: ${FCEDIT:-${EDITOR:-vi}}. This says to use the -value of the FCEDIT variable if set, or the value of the -EDITOR variable if that is set, or vi if neither is set. -When editing is complete, the edited commands are echoed and executed. - -

In the second form, command is re-executed after each instance -of pat in the selected command is replaced by rep. - -

A useful alias to use with the fc command is r='fc -s', so -that typing `r cc' runs the last command beginning with cc -and typing `r' re-executes the last command (see Aliases). - -

history
-
          history [n]
-          history -c
-          history -d offset
-          history [-anrw] [filename]
-          history -ps arg
-     
-

With no options, display the history list with line numbers. -Lines prefixed with a `*' have been modified. -An argument of n lists only the last n lines. -If the shell variable HISTTIMEFORMAT is set and not null, -it is used as a format string for strftime 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. - -

Options, if supplied, have the following meanings: - -

-
-c
Clear the history list. This may be combined -with the other options to replace the history list completely. - -
-d offset
Delete the history entry at position offset. -offset should be specified as it appears when the history is -displayed. - -
-a
Append the new -history lines (history lines entered since the beginning of the -current Bash session) to the history file. - -
-n
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. - -
-r
Read the current history file and append its contents to -the history list. - -
-w
Write out the current history to the history file. - -
-p
Perform history substitution on the args and display the result -on the standard output, without storing the results in the history list. - -
-s
The args are added to the end of -the history list as a single entry. - -
- -

When any of the -w, -r, -a, or -n options is -used, if filename -is given, then it is used as the history file. If not, then -the value of the HISTFILE variable is used. - -

- - - -

9.3 History Expansion

- -

-The History library provides a history expansion feature that is similar -to the history expansion provided by csh. This section -describes the syntax used to manipulate the history information. - -

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. - -

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 -event, and the portions of that line that are acted upon are -called words. Various modifiers 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 `!' by default. -Only `\' and `'' may be used to escape the history expansion -character. - -

Several shell options settable with the shopt -builtin (see Bash Builtins) may be used to tailor -the behavior of history expansion. If the -histverify 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 histreedit -shell option is enabled, a failed history expansion will be -reloaded into the Readline editing buffer for correction. -The -p option to the history builtin command -may be used to see what a history expansion will do before using it. -The -s option to the history 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. - -

The shell allows control of the various characters used by the -history expansion mechanism with the histchars variable. - -

- -
-


- -Next: , -Up: History Interaction - -
- -

9.3.1 Event Designators

- -

-An event designator is a reference to a command line entry in the -history list. - -

-
!
Start a history substitution, except when followed by a space, tab, -the end of the line, `=' or `(' (when the -extglob shell option is enabled using the shopt builtin). - -
!n
Refer to command line n. - -
!-n
Refer to the command n lines back. - -
!!
Refer to the previous command. This is a synonym for `!-1'. - -
!string
Refer to the most recent command starting with string. - -
!?string[?]
Refer to the most recent command containing string. The trailing -`?' may be omitted if the string is followed immediately by -a newline. - -
^string1^string2^
Quick Substitution. Repeat the last command, replacing string1 -with string2. Equivalent to -!!:s/string1/string2/. - -
!#
The entire command line typed so far. - -
- -
-


- -Next: , -Previous: Event Designators, -Up: History Interaction - -
- -

9.3.2 Word Designators

- -

Word designators are used to select desired words from the event. -A `:' separates the event specification from the word designator. It -may be omitted if the word designator begins with a `^', `$', -`*', `-', or `%'. 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. - -

For example, - -

-
!!
designates the preceding command. When you type this, the preceding -command is repeated in toto. - -
!!:$
designates the last argument of the preceding command. This may be -shortened to !$. - -
!fi:2
designates the second argument of the most recent command starting with -the letters fi. -
- -

Here are the word designators: - -

-
0 (zero)
The 0th word. For many applications, this is the command word. - -
n
The nth word. - -
^
The first argument; that is, word 1. - -
$
The last argument. - -
%
The word matched by the most recent `?string?' search. - -
x-y
A range of words; `-y' abbreviates `0-y'. - -
*
All of the words, except the 0th. This is a synonym for `1-$'. -It is not an error to use `*' if there is just one word in the event; -the empty string is returned in that case. - -
x*
Abbreviates `x-$' - -
x-
Abbreviates `x-$' like `x*', but omits the last word. - -
- -

If a word designator is supplied without an event specification, the -previous command is used as the event. - -

-


- -Previous: Word Designators, -Up: History Interaction - -
- -

9.3.3 Modifiers

- -

After the optional word designator, you can add a sequence of one or more -of the following modifiers, each preceded by a `:'. - -

-
h
Remove a trailing pathname component, leaving only the head. - -
t
Remove all leading pathname components, leaving the tail. - -
r
Remove a trailing suffix of the form `.suffix', leaving -the basename. - -
e
Remove all but the trailing suffix. - -
p
Print the new command but do not execute it. - -
q
Quote the substituted words, escaping further substitutions. - -
x
Quote the substituted words as with `q', -but break into words at spaces, tabs, and newlines. - -
s/old/new/
Substitute new for the first occurrence of old in the -event line. Any delimiter may be used in place of `/'. -The delimiter may be quoted in old and new -with a single backslash. If `&' appears in new, -it is replaced by old. A single backslash will quote -the `&'. The final delimiter is optional if it is the last -character on the input line. - -
&
Repeat the previous substitution. - -
g
a
Cause changes to be applied over the entire event line. Used in -conjunction with `s', as in gs/old/new/, -or with `&'. - -
G
Apply the following `s' modifier once to each word in the event. - -
- -
-


- -Next: , -Previous: Command Line Editing, -Up: Top - -
- -

10 Installing Bash

- -

This chapter provides basic instructions for installing Bash on -the various supported platforms. The distribution supports the -gnu operating systems, nearly every version of Unix, and several -non-Unix systems such as BeOS and Interix. -Other independent ports exist for -ms-dos, os/2, and Windows platforms. - -

- -
-


- -Next: , -Up: Installing Bash - -
- -

10.1 Basic Installation

- -

-These are installation instructions for Bash. - -

The simplest way to compile Bash is: - -

    -
  1. cd to the directory containing the source code and type -`./configure' to configure Bash for your system. If you're -using csh on an old version of System V, you might need to -type `sh ./configure' instead to prevent csh from trying -to execute configure itself. - -

    Running configure takes some time. -While running, it prints messages telling which features it is -checking for. - -

  2. Type `make' to compile Bash and build the bashbug bug -reporting script. - -
  3. Optionally, type `make tests' to run the Bash test suite. - -
  4. Type `make install' to install bash and bashbug. -This will also install the manual pages and Info file. - -
- -

The configure shell script attempts to guess correct -values for various system-dependent variables used during -compilation. It uses those values to create a Makefile in -each directory of the package (the top directory, the -builtins, doc, and support directories, -each directory under lib, and several others). It also creates a -config.h file containing system-dependent definitions. -Finally, it creates a shell script named config.status that you -can run in the future to recreate the current configuration, a -file config.cache that saves the results of its tests to -speed up reconfiguring, and a file config.log containing -compiler output (useful mainly for debugging configure). -If at some point -config.cache contains results you don't want to keep, you -may remove or edit it. - -

To find out more about the options and arguments that the -configure script understands, type - -

     bash-2.04$ ./configure --help
-
-

at the Bash prompt in your Bash source directory. - -

If you need to do unusual things to compile Bash, please -try to figure out how configure could check whether or not -to do them, and mail diffs or instructions to -bash-maintainers@gnu.org so they can be -considered for the next release. - -

The file configure.in is used to create configure -by a program called Autoconf. You only need -configure.in if you want to change it or regenerate -configure using a newer version of Autoconf. If -you do this, make sure you are using Autoconf version 2.50 or -newer. - -

You can remove the program binaries and object files from the -source code directory by typing `make clean'. To also remove the -files that configure created (so you can compile Bash for -a different kind of computer), type `make distclean'. - -

- -

10.2 Compilers and Options

- -

Some systems require unusual options for compilation or linking -that the configure script does not know about. You can -give configure 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: - -

     CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-

On systems that have the env program, you can do it like this: - -

     env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-

The configuration process uses GCC to build Bash if it -is available. - -

-


- -Next: , -Previous: Compilers and Options, -Up: Installing Bash - -
- -

10.3 Compiling For Multiple Architectures

- -

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 make that -supports the VPATH variable, such as GNU make. -cd to the -directory where you want the object files and executables to go and run -the configure script from the source directory. You may need to -supply the --srcdir=PATH argument to tell configure where the -source files are. configure automatically checks for the -source code in the directory that configure is in and in `..'. - -

If you have to use a make that does not supports the VPATH -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 `make distclean' before -reconfiguring for another architecture. - -

Alternatively, if your system supports symbolic links, you can use the -support/mkclone 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 /usr/gnu/src/bash-2.0: - -

     bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
-
-

The mkclone script requires Bash, so you must have already built -Bash for at least one architecture before you can create build -directories for other architectures. - -

- -

10.4 Installation Names

- -

By default, `make install' will install into -/usr/local/bin, /usr/local/man, etc. You can -specify an installation prefix other than /usr/local by -giving configure the option --prefix=PATH, -or by specifying a value for the DESTDIR `make' -variable when running `make install'. - -

You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. -If you give configure the option ---exec-prefix=PATH, `make install' will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - -

-


- -Next: , -Previous: Installation Names, -Up: Installing Bash - -
- -

10.5 Specifying the System Type

- -

There may be some features configure can not figure out -automatically, but need to determine by the type of host Bash -will run on. Usually configure can figure that -out, but if it prints a message saying it can not guess the host -type, give it the --host=TYPE option. `TYPE' can -either be a short name for the system type, such as `sun4', -or a canonical name with three fields: `CPU-COMPANY-SYSTEM' -(e.g., `i386-unknown-freebsd4.2'). - -

See the file support/config.sub for the possible -values of each field. - -

- -

10.6 Sharing Defaults

- -

If you want to set default values for configure scripts to -share, you can create a site shell script called -config.site that gives default values for variables like -CC, cache_file, and prefix. configure -looks for PREFIX/share/config.site if it exists, then -PREFIX/etc/config.site if it exists. Or, you can set the -CONFIG_SITE environment variable to the location of the site -script. A warning: the Bash configure looks for a site script, -but not all configure scripts do. - -

-


- -Next: , -Previous: Sharing Defaults, -Up: Installing Bash - -
- -

10.7 Operation Controls

- -

configure recognizes the following options to control how it -operates. - -

-
--cache-file=file
Use and save the results of the tests in -file instead of ./config.cache. Set file to -/dev/null to disable caching, for debugging -configure. - -
--help
Print a summary of the options to configure, and exit. - -
--quiet
--silent
-q
Do not print messages saying which checks are being made. - -
--srcdir=dir
Look for the Bash source code in directory dir. Usually -configure can determine that directory automatically. - -
--version
Print the version of Autoconf used to generate the configure -script, and exit. -
- -

configure also accepts some other, not widely used, boilerplate -options. `configure --help' prints the complete list. - -

-


- -Previous: Operation Controls, -Up: Installing Bash - -
- -

10.8 Optional Features

- -

The Bash configure has a number of --enable-feature -options, where feature indicates an optional part of Bash. -There are also several --with-package options, -where package is something like `bash-malloc' or `purify'. -To turn off the default use of a package, use ---without-package. To configure Bash without a feature -that is enabled by default, use --disable-feature. - -

Here is a complete list of the --enable- and ---with- options that the Bash configure recognizes. - -

-
--with-afs
Define if you are using the Andrew File System from Transarc. - -
--with-bash-malloc
Use the Bash version of -malloc in the directory lib/malloc. This is not the same -malloc that appears in gnu libc, but an older version -originally derived from the 4.2 bsd malloc. This malloc -is very fast, but wastes some space on each allocation. -This option is enabled by default. -The NOTES file contains a list of systems for -which this should be turned off, and configure disables this -option automatically for a number of systems. - -
--with-curses
Use the curses library instead of the termcap library. This should -be supplied if your system has an inadequate or incomplete termcap -database. - -
--with-gnu-malloc
A synonym for --with-bash-malloc. - -
--with-installed-readline[=PREFIX]
Define this to make Bash link with a locally-installed version of Readline -rather than the version in lib/readline. This works only with -Readline 5.0 and later versions. If PREFIX is yes or not -supplied, configure uses the values of the make variables -includedir and libdir, which are subdirectories of prefix -by default, to find the installed version of Readline if it is not in -the standard system include and library directories. -If PREFIX is no, Bash links with the version in -lib/readline. -If PREFIX is set to any other value, configure treats it as -a directory pathname and looks for -the installed version of Readline in subdirectories of that directory -(include files in PREFIX/include and the library in -PREFIX/lib). - -
--with-purify
Define this to use the Purify memory allocation checker from Rational -Software. - -
--enable-minimal-config
This produces a shell with minimal features, close to the historical -Bourne shell. -
- -

There are several --enable- options that alter how Bash is -compiled and linked, rather than changing run-time features. - -

-
--enable-largefile
Enable support for large files 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. - -
--enable-profiling
This builds a Bash binary that produces profiling information to be -processed by gprof each time it is executed. - -
--enable-static-link
This causes Bash to be linked statically, if gcc is being used. -This could be used to build a version to use as root's shell. -
- -

The `minimal-config' option can be used to disable all of -the following options, but it is processed first, so individual -options may be enabled using `enable-feature'. - -

All of the following options except for `disabled-builtins' and -`xpg-echo-default' are -enabled by default, unless the operating system does not provide the -necessary support. - -

-
--enable-alias
Allow alias expansion and include the alias and unalias -builtins (see Aliases). - -
--enable-arith-for-command
Include support for the alternate form of the for command -that behaves like the C language for statement -(see Looping Constructs). - -
--enable-array-variables
Include support for one-dimensional array shell variables -(see Arrays). - -
--enable-bang-history
Include support for csh-like history substitution -(see History Interaction). - -
--enable-brace-expansion
Include csh-like brace expansion -( b{a,b}c ==> bac bbc ). -See Brace Expansion, for a complete description. - -
--enable-command-timing
Include support for recognizing time as a reserved word and for -displaying timing statistics for the pipeline following time -(see Pipelines). -This allows pipelines as well as shell builtins and functions to be timed. - -
--enable-cond-command
Include support for the [[ conditional command. -(see Conditional Constructs). - -
--enable-cond-regexp
Include support for matching POSIX regular expressions using the -`=~' binary operator in the [[ conditional command. -(see Conditional Constructs). - -
--enable-debugger
Include support for the bash debugger (distributed separately). - -
--enable-directory-stack
Include support for a csh-like directory stack and the -pushd, popd, and dirs builtins -(see The Directory Stack). - -
--enable-disabled-builtins
Allow builtin commands to be invoked via `builtin xxx' -even after xxx has been disabled using `enable -n xxx'. -See Bash Builtins, for details of the builtin and -enable builtin commands. - -
--enable-dparen-arithmetic
Include support for the ((...)) command -(see Conditional Constructs). - -
--enable-extended-glob
Include support for the extended pattern matching features described -above under Pattern Matching. - -
--enable-help-builtin
Include the help builtin, which displays help on shell builtins and -variables (see Bash Builtins). - -
--enable-history
Include command history and the fc and history -builtin commands (see Bash History Facilities). - -
--enable-job-control
This enables the job control features (see Job Control), -if the operating system supports them. - -
--enable-multibyte
This enables support for multibyte characters if the operating -system provides the necessary support. - -
--enable-net-redirections
This enables the special handling of filenames of the form -/dev/tcp/host/port and -/dev/udp/host/port -when used in redirections (see Redirections). - -
--enable-process-substitution
This enables process substitution (see Process Substitution) if -the operating system provides the necessary support. - -
--enable-progcomp
Enable the programmable completion facilities -(see Programmable Completion). -If Readline is not enabled, this option has no effect. - -
--enable-prompt-string-decoding
Turn on the interpretation of a number of backslash-escaped characters -in the $PS1, $PS2, $PS3, and $PS4 prompt -strings. See Printing a Prompt, for a complete list of prompt -string escape sequences. - -
--enable-readline
Include support for command-line editing and history with the Bash -version of the Readline library (see Command Line Editing). - -
--enable-restricted
Include support for a restricted shell. If this is enabled, Bash, -when called as rbash, enters a restricted mode. See -The Restricted Shell, for a description of restricted mode. - -
--enable-select
Include the select builtin, which allows the generation of simple -menus (see Conditional Constructs). - -
--enable-separate-helpfiles
Use external files for the documentation displayed by the help builtin -instead of storing the text internally. - -
--enable-single-help-strings
Store the text displayed by the help 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. - -
--enable-strict-posix-default
Make Bash posix-conformant by default (see Bash POSIX Mode). - -
--enable-usg-echo-default
A synonym for --enable-xpg-echo-default. - -
--enable-xpg-echo-default
Make the echo builtin expand backslash-escaped characters by default, -without requiring the -e option. -This sets the default value of the xpg_echo shell option to on, -which makes the Bash echo behave more like the version specified in -the Single Unix Specification, version 3. -See Bash Builtins, for a description of the escape sequences that -echo recognizes. - -
- -

The file config-top.h contains C Preprocessor -`#define' statements for options which are not settable from -configure. -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. - -

-


- -Next: , -Previous: Installing Bash, -Up: Top - -
- -

Appendix A Reporting Bugs

- -

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 -ftp://ftp.gnu.org/pub/bash/. - -

Once you have determined that a bug actually exists, use the -bashbug 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 bug-bash@gnu.org or posted to the Usenet -newsgroup gnu.bash.bug. - -

All bug reports should include: -

    -
  • The version number of Bash. -
  • The hardware and operating system. -
  • The compiler used to compile Bash. -
  • A description of the bug behaviour. -
  • A short script or `recipe' which exercises the bug and may be used -to reproduce it. -
- -

bashbug inserts the first three items automatically into -the template it provides for filing a bug report. - -

Please send all reports concerning this manual to -chet@po.CWRU.Edu. - -

-


- -Next: , -Previous: Reporting Bugs, -Up: Top - -
- -

Appendix B Major Differences From The Bourne Shell

- -

Bash implements essentially the same grammar, parameter and -variable expansion, redirection, and quoting as the Bourne Shell. -Bash uses the posix standard as the specification of -how these features are to be implemented. There are some -differences between the traditional Bourne shell and Bash; this -section quickly details the differences of significance. A -number of these differences are explained in greater depth in -previous sections. -This section uses the version of sh included in SVR4.2 (the -last version of the historical Bourne shell) as the baseline reference. - -

    -
  • Bash is posix-conformant, even where the posix specification -differs from traditional sh behavior (see Bash POSIX Mode). - -
  • Bash has multi-character invocation options (see Invoking Bash). - -
  • Bash has command-line editing (see Command Line Editing) and -the bind builtin. - -
  • Bash provides a programmable word completion mechanism -(see Programmable Completion), and two builtin commands, -complete and compgen, to manipulate it. - -
  • Bash has command history (see Bash History Facilities) and the -history and fc builtins to manipulate it. -The Bash history list maintains timestamp information and uses the -value of the HISTTIMEFORMAT variable to display it. - -
  • Bash implements csh-like history expansion -(see History Interaction). - -
  • Bash has one-dimensional array variables (see Arrays), 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. - -
  • The $'...' quoting syntax, which expands ANSI-C -backslash-escaped characters in the text between the single quotes, -is supported (see ANSI-C Quoting). - -
  • Bash supports the $"..." quoting syntax to do -locale-specific translation of the characters between the double -quotes. The -D, --dump-strings, and --dump-po-strings -invocation options list the translatable strings found in a script -(see Locale Translation). - -
  • Bash implements the ! keyword to negate the return value of -a pipeline (see Pipelines). -Very useful when an if statement needs to act only if a test fails. -The Bash `-o pipefail' option to set will cause a pipeline to -return a failure status if any command fails. - -
  • Bash has the time reserved word and command timing (see Pipelines). -The display of the timing statistics may be controlled with the -TIMEFORMAT variable. - -
  • Bash implements the for (( expr1 ; expr2 ; expr3 )) -arithmetic for command, similar to the C language (see Looping Constructs). - -
  • Bash includes the select compound command, which allows the -generation of simple menus (see Conditional Constructs). - -
  • Bash includes the [[ compound command, which makes conditional -testing part of the shell grammar (see Conditional Constructs), including -optional regular expression matching. - -
  • Bash provides optional case-insensitive matching for the case and -[[ constructs. - -
  • Bash includes brace expansion (see Brace Expansion) and tilde -expansion (see Tilde Expansion). - -
  • Bash implements command aliases and the alias and unalias -builtins (see Aliases). - -
  • Bash provides shell arithmetic, the (( compound command -(see Conditional Constructs), -and arithmetic expansion (see Shell Arithmetic). - -
  • 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 export -command. - -
  • Bash supports the `+=' assignment operator, which appends to the value -of the variable named on the left hand side. - -
  • Bash includes the posix pattern removal `%', `#', `%%' -and `##' expansions to remove leading or trailing substrings from -variable values (see Shell Parameter Expansion). - -
  • The expansion ${#xx}, which returns the length of ${xx}, -is supported (see Shell Parameter Expansion). - -
  • The expansion ${var:offset[:length]}, -which expands to the substring of var's value of length -length, beginning at offset, is present -(see Shell Parameter Expansion). - -
  • The expansion -${var/[/]pattern[/replacement]}, -which matches pattern and replaces it with replacement in -the value of var, is available (see Shell Parameter Expansion). - -
  • The expansion ${!prefix}* expansion, which expands to -the names of all shell variables whose names begin with prefix, -is available (see Shell Parameter Expansion). - -
  • Bash has indirect variable expansion using ${!word} -(see Shell Parameter Expansion). - -
  • Bash can expand positional parameters beyond $9 using -${num}. - -
  • The posix $() form of command substitution -is implemented (see Command Substitution), -and preferred to the Bourne shell's `` (which -is also implemented for backwards compatibility). - -
  • Bash has process substitution (see Process Substitution). - -
  • Bash automatically assigns variables that provide information about the -current user (UID, EUID, and GROUPS), the current host -(HOSTTYPE, OSTYPE, MACHTYPE, and HOSTNAME), -and the instance of Bash that is running (BASH, -BASH_VERSION, and BASH_VERSINFO). See Bash Variables, -for details. - -
  • The IFS variable is used to split only the results of expansion, -not all words (see Word Splitting). -This closes a longstanding shell security hole. - -
  • Bash implements the full set of posix filename expansion operators, -including character classes, equivalence classes, and -collating symbols (see Filename Expansion). - -
  • Bash implements extended pattern matching features when the extglob -shell option is enabled (see Pattern Matching). - -
  • It is possible to have a variable and a function with the same name; -sh does not separate the two name spaces. - -
  • Bash functions are permitted to have local variables using the -local builtin, and thus useful recursive functions may be written -(see Bash Builtins). - -
  • Variable assignments preceding commands affect only that command, even -builtins and functions (see Environment). -In sh, all variable assignments -preceding commands are global unless the command is executed from the -file system. - -
  • Bash performs filename expansion on filenames specified as operands -to input and output redirection operators (see Redirections). - -
  • Bash contains the `<>' redirection operator, allowing a file to be -opened for both reading and writing, and the `&>' redirection -operator, for directing standard output and standard error to the same -file (see Redirections). - -
  • Bash includes the `<<<' redirection operator, allowing a string to -be used as the standard input to a command. - -
  • Bash implements the `[n]<&word' and `[n]>&word' -redirection operators, which move one file descriptor to another. - -
  • Bash treats a number of filenames specially when they are -used in redirection operators (see Redirections). - -
  • Bash can open network connections to arbitrary machines and services -with the redirection operators (see Redirections). - -
  • The noclobber option is available to avoid overwriting existing -files with output redirection (see The Set Builtin). -The `>|' redirection operator may be used to override noclobber. - -
  • The Bash cd and pwd builtins (see Bourne Shell Builtins) -each take -L and -P options to switch between logical and -physical modes. - -
  • 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 -builtin and command builtins (see Bash Builtins). - -
  • The command builtin allows selective disabling of functions -when command lookup is performed (see Bash Builtins). - -
  • Individual builtins may be enabled or disabled using the enable -builtin (see Bash Builtins). - -
  • The Bash exec 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 Bourne Shell Builtins). - -
  • Shell functions may be exported to children via the environment -using export -f (see Shell Functions). - -
  • The Bash export, readonly, and declare builtins can -take a -f option to act on shell functions, a -p option to -display variables with various attributes set in a format that can be -used as shell input, a -n option to remove various variable -attributes, and `name=value' arguments to set variable attributes -and values simultaneously. - -
  • The Bash hash builtin allows a name to be associated with -an arbitrary filename, even when that filename cannot be found by -searching the $PATH, using `hash -p' -(see Bourne Shell Builtins). - -
  • Bash includes a help builtin for quick reference to shell -facilities (see Bash Builtins). - -
  • The printf builtin is available to display formatted output -(see Bash Builtins). - -
  • The Bash read builtin (see Bash Builtins) -will read a line ending in `\' with -the -r option, and will use the REPLY variable as a -default if no non-option arguments are supplied. -The Bash read builtin -also accepts a prompt string with the -p option and will use -Readline to obtain the line when given the -e option. -The read builtin also has additional options to control input: -the -s option will turn off echoing of input characters as -they are read, the -t option will allow read to time out -if input does not arrive within a specified number of seconds, the --n option will allow reading only a specified number of -characters rather than a full line, and the -d option will read -until a particular character rather than newline. - -
  • The return builtin may be used to abort execution of scripts -executed with the . or source builtins -(see Bourne Shell Builtins). - -
  • Bash includes the shopt builtin, for finer control of shell -optional capabilities (see The Shopt Builtin), and allows these options -to be set and unset at shell invocation (see Invoking Bash). - -
  • Bash has much more optional behavior controllable with the set -builtin (see The Set Builtin). - -
  • The `-x' (xtrace) option displays commands other than -simple commands when performing an execution trace -(see The Set Builtin). - -
  • The test builtin (see Bourne Shell Builtins) -is slightly different, as it implements the posix algorithm, -which specifies the behavior based on the number of arguments. - -
  • Bash includes the caller builtin, which displays the context of -any active subroutine call (a shell function or a script executed with -the . or source builtins). This supports the bash -debugger. - -
  • The trap builtin (see Bourne Shell Builtins) allows a -DEBUG pseudo-signal specification, similar to EXIT. -Commands specified with a DEBUG trap are executed before every -simple command, for command, case command, -select command, every arithmetic for command, and before -the first command executes in a shell function. -The DEBUG trap is not inherited by shell functions unless the -function has been given the trace attribute or the -functrace option has been enabled using the shopt builtin. -The extdebug shell option has additional effects on the -DEBUG trap. - -

    The trap builtin (see Bourne Shell Builtins) allows an -ERR pseudo-signal specification, similar to EXIT and DEBUG. -Commands specified with an ERR trap are executed after a simple -command fails, with a few exceptions. -The ERR trap is not inherited by shell functions unless the --o errtrace option to the set builtin is enabled. - -

    The trap builtin (see Bourne Shell Builtins) allows a -RETURN pseudo-signal specification, similar to -EXIT and DEBUG. -Commands specified with an RETURN trap are executed before -execution resumes after a shell function or a shell script executed with -. or source returns. -The RETURN trap is not inherited by shell functions unless the -function has been given the trace attribute or the -functrace option has been enabled using the shopt builtin. - -

  • The Bash type builtin is more extensive and gives more information -about the names it finds (see Bash Builtins). - -
  • The Bash umask builtin permits a -p option to cause -the output to be displayed in the form of a umask command -that may be reused as input (see Bourne Shell Builtins). - -
  • Bash implements a csh-like directory stack, and provides the -pushd, popd, and dirs builtins to manipulate it -(see The Directory Stack). -Bash also makes the directory stack visible as the value of the -DIRSTACK shell variable. - -
  • Bash interprets special backslash-escaped characters in the prompt -strings when interactive (see Printing a Prompt). - -
  • The Bash restricted mode is more useful (see The Restricted Shell); -the SVR4.2 shell restricted mode is too limited. - -
  • The disown builtin can remove a job from the internal shell -job table (see Job Control Builtins) or suppress the sending -of SIGHUP to a job when the shell exits as the result of a -SIGHUP. - -
  • Bash includes a number of features to support a separate debugger for -shell scripts. - -
  • The SVR4.2 shell has two privilege-related builtins -(mldmode and priv) not present in Bash. - -
  • Bash does not have the stop or newgrp builtins. - -
  • Bash does not use the SHACCT variable or perform shell accounting. - -
  • The SVR4.2 sh uses a TIMEOUT variable like Bash uses -TMOUT. - -
- -

More features unique to Bash may be found in Bash Features. - -

B.1 Implementation Differences From The SVR4.2 Shell

- -

Since Bash is a completely new implementation, it does not suffer from -many of the limitations of the SVR4.2 shell. For instance: - -

    -
  • Bash does not fork a subshell when redirecting into or out of -a shell control structure such as an if or while -statement. - -
  • Bash does not allow unbalanced quotes. The SVR4.2 shell will silently -insert a needed closing quote at EOF under certain circumstances. -This can be the cause of some hard-to-find errors. - -
  • The SVR4.2 shell uses a baroque memory management scheme based on -trapping SIGSEGV. If the shell is started from a process with -SIGSEGV blocked (e.g., by using the system() C library -function call), it misbehaves badly. - -
  • In a questionable attempt at security, the SVR4.2 shell, -when invoked without the -p option, will alter its real -and effective uid and gid if they are less than some -magic threshold value, commonly 100. -This can lead to unexpected results. - -
  • The SVR4.2 shell does not allow users to trap SIGSEGV, -SIGALRM, or SIGCHLD. - -
  • The SVR4.2 shell does not allow the IFS, MAILCHECK, -PATH, PS1, or PS2 variables to be unset. - -
  • The SVR4.2 shell treats `^' as the undocumented equivalent of -`|'. - -
  • Bash allows multiple option arguments when it is invoked (-x -v); -the SVR4.2 shell allows only one option argument (-xv). In -fact, some versions of the shell dump core if the second argument begins -with a `-'. - -
  • The SVR4.2 shell exits a script if any builtin fails; Bash exits -a script only if one of the posix special builtins fails, and -only for certain failures, as enumerated in the posix standard. - -
  • The SVR4.2 shell behaves differently when invoked as jsh -(it turns on job control). -
- -
-


- -Next: , -Previous: Major Differences From The Bourne Shell, -Up: Top - -
- -

Appendix C Copying This Manual

- - - -
-


- -Up: Copying This Manual - -
- -

C.1 GNU Free Documentation License

- -

Version 1.2, November 2002
- -
     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.
-
-
    -
  1. PREAMBLE - -

    The purpose of this License is to make a manual, textbook, or other -functional and useful document free 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. - -

    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. - -

    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. - -

  2. APPLICABILITY AND DEFINITIONS - -

    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. - -

    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. - -

    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. - -

    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. - -

    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. - -

    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”. - -

    Examples of suitable formats for Transparent copies include plain -ascii without markup, Texinfo input format, LaTeX input -format, SGML or XML using a publicly available -DTD, and standard-conforming simple HTML, -PostScript or PDF designed for human modification. Examples -of transparent image formats include PNG, XCF and -JPG. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are -not generally available, and the machine-generated HTML, -PostScript or PDF produced by some word processors for -output purposes only. - -

    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. - -

    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. - -

    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. - -

  3. VERBATIM COPYING - -

    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. - -

    You may also lend copies, under the same conditions stated above, and -you may publicly display copies. - -

  4. COPYING IN QUANTITY - -

    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. - -

    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. - -

    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. - -

    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. - -

  5. MODIFICATIONS - -

    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: - -

      -
    1. 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. - -
    2. 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. - -
    3. State on the Title page the name of the publisher of the -Modified Version, as the publisher. - -
    4. Preserve all the copyright notices of the Document. - -
    5. Add an appropriate copyright notice for your modifications -adjacent to the other copyright notices. - -
    6. 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. - -
    7. Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. - -
    8. Include an unaltered copy of this License. - -
    9. 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. - -
    10. 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. - -
    11. 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. - -
    12. 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. - -
    13. Delete any section Entitled “Endorsements”. Such a section -may not be included in the Modified Version. - -
    14. Do not retitle any existing section to be Entitled “Endorsements” or -to conflict in title with any Invariant Section. - -
    15. Preserve any Warranty Disclaimers. -
    - -

    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. - -

    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. - -

    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. - -

    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. - -

  6. COMBINING DOCUMENTS - -

    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. - -

    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. - -

    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.” - -

  7. COLLECTIONS OF DOCUMENTS - -

    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. - -

    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. - -

  8. AGGREGATION WITH INDEPENDENT WORKS - -

    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. - -

    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. - -

  9. TRANSLATION - -

    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. - -

    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. - -

  10. TERMINATION - -

    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. - -

  11. FUTURE REVISIONS OF THIS LICENSE - -

    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 -http://www.gnu.org/copyleft/. - -

    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. -

- -

C.1.1 ADDENDUM: How to use this License for your documents

- -

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: - -

       Copyright (C)  year  your name.
-       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''.
-
-

If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the “with...Texts.” line with this: - -

         with the Invariant Sections being list their titles, with
-         the Front-Cover Texts being list, and with the Back-Cover Texts
-         being list.
-
-

If you have Invariant Sections without Cover Texts, or some other -combination of the three, merge those two alternatives to suit the -situation. - -

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. - - - - -

-


- -Next: , -Previous: Copying This Manual, -Up: Top - -
- -

Index of Shell Builtin Commands

- -
-


- -Next: , -Previous: Builtin Index, -Up: Top - -
- -

Index of Shell Reserved Words

- - - -
-


- -Next: , -Previous: Reserved Word Index, -Up: Top - -
- -

Parameter and Variable Index

- - - -
-


- -Next: , -Previous: Variable Index, -Up: Top - -
- -

Function Index

- - - -
-


- -Previous: Function Index, -Up: Top - -
- -

Concept Index

- - - - - diff --git a/doc/texinfo.tex.20030205 b/doc/texinfo.tex.20030205 deleted file mode 100644 index 555a07707..000000000 --- a/doc/texinfo.tex.20030205 +++ /dev/null @@ -1,6688 +0,0 @@ -% 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 . - % - \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 to achieve this: TeX expands \the only once, - % simply yielding the contents of . (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 - \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{...} -% If we want to allow any 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'{'#1'}'{#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 -% 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: diff --git a/lib/readline/rlptytest.c b/lib/readline/rlptytest.c deleted file mode 100644 index ee351a944..000000000 --- a/lib/readline/rlptytest.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - * - * Another test harness for the readline callback interface. - * - * Author: Bob Rossi - */ - -#if defined (HAVE_CONFIG_H) -#include -#endif - -#include -#include -#include -#include - -#include -#include - -#include - -#if 0 /* LINUX */ -#include -#else -#include -#endif - -#ifdef READLINE_LIBRARY -# include "readline.h" -#else -# include -#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; -} diff --git a/po/builtins.pot b/po/builtins.pot deleted file mode 100644 index e30179c3a..000000000 --- a/po/builtins.pot +++ /dev/null @@ -1,2845 +0,0 @@ -#: /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 " -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 "" diff --git a/po/foo.new.po b/po/foo.new.po deleted file mode 100644 index b4771c053..000000000 --- a/po/foo.new.po +++ /dev/null @@ -1,5521 +0,0 @@ -# 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 "" -msgstr "" - -#: 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 \n" -msgstr "" -"License GPLv3+: GNU GPL version 3 or later \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 \n" -msgstr "" -"License GPLv2+: GNU GPL version 2 or later \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 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 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’." diff --git a/po/t-en@quot.gmo b/po/t-en@quot.gmo deleted file mode 100644 index d6de28ae3..000000000 Binary files a/po/t-en@quot.gmo and /dev/null differ diff --git a/support/mk-takehome b/support/mk-takehome deleted file mode 100755 index 419572df4..000000000 --- a/support/mk-takehome +++ /dev/null @@ -1,70 +0,0 @@ -#! /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 diff --git a/tests/RUN-ONE-TEST.gprof b/tests/RUN-ONE-TEST.gprof deleted file mode 100755 index b29a64fd4..000000000 --- a/tests/RUN-ONE-TEST.gprof +++ /dev/null @@ -1,9 +0,0 @@ -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 "$@" diff --git a/tests/RUN-ONE-TEST.ksh b/tests/RUN-ONE-TEST.ksh deleted file mode 100644 index 82461f470..000000000 --- a/tests/RUN-ONE-TEST.ksh +++ /dev/null @@ -1,9 +0,0 @@ -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 "$@" diff --git a/tests/braces-tests b/tests/braces-tests deleted file mode 100644 index d31a5e3d9..000000000 --- a/tests/braces-tests +++ /dev/null @@ -1,24 +0,0 @@ -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) diff --git a/tests/cond-regexp.sub b/tests/cond-regexp.sub deleted file mode 100644 index 47e46f0af..000000000 --- a/tests/cond-regexp.sub +++ /dev/null @@ -1,49 +0,0 @@ -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 -[[ "helloworld" =~ llo ]] && echo match control-a 1 -[[ "helloworld" =~ world ]] && echo match control-a 2 -[[ "helloworld" =~ world$ ]] && echo match control-a 3 -[[ "helloworld" =~  ]] && echo match control-a 4 -[[ "helloworld" =~ oworld$ ]] && echo match control-a 5 diff --git a/tests/cprint1.sub b/tests/cprint1.sub deleted file mode 100644 index 42730450d..000000000 --- a/tests/cprint1.sub +++ /dev/null @@ -1,48 +0,0 @@ -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 diff --git a/tests/infile b/tests/infile deleted file mode 100644 index 94ebaf900..000000000 --- a/tests/infile +++ /dev/null @@ -1,4 +0,0 @@ -1 -2 -3 -4 diff --git a/tests/set-e-test b/tests/set-e-test deleted file mode 100644 index 1fdf360d9..000000000 --- a/tests/set-e-test +++ /dev/null @@ -1,105 +0,0 @@ -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 diff --git a/tests/tilde-tests b/tests/tilde-tests deleted file mode 100644 index f5f530902..000000000 --- a/tests/tilde-tests +++ /dev/null @@ -1,66 +0,0 @@ -# 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