home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-07-12 | 273.2 KB | 5,545 lines |
-
-
-
- BASH(1) BASH(1)
-
-
- NNAAMMEE
- bash - GNU Bourne-Again SHell
-
- SSYYNNOOPPSSIISS
- bbaasshh [options] [file]
-
- CCOOPPYYRRIIGGHHTT
- Bash is Copyright (C) 1989, 1991, 1993, 1995, 1996 by the
- Free Software Foundation, Inc.
-
- DDEESSCCRRIIPPTTIIOONN
- BBaasshh is an sshh-compatible command language interpreter that
- executes commands read from the standard input or from a
- file. BBaasshh also incorporates useful features from the
- _K_o_r_n and _C shells (kksshh and ccsshh).
-
- BBaasshh is intended to be a conformant implementation of the
- IEEE POSIX Shell and Tools specification (IEEE Working
- Group 1003.2).
-
- OOPPTTIIOONNSS
- In addition to the single-character shell options docu-
- mented in the description of the sseett builtin command, bbaasshh
- interprets the following options when it is invoked:
-
- --cc _s_t_r_i_n_g If the --cc option is present, then commands are
- read from _s_t_r_i_n_g. If there are arguments after
- the _s_t_r_i_n_g, they are assigned to the positional
- parameters, starting with $$00.
- --rr If the --rr option is present, the shell becomes
- _r_e_s_t_r_i_c_t_e_d (see RREESSTTRRIICCTTEEDD SSHHEELLLL below).
- --ii If the --ii option is present, the shell is _i_n_t_e_r_-
- _a_c_t_i_v_e.
- --ss If the --ss 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.
- --DD A list of all double-quoted strings preceded by
- $$ is printed on the standard ouput. These are
- the strings that are subject to language trans-
- lation when the current locale is not C or
- POSIX. This implies the --nn option; no commands
- will be executed.
- ---- A ---- signals the end of options and disables
- further option processing. Any arguments after
- the ---- are treated as filenames and arguments.
- An argument of -- is equivalent to ----.
-
- BBaasshh also interprets a number of multi-character options.
- These options must appear on the command line before the
- single-character options in order for them to be recog-
- nized.
-
-
-
-
- GNU 1998 Apr 1 1
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- ----dduummpp--ppoo--ssttrriinnggss
- Equivalent to --DD, but the output is in the GNU _g_e_t_-
- _t_e_x_t ppoo (portable object) file format.
- ----dduummpp--ssttrriinnggss
- Equivalent to --DD.
- ----hheellpp Display a usage message on standard output and exit
- successfully.
- ----llooggiinn
- Make bbaasshh act as if it had been invoked as a login
- shell (see IINNVVOOCCAATTIIOONN below).
- ----nnooeeddiittiinngg
- Do not use the GNU rreeaaddlliinnee library to read command
- lines if interactive.
- ----nnoopprrooffiillee
- Do not read either the system-wide startup file
- _/_e_t_c_/_p_r_o_f_i_l_e or any of the personal initialization
- files _~_/_._b_a_s_h___p_r_o_f_i_l_e, _~_/_._b_a_s_h___l_o_g_i_n, or _~_/_._p_r_o_-
- _f_i_l_e. By default, bbaasshh reads these files when it
- is invoked as a login shell (see IINNVVOOCCAATTIIOONN below).
- ----nnoorrcc Do not read and execute the personal initialization
- file _~_/_._b_a_s_h_r_c if the shell is interactive. This
- option is on by default if the shell is invoked as
- sshh.
- ----ppoossiixx
- Change the behavior of bbaasshh where the default oper-
- ation differs from the POSIX 1003.2 standard to
- match the standard.
- ----rrccffiillee _f_i_l_e
- Execute commands from _f_i_l_e instead of the standard
- personal initialization file _~_/_._b_a_s_h_r_c if the shell
- is interactive (see IINNVVOOCCAATTIIOONN below).
- ----rreessttrriicctteedd
- The shell becomes restricted (see RREESSTTRRIICCTTEEDD SSHHEELLLL
- below).
- ----vveerrbboossee
- Equivalent to --vv.
- ----vveerrssiioonn
- Show version information for this instance of bbaasshh
- on the standard output and exit successfully.
-
- AARRGGUUMMEENNTTSS
- If arguments remain after option processing, and neither
- the --cc nor the --ss option has been supplied, the first
- argument is assumed to be the name of a file containing
- shell commands. If bbaasshh is invoked in this fashion, $$00 is
- set to the name of the file, and the positional parameters
- are set to the remaining arguments. BBaasshh reads and exe-
- cutes commands from this file, then exits. BBaasshh'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.
-
- IINNVVOOCCAATTIIOONN
- A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument
-
-
-
- GNU 1998 Apr 1 2
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- zero is a --, or one started with the ----llooggiinn option.
-
- An _i_n_t_e_r_a_c_t_i_v_e shell is one whose standard input and out-
- put are both connected to terminals (as determined by
- _i_s_a_t_t_y(3)), or one started with the --ii option. PPSS11 is set
- and $$-- includes ii if bbaasshh is interactive, allowing a shell
- script or a startup file to test this state.
-
- The following paragraphs describe how bbaasshh executes its
- startup files. If any of the files exist but cannot be
- read, bbaasshh reports an error. Tildes are expanded in file
- names as described below under TTiillddee EExxppaannssiioonn in the
- EEXXPPAANNSSIIOONN section.
-
- When bbaasshh is invoked as an interactive login shell, it
- first reads and executes commands from the file _/_e_t_c_/_p_r_o_-
- _f_i_l_e, if that file exists. After reading that file, it
- looks for _~_/_._b_a_s_h___p_r_o_f_i_l_e, _~_/_._b_a_s_h___l_o_g_i_n, and _~_/_._p_r_o_f_i_l_e,
- in that order, and reads and executes commands from the
- first one that exists and is readable. The ----nnoopprrooffiillee
- option may be used when the shell is started to inhibit
- this behavior.
-
- When a login shell exits, bbaasshh reads and executes commands
- from the file _~_/_._b_a_s_h___l_o_g_o_u_t, if it exists.
-
- When an interactive shell that is not a login shell is
- started, bbaasshh reads and executes commands from _~_/_._b_a_s_h_r_c,
- if that file exists. This may be inhibited by using the
- ----nnoorrcc option. The ----rrccffiillee _f_i_l_e option will force bbaasshh
- to read and execute commands from _f_i_l_e instead of
- _~_/_._b_a_s_h_r_c.
-
- When bbaasshh is started non-interactively, to run a shell
- script, for example, it looks for the variable BBAASSHH__EENNVV 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. BBaasshh behaves as if the following command
- were executed:
- if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
- bbuutt tthhee vvaalluuee ooff tthhee PPAATTHH variable is not used to search
- for the file name.
-
- If bbaasshh is invoked with the name sshh, it tries to mimic the
- startup behavior of historical versions of sshh as closely
- as possible, while conforming to the POSIX standard as
- well. When invoked as an interactive login shell, it
- first attempts to read and execute commands from _/_e_t_c_/_p_r_o_-
- _f_i_l_e and _~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee
- option may be used to inhibit this behavior. When invoked
- as an interactive shell with the name sshh, bbaasshh looks for
- the variable EENNVV, 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 sshh does not attempt to
-
-
-
- GNU 1998 Apr 1 3
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- read and execute commands from any other startup files,
- the ----rrccffiillee option has no effect. A non-interactive
- shell invoked with the name sshh does not attempt to read
- any startup files. When invoked as sshh, bbaasshh enters _p_o_s_i_x
- mode after the startup files are read.
-
- When bbaasshh is started in _p_o_s_i_x mode, as with the ----ppoossiixx
- command line option, it follows the POSIX standard for
- startup files. In this mode, interactive shells expand
- the EENNVV variable and commands are read and executed from
- the file whose name is the expanded value. No other
- startup files are read.
-
- BBaasshh attempts to determine when it is being run by the
- remote shell daemon, usually _r_s_h_d. If bbaasshh determines it
- is being run by _r_s_h_d, it reads and executes commands from
- _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will
- not do this if invoked as sshh. The ----nnoorrcc option may be
- used to inhibit this behavior, and the ----rrccffiillee option may
- be used to force another file to be read, but _r_s_h_d does
- not generally invoke the shell with those options or allow
- them to be specified.
-
- DDEEFFIINNIITTIIOONNSS
- The following definitions are used throughout the rest of
- this document.
- bbllaannkk A space or tab.
- wwoorrdd A sequence of characters considered as a single
- unit by the shell. Also known as a ttookkeenn.
- nnaammee A _w_o_r_d consisting only of alphanumeric characters
- and underscores, and beginning with an alphabetic
- character or an underscore. Also referred to as an
- iiddeennttiiffiieerr.
- mmeettaacchhaarraacctteerr
- A character that, when unquoted, separates words.
- One of the following:
- || && ;; (( )) << >> ssppaaccee ttaabb
- ccoonnttrrooll ooppeerraattoorr
- A _t_o_k_e_n that performs a control function. It is
- one of the following symbols:
- |||| && &&&& ;; ;;;; (( )) || <<nneewwlliinnee>>
-
- RREESSEERRVVEEDD WWOORRDDSS
- _R_e_s_e_r_v_e_d _w_o_r_d_s are words that have a special meaning to
- the shell. The following words are recognized as reserved
- when unquoted and either the first word of a simple com-
- mand (see SSHHEELLLL GGRRAAMMMMAARR below) or the third word of a ccaassee
- or ffoorr command:
-
- !! ccaassee ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn
- sseelleecctt tthheenn uunnttiill wwhhiillee {{ }} ttiimmee [[[[ ]]]]
-
- SSHHEELLLL GGRRAAMMMMAARR
-
-
-
-
- GNU 1998 Apr 1 4
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- SSiimmppllee CCoommmmaannddss
- A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable
- assignments followed by bbllaannkk-separated words and redirec-
- tions, and terminated by a _c_o_n_t_r_o_l _o_p_e_r_a_t_o_r. The first
- word specifies the command to be executed. The remaining
- words are passed as arguments to the invoked command.
-
- The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status,
- or 128+_n if the command is terminated by signal _n.
-
- PPiippeelliinneess
- A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated
- by the character ||. The format for a pipeline is:
-
- [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d [ || _c_o_m_m_a_n_d_2 ... ]
-
- The standard output of _c_o_m_m_a_n_d is connected to the stan-
- dard input of _c_o_m_m_a_n_d_2. This connection is performed
- before any redirections specified by the command (see
- RREEDDIIRREECCTTIIOONN below).
-
- If the reserved word !! precedes a pipeline, the exit sta-
- tus of that pipeline is the logical NOT of the exit status
- of the last command. Otherwise, the status of the
- pipeline is the exit status of the last command. The
- shell waits for all commands in the pipeline to terminate
- before returning a value.
-
- If the ttiimmee reserved word precedes a pipeline, the elapsed
- as well as user and system time consumed by its execution
- are reported when the pipeline terminates. The --pp option
- changes the output format to that specified by POSIX. The
- TTIIMMEEFFOORRMMAATT variable may be set to a format string that
- specifies how the timing information should be displayed;
- see the description of TTIIMMEEFFOORRMMAATT under SShheellll VVaarriiaabblleess
- below.
-
- Each command in a pipeline is executed as a separate pro-
- cess (i.e., in a subshell).
-
- LLiissttss
- A _l_i_s_t is a sequence of one or more pipelines separated by
- one of the operators ;;, &&, &&&&, or ||||, and optionally ter-
- minated by one of ;;, &&, or <<nneewwlliinnee>>.
-
- Of these list operators, &&&& and |||| have equal precedence,
- followed by ;; and &&,, which have equal precedence.
-
- If a command is terminated by the control operator &&, the
- shell executes the command in the _b_a_c_k_g_r_o_u_n_d in a sub-
- shell. The shell does not wait for the command to finish,
- and the return status is 0. Commands separated by a ;; are
- executed sequentially; the shell waits for each command to
- terminate in turn. The return status is the exit status
-
-
-
- GNU 1998 Apr 1 5
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- of the last command executed.
-
- The control operators &&&& and |||| denote AND lists and OR
- lists, respectively. An AND list has the form
-
- _c_o_m_m_a_n_d &&&& _c_o_m_m_a_n_d_2
-
- _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d returns an
- exit status of zero.
-
- An OR list has the form
-
- _c_o_m_m_a_n_d |||| _c_o_m_m_a_n_d_2
-
-
- _c_o_m_m_a_n_d_2 is executed if and only if _c_o_m_m_a_n_d 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.
-
- CCoommppoouunndd CCoommmmaannddss
- A _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d is one of the following:
-
- (_l_i_s_t) _l_i_s_t is executed in a subshell. Variable assign-
- ments and builtin commands that affect the shell's
- environment do not remain in effect after the com-
- mand completes. The return status is the exit sta-
- tus of _l_i_s_t.
-
- { _l_i_s_t; }
- _l_i_s_t is simply executed in the current shell envi-
- ronment. _l_i_s_t must be terminated with a newline or
- semicolon. This is known as a _g_r_o_u_p _c_o_m_m_a_n_d. The
- return status is the exit status of _l_i_s_t.
-
- ((_e_x_p_r_e_s_s_i_o_n))
- The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules
- described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. 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 lleett ""_e_x_p_r_e_s_s_i_o_n"".
-
- [[[[ _e_x_p_r_e_s_s_i_o_n ]]]]
- Return a status of 0 or 1 depending on the evalua-
- tion of the conditional expression _e_x_p_r_e_s_s_i_o_n.
- Expressions are composed of the primaries described
- below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. Word split-
- ting and pathname expansion are not performed on
- the words between the [[[[ and ]]]]; tilde expansion,
- parameter and variable expansion, arithmetic expan-
- sion, command substitution, process substitution,
- and quote removal are performed.
-
- When the ==== and !!== operators are used, the string
-
-
-
- GNU 1998 Apr 1 6
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- to the right of the operator is considered a pat-
- tern and matched according to the rules described
- below under PPaatttteerrnn MMaattcchhiinngg. The return value is
- 0 if the string matches or does not match the pat-
- tern, respectively, and 1 otherwise. Any part of
- the pattern may be quoted to force it to be matched
- as a string.
-
- Expressions may be combined using the following
- operators, listed in decreasing order of prece-
- dence:
-
- (( _e_x_p_r_e_s_s_i_o_n ))
- Returns the value of _e_x_p_r_e_s_s_i_o_n. This may
- be used to override the normal precedence of
- operators.
- !! _e_x_p_r_e_s_s_i_o_n
- True if _e_x_p_r_e_s_s_i_o_n is false.
- _e_x_p_r_e_s_s_i_o_n_1 &&&& _e_x_p_r_e_s_s_i_o_n_2
- True if both _e_x_p_r_e_s_s_i_o_n_1 and _e_x_p_r_e_s_s_i_o_n_2 are
- true.
- _e_x_p_r_e_s_s_i_o_n_1 |||| _e_x_p_r_e_s_s_i_o_n_2
- True if either _e_x_p_r_e_s_s_i_o_n_1 or _e_x_p_r_e_s_s_i_o_n_2 is
- true.
-
- The &&&& and |||| operators do not execute _e_x_p_r_e_s_s_i_o_n_2 if the
- value of _e_x_p_r_e_s_s_i_o_n_1 is sufficient to determine the return
- value of the entire conditional expression.
-
- ffoorr _n_a_m_e [ iinn _w_o_r_d; ] ddoo _l_i_s_t ; ddoonnee
- The list of words following iinn is expanded, gener-
- ating a list of items. The variable _n_a_m_e is set to
- each element of this list in turn, and _l_i_s_t is exe-
- cuted each time. If the iinn _w_o_r_d is omitted, the
- ffoorr command executes _l_i_s_t once for each positional
- parameter that is set (see PPAARRAAMMEETTEERRSS below). The
- return status is the exit status of the last com-
- mand that executes. If the expansion of the items
- following iinn results in an empty list, no commands
- are executed, and the return status is 0.
-
- sseelleecctt _n_a_m_e [ iinn _w_o_r_d; ] ddoo _l_i_s_t ; ddoonnee
- The list of words following iinn is expanded, gener-
- ating a list of items. The set of expanded words
- is printed on the standard error, each preceded by
- a number. If the iinn _w_o_r_d is omitted, the posi-
- tional parameters are printed (see PPAARRAAMMEETTEERRSS
- below). The PPSS33 prompt is then displayed and a
- line read from the standard input. If the line
- consists of a number corresponding to one of the
- displayed words, then the value of _n_a_m_e is set to
- that word. If the line is empty, the words and
- prompt are displayed again. If EOF is read, the
- command completes. Any other value read causes
-
-
-
- GNU 1998 Apr 1 7
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- _n_a_m_e to be set to null. The line read is saved in
- the variable RREEPPLLYY. The _l_i_s_t is executed after
- each selection until a bbrreeaakk or rreettuurrnn command is
- executed. The exit status of sseelleecctt is the exit
- status of the last command executed in _l_i_s_t, or
- zero if no commands were executed.
-
- ccaassee _w_o_r_d iinn [ ( _p_a_t_t_e_r_n [ || _p_a_t_t_e_r_n ] ... ) _l_i_s_t ;; ] ...
- eessaacc
- A ccaassee command first expands _w_o_r_d, and tries to
- match it against each _p_a_t_t_e_r_n in turn, using the
- same matching rules as for pathname expansion (see
- PPaatthhnnaammee EExxppaannssiioonn below). When a match is found,
- the corresponding _l_i_s_t is executed. After the
- first match, no subsequent matches are attempted.
- The exit status is zero if no pattern matches.
- Otherwise, it is the exit status of the last com-
- mand executed in _l_i_s_t.
-
- iiff _l_i_s_t; tthheenn _l_i_s_t_; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee
- _l_i_s_t; ] ffii
- The iiff _l_i_s_t is executed. If its exit status is
- zero, the tthheenn _l_i_s_t is executed. Otherwise, each
- eelliiff _l_i_s_t is executed in turn, and if its exit sta-
- tus is zero, the corresponding tthheenn _l_i_s_t is exe-
- cuted and the command completes. Otherwise, the
- eellssee _l_i_s_t is executed, if present. The exit status
- is the exit status of the last command executed, or
- zero if no condition tested true.
-
- wwhhiillee _l_i_s_t; ddoo _l_i_s_t; ddoonnee
- uunnttiill _l_i_s_t; ddoo _l_i_s_t; ddoonnee
- The wwhhiillee command continuously executes the ddoo _l_i_s_t
- as long as the last command in _l_i_s_t returns an exit
- status of zero. The uunnttiill command is identical to
- the wwhhiillee command, except that the test is negated;
- the ddoo _l_i_s_t is executed as long as the last command
- in _l_i_s_t returns a non-zero exit status. The exit
- status of the wwhhiillee and uunnttiill commands is the exit
- status of the last ddoo _l_i_s_t command executed, or
- zero if none was executed.
-
- [ ffuunnccttiioonn ] _n_a_m_e () { _l_i_s_t; }
- This defines a function named _n_a_m_e. The _b_o_d_y of
- the function is the _l_i_s_t of commands between { and
- }. This list is executed whenever _n_a_m_e is speci-
- fied as the name of a simple command. The exit
- status of a function is the exit status of the last
- command executed in the body. (See FFUUNNCCTTIIOONNSS
- below.)
-
- CCOOMMMMEENNTTSS
- In a non-interactive shell, or an interactive shell in
- which the iinntteerraaccttiivvee__ccoommmmeennttss option to the sshhoopptt builtin
-
-
-
- GNU 1998 Apr 1 8
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- is enabled (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), a word
- beginning with ## causes that word and all remaining char-
- acters on that line to be ignored. An interactive shell
- without the iinntteerraaccttiivvee__ccoommmmeennttss option enabled does not
- allow comments. The iinntteerraaccttiivvee__ccoommmmeennttss option is on by
- default in interactive shells.
-
- QQUUOOTTIINNGG
- _Q_u_o_t_i_n_g 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 pre-
- vent reserved words from being recognized as such, and to
- prevent parameter expansion.
-
- Each of the _m_e_t_a_c_h_a_r_a_c_t_e_r_s listed above under DDEEFFIINNIITTIIOONNSS
- has special meaning to the shell and must be quoted if
- they are to represent themselves. There are three quoting
- mechanisms: the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r, single quotes, and dou-
- ble quotes.
-
- A non-quoted backslash (\\) is the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r. It
- preserves the literal value of the next character that
- follows, with the exception of <newline>. If a \\<newline>
- pair appears, and the backslash is not itself quoted, the
- \\<newline> is treated as a line continuation (that is, it
- is removed from the input stream and effectively ignored).
-
- Enclosing characters in single quotes preserves the lit-
- eral value of each character within the quotes. A single
- quote may not occur between single quotes, even when pre-
- ceded by a backslash.
-
- Enclosing characters in double quotes preserves the lit-
- eral value of all characters within the quotes, with the
- exception of $$, ``, and \\. The characters $$ and `` retain
- their special meaning within double quotes. The backslash
- retains its special meaning only when followed by one of
- the following characters: $$, ``, "", \\, or <<nneewwlliinnee>>. A
- double quote may be quoted within double quotes by preced-
- ing it with a backslash.
-
- The special parameters ** and @@ have special meaning when
- in double quotes (see PPAARRAAMMEETTEERRSS below).
-
- Words of the form $$'_s_t_r_i_n_g' are treated specially. The
- word expands to _s_t_r_i_n_g, with backslash-escaped characters
- replaced as specifed by the ANSI C standard. Backslash
- escape sequences, if present, are decoded as follows:
- \\aa alert (bell)
- \\bb backspace
- \\ee an escape character
- \\ff form feed
- \\nn new line
- \\rr carriage return
-
-
-
- GNU 1998 Apr 1 9
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- \\tt horizontal tab
- \\vv vertical tab
- \\\\ backslash
- \\_n_n_n the character whose ASCII code is the octal
- value _n_n_n (one to three digits)
- \\xx_n_n_n the character whose ASCII code is the hex-
- adecimal value _n_n_n (one to three digits)
-
- The translated result is single-quoted, as if the dollar
- sign had not been present.
-
- 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 CC or PPOOSSIIXX, the dollar
- sign is ignored. If the string is translated and
- replaced, the replacement is double-quoted.
-
- PPAARRAAMMEETTEERRSS
- A _p_a_r_a_m_e_t_e_r is an entity that stores values. It can be a
- _n_a_m_e, a number, or one of the special characters listed
- below under SSppeecciiaall PPaarraammeetteerrss. For the shell's purposes,
- a _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e.
-
- 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 uunnsseett builtin command (see
- SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
-
- A _v_a_r_i_a_b_l_e may be assigned to by a statement of the form
-
- _n_a_m_e=[_v_a_l_u_e]
-
- If _v_a_l_u_e is not given, the variable is assigned the null
- string. All _v_a_l_u_e_s undergo tilde expansion, parameter and
- variable expansion, string expansion, command substitu-
- tion, arithmetic expansion, and quote removal (see EEXXPPAANN--
- SSIIOONN below). If the variable has its iinntteeggeerr attribute
- set (see ddeeccllaarree below in SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) then
- _v_a_l_u_e is subject to arithmetic expansion even if the
- $((...)) expansion is not used (see AArriitthhmmeettiicc EExxppaannssiioonn
- below). Word splitting is not performed, with the excep-
- tion of ""$$@@"" as explained below under SSppeecciiaall PPaarraammeetteerrss.
- Pathname expansion is not performed.
-
- PPoossiittiioonnaall PPaarraammeetteerrss
- A _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r 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 sseett builtin
- command. Positional parameters may not be assigned to
- with assignment statements. The positional parameters are
- temporarily replaced when a shell function is executed
- (see FFUUNNCCTTIIOONNSS below).
-
-
-
-
- GNU 1998 Apr 1 10
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- When a positional parameter consisting of more than a sin-
- gle digit is expanded, it must be enclosed in braces (see
- EEXXPPAANNSSIIOONN below).
-
- SSppeecciiaall PPaarraammeetteerrss
- 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 IIFFSS special variable. That is, "$$**" is
- equivalent to "$$11_c$$22_c......", where _c is the first
- character of the value of the IIFFSS variable. If IIFFSS
- is unset, the parameters are separated by spaces.
- If IIFFSS 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 "$$11" "$$22" ... 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 status of the most recently executed
- foreground pipeline.
- -- Expands to the current option flags as specified
- upon invocation, by the sseett builtin command, or
- those set by the shell itself (such as the --ii
- option).
- $$ Expands to the process ID of the shell. In a ()
- subshell, it expands to the process ID of the cur-
- rent shell, not the subshell.
- !! Expands to the process ID of the most recently exe-
- cuted background (asynchronous) command.
- 00 Expands to the name of the shell or shell script.
- This is set at shell initialization. If bbaasshh is
- invoked with a file of commands, $$00 is set to the
- name of that file. If bbaasshh is started with the --cc
- option, then $$00 is set to the first argument after
- the string to be executed, if one is present. Oth-
- erwise, it is set to the file name used to invoke
- bbaasshh, as given by argument zero.
- __ At shell startup, set to the absolute file name of
- the shell or shell script being executed as passed
- in the argument list. Subsequently, expands to the
- last argument to the previous command, after expan-
- sion. Also set to the full file name of each com-
- mand executed and placed in the environment
- exported to that command. When checking mail, this
- parameter holds the name of the mail file currently
- being checked.
-
-
-
- GNU 1998 Apr 1 11
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- SShheellll VVaarriiaabblleess
- The following variables are set by the shell:
-
- PPPPIIDD The process ID of the shell's parent. This vari-
- able is readonly.
- PPWWDD The current working directory as set by the ccdd com-
- mand.
- OOLLDDPPWWDD The previous working directory as set by the ccdd
- command.
- RREEPPLLYY Set to the line of input read by the rreeaadd builtin
- command when no arguments are supplied.
- UUIIDD Expands to the user ID of the current user, ini-
- tialized at shell startup. This variable is read-
- only.
- EEUUIIDD Expands to the effective user ID of the current
- user, initialized at shell startup. This variable
- is readonly.
- GGRROOUUPPSS An array variable containing the list of groups of
- which the current user is a member. This variable
- is readonly.
- BBAASSHH Expands to the full file name used to invoke this
- instance of bbaasshh.
- BBAASSHH__VVEERRSSIIOONN
- Expands to a string describing the version of this
- instance of bbaasshh.
- BBAASSHH__VVEERRSSIINNFFOO
- A readonly array variable whose members hold ver-
- sion information for this instance of bbaasshh. The
- values assigned to the array members are as fol-
- lows:
- BBAASSHH__VVEERRSSIINNFFOO[[0]] The major version number
- (the _r_e_l_e_a_s_e).
- BBAASSHH__VVEERRSSIINNFFOO[[1]] The minor version number
- (the _v_e_r_s_i_o_n).
- BBAASSHH__VVEERRSSIINNFFOO[[2]] The patch level.
- BBAASSHH__VVEERRSSIINNFFOO[[3]] The build version.
- BBAASSHH__VVEERRSSIINNFFOO[[4]] The release status (e.g.,
- _b_e_t_a_1).
- BBAASSHH__VVEERRSSIINNFFOO[[5]] The value of MMAACCHHTTYYPPEE.
-
- SSHHLLVVLL Incremented by one each time an instance of bbaasshh is
- started.
-
- RRAANNDDOOMM Each time this parameter is referenced, a random
- integer between 0 and 32767 is generated. The
- sequence of random numbers may be initialized by
- assigning a value to RRAANNDDOOMM. If RRAANNDDOOMM is unset,
- it loses its special properties, even if it is sub-
- sequently reset.
-
- SSEECCOONNDDSS
- Each time this parameter is referenced, the number
- of seconds since shell invocation is returned. If
- a value is assigned to SSEECCOONNDDSS, the value returned
-
-
-
- GNU 1998 Apr 1 12
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- upon subsequent references is the number of seconds
- since the assignment plus the value assigned. If
- SSEECCOONNDDSS is unset, it loses its special properties,
- even if it is subsequently reset.
-
- LLIINNEENNOO Each time this parameter is referenced, the shell
- substitutes a decimal number representing the cur-
- rent sequential line number (starting with 1)
- within a script or function. When not in a script
- or function, the value substituted is not guaran-
- teed to be meaningful. If LLIINNEENNOO is unset, it
- loses its special properties, even if it is subse-
- quently reset.
-
- HHIISSTTCCMMDD
- The history number, or index in the history list,
- of the current command. If HHIISSTTCCMMDD is unset, it
- loses its special properties, even if it is subse-
- quently reset.
-
- DDIIRRSSTTAACCKK
- An array variable (see AArrrraayyss below) containing the
- current contents of the directory stack. Directo-
- ries appear in the stack in the order they are dis-
- played by the ddiirrss builtin. Assigning to members
- of this array variable may be used to modify direc-
- tories already in the stack, but the ppuusshhdd and ppooppdd
- builtins must be used to add and remove directo-
- ries. Assignment to this variable will not change
- the current directory. If DDIIRRSSTTAACCKK is unset, it
- loses its special properties, even if it is subse-
- quently reset.
-
- PPIIPPEESSTTAATTUUSS
- An array variable (see AArrrraayyss below) containing a
- list of exit status values from the processes in
- the most-recently-executed foreground pipeline
- (which may contain only a single command).
-
- OOPPTTAARRGG The value of the last option argument processed by
- the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMM--
- MMAANNDDSS below).
-
- OOPPTTIINNDD The index of the next argument to be processed by
- the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMM--
- MMAANNDDSS below).
-
- HHOOSSTTNNAAMMEE
- Automatically set to the name of the current host.
-
- HHOOSSTTTTYYPPEE
- Automatically set to a string that uniquely
- describes the type of machine on which bbaasshh is exe-
- cuting. The default is system-dependent.
-
-
-
- GNU 1998 Apr 1 13
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- OOSSTTYYPPEE Automatically set to a string that describes the
- operating system on which bbaasshh is executing. The
- default is system-dependent.
-
- MMAACCHHTTYYPPEE
- Automatically set to a string that fully describes
- the system type on which bbaasshh is executing, in the
- standard GNU _c_p_u_-_c_o_m_p_a_n_y_-_s_y_s_t_e_m format. The
- default is system-dependent.
-
- SSHHEELLLLOOPPTTSS
- A colon-separated list of enabled shell options.
- Each word in the list is a valid argument for the
- --oo option to the sseett builtin command (see SSHHEELLLL
- BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options appearing in
- SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If
- this variable is in the environment when bbaasshh
- starts up, each shell option in the list will be
- enabled before reading any startup files. This
- variable is read-only.
-
- The following variables are used by the shell. In some
- cases, bbaasshh assigns a default value to a variable; these
- cases are noted below.
-
- IIFFSS The _I_n_t_e_r_n_a_l _F_i_e_l_d _S_e_p_a_r_a_t_o_r that is used for word
- splitting after expansion and to split lines into
- words with the rreeaadd builtin command. The default
- value is ``<space><tab><newline>''.
- PPAATTHH The search path for commands. It is a colon-sepa-
- rated list of directories in which the shell looks
- for commands (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN below). The
- default path is system-dependent, and is set by the
- administrator who installs bbaasshh. A common value is
- ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.''.
- HHOOMMEE The home directory of the current user; the default
- argument for the ccdd builtin command. The value of
- this variable is also used when performing tilde
- expansion.
- CCDDPPAATTHH The search path for the ccdd command. This is a
- colon-separated list of directories in which the
- shell looks for destination directories specified
- by the ccdd command. A sample value is ``.:~:/usr''.
- BBAASSHH__EENNVV
- If this parameter is set when bbaasshh is executing a
- shell script, its value is interpreted as a file-
- name containing commands to initialize the shell,
- as in _~_/_._b_a_s_h_r_c. The value of BBAASSHH__EENNVV is sub-
- jected to parameter expansion, command substitu-
- tion, and arithmetic expansion before being inter-
- preted as a file name. PPAATTHH is not used to search
- for the resultant file name.
- MMAAIILL If this parameter is set to a file name and the
- MMAAIILLPPAATTHH variable is not set, bbaasshh informs the user
-
-
-
- GNU 1998 Apr 1 14
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- of the arrival of mail in the specified file.
- MMAAIILLCCHHEECCKK
- Specifies how often (in seconds) bbaasshh checks for
- mail. The default is 60 seconds. When it is time
- to check for mail, the shell does so before dis-
- playing the primary prompt. If this variable is
- unset, the shell disables mail checking.
- MMAAIILLPPAATTHH
- A colon-separated list of file names to be checked
- for mail. The message to be printed when mail
- arrives in a particular file may be specified 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 mailfile. Exam-
- ple:
- MMAAIILLPPAATTHH='/usr/spool/mail/bfox?"You have
- mail":~/shell-mail?"$_ has mail!"'
- BBaasshh supplies a default value for this variable,
- but the location of the user mail files that it
- uses is system dependent (e.g.,
- /usr/spool/mail/$$UUSSEERR).
- PPSS11 The value of this parameter is expanded (see
- PPRROOMMPPTTIINNGG below) and used as the primary prompt
- string. The default value is ``\\ss--\\vv\\$$ ''.
- PPSS22 The value of this parameter is expanded as with PPSS11
- and used as the secondary prompt string. The
- default is ``>> ''.
- PPSS33 The value of this parameter is used as the prompt
- for the sseelleecctt command (see SSHHEELLLL GGRRAAMMMMAARR above).
- PPSS44 The value of this parameter is expanded as with PPSS11
- and the value is printed before each command bbaasshh
- displays during an execution trace. The first
- character of PPSS44 is replicated multiple times, as
- necessary, to indicate multiple levels of indirec-
- tion. The default is ``++ ''.
- TTIIMMEEFFOORRMMAATT
- The value of this parameter is used as a format
- string specifying how the timing information for
- pipelines prefixed with the ttiimmee 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]][[ll]]RR The elapsed time in seconds.
- %%[[_p]][[ll]]UU The number of CPU seconds spent in user
- mode.
- %%[[_p]][[ll]]SS The number of CPU seconds spent in system
- mode.
- %%PP The CPU percentage, computed as (%U + %S)
- / %R.
-
- The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n,
-
-
-
- GNU 1998 Apr 1 15
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- 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 spec-
- ified, the value 3 is used.
-
- The optional ll specifies a longer format, including
- minutes, of the form _M_Mm_S_S._F_Fs. The value of _p
- determines whether or not the fraction is included.
-
- If this variable is not set, bbaasshh acts as if it had
- the value $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss%%33llSS''. If
- the value is null, no timing information is dis-
- played. A trailing newline is added when the for-
- mat string is displayed.
-
- HHIISSTTSSIIZZEE
- The number of commands to remember in the command
- history (see HHIISSTTOORRYY below). The default value is
- 500.
-
- HHIISSTTFFIILLEE
- The name of the file in which command history is
- saved (see HHIISSTTOORRYY below). The default value is
- _~_/_._b_a_s_h___h_i_s_t_o_r_y. If unset, the command history is
- not saved when an interactive shell exits.
-
- HHIISSTTFFIILLEESSIIZZEE
- The maximum number of lines contained in the his-
- tory file. When this variable is assigned a value,
- the history file is truncated, if necessary, to
- contain no more than that number of lines. The
- default value is 500. The history file is also
- truncated to this size after writing it when an
- interactive shell exits.
-
- OOPPTTEERRRR If set to the value 1, bbaasshh displays error messages
- generated by the ggeettooppttss builtin command (see SSHHEELLLL
- BBUUIILLTTIINN CCOOMMMMAANNDDSS below). OOPPTTEERRRR is initialized to
- 1 each time the shell is invoked or a shell script
- is executed.
-
- LLAANNGG Used to determine the locale category for any cate-
- gory not specifically selected with a variable
- starting with LLCC__.
-
- LLCC__AALLLL This variable overrides the value of LLAANNGG and any
- other LLCC__ variable specifying a locale category.
-
- LLCC__CCOOLLLLAATTEE
- This variable determines the collation order used
- when sorting the results of pathname expansion, and
- determines the behavior of range expressions,
-
-
-
- GNU 1998 Apr 1 16
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- equivalence classes, and collating sequences within
- pathname expansion and pattern matching.
-
- LLCC__CCTTYYPPEE
- This variable determines the interpretation of
- characters and the behavior of character classes
- within pathname expansion and pattern matching.
-
- LLCC__MMEESSSSAAGGEESS
- This variable determines the locale used to trans-
- late double-quoted strings preceded by a $$.
-
- PPRROOMMPPTT__CCOOMMMMAANNDD
- If set, the value is executed as a command prior to
- issuing each primary prompt.
-
- IIGGNNOORREEEEOOFF
- Controls the action of an interactive shell on
- receipt of an EEOOFF character as the sole input. If
- set, the value is the number of consecutive EEOOFF
- characters which must be typed as the first charac-
- ters on an input line before bbaasshh exits. If the
- variable exists but does not have a numeric value,
- or has no value, the default value is 10. If it
- does not exist, EEOOFF signifies the end of input to
- the shell.
-
- TTMMOOUUTT If set to a value greater than zero, the value is
- interpreted as the number of seconds to wait for
- input after issuing the primary prompt. BBaasshh ter-
- minates after waiting for that number of seconds if
- input does not arrive.
-
- FFCCEEDDIITT The default editor for the ffcc builtin command.
-
- FFIIGGNNOORREE
- A colon-separated list of suffixes to ignore when
- performing filename completion (see RREEAADDLLIINNEE
- below). A filename whose suffix matches one of the
- entries in FFIIGGNNOORREE is excluded from the list of
- matched filenames. A sample value is ``.o:~''.
-
- GGLLOOBBIIGGNNOORREE
- A colon-separated list of patterns defining the set
- of filenames to be ignored by pathname expansion.
- If a filename matched by a pathname expansion pat-
- tern also matches one of the patterns in GGLLOOBBIIGG--
- NNOORREE, it is removed from the list of matches.
-
- IINNPPUUTTRRCC
- The filename for the rreeaaddlliinnee startup file, over-
- riding the default of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE
- below).
-
-
-
-
- GNU 1998 Apr 1 17
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- HHIISSTTCCOONNTTRROOLL
- If set to a value of _i_g_n_o_r_e_s_p_a_c_e, lines which begin
- with a ssppaaccee character are not entered on the his-
- tory list. If set to a value of _i_g_n_o_r_e_d_u_p_s, lines
- matching the last history line are not entered. A
- value of _i_g_n_o_r_e_b_o_t_h combines the two options. If
- unset, or if set to any other value than those
- above, all lines read by the parser are saved on
- the history list, subject to the value of HHIISSTTIIGG--
- NNOORREE. This variable's function is superseded by
- HHIISSTTIIGGNNOORREE. 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
- HHIISSTTCCOONNTTRROOLL.
-
- HHIISSTTIIGGNNOORREE
- 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 fully specify the line (no
- implicit `**' is appended). Each pattern is tested
- against the line after the checks specified by
- HHIISSTTCCOONNTTRROOLL 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 HHIISSTTIIGGNNOORREE.
-
- hhiissttcchhaarrss
- The two or three characters which control history
- expansion and tokenization (see HHIISSTTOORRYY EEXXPPAANNSSIIOONN
- below). The first character is the _h_i_s_t_o_r_y _e_x_p_a_n_-
- _s_i_o_n _c_h_a_r_a_c_t_e_r, the character which signals the
- start of a history expansion, normally `!!'. The
- second character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n charac-
- ter, which is used as shorthand for re-running the
- previous command entered, substituting one string
- for another in the command. The default is `^^'.
- The optional third character is the character which
- indicates that the remainder of the line is a com-
- ment when found as the first character of a word,
- normally `##'. The history comment character causes
- history substitution to be skipped for the remain-
- ing words on the line. It does not necessarily
- cause the shell parser to treat the rest of the
- line as a comment.
-
- HHOOSSTTFFIILLEE
- Contains the name of a file in the same format as
- _/_e_t_c_/_h_o_s_t_s that should be read when the shell needs
- to complete a hostname. The file may be changed
-
-
-
- GNU 1998 Apr 1 18
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- interactively; the next time hostname completion is
- attempted bbaasshh adds the contents of the new file to
- the already existing database.
-
- aauuttoo__rreessuummee
- This variable controls how the shell interacts with
- the user and job control. If this variable is set,
- single word simple commands without redirections
- are treated as candidates for resumption of an
- existing stopped job. There is no ambiguity
- allowed; if there is more than one job beginning
- with the string typed, the job most recently
- accessed is selected. The _n_a_m_e of a stopped job,
- in this context, is the command line used to start
- it. If set to the value _e_x_a_c_t, the string supplied
- must match the name of a stopped job exactly; if
- set to _s_u_b_s_t_r_i_n_g, the string supplied needs to
- match a substring of the name of a stopped job.
- The _s_u_b_s_t_r_i_n_g value provides functionality analo-
- gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL
- below). 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
- identifier.
-
- AArrrraayyss
- BBaasshh provides one-dimensional array variables. Any vari-
- able may be used as an array; the ddeeccllaarree 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 indexed
- using integers and are zero-based.
-
- An array is created automatically if any variable is
- assigned to using the syntax _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e. The
- _s_u_b_s_c_r_i_p_t is treated as an arithmetic expression that must
- evaluate to a number greater than or equal to zero. To
- explicitly declare an array, use ddeeccllaarree --aa _n_a_m_e (see
- SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]]
- is also accepted; the _s_u_b_s_c_r_i_p_t is ignored. Attributes
- may be specified for an array variable using the ddeeccllaarree
- and rreeaaddoonnllyy builtins. Each attribute applies to all mem-
- bers of an array.
-
- Arrays are assigned to using compound assignments of the
- form _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the
- form [_s_u_b_s_c_r_i_p_t]=_s_t_r_i_n_g. Only _s_t_r_i_n_g is required. If the
- optional brackets and subscript are 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 ddeeccllaarree builtin. Individual array ele-
- ments may be assigned to using the _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e
- syntax introduced above.
-
-
-
- GNU 1998 Apr 1 19
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- Any element of an array may be referenced using
- ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. The braces are required to avoid con-
- flicts with pathname expansion. If _s_u_b_s_c_r_i_p_t is @@ or **,
- the word expands to all members of _n_a_m_e. These subscripts
- differ only when the word appears within double quotes.
- If the word is double-quoted, ${_n_a_m_e[*]} expands to a sin-
- gle word with the value of each array member separated by
- the first character of the IIFFSS special variable, and
- ${_n_a_m_e[@]} expands each element of _n_a_m_e to a separate
- word. When there are no array members, ${_n_a_m_e[@]} expands
- to nothing. This is analogous to the expansion of the
- special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss above).
- ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_-
- _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t 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 uunnsseett builtin is used to destroy arrays. uunnsseett
- nnaammee[_s_u_b_s_c_r_i_p_t] destroys the array element at index _s_u_b_-
- _s_c_r_i_p_t. uunnsseett _n_a_m_e, where _n_a_m_e is an array, or uunnsseett
- _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** or @@, removes the
- entire array.
-
- The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa
- option to specify an array. The rreeaadd builtin accepts a --aa
- option to assign a list of words read from the standard
- input to an array. The sseett and ddeeccllaarree builtins display
- array values in a way that allows them to be reused as
- assignments.
-
- EEXXPPAANNSSIIOONN
- Expansion is performed on the command line after it has
- been split into words. There are seven kinds of expansion
- performed: _b_r_a_c_e _e_x_p_a_n_s_i_o_n, _t_i_l_d_e _e_x_p_a_n_s_i_o_n, _p_a_r_a_m_e_t_e_r _a_n_d
- _v_a_r_i_a_b_l_e _e_x_p_a_n_s_i_o_n, _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_t_i_o_n, _a_r_i_t_h_m_e_t_i_c
- _e_x_p_a_n_s_i_o_n, _w_o_r_d _s_p_l_i_t_t_i_n_g, and _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n.
-
- The order of expansions is: brace expansion, tilde expan-
- sion, parameter, variable and arithmetic expansion and
- command substitution (done in a left-to-right fashion),
- word splitting, and pathname expansion.
-
- On systems that can support it, there is an additional
- expansion available: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n.
-
- Only brace expansion, word splitting, and pathname expan-
- sion 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 "$$@@" and
- "$${{_n_a_m_e[[@@]]}}" as explained above (see PPAARRAAMMEETTEERRSS).
-
- BBrraaccee EExxppaannssiioonn
- _B_r_a_c_e _e_x_p_a_n_s_i_o_n is a mechanism by which arbitrary strings
-
-
-
- GNU 1998 Apr 1 20
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- may be generated. This mechanism is similar to _p_a_t_h_n_a_m_e
- _e_x_p_a_n_s_i_o_n, but the filenames generated need not exist.
- Patterns to be brace expanded take the form of an optional
- _p_r_e_a_m_b_l_e, followed by a series of comma-separated strings
- between a pair of braces, followed by an optional
- _p_o_s_t_s_c_r_i_p_t. The preamble is prefixed to each string con-
- tained 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, a{{d,c,b}}e expands into `ade ace
- abe'.
-
- Brace expansion is performed before any other expansions,
- and any characters special to other expansions are pre-
- served in the result. It is strictly textual. BBaasshh does
- not apply any syntactic interpretation to the context of
- the expansion or the text between the braces.
-
- A correctly-formed brace expansion must contain unquoted
- opening and closing braces, and at least one unquoted
- comma. 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.
-
- 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}}
-
- Brace expansion introduces a slight incompatibility with
- historical versions of sshh. sshh does not treat opening or
- closing braces specially when they appear as part of a
- word, and preserves them in the output. BBaasshh removes
- braces from words as a consequence of brace expansion.
- For example, a word entered to sshh as _f_i_l_e_{_1_,_2_} appears
- identically in the output. The same word is output as
- _f_i_l_e_1 _f_i_l_e_2 after expansion by bbaasshh. If strict compati-
- bility with sshh is desired, start bbaasshh with the ++BB option
- or disable brace expansion with the ++BB option to the sseett
- command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
-
- TTiillddee EExxppaannssiioonn
- If a word begins with an unquoted tilde character (`~~'),
- all of the characters preceding the first unquoted slash
- (or all characters, if there is no unquoted slash) are
- considered a _t_i_l_d_e_-_p_r_e_f_i_x. 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 _l_o_g_i_n
-
-
-
- GNU 1998 Apr 1 21
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- _n_a_m_e. If this login name is the null string, the tilde is
- replaced with the value of the shell parameter HHOOMMEE. If
- HHOOMMEE 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 a `~+', the value of the shell
- variable PPWWDD replaces the tilde-prefix. If the tilde-pre-
- fix is a `~-', the value of the shell variable OOLLDDPPWWDD, 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 ddiirrss builtin
- invoked with the tilde-prefix as an argument. If the
- characters following the tilde in the tilde-prefix consist
- of a number without a leading `+' or `-', `+' is assumed.
-
- If the login name is invalid, or the tilde expansion
- fails, the word is unchanged.
-
- Each variable assignment is checked for unquoted tilde-
- prefixes immediately following a :: or ==. In these cases,
- tilde expansion is also performed. Consequently, one may
- use file names with tildes in assignments to PPAATTHH, MMAAIILL--
- PPAATTHH, and CCDDPPAATTHH, and the shell assigns the expanded
- value.
-
- PPaarraammeetteerr EExxppaannssiioonn
- 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 paramter expansion.
-
- ${_p_a_r_a_m_e_t_e_r}
- The value of _p_a_r_a_m_e_t_e_r is substituted. The braces
- are required when _p_a_r_a_m_e_t_e_r is a positional parame-
- ter with more than one digit, or when _p_a_r_a_m_e_t_e_r is
- followed by a character which is not to be inter-
- preted as part of its name.
-
- If the first character of _p_a_r_a_m_e_t_e_r is an exclamation
- point, a level of variable indirection is introduced.
- BBaasshh uses the value of the variable formed from the rest
- of _p_a_r_a_m_e_t_e_r as the name of the variable; this variable is
- then expanded and that value used in the rest of the
-
-
-
- GNU 1998 Apr 1 22
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- substitution, rather than the value of _p_a_r_a_m_e_t_e_r itself.
- This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n.
-
- In each of the cases below, _w_o_r_d is subject to tilde
- expansion, parameter expansion, command substitution, and
- arithmetic expansion. When not performing substring
- expansion, bbaasshh tests for a parameter that is unset or
- null; omitting the colon results in a test only for a
- parameter that is unset.
-
- ${_p_a_r_a_m_e_t_e_r::--_w_o_r_d}
- UUssee DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null,
- the expansion of _w_o_r_d is substituted. Otherwise,
- the value of _p_a_r_a_m_e_t_e_r is substituted.
- ${_p_a_r_a_m_e_t_e_r::==_w_o_r_d}
- AAssssiiggnn DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or
- null, the expansion of _w_o_r_d is assigned to _p_a_r_a_m_e_-
- _t_e_r. The value of _p_a_r_a_m_e_t_e_r is then substituted.
- Positional parameters and special parameters may
- not be assigned to in this way.
- ${_p_a_r_a_m_e_t_e_r::??_w_o_r_d}
- DDiissppllaayy EErrrroorr iiff NNuullll oorr UUnnsseett. If _p_a_r_a_m_e_t_e_r is
- null or unset, the expansion of _w_o_r_d (or a message
- to that effect if _w_o_r_d is not present) is written
- to the standard error and the shell, if it is not
- interactive, exits. Otherwise, the value of _p_a_r_a_m_-
- _e_t_e_r is substituted.
- ${_p_a_r_a_m_e_t_e_r::++_w_o_r_d}
- UUssee AAlltteerrnnaattee VVaalluuee. If _p_a_r_a_m_e_t_e_r is null or
- unset, nothing is substituted, otherwise the expan-
- sion of _w_o_r_d is substituted.
- ${_p_a_r_a_m_e_t_e_r::_o_f_f_s_e_t}
- ${_p_a_r_a_m_e_t_e_r::_o_f_f_s_e_t::_l_e_n_g_t_h}
- SSuubbssttrriinngg EExxppaannssiioonn.. Expands to up to _l_e_n_g_t_h char-
- acters of _p_a_r_a_m_e_t_e_r, starting at the characters
- specified by _o_f_f_s_e_t. If _l_e_n_g_t_h is omitted, expands
- to the substring of _p_a_r_a_m_e_t_e_r, starting at the
- character specified by _o_f_f_s_e_t. _l_e_n_g_t_h and _o_f_f_s_e_t
- are arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAA--
- TTIIOONN below). _l_e_n_g_t_h must evaluate to a number
- greater than or equal to zero. If _o_f_f_s_e_t evaluates
- to a number less than zero, the value is used as an
- offset from the end of the value of _p_a_r_a_m_e_t_e_r. If
- _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h positional
- parameters beginning at _o_f_f_s_e_t. If _p_a_r_a_m_e_t_e_r is an
- array name indexed by @ or *, the result is the
- _l_e_n_g_t_h members of the array beginning with ${_p_a_r_a_m_-
- _e_t_e_r[_o_f_f_s_e_t]}. Substring indexing is zero-based
- unless the positional parameters are used, in which
- case the indexing starts at 1.
-
- ${##_p_a_r_a_m_e_t_e_r}
- The length in characters of the value of _p_a_r_a_m_e_t_e_r
- is substituted. If _p_a_r_a_m_e_t_e_r is ** or @@, the value
-
-
-
- GNU 1998 Apr 1 23
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- substituted is the number of positional parameters.
- If _p_a_r_a_m_e_t_e_r is an array name subscripted by ** or
- @@, the value substituted is the number of elements
- in the array.
-
- ${_p_a_r_a_m_e_t_e_r##_w_o_r_d}
- ${_p_a_r_a_m_e_t_e_r####_w_o_r_d}
- The _w_o_r_d is expanded to produce a pattern just as
- in pathname expansion. If the pattern matches the
- beginning of the value of _p_a_r_a_m_e_t_e_r, then the
- result of the expansion is the expanded value of
- _p_a_r_a_m_e_t_e_r with the shortest matching pattern (the
- ``##'' case) or the longest matching pattern (the
- ``####'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the
- pattern removal operation is applied to each posi-
- tional parameter in turn, and the expansion is the
- resultant list. If _p_a_r_a_m_e_t_e_r is an array variable
- subscripted with @@ or **, the pattern removal opera-
- tion is applied to each member of the array in
- turn, and the expansion is the resultant list.
-
- ${_p_a_r_a_m_e_t_e_r%%_w_o_r_d}
- ${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d}
- The _w_o_r_d is expanded to produce a pattern just as
- in pathname expansion. If the pattern matches a
- trailing portion of the expanded value of _p_a_r_a_m_e_-
- _t_e_r, then the result of the expansion is the
- expanded value of _p_a_r_a_m_e_t_e_r with the shortest
- matching pattern (the ``%%'' case) or the longest
- matching pattern (the ``%%%%'' case) deleted. If
- _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal operation
- is applied to each positional parameter in turn,
- and the expansion is the resultant list. If _p_a_r_a_m_-
- _e_t_e_r 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.
-
- ${_p_a_r_a_m_e_t_e_r//_p_a_t_t_e_r_n//_s_t_r_i_n_g}
- ${_p_a_r_a_m_e_t_e_r////_p_a_t_t_e_r_n//_s_t_r_i_n_g}
- The _p_a_t_t_e_r_n is expanded to produce a pattern just
- as in pathname expansion. _P_a_r_a_m_e_t_e_r is expanded
- and the longest match of _p_a_t_t_e_r_n against its value
- is replaced with _s_t_r_i_n_g. In the first form, only
- the first match is replaced. The second form
- causes all matches of _p_a_t_t_e_r_n to be replaced with
- _s_t_r_i_n_g. If _p_a_t_t_e_r_n begins with ##, it must match at
- the beginning of _s_t_r_i_n_g. If _p_a_t_t_e_r_n begins with %%,
- it must match at the end of _s_t_r_i_n_g. If _s_t_r_i_n_g is
- null, matches of _p_a_t_t_e_r_n are deleted and the // fol-
- lowing _p_a_t_t_e_r_n may be omitted. If _p_a_r_a_m_e_t_e_r is @@
- or **, the substitution operation is applied to each
- positional parameter in turn, and the expansion is
- the resultant list. If _p_a_r_a_m_e_t_e_r is an array
-
-
-
- GNU 1998 Apr 1 24
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- variable subscripted with @@ or **, the substitution
- operation is applied to each member of the array in
- turn, and the expansion is the resultant list.
-
- CCoommmmaanndd SSuubbssttiittuuttiioonn
- _C_o_m_m_a_n_d _s_u_b_s_t_i_t_u_t_i_o_n allows the output of a command to
- replace the command name. There are two forms:
-
-
- $$((_c_o_m_m_a_n_d))
- or
- ``_c_o_m_m_a_n_d``
-
- BBaasshh performs the expansion by executing _c_o_m_m_a_n_d and
- replacing the command substitution with the standard out-
- put of the command, with any trailing newlines deleted.
- Embedded newlines are not deleted, but they may be removed
- during word splitting. The command substitution $$((ccaatt
- _f_i_l_e)) can be replaced by the equivalent but faster $$((<<
- _f_i_l_e)).
-
- 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 $(_c_o_m_m_a_n_d) form, all characters between the parenthe-
- ses 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 pathname expansion are not performed on the
- results.
-
- AArriitthhmmeettiicc EExxppaannssiioonn
- Arithmetic expansion allows the evaluation of an arith-
- metic expression and the substitution of the result. The
- format for arithmetic expansion is:
-
- $$((((_e_x_p_r_e_s_s_i_o_n))))
-
- The _e_x_p_r_e_s_s_i_o_n 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, string expansion, command substitu-
- tion, and quote removal. Arithmetic substitutions may be
- nested.
-
- The evaluation is performed according to the rules listed
- below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If _e_x_p_r_e_s_s_i_o_n is
- invalid, bbaasshh prints a message indicating failure and no
- substitution occurs.
-
-
-
- GNU 1998 Apr 1 25
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- PPrroocceessss SSuubbssttiittuuttiioonn
- _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n is supported on systems that support
- named pipes (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open
- files. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The pro-
- cess _l_i_s_t is run with its input or output connected to a
- _F_I_F_O or some file in //ddeevv//ffdd. The name of this file is
- passed as an argument to the current command as the result
- of the expansion. If the >>((_l_i_s_t)) form is used, writing to
- the file will provide input for _l_i_s_t. If the <<((_l_i_s_t)) form
- is used, the file passed as an argument should be read to
- obtain the output of _l_i_s_t.
-
- When available, _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n is performed simulta-
- neously with parameter and variable expansion, command
- substitution, and arithmetic expansion.
-
- WWoorrdd SSpplliittttiinngg
- The shell scans the results of parameter expansion, com-
- mand substitution, and arithmetic expansion that did not
- occur within double quotes for _w_o_r_d _s_p_l_i_t_t_i_n_g.
-
- The shell treats each character of IIFFSS as a delimiter, and
- splits the results of the other expansions into words on
- these characters. If IIFFSS is unset, or its value is
- exactly <<ssppaaccee>><<ttaabb>><<nneewwlliinnee>>, the default, then any
- sequence of IIFFSS characters serves to delimit words. If
- IIFFSS has a value other than the default, then sequences of
- the whitespace characters ssppaaccee and ttaabb are ignored at the
- beginning and end of the word, as long as the whitespace
- character is in the value of IIFFSS (an IIFFSS whitespace char-
- acter). Any character in IIFFSS that is not IIFFSS whitespace,
- along with any adjacent IIFFSS whitespace characters, delim-
- its a field. A sequence of IIFFSS whitespace characters is
- also treated as a delimiter. If the value of IIFFSS is null,
- no word splitting occurs.
-
- Explicit null arguments ("""" or '''') are retained. Unquoted
- implicit null arguments, resulting from the expansion of
- _p_a_r_a_m_e_t_e_r_s that have no values, are removed. If a parame-
- ter with no value is expanded within double quotes, a null
- argument results and is retained.
-
- Note that if no expansion occurs, no splitting is per-
- formed.
-
- PPaatthhnnaammee EExxppaannssiioonn
- After word splitting, unless the --ff option has been set,
- bbaasshh scans each word for the characters **, ??, ((, and [[.
- If one of these characters appears, then the word is
- regarded as a _p_a_t_t_e_r_n, and replaced with an alphabetically
- sorted list of file names matching the pattern. If no
- matching file names are found, and the shell option nnuullll--
- gglloobb is disabled, the word is left unchanged. If the
- nnuullllgglloobb option is set, and no matches are found, the word
-
-
-
- GNU 1998 Apr 1 26
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- is removed. If the shell option nnooccaasseegglloobb is enabled,
- the match is performed without regard to the case of
- alphabetic characters. When a pattern is used for path-
- name expansion, the character ````..'''' at the start of a
- name or immediately following a slash must be matched
- explicitly, unless the shell option ddoottgglloobb is set. When
- matching a pathname, the slash character must always be
- matched explicitly. In other cases, the ````..'''' character
- is not treated specially. See the description of sshhoopptt
- below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a description of
- the nnooccaasseegglloobb, nnuullllgglloobb, and ddoottgglloobb shell options.
-
- The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the
- set of file names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is
- set, each matching file name that also matches one of the
- patterns in GGLLOOBBIIGGNNOORREE is removed from the list of
- matches. The file names ````..'''' and ````....'''' are always
- ignored, even when GGLLOOBBIIGGNNOORREE is set. However, setting
- GGLLOOBBIIGGNNOORREE has the effect of enabling the ddoottgglloobb shell
- option, so all other file names beginning with a ````..''''
- will match. To get the old behavior of ignoring file
- names beginning with a ````..'''', make ````..**'''' one of the pat-
- terns in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when
- GGLLOOBBIIGGNNOORREE is unset.
-
- PPaatttteerrnn MMaattcchhiinngg
-
- 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.
- The special pattern characters must be quoted if they are
- to be matched literally.
-
- The special pattern characters have the following mean-
- ings:
-
- ** 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 minus sign denotes a
- _r_a_n_g_e; any character lexically between those two
- characters, inclusive, 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 char-
- acter in the set. A ]] may be matched by including
- it as the first character in the set.
-
- Within [[ and ]], _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be specified
- using the syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of
- the following classes defined in the POSIX.2 stan-
- dard:
- aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr
- pprriinntt ppuunncctt ssppaaccee uuppppeerr xxddiiggiitt
-
-
-
- GNU 1998 Apr 1 27
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- A character class matches any character belonging
- to that class.
-
- Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be speci-
- fied 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 [[.._s_y_m_b_o_l..]] matches the
- collating symbol _s_y_m_b_o_l.
-
- If the eexxttgglloobb shell option is enabled using the sshhoopptt
- builtin, several extended pattern matching operators are
- recognized. In the following description, a _p_a_t_t_e_r_n_-_l_i_s_t
- is a list of one or more patterns separated by a ||. Com-
- posite patterns may be formed using one or more of the
- following sub-patterns:
-
- ??((_p_a_t_t_e_r_n_-_l_i_s_t))
- Matches zero or one occurrence of the given
- patterns
- **((_p_a_t_t_e_r_n_-_l_i_s_t))
- Matches zero or more occurrences of the
- given patterns
- ++((_p_a_t_t_e_r_n_-_l_i_s_t))
- Matches one or more occurrences of the given
- patterns
- @@((_p_a_t_t_e_r_n_-_l_i_s_t))
- Matches exactly one of the given patterns
- !!((_p_a_t_t_e_r_n_-_l_i_s_t))
- Matches anything except one of the given
- patterns
-
- QQuuoottee RReemmoovvaall
- After the preceding expansions, all unquoted occurrences
- of the characters \\, '', and "" that did not result from one
- of the above expansions are removed.
-
- RREEDDIIRREECCTTIIOONN
- Before a command is executed, its input and output may be
- _r_e_d_i_r_e_c_t_e_d 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 any-
- where within a _s_i_m_p_l_e _c_o_m_m_a_n_d or may follow a _c_o_m_m_a_n_d.
- Redirections are processed in the order they appear, from
- left to right.
-
- In the following descriptions, if the file descriptor num-
- ber 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).
-
-
-
- GNU 1998 Apr 1 28
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- The word following the redirection operator in the follow-
- ing descriptions, unless otherwise noted, is subjected to
- brace expansion, tilde expansion, parameter expansion,
- command substitution, arithmetic expansion, quote removal,
- and pathname expansion. If it expands to more than one
- word, bbaasshh reports an error.
-
- Note that the order of redirections is significant. For
- example, the command
-
- ls >> dirlist 2>>&&1
-
- directs both standard output and standard error to the
- file _d_i_r_l_i_s_t, while the command
-
- ls 2>>&&1 >> dirlist
-
- directs only the standard output to file _d_i_r_l_i_s_t, because
- the standard error was duplicated as standard output
- before the standard output was redirected to _d_i_r_l_i_s_t.
-
- A failure to open or create a file causes the redirection
- to fail.
-
- RReeddiirreeccttiinngg IInnppuutt
- Redirection of input causes the file whose name results
- from the expansion of _w_o_r_d 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]<<_w_o_r_d
-
- RReeddiirreeccttiinngg OOuuttppuutt
- Redirection of output causes the file whose name results
- from the expansion of _w_o_r_d 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]>>_w_o_r_d
-
- If the redirection operator is >>, and the nnoocclloobbbbeerr option
- to the sseett builtin has been enabled, the redirection will
- fail if the filename whose name results from the expansion
- of _w_o_r_d exists and is a regular file. If the redirection
- operator is >>||, or the redirection operator is >> and the
- nnoocclloobbbbeerr option to the sseett builtin command is not
- enabled, the redirection is attempted even if the file
- named by _w_o_r_d exists.
-
-
-
-
- GNU 1998 Apr 1 29
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- AAppppeennddiinngg RReeddiirreecctteedd OOuuttppuutt
- Redirection of output in this fashion causes the file
- whose name results from the expansion of _w_o_r_d 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]>>>>_w_o_r_d
-
-
- RReeddiirreeccttiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr
- BBaasshh 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 _w_o_r_d
- with this construct.
-
- There are two formats for redirecting standard output and
- standard error:
-
- &&>>_w_o_r_d
- and
- >>&&_w_o_r_d
-
- Of the two forms, the first is preferred. This is seman-
- tically equivalent to
-
- >>_w_o_r_d 2>>&&1
-
- HHeerree DDooccuummeennttss
- This type of redirection instructs the shell to read input
- from the current source until a line containing only _w_o_r_d
- (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 as follows:
-
- <<<<[--]_w_o_r_d
- _h_e_r_e_-_d_o_c_u_m_e_n_t
- _d_e_l_i_m_i_t_e_r
-
- No parameter expansion, command substitution, pathname
- expansion, or arithmetic expansion is performed on _w_o_r_d.
- If any characters in _w_o_r_d are quoted, the _d_e_l_i_m_i_t_e_r is the
- result of quote removal on _w_o_r_d, and the lines in the
- here-document are not expanded. If _w_o_r_d is unquoted, all
- lines of the here-document are subjected to parameter
- expansion, command substitution, and arithmetic expansion.
- In the latter case, the pair \\<<nneewwlliinnee>> is ignored, and \\
- must be used to quote the characters \\, $$, and ``.
-
- If the redirection operator is <<<<--, then all leading tab
-
-
-
- GNU 1998 Apr 1 30
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- characters are stripped from input lines and the line con-
- taining _d_e_l_i_m_i_t_e_r. This allows here-documents within
- shell scripts to be indented in a natural fashion.
-
- DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss
- The redirection operator
-
- [_n]<<&&_w_o_r_d
-
- is used to duplicate input file descriptors. If _w_o_r_d
- 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 _w_o_r_d do not specify a file descriptor open for
- input, a redirection error occurs. If _w_o_r_d evaluates to
- --, file descriptor _n is closed. If _n is not specified,
- the standard input (file descriptor 0) is used.
-
- The operator
-
- [_n]>>&&_w_o_r_d
-
- is used similarly to duplicate output file descriptors.
- If _n is not specified, the standard output (file descrip-
- tor 1) is used. If the digits in _w_o_r_d do not specify a
- file descriptor open for output, a redirection error
- occurs. As a special case, if _n is omitted, and _w_o_r_d does
- not expand to one or more digits, the standard output and
- standard error are redirected as described previously.
-
- OOppeenniinngg FFiillee DDeessccrriippttoorrss ffoorr RReeaaddiinngg aanndd WWrriittiinngg
- The redirection operator
-
- [_n]<<>>_w_o_r_d
-
- causes the file whose name is the expansion of _w_o_r_d 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.
-
- AALLIIAASSEESS
- 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 _a_l_i_a_s_e_s that may be set and
- unset with the aalliiaass and uunnaalliiaass builtin commands (see
- SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each
- 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 alias name and the replacement text may con-
- tain any valid shell input, including the _m_e_t_a_c_h_a_r_a_c_t_e_r_s
- listed above, with the exception that the alias name may
- not contain _=. 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 llss to llss --FF, for instance, and
-
-
-
- GNU 1998 Apr 1 31
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- bbaasshh does not try to recursively expand the replacement
- text. If the last character of the alias value is a
- _b_l_a_n_k, then the next command word following the alias is
- also checked for alias expansion.
-
- Aliases are created and listed with the aalliiaass command, and
- removed with the uunnaalliiaass command.
-
- There is no mechanism for using arguments in the replace-
- ment text. If arguments are needed, a shell function
- should be used.
-
- Aliases are not expanded when the shell is not interac-
- tive, unless the eexxppaanndd__aalliiaasseess shell option is set using
- sshhoopptt (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN
- CCOOMMMMAANNDDSS below).
-
- The rules concerning the definition and use of aliases are
- somewhat confusing. BBaasshh always reads at least one com-
- plete 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 defi-
- nition 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 aalliiaass in compound commands.
-
- For almost every purpose, aliases are superseded by shell
- functions.
-
- FFUUNNCCTTIIOONNSS
- A shell function, defined as described above under SSHHEELLLL
- GGRRAAMMMMAARR, stores a series of commands for later execution.
- Functions are executed in the context of the current
- shell; no new process is created to interpret them (con-
- trast this with the execution of a shell script). When a
- function is executed, the arguments to the function become
- the positional parameters during its execution. The spe-
- cial parameter ## is updated to reflect the change. Posi-
- tional parameter 0 is unchanged. All other aspects of the
- shell execution environment are identical between a func-
- tion and its caller with the exception that the DDEEBBUUGG trap
- (see the description of the ttrraapp builtin under SSHHEELLLL
- BBUUIILLTTIINN CCOOMMMMAANNDDSS below) is not inherited.
-
- Variables local to the function may be declared with the
- llooccaall builtin command. Ordinarily, variables and their
-
-
-
- GNU 1998 Apr 1 32
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- values are shared between the function and its caller.
-
- If the builtin command rreettuurrnn is executed in a function,
- the function completes and execution resumes with the next
- command after the function call. When a function com-
- pletes, the values of the positional parameters and the
- special parameter ## are restored to the values they had
- prior to the function's execution.
-
- Function names and definitions may be listed with the --ff
- option to the ddeeccllaarree or ttyyppeesseett builtin commands. The --FF
- option to ddeeccllaarree or ttyyppeesseett will list the function names
- only. Functions may be exported so that subshells auto-
- matically have them defined with the --ff option to the
- eexxppoorrtt builtin.
-
- Functions may be recursive. No limit is imposed on the
- number of recursive calls.
-
- AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN
- The shell allows arithmetic expressions to be evaluated,
- under certain circumstances (see the lleett builtin command
- and AArriitthhmmeettiicc EExxppaannssiioonn). Evaluation is done in long
- integers with no check for overflow, though division by 0
- is trapped and flagged as an error. The following list of
- operators is grouped into levels of equal-precedence oper-
- ators. The levels are listed in order of decreasing
- precedence.
-
- -- ++ 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
- _e_x_p_r??_e_x_p_r::_e_x_p_r
- conditional evaluation
- == **== //== %%== ++== --== <<<<== >>>>== &&== ^^== ||==
- assignment
-
- Shell variables are allowed as operands; parameter expan-
- sion is performed before the expression is evaluated. The
- value of a parameter is coerced to a long integer within
- an expression. A shell variable need not have its integer
- attribute turned on to be used in an expression.
-
-
-
-
- GNU 1998 Apr 1 33
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- Constants with a leading 0 are interpreted as octal num-
- bers. A leading 0x or 0X denotes hexadecimal. Otherwise,
- numbers take the form [_b_a_s_e_#]n, where _b_a_s_e is a decimal
- number between 2 and 64 representing the arithmetic base,
- and _n is a number in that base. If _b_a_s_e is omitted, then
- base 10 is used. The digits greater than 9 are repre-
- sented by the lowercase letters, the uppercase letters, _,
- and @, in that order. If _b_a_s_e is less than or equal to
- 36, lowercase and uppercase letters may be used inter-
- changably 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.
-
- CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS
- Conditional expressions are used by the [[[[ compound com-
- mand and the tteesstt and [[ builtin commands to test file
- attributes and perform string and arithmetic comparisons.
- Expressions are formed from the following unary or binary
- primaries. If any _f_i_l_e argument to one of the primaries
- is of the form /dev/fd/_n, then file descriptor _n is
- checked.
-
- --aa _f_i_l_e
- True if _f_i_l_e exists.
- --bb _f_i_l_e
- True if _f_i_l_e exists and is a block special file.
- --cc _f_i_l_e
- True if _f_i_l_e exists and is a character special
- file.
- --dd _f_i_l_e
- True if _f_i_l_e exists and is a directory.
- --ee _f_i_l_e
- True if _f_i_l_e exists.
- --ff _f_i_l_e
- True if _f_i_l_e exists and is a regular file.
- --gg _f_i_l_e
- True if _f_i_l_e exists and is set-group-id.
- --kk _f_i_l_e
- True if _f_i_l_e exists and its ``sticky'' bit is set.
- --pp _f_i_l_e
- True if _f_i_l_e exists and is a named pipe (FIFO).
- --rr _f_i_l_e
- True if _f_i_l_e exists and is readable.
- --ss _f_i_l_e
- True if _f_i_l_e exists and has a size greater than
- zero.
- --tt _f_d True if file descriptor _f_d is open and refers to a
- terminal.
- --uu _f_i_l_e
- True if _f_i_l_e exists and its set-user-id bit is set.
- --ww _f_i_l_e
- True if _f_i_l_e exists and is writable.
-
-
-
- GNU 1998 Apr 1 34
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- --xx _f_i_l_e
- True if _f_i_l_e exists and is executable.
- --OO _f_i_l_e
- True if _f_i_l_e exists and is owned by the effective
- user id.
- --GG _f_i_l_e
- True if _f_i_l_e exists and is owned by the effective
- group id.
- --LL _f_i_l_e
- True if _f_i_l_e exists and is a symbolic link.
- --SS _f_i_l_e
- True if _f_i_l_e exists and is a socket.
- --NN _f_i_l_e
- True if _f_i_l_e exists and has been modified since it
- was last read.
- _f_i_l_e_1 -nntt _f_i_l_e_2
- True if _f_i_l_e_1 is newer (according to modification
- date) than _f_i_l_e_2.
- _f_i_l_e_1 -oott _f_i_l_e_2
- True if _f_i_l_e_1 is older than _f_i_l_e_2.
- _f_i_l_e_1 --eeff _f_i_l_e_2
- True if _f_i_l_e_1 and _f_i_l_e_2 have the same device and
- inode numbers.
- --oo _o_p_t_n_a_m_e
- True if shell option _o_p_t_n_a_m_e is enabled. See the
- list of options under the description of the --oo
- option to the sseett builtin below.
- --zz _s_t_r_i_n_g
- True if the length of _s_t_r_i_n_g is zero.
- --nn _s_t_r_i_n_g
- _s_t_r_i_n_g True if the length of _s_t_r_i_n_g is non-zero.
- _s_t_r_i_n_g_1 ==== _s_t_r_i_n_g_2
- True if the strings are equal. == may be used in
- place of ====.
- _s_t_r_i_n_g_1 !!== _s_t_r_i_n_g_2
- True if the strings are not equal.
- _s_t_r_i_n_g_1 << _s_t_r_i_n_g_2
- True if _s_t_r_i_n_g_1 sorts before _s_t_r_i_n_g_2 lexicographi-
- cally in the current locale.
- _s_t_r_i_n_g_1 >> _s_t_r_i_n_g_2
- True if _s_t_r_i_n_g_1 sorts after _s_t_r_i_n_g_2 lexicographi-
- cally in the current locale.
- _a_r_g_1 OOPP _a_r_g_2
- OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee.
- These arithmetic binary operators return true if
- _a_r_g_1 is equal to, not equal to, less than, less
- than or equal to, greater than, or greater than or
- equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be
- positive or negative integers.
-
- SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN
- When a simple command is executed, the shell performs the
- following expansions, assignments, and redirections, from
- left to right.
-
-
-
- GNU 1998 Apr 1 35
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- 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. 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 under
- RREEDDIIRREECCTTIIOONN.
-
- 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 vari-
- able.
-
- 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 redi-
- rection 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 sub-
- stitution, the exit status of the command is the exit sta-
- tus of the last command substitution performed. If there
- were no command substitutions, the command exits with a
- status of zero.
-
- CCOOMMMMAANNDD EEXXEECCUUTTIIOONN
- 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.
-
- 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 above
- in FFUUNNCCTTIIOONNSS. 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.
-
- If the name is neither a shell function nor a builtin, and
- contains no slashes, bbaasshh searches each element of the
-
-
-
- GNU 1998 Apr 1 36
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- PPAATTHH for a directory containing an executable file by that
- name. BBaasshh uses a hash table to remember the full file
- names of executable files (see hhaasshh under SSHHEELLLL BBUUIILLTTIINN
- CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH
- 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.
-
- If the search is successful, or if the command name con-
- tains 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 given, if any.
-
- If this execution fails because the file is not in exe-
- cutable format, and the file is not a directory, it is
- assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a file containing shell com-
- mands. A subshell is spawned to execute it. This sub-
- shell reinitializes itself, so that the effect is as if a
- new shell had been invoked to handle the script, with the
- exception that the locations of commands remembered by the
- parent (see hhaasshh below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are
- retained by the child.
-
- If the program is a file beginning with ##!!, the remainder
- of the first line specifies an interpreter for the pro-
- gram. The shell executes the specified interpreter on
- operating systems that do not handle this executable for-
- mat themselves. The arguments to the interpreter consist
- of a single optional argument following the interpreter
- name on the first line of the program, followed by the
- name of the program, followed by the command arguments, if
- any.
-
- CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT
- The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of
- the following:
-
-
- +o open files inherited by the shell at invocation, as
- modified by redirections supplied to the eexxeecc
- builtin
-
- +o the current working directory as set by ccdd, ppuusshhdd,
- or ppooppdd, or inherited by the shell at invocation
-
- +o the file creation mode mask as set by uummaasskk or
- inherited from the shell's parent
-
- +o current traps set by ttrraapp
-
- +o shell parameters that are set by variable assign-
- ment or with sseett or inherited from the shell's par-
- ent in the environment
-
-
-
- GNU 1998 Apr 1 37
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- +o shell functions defined during execution or inher-
- ited from the shell's parent in the environment
-
- +o options enabled at invocation (either by default or
- with command-line arguments) or by sseett
-
- +o options enabled by sshhoopptt
-
- +o shell aliases defined with aalliiaass
-
- +o various process IDs, including those of background
- jobs, the value of $$$$, and the value of $$PPPPIIDD
-
- When a simple command other than a builtin or shell func-
- tion is to be executed, it is invoked in a separate execu-
- tion environment that consists of the following. Unless
- otherwise noted, the values are inherited from the shell.
-
-
- +o the shell's open files, plus any modifications and
- additions specified by redirections to the command
-
- +o the current working directory
-
- +o the file creation mode mask
-
- +o shell variables marked for export, along with vari-
- ables exported for the command, passed in the envi-
- ronment
-
- +o traps caught by the shell are reset to the values
- the 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 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 par-
- ent at invocation. Builtin commands that are invoked as
- part of a pipeline are also executed in a subshell envi-
- ronment. Changes made to the subshell environment cannot
- affect the shell's execution environment.
-
- EENNVVIIRROONNMMEENNTT
- When a program is invoked it is given an array of strings
- called the _e_n_v_i_r_o_n_m_e_n_t. This is a list of _n_a_m_e-_v_a_l_u_e
- pairs, of the form _n_a_m_e=_v_a_l_u_e.
-
- The shell allows you to manipulate the environment in sev-
- eral ways. On invocation, the shell scans its own envi-
- ronment and creates a parameter for each name found,
-
-
-
- GNU 1998 Apr 1 38
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- automatically marking it for _e_x_p_o_r_t to child processes.
- Executed commands inherit the environment. The eexxppoorrtt and
- ddeeccllaarree --xx 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 uunnsseett
- command, plus any additions via the eexxppoorrtt and ddeeccllaarree --xx
- commands.
-
- The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be
- augmented temporarily by prefixing it with parameter
- assignments, as described above in PPAARRAAMMEETTEERRSS. These
- assignment statements affect only the environment seen by
- that command.
-
- If the --kk option is set (see the sseett builtin command
- below), then _a_l_l parameter assignments are placed in the
- environment for a command, not just those that precede the
- command name.
-
- When bbaasshh invokes an external command, the variable __ is
- set to the full file name of the command and passed to
- that command in its environment.
-
- EEXXIITT SSTTAATTUUSS
- For the shell's purposes, a command which exits with a
- zero exit status has succeeded. An exit status of zero
- indicates success. A non-zero exit status indicates fail-
- ure. When a command terminates on a fatal signal, bbaasshh
- uses the value of 128+ssiiggnnaall 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.
-
- Shell builtin commands return a status of 0 (_t_r_u_e) if suc-
- cessful, and non-zero (_f_a_l_s_e) if an error occurs while
- they execute. All builtins return an exit status of 2 to
- indicate incorrect usage.
-
- BBaasshh itself returns the exit status of the last command
- executed, unless a syntax error occurs, in which case it
- exits with a non-zero value. See also the eexxiitt builtin
- command below.
-
- SSIIGGNNAALLSS
- When bbaasshh is interactive, in the absence of any traps, it
- ignores SSIIGGTTEERRMM (so that kkiillll 00 does not kill an
-
-
-
- GNU 1998 Apr 1 39
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- interactive shell), and SSIIGGIINNTT is caught and handled (so
- that the wwaaiitt builtin is interruptible). In all cases,
- bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh
- ignores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP.
-
- Synchronous jobs started by bbaasshh have signal handlers set
- to the values inherited by the shell from its parent.
- When job control is not in effect, asynchronous commands
- ignore SSIIGGIINNTT and SSIIGGQQUUIITT as well. Commands run as a
- result of command substitution ignore the keyboard-gener-
- ated job control signals SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP.
-
- The shell exits by default upon receipt of a SSIIGGHHUUPP.
- Before exiting, it resends the SSIIGGHHUUPP to all jobs, running
- or stopped. Stopped jobs are sent SSIIGGCCOONNTT to ensure that
- they receive the SSIIGGHHUUPP. To prevent the shell from send-
- ing the signal to a particular job, it should be removed
- from the jobs table with the ddiissoowwnn builtin (see SSHHEELLLL
- BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP
- using ddiissoowwnn --hh.
-
- If the hhuuppoonneexxiitt shell option has been set with sshhoopptt,
- bbaasshh sends a SSIIGGHHUUPP to all jobs when an interactive login
- shell exits.
-
- When bbaasshh receives a signal for which a trap has been set
- while waiting for a command to complete, the trap will not
- be executed until the command completes. When bbaasshh is
- waiting for an asynchronous command via the wwaaiitt builtin,
- the reception of a signal for which a trap has been set
- will cause the wwaaiitt builtin to return immediately with an
- exit status greater than 128, immediately after which the
- trap is executed.
-
- JJOOBB CCOONNTTRROOLL
- _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop
- (_s_u_s_p_e_n_d) the execution of processes and continue (_r_e_s_u_m_e)
- their execution at a later point. A user typically
- employs this facility via an interactive interface sup-
- plied jointly by the system's terminal driver and bbaasshh.
-
- The shell associates a _j_o_b with each pipeline. It keeps a
- table of currently executing jobs, which may be listed
- with the jjoobbss command. When bbaasshh starts a job asyn-
- chronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a line that
- looks like:
-
- [1] 25647
-
- indicating that this job is job number 1 and that the pro-
- cess 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. BBaasshh uses the _j_o_b
- abstraction as the basis for job control.
-
-
-
- GNU 1998 Apr 1 40
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- To facilitate the implementation of the user interface to
- job control, the system maintains the notion of a _c_u_r_r_e_n_t
- _t_e_r_m_i_n_a_l _p_r_o_c_e_s_s _g_r_o_u_p _I_D. Members of this process group
- (processes whose process group ID is equal to the current
- terminal process group ID) receive keyboard-generated sig-
- nals such as SSIIGGIINNTT. These processes are said to be in
- the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose pro-
- cess 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 termi-
- nal. Background processes which attempt to read from
- (write to) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) sig-
- nal by the terminal driver, which, unless caught, suspends
- the process.
-
- If the operating system on which bbaasshh is running supports
- job control, bbaasshh allows you to use it. Typing the _s_u_s_-
- _p_e_n_d character (typically ^^ZZ, Control-Z) while a process
- is running causes that process to be stopped and returns
- you to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d character (typi-
- cally ^^YY, Control-Y) causes the process to be stopped when
- it attempts to read input from the terminal, and control
- to be returned to bbaasshh. The user may then manipulate the
- state of this job, using the bbgg command to continue it in
- the background, the ffgg command to continue it in the fore-
- ground, or the kkiillll command to kill it. A ^^ZZ 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 %%nn. A job may also be referred to using
- a prefix of the name used to start it, or using a sub-
- string that appears in its command line. For example, %%ccee
- refers to a stopped ccee job. If a prefix matches more than
- one job, bbaasshh reports an error. Using %%??ccee, on the other
- hand, refers to any job containing the string ccee in its
- command line. If the substring matches more than one job,
- bbaasshh reports an error. The symbols %%%% and %%++ refer to the
- shell's notion of the _c_u_r_r_e_n_t _j_o_b, which is the last job
- stopped while it was in the foreground or started in the
- background. The _p_r_e_v_i_o_u_s _j_o_b may be referenced using %%--.
- In output pertaining to jobs (e.g., the output of the jjoobbss
- command), the current job is always flagged with a ++, and
- the previous job with a --.
-
- Simply naming a job can be used to bring it into the fore-
- ground: %%11 is a synonym for ````ffgg %%11'''', bringing job 1 from
- the background into the foreground. Similarly, ````%%11 &&''''
- resumes job 1 in the background, equivalent to ````bbgg %%11''''.
-
- The shell learns immediately whenever a job changes state.
- Normally, bbaasshh waits until it is about to print a prompt
- before reporting changes in a job's status so as to not
-
-
-
- GNU 1998 Apr 1 41
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- interrupt any other output. If the --bb option to the sseett
- builtin command is enabled, bbaasshh reports such changes
- immediately.
-
- If an attempt to exit bbaasshh is made while jobs are stopped,
- the shell prints a warning message. The jjoobbss command may
- then be used to inspect their status. If a second attempt
- to exit is made without an intervening command, the shell
- does not print another warning, and the stopped jobs are
- terminated.
-
- PPRROOMMPPTTIINNGG
- When executing interactively, bbaasshh displays the primary
- prompt PPSS11 when it is ready to read a command, and the
- secondary prompt PPSS22 when it needs more input to complete
- a command. BBaasshh allows these prompt strings to be cus-
- tomized by inserting a number of backslash-escaped special
- characters that are decoded as follows:
- \\aa an ASCII bell character (07)
- \\dd the date in "Weekday Month Date" format
- (e.g., "Tue May 26")
- \\ee an ASCII escape character (033)
- \\hh the hostname up to the first `.'
- \\HH the hostname
- \\nn newline
- \\rr carriage return
- \\ss the name of the shell, the basename of $$00
- (the portion following the final slash)
- \\tt the current time in 24-hour HH:MM:SS format
- \\TT the current time in 12-hour HH:MM:SS format
- \\@@ the current time in 12-hour am/pm format
- \\uu the username of the current user
- \\vv the version of bbaasshh (e.g., 2.00)
- \\VV the release of bbaasshh, version + patchlevel
- (e.g., 2.00.0)
- \\ww the current working directory
- \\WW the basename of the current working direc-
- tory
- \\!! the history number of this command
- \\## the command number of this command
- \\$$ if the effective UID is 0, a ##, otherwise a
- $$
- \\_n_n_n the character corresponding to the octal
- number _n_n_n
- \\\\ a backslash
- \\[[ begin a sequence of non-printing characters,
- which could be used to embed a terminal con-
- trol sequence into the prompt
- \\]] end a sequence of non-printing characters
-
- The command number and the history number are usually dif-
- ferent: the history number of a command is its position in
- the history list, which may include commands restored from
- the history file (see HHIISSTTOORRYY below), while the command
-
-
-
- GNU 1998 Apr 1 42
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- number is the position in the sequence of commands exe-
- cuted during the current shell session. After the string
- is decoded, it is expanded via parameter expansion, com-
- mand substitution, arithmetic expansion, string expansion,
- and quote removal, subject to the value of the pprroommppttvvaarrss
- shell option (see the description of the sshhoopptt command
- under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
-
- RREEAADDLLIINNEE
- This is the library that handles reading input when using
- an interactive shell, unless the ----nnooeeddiittiinngg option is
- given at shell invocation. By default, the line editing
- commands are similar to those of emacs. A vi-style line
- editing interface is also available. To turn off line
- editing after the shell is running, use the ++oo eemmaaccss or ++oo
- vvii options to the sseett builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
- below).
-
- RReeaaddlliinnee NNoottaattiioonn
- In this section, the emacs-style notation is used to
- denote keystrokes. Control keys are denoted by C-_k_e_y,
- e.g., C-n means Control-N. Similarly, _m_e_t_a keys are
- denoted by M-_k_e_y, so M-x means Meta-X. (On keyboards
- without a _m_e_t_a key, M-_x means ESC _x, i.e., press the
- Escape key then the _x key. This makes ESC the _m_e_t_a _p_r_e_-
- _f_i_x. The combination M-C-_x means ESC-Control-_x, or press
- the Escape key then hold the Control key while pressing
- the _x key.)
-
- Readline commands may be given numeric _a_r_g_u_m_e_n_t_s, which
- normally act as a repeat count. Sometimes, however, it is
- the sign of the argument that is significant. Passing a
- negative argument to a command that acts in the forward
- direction (e.g., kkiillll--lliinnee) causes that command to act in
- a backward direction. Commands whose behavior with argu-
- ments deviates from this are noted below.
-
- When a command is described as _k_i_l_l_i_n_g text, the text
- deleted is saved for possible future retrieval (_y_a_n_k_i_n_g).
- The killed text is saved in a _k_i_l_l _r_i_n_g. Consecutive
- kills cause the text to be accumulated into one unit,
- which can be yanked all at once. Commands which do not
- kill text separate the chunks of text on the kill ring.
-
- RReeaaddlliinnee IInniittiiaalliizzaattiioonn
- Readline is customized by putting commands in an initial-
- ization file (the _i_n_p_u_t_r_c file). The name of this file is
- taken from the value of the IINNPPUUTTRRCC variable. If that
- variable is unset, the default is _~_/_._i_n_p_u_t_r_c. When a pro-
- gram which uses the readline library starts up, the ini-
- tialization file is read, and the key bindings and vari-
- ables are set. There are only a few basic constructs
- allowed in the readline initialization file. Blank lines
- are ignored. Lines beginning with a ## are comments.
-
-
-
- GNU 1998 Apr 1 43
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- Lines beginning with a $$ indicate conditional constructs.
- Other lines denote key bindings and variable settings.
-
- The default key-bindings may be changed with an _i_n_p_u_t_r_c
- file. Other programs that use this library may add their
- own commands and bindings.
-
- For example, placing
-
- M-Control-u: universal-argument
- or
- C-Meta-u: universal-argument
- into the _i_n_p_u_t_r_c would make M-C-u execute the readline
- command _u_n_i_v_e_r_s_a_l_-_a_r_g_u_m_e_n_t.
-
- The following symbolic character names are recognized:
- _R_U_B_O_U_T, _D_E_L, _E_S_C, _L_F_D, _N_E_W_L_I_N_E, _R_E_T, _R_E_T_U_R_N, _S_P_C, _S_P_A_C_E,
- and _T_A_B. In addition to command names, readline allows
- keys to be bound to a string that is inserted when the key
- is pressed (a _m_a_c_r_o).
-
- RReeaaddlliinnee KKeeyy BBiinnddiinnggss
- The syntax for controlling key bindings in the _i_n_p_u_t_r_c
- file is simple. All that is required is the name of the
- command or the text of a macro and a key sequence to which
- it should be bound. The name may be specified in one of
- two ways: as a symbolic key name, possibly with _M_e_t_a_- or
- _C_o_n_t_r_o_l_- prefixes, or as a key sequence. When using the
- form kkeeyynnaammee:_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, _k_e_y_n_a_m_e 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 uunniivveerr--
- ssaall--aarrgguummeenntt, _M_-_D_E_L is bound to the function bbaacckk--
- wwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to run the macro
- expressed on the right hand side (that is, to insert the
- text _> _o_u_t_p_u_t into the line).
-
- In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyy--
- sseeqq differs from kkeeyynnaammee above in that strings denoting an
- entire key sequence may be specified by placing the
- sequence within double quotes. Some GNU Emacs style key
- escapes can be used, as in the following example.
-
- "\C-u": universal-argument
- "\C-x\C-r": re-read-init-file
- "\e[11~": "Function Key 1"
-
- In this example, _C_-_u is again bound to the function uunnii--
- vveerrssaall--aarrgguummeenntt. _C_-_x _C_-_r is bound to the function
- rree--rreeaadd--iinniitt--ffiillee, and _E_S_C _[ _1 _1 _~ is bound to insert the
-
-
-
- GNU 1998 Apr 1 44
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- text FFuunnccttiioonn KKeeyy 11. The full set of GNU Emacs style
- escape sequences is
- \\CC-- control prefix
- \\MM-- meta prefix
- \\ee an escape character
- \\\\ backslash
- \\"" literal "
- \\'' literal '
-
- In addition to the GNU Emacs style escape sequences, a
- second set of backslash escapes is available:
- \\aa alert (bell)
- \\bb backspace
- \\dd delete
- \\ff form feed
- \\nn newline
- \\rr carriage return
- \\tt horizontal tab
- \\vv vertical tab
- \\_n_n_n the character whose ASCII code is the octal
- value _n_n_n (one to three digits)
- \\xx_n_n_n the character whose ASCII code is the hex-
- adecimal value _n_n_n (one to three 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. Back-
- slash will quote any other character in the macro text,
- including " and '.
-
- BBaasshh allows the current readline key bindings to be dis-
- played or modified with the bbiinndd builtin command. The
- editing mode may be switched during interactive use by
- using the --oo option to the sseett builtin command (see SSHHEELLLL
- BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
-
- RReeaaddlliinnee VVaarriiaabblleess
- Readline has variables that can be used to further cus-
- tomize its behavior. A variable may be set in the _i_n_p_u_t_r_c
- file with a statement of the form
-
- sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e
-
- Except where noted, readline variables can take the values
- OOnn or OOffff. The variables and their default values are:
-
- bbeellll--ssttyyllee ((aauuddiibbllee))
- Controls what happens when readline wants to ring
- the terminal bell. If set to nnoonnee, readline never
- rings the bell. If set to vviissiibbllee, readline uses a
- visible bell if one is available. If set to aauuddii--
- bbllee, readline attempts to ring the terminal's bell.
-
-
-
-
- GNU 1998 Apr 1 45
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- ccoommmmeenntt--bbeeggiinn ((````##''''))
- The string that is inserted when the rreeaaddlliinnee
- iinnsseerrtt--ccoommmmeenntt command is executed. This command
- is bound to MM--## in emacs mode and to ## in vi com-
- mand mode.
- ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff))
- If set to OOnn, readline performs filename matching
- and completion in a case-insensitive fashion.
- ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000))
- This determines when the user is queried about
- viewing the number of possible completions gener-
- ated by the ppoossssiibbllee--ccoommpplleettiioonnss command. It may
- be set to any integer value greater than or equal
- to zero. If the number of possible completions is
- greater than or equal to the value of this vari-
- able, the user is asked whether or not he wishes to
- view them; otherwise they are simply listed on the
- terminal.
- ccoonnvveerrtt--mmeettaa ((OOnn))
- If set to OOnn, readline will convert characters with
- the eighth bit set to an ASCII key sequence by
- stripping the eighth bit and prepending an escape
- character (in effect, using escape as the _m_e_t_a _p_r_e_-
- _f_i_x).
- ddiissaabbllee--ccoommpplleettiioonn ((OOffff))
- If set to OOnn, readline will inhibit word comple-
- tion. Completion characters will be inserted into
- the line as if they had been mapped to sseellff--iinnsseerrtt.
- eeddiittiinngg--mmooddee ((eemmaaccss))
- Controls whether readline begins with a set of key
- bindings similar to _e_m_a_c_s or _v_i. eeddiittiinngg--mmooddee can
- be set to either eemmaaccss or vvii.
- eennaabbllee--kkeeyyppaadd ((OOffff))
- When set to OOnn, readline will try to enable the
- application keypad when it is called. Some systems
- need this to enable the arrow keys.
- eexxppaanndd--ttiillddee ((OOffff))
- If set to oonn, tilde expansion is performed when
- readline attempts word completion.
- hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff))
- When set to OOnn, makes readline use a single line
- for display, scrolling the input horizontally on a
- single screen line when it becomes longer than the
- screen width rather than wrapping to a new line.
- iinnppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will enable eight-bit input
- (that is, it will not strip the high bit from the
- characters it reads), regardless of what the termi-
- nal claims it can support. The name mmeettaa--ffllaagg is a
- synonym for this variable.
- kkeeyymmaapp ((eemmaaccss))
- Set the current readline keymap. The set of valid
- keymap names is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_,
- _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is
-
-
-
- GNU 1998 Apr 1 46
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is equivalent to
- _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the
- value of eeddiittiinngg--mmooddee also affects the default
- keymap.
- mmaarrkk--ddiirreeccttoorriieess ((OOnn))
- If set to OOnn, completed directory names have a
- slash appended.
- mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff))
- If set to OOnn, history lines that have been modified
- are displayed with a preceding asterisk (**).
- oouuttppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will display characters with
- the eighth bit set directly rather than as a meta-
- prefixed escape sequence.
- pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff))
- If set to OOnn, readline will display completions
- with matches sorted horizontally in alphabetical
- order, rather than down the screen.
- sshhooww--aallll--iiff--aammbbiigguuoouuss ((OOffff))
- This alters the default behavior of the completion
- functions. If set to oonn, words which have more
- than one possible completion cause the matches to
- be listed immediately instead of ringing the bell.
- vviissiibbllee--ssttaattss ((OOffff))
- If set to OOnn, a character denoting a file's type as
- reported by _s_t_a_t(2) is appended to the filename
- when listing possible completions.
-
- RReeaaddlliinnee CCoonnddiittiioonnaall CCoonnssttrruuccttss
- 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 per-
- formed as the result of tests. There are four parser
- directives used.
-
- $$iiff The $$iiff 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.
-
- mmooddee The mmooddee== form of the $$iiff directive is used
- to test whether readline is in emacs or vi
- mode. This may be used in conjunction with
- the sseett kkeeyymmaapp command, for instance, to set
- bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and
- _e_m_a_c_s_-_c_t_l_x keymaps only if readline is
- starting out in emacs mode.
-
- tteerrmm The tteerrmm== form may be used to include termi-
- nal-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 the both full
-
-
-
- GNU 1998 Apr 1 47
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- name of the terminal and the portion of the
- terminal name before the first --. This
- allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d,
- for instance.
-
- aapppplliiccaattiioonn
- The aapppplliiccaattiioonn construct is used to include
- application-specific settings. Each program
- using the readline library sets the _a_p_p_l_i_c_a_-
- _t_i_o_n _n_a_m_e, and an initialization file can
- test for a particular value. This could be
- used to bind key sequences to functions use-
- ful for a specific program. For instance,
- the following command adds a key sequence
- that quotes the current or previous word in
- Bash:
-
- $$iiff Bash
- # Quote the current or previous word
- "\C-xq": "\eb\"\ef\""
- $$eennddiiff
-
- $$eennddiiff This command, as seen in the previous example, ter-
- minates an $$iiff command.
-
- $$eellssee Commands in this branch of the $$iiff directive are
- executed if the test fails.
-
- $$iinncclluuddee
- This directive takes a single filename as an argu-
- ment and reads commands and bindings from that
- file. For example, the following directive would
- read _/_e_t_c_/_i_n_p_u_t_r_c:
-
- $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c
-
- SSeeaarrcchhiinngg
- Readline provides commands for searching through the com-
- mand history (see HHIISSTTOORRYY below) for lines containing a
- specified string. There are two search modes: _i_n_c_r_e_m_e_n_t_a_l
- and _n_o_n_-_i_n_c_r_e_m_e_n_t_a_l.
-
- 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. The Escape character is used
- to terminate an incremental search. Control-J will also
- terminate the search. Control-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 Control-S or Control-R as
-
-
-
- GNU 1998 Apr 1 48
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- 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 com-
- mand. For instance, a _n_e_w_l_i_n_e will terminate the search
- and accept the line, thereby executing the command from
- the history list.
-
- 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.
-
- RReeaaddlliinnee CCoommmmaanndd NNaammeess
- The following is a list of the names of the commands and
- the default key sequences to which they are bound. Com-
- mand names without an accompanying key sequence are
- unbound by default.
-
- CCoommmmaannddss ffoorr MMoovviinngg
- bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa))
- Move to the start of the current line.
- eenndd--ooff--lliinnee ((CC--ee))
- Move to the end of the line.
- ffoorrwwaarrdd--cchhaarr ((CC--ff))
- Move forward a character.
- bbaacckkwwaarrdd--cchhaarr ((CC--bb))
- Move back a character.
- ffoorrwwaarrdd--wwoorrdd ((MM--ff))
- Move forward to the end of the next word. Words
- are composed of alphanumeric characters (letters
- and digits).
- bbaacckkwwaarrdd--wwoorrdd ((MM--bb))
- Move back to the start of this, or the previous,
- word. Words are composed of alphanumeric charac-
- ters (letters and digits).
- cclleeaarr--ssccrreeeenn ((CC--ll))
- Clear the screen leaving the current line at the
- top of the screen. With an argument, refresh the
- current line without clearing the screen.
- rreeddrraaww--ccuurrrreenntt--lliinnee
- Refresh the current line.
-
- CCoommmmaannddss ffoorr MMaanniippuullaattiinngg tthhee HHiissttoorryy
- aacccceepptt--lliinnee ((NNeewwlliinnee,, RReettuurrnn))
- Accept the line regardless of where the cursor is.
- If this line is non-empty, add it to the history
- list according to the state of the HHIISSTTCCOONNTTRROOLL
- variable. If the line is a modified history line,
- then restore the history line to its original
- state.
- pprreevviioouuss--hhiissttoorryy ((CC--pp))
- Fetch the previous command from the history list,
- moving back in the list.
-
-
-
- GNU 1998 Apr 1 49
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- nneexxtt--hhiissttoorryy ((CC--nn))
- Fetch the next command from the history list, mov-
- ing forward in the list.
- bbeeggiinnnniinngg--ooff--hhiissttoorryy ((MM--<<))
- Move to the first line in the history.
- eenndd--ooff--hhiissttoorryy ((MM-->>))
- Move to the end of the input history, i.e., the
- line currently being entered.
- rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((CC--rr))
- Search backward starting at the current line and
- moving `up' through the history as necessary. This
- is an incremental search.
- ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((CC--ss))
- Search forward starting at the current line and
- moving `down' through the history as necessary.
- This is an incremental search.
- nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp))
- Search backward through the history starting at the
- current line using a non-incremental search for a
- string supplied by the user.
- nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn))
- Search forward through the history using a non-
- incremental search for a string supplied by the
- user.
- hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd
- Search forward through the history for the string
- of characters between the start of the current line
- and the current cursor position (the _p_o_i_n_t). This
- is a non-incremental search.
- hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd
- 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.
- yyaannkk--nntthh--aarrgg ((MM--CC--yy))
- Insert the first argument to the previous command
- (usually the second word on the previous line) at
- point (the current cursor position). With an argu-
- ment _n, insert the _nth word from the previous com-
- mand (the words in the previous command begin with
- word 0). A negative argument inserts the _nth word
- from the end of the previous command.
- yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__))
- Insert the last argument to the previous command
- (the last word of the previous history entry).
- With an argument, behave exactly like yyaannkk--nntthh--aarrgg.
- Successive calls to yyaannkk--llaasstt--aarrgg move back through
- the history list, inserting the last argument of
- each line in turn.
- sshheellll--eexxppaanndd--lliinnee ((MM--CC--ee))
- Expand the line as the shell does. This performs
- alias and history expansion as well as all of the
- shell word expansions. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below
- for a description of history expansion.
-
-
-
-
- GNU 1998 Apr 1 50
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- hhiissttoorryy--eexxppaanndd--lliinnee ((MM--^^))
- Perform history expansion on the current line. See
- HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of his-
- tory expansion.
- mmaaggiicc--ssppaaccee
- Perform history expansion on the current line and
- insert a space. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a
- description of history expansion.
- aalliiaass--eexxppaanndd--lliinnee
- Perform alias expansion on the current line. See
- AALLIIAASSEESS above for a description of alias expansion.
- hhiissttoorryy--aanndd--aalliiaass--eexxppaanndd--lliinnee
- Perform history and alias expansion on the current
- line.
- iinnsseerrtt--llaasstt--aarrgguummeenntt ((MM--..,, MM--__))
- A synonym for yyaannkk--llaasstt--aarrgg.
- ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo))
- 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.
-
- CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt
- ddeelleettee--cchhaarr ((CC--dd))
- Delete the character under the cursor. If point is
- at the beginning of the line, there are no charac-
- ters in the line, and the last character typed was
- not bound to ddeelleettee--cchhaarr, then return EEOOFF.
- bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt))
- Delete the character behind the cursor. When given
- a numeric argument, save the deleted text on the
- kill ring.
- qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv))
- Add the next character typed to the line verbatim.
- This is how to insert characters like CC--qq, for
- example.
- ttaabb--iinnsseerrtt ((CC--vv TTAABB))
- Insert a tab character.
- sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......))
- Insert the character typed.
- ttrraannssppoossee--cchhaarrss ((CC--tt))
- Drag the character before point forward over the
- character at point. Point moves forward as well.
- If point is at the end of the line, then transpose
- the two characters before point. Negative argu-
- ments don't work.
- ttrraannssppoossee--wwoorrddss ((MM--tt))
- Drag the word behind the cursor past the word in
- front of the cursor moving the cursor over that
- word as well.
- uuppccaassee--wwoorrdd ((MM--uu))
- Uppercase the current (or following) word. With a
- negative argument, uppercase the previous word, but
- do not move point.
-
-
-
-
- GNU 1998 Apr 1 51
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- ddoowwnnccaassee--wwoorrdd ((MM--ll))
- Lowercase the current (or following) word. With a
- negative argument, lowercase the previous word, but
- do not move point.
- ccaappiittaalliizzee--wwoorrdd ((MM--cc))
- Capitalize the current (or following) word. With a
- negative argument, capitalize the previous word,
- but do not move point.
-
- KKiilllliinngg aanndd YYaannkkiinngg
- kkiillll--lliinnee ((CC--kk))
- Kill the text from the current cursor position to
- the end of the line.
- bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt))
- Kill backward to the beginning of the line.
- uunniixx--lliinnee--ddiissccaarrdd ((CC--uu))
- Kill backward from point to the beginning of the
- line. The killed text is saved on the kill-ring.
-
- kkiillll--wwhhoollee--lliinnee
- Kill all characters on the current line, no matter
- where the cursor is.
- kkiillll--wwoorrdd ((MM--dd))
- Kill from the cursor to the end of the current
- word, or if between words, to the end of the next
- word. Word boundaries are the same as those used
- by ffoorrwwaarrdd--wwoorrdd.
- bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt))
- Kill the word behind the cursor. Word boundaries
- are the same as those used by bbaacckkwwaarrdd--wwoorrdd.
- uunniixx--wwoorrdd--rruubboouutt ((CC--ww))
- Kill the word behind the cursor, using white space
- as a word boundary. The word boundaries are dif-
- ferent from bbaacckkwwaarrdd--kkiillll--wwoorrdd.
- ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\))
- Delete all spaces and tabs around point.
- kkiillll--rreeggiioonn
- Kill the text between the point and _m_a_r_k (saved
- cursor position). This text is referred to as the
- _r_e_g_i_o_n.
- ccooppyy--rreeggiioonn--aass--kkiillll
- Copy the text in the region to the kill buffer.
- ccooppyy--bbaacckkwwaarrdd--wwoorrdd
- Copy the word before point to the kill buffer. The
- word boundaries are the same as bbaacckkwwaarrdd--wwoorrdd.
- ccooppyy--ffoorrwwaarrdd--wwoorrdd
- Copy the word following point to the kill buffer.
- The word boundaries are the same as ffoorrwwaarrdd--wwoorrdd.
- yyaannkk ((CC--yy))
- Yank the top of the kill ring into the buffer at
- the cursor.
- yyaannkk--ppoopp ((MM--yy))
- Rotate the kill ring, and yank the new top. Only
- works following yyaannkk or yyaannkk--ppoopp.
-
-
-
- GNU 1998 Apr 1 52
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- NNuummeerriicc AArrgguummeennttss
- ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----))
- Add this digit to the argument already accumulat-
- ing, or start a new argument. M-- starts a nega-
- tive argument.
- uunniivveerrssaall--aarrgguummeenntt
- 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 uunniivveerrssaall--aarrgguummeenntt again ends the
- numeric argument, but is otherwise ignored. As a
- special case, if this command is immediately fol-
- lowed 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 ini-
- tially one, so executing this function the first
- time makes the argument count four, a second time
- makes the argument count sixteen, and so on.
-
- CCoommpplleettiinngg
- ccoommpplleettee ((TTAABB))
- Attempt to perform completion on the text before
- point. BBaasshh 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.
- ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??))
- List the possible completions of the text before
- point.
- iinnsseerrtt--ccoommpplleettiioonnss ((MM--**))
- Insert all completions of the text before point
- that would have been generated by ppoossssiibbllee--ccoommppllee--
- ttiioonnss.
- mmeennuu--ccoommpplleettee
- Similar to ccoommpplleettee, but replaces the word to be
- completed with a single match from the list of pos-
- sible completions. Repeated execution of mmeennuu--ccoomm--
- pplleettee steps through the list of possible comple-
- tions, inserting each match in turn. At the end of
- the list of completions, the bell is rung and the
- original text is restored. An argument of _n moves
- _n positions forward in the list of matches; a nega-
- tive argument may be used to move backward through
- the list. This command is intended to be bound to
- TTAABB, but is unbound by default.
- ccoommpplleettee--ffiilleennaammee ((MM--//))
- Attempt filename completion on the text before
- point.
- ppoossssiibbllee--ffiilleennaammee--ccoommpplleettiioonnss ((CC--xx //))
- List the possible completions of the text before
- point, treating it as a filename.
-
-
-
- GNU 1998 Apr 1 53
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- ccoommpplleettee--uusseerrnnaammee ((MM--~~))
- Attempt completion on the text before point, treat-
- ing it as a username.
- ppoossssiibbllee--uusseerrnnaammee--ccoommpplleettiioonnss ((CC--xx ~~))
- List the possible completions of the text before
- point, treating it as a username.
- ccoommpplleettee--vvaarriiaabbllee ((MM--$$))
- Attempt completion on the text before point, treat-
- ing it as a shell variable.
- ppoossssiibbllee--vvaarriiaabbllee--ccoommpplleettiioonnss ((CC--xx $$))
- List the possible completions of the text before
- point, treating it as a shell variable.
- ccoommpplleettee--hhoossttnnaammee ((MM--@@))
- Attempt completion on the text before point, treat-
- ing it as a hostname.
- ppoossssiibbllee--hhoossttnnaammee--ccoommpplleettiioonnss ((CC--xx @@))
- List the possible completions of the text before
- point, treating it as a hostname.
- ccoommpplleettee--ccoommmmaanndd ((MM--!!))
- Attempt completion on the text before point, treat-
- ing 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.
- ppoossssiibbllee--ccoommmmaanndd--ccoommpplleettiioonnss ((CC--xx !!))
- List the possible completions of the text before
- point, treating it as a command name.
- ddyynnaammiicc--ccoommpplleettee--hhiissttoorryy ((MM--TTAABB))
- Attempt completion on the text before point, com-
- paring the text against lines from the history list
- for possible completion matches.
- ccoommpplleettee--iinnttoo--bbrraacceess ((MM--{{))
- Perform filename completion and return the list of
- possible completions enclosed within braces so the
- list is available to the shell (see BBrraaccee EExxppaannssiioonn
- above).
-
- KKeeyybbooaarrdd MMaaccrrooss
- ssttaarrtt--kkbbdd--mmaaccrroo ((CC--xx (())
- Begin saving the characters typed into the current
- keyboard macro.
- eenndd--kkbbdd--mmaaccrroo ((CC--xx ))))
- Stop saving the characters typed into the current
- keyboard macro and store the definition.
- ccaallll--llaasstt--kkbbdd--mmaaccrroo ((CC--xx ee))
- Re-execute the last keyboard macro defined, by mak-
- ing the characters in the macro appear as if typed
- at the keyboard.
-
- MMiisscceellllaanneeoouuss
- rree--rreeaadd--iinniitt--ffiillee ((CC--xx CC--rr))
- Read in the contents of the _i_n_p_u_t_r_c file, and
- incorporate any bindings or variable assignments
- found there.
-
-
-
- GNU 1998 Apr 1 54
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- aabboorrtt ((CC--gg))
- Abort the current editing command and ring the ter-
- minal's bell (subject to the setting of
- bbeellll--ssttyyllee).
- ddoo--uuppppeerrccaassee--vveerrssiioonn ((MM--aa,, MM--bb,, MM--_x,, ......))
- If the metafied character _x is lowercase, run the
- command that is bound to the corresponding upper-
- case character.
- pprreeffiixx--mmeettaa ((EESSCC))
- Metafy the next character typed. EESSCC ff is equiva-
- lent to MMeettaa--ff.
- uunnddoo ((CC--__,, CC--xx CC--uu))
- Incremental undo, separately remembered for each
- line.
- rreevveerrtt--lliinnee ((MM--rr))
- Undo all changes made to this line. This is like
- executing the uunnddoo command enough times to return
- the line to its initial state.
- ttiillddee--eexxppaanndd ((MM--~~))
- Perform tilde expansion on the current word.
- sseett--mmaarrkk ((CC--@@,, MM--<<ssppaaccee>>))
- Set the mark to the current point. If a numeric
- argument is supplied, the mark is set to that posi-
- tion.
- eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx))
- 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.
- cchhaarraacctteerr--sseeaarrcchh ((CC--]]))
- A character is read and point is moved to the next
- occurrence of that character. A negative count
- searches for previous occurrences.
- cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]]))
- A character is read and point is moved to the pre-
- vious occurrence of that character. A negative
- count searches for subsequent occurrences.
- iinnsseerrtt--ccoommmmeenntt ((MM--##))
- The value of the rreeaaddlliinnee ccoommmmeenntt--bbeeggiinn variable is
- inserted at the beginning of the current line, and
- the line is accepted as if a newline had been
- typed. This makes the current line a shell com-
- ment.
- gglloobb--eexxppaanndd--wwoorrdd ((CC--xx **))
- The word before point is treated as a pattern for
- pathname expansion, and the list of matching file
- names is inserted, replacing the word.
- gglloobb--lliisstt--eexxppaannssiioonnss ((CC--xx gg))
- The list of expansions that would have been gener-
- ated by gglloobb--eexxppaanndd--wwoorrdd is displayed, and the line
- is redrawn.
- dduummpp--ffuunnccttiioonnss
- Print all of the functions and their key bindings
- to the readline output stream. If a numeric argu-
- ment is supplied, the output is formatted in such a
-
-
-
- GNU 1998 Apr 1 55
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- way that it can be made part of an _i_n_p_u_t_r_c file.
- dduummpp--vvaarriiaabblleess
- Print all of the settable readline variables and
- their values to the readline output stream. If a
- numeric argument is supplied, the output is format-
- ted in such a way that it can be made part of an
- _i_n_p_u_t_r_c file.
- dduummpp--mmaaccrrooss
- Print all of the readline key sequences bound to
- macros and the strings they ouput. If a numeric
- argument is supplied, the output is formatted in
- such a way that it can be made part of an _i_n_p_u_t_r_c
- file.
- ddiissppllaayy--sshheellll--vveerrssiioonn ((CC--xx CC--vv))
- Display version information about the current
- instance of bbaasshh.
-
- HHIISSTTOORRYY
- When the --oo hhiissttoorryy option to the sseett builtin is enabled,
- the shell provides access to the _c_o_m_m_a_n_d _h_i_s_t_o_r_y, the list
- of commands previously typed. The text of the last HHIISSTT--
- SSIIZZEE commands (default 500) is saved in a history list.
- The shell stores each command in the history list prior to
- parameter and variable expansion (see EEXXPPAANNSSIIOONN above) but
- after history expansion is performed, subject to the val-
- ues of the shell variables HHIISSTTIIGGNNOORREE and HHIISSTTCCOONNTTRROOLL. On
- startup, the history is initialized from the file named by
- the variable HHIISSTTFFIILLEE (default _~_/_._b_a_s_h___h_i_s_t_o_r_y). HHIISSTTFFIILLEE
- is truncated, if necessary, to contain no more than HHIISSTT--
- FFIILLEESSIIZZEE lines. When an interactive shell exits, the last
- HHIISSTTSSIIZZEE lines are copied from the history list to HHIISSTT--
- FFIILLEE. If the hhiissttaappppeenndd shell option is enabled (see the
- description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below),
- the lines are appended to the history file, otherwise the
- history file is overwritten. If HHIISSTTFFIILLEE 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 HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTTFFIILLEESSIIZZEE
- is not set, no truncation is performed.
-
- The builtin command ffcc (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below)
- may be used to list or edit and re-execute a portion of
- the history list. The hhiissttoorryy builtin can be used to dis-
- play or modify the history list and manipulate the history
- file. When using the command-line editing, search com-
- mands are available in each editing mode that provide
- access to the history list.
-
- The shell allows control over which commands are saved on
- the history list. The HHIISSTTCCOONNTTRROOLL and HHIISSTTIIGGNNOORREE vari-
- ables may be set to cause the shell to save only a subset
- of the commands entered. The ccmmddhhiisstt shell option, if
- enabled, causes the shell to attempt to save each line of
- a multi-line command in the same history entry, adding
-
-
-
- GNU 1998 Apr 1 56
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- semicolons where necessary to preserve syntactic correct-
- ness. The lliitthhiisstt shell option causes the shell to save
- the command with embedded newlines instead of semicolons.
- See the description of the sshhoopptt builtin below under SSHHEELLLL
- BBUUIILLTTIINN CCOOMMMMAANNDDSS for information on setting and unsetting
- shell options.
-
- HHIISSTTOORRYY EEXXPPAANNSSIIOONN
- The shell supports a history expansion feature that is
- similar to the history expansion in ccsshh.. This section
- describes what syntax features are available. This fea-
- ture is enabled by default for interactive shells, and can
- be disabled using the ++HH option to the sseett builtin command
- (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). Non-interactive
- shells do not perform history expansion by default.
-
- 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 cur-
- rent input line, or fix errors in previous commands
- quickly.
-
- History expansion is performed immediately after a com-
- plete line is read, before the shell breaks it into words.
- It takes place in two parts. The first is to determine
- which line from the history list to use during substitu-
- tion. The second is to select portions of that line for
- inclusion into the current one. The line selected from
- the history is the _e_v_e_n_t, and the portions of that line
- that are acted upon are _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are
- available to manipulate the selected words. The line is
- broken into words in the same fashion as when reading
- input, so that several _m_e_t_a_c_h_a_r_a_c_t_e_r-separated words sur-
- rounded by quotes are considered one word. History expan-
- sions are introduced by the appearance of the history
- expansion character, which is !! by default. Only back-
- slash (\\) and single quotes can quote the history expan-
- sion character.
-
- Several shell options settable with the sshhoopptt builtin may
- be used to tailor the behavior of history expansion. If
- the hhiissttvveerriiffyy shell option is enabled (see the descrip-
- tion of the sshhoopptt builtin), and rreeaaddlliinnee is being used,
- history substitutions are not immediately passed to the
- shell parser. Instead, the expanded line is reloaded into
- the rreeaaddlliinnee editing buffer for further modification. If
- rreeaaddlliinnee is being used, and the hhiissttrreeeeddiitt shell option is
- enabled, a failed history substitution will be reloaded
- into the rreeaaddlliinnee editing buffer for correction. The --pp
- option to the hhiissttoorryy builtin command may be used to see
- what a history expansion will do before using it. The --ss
- option to the hhiissttoorryy 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.
-
-
-
- GNU 1998 Apr 1 57
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- The shell allows control of the various characters used by
- the history expansion mechanism (see the description of
- hhiissttcchhaarrss above under SShheellll VVaarriiaabblleess).
-
- EEvveenntt DDeessiiggnnaattoorrss
- An event designator is a reference to a command line entry
- in the history list.
-
- !! Start a history substitution, except when followed
- by a bbllaannkk, newline, = or (.
- !!_n Refer to command line _n.
- !!--_n Refer to the current command line minus _n.
- !!!! Refer to the previous command. This is a synonym
- for `!-1'.
- !!_s_t_r_i_n_g
- Refer to the most recent command starting with
- _s_t_r_i_n_g.
- !!??_s_t_r_i_n_g[[??]]
- Refer to the most recent command containing _s_t_r_i_n_g.
- The trailing ?? may be omitted if _s_t_r_i_n_g is followed
- immediately by a newline.
- ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^
- Quick substitution. Repeat the last command,
- replacing _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to
- ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/'' (see MMooddiiffiieerrss below).
- !!## The entire command line typed so far.
-
- WWoorrdd DDeessiiggnnaattoorrss
- 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.
-
- 00 ((zzeerroo))
- The zeroth word. For the shell, this is the com-
- mand word.
- _n The _nth word.
- ^^ The first argument. That is, word 1.
- $$ The last argument.
- %% The word matched by the most recent `?_s_t_r_i_n_g?'
- search.
- _x--_y A range of words; `-_y' abbreviates `0-_y'.
- ** All of the words but the zeroth. 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.
- xx** Abbreviates _x_-_$.
- xx-- Abbreviates _x_-_$ like xx**, but omits the last word.
-
- If a word designator is supplied without an event specifi-
- cation, the previous command is used as the event.
-
-
-
- GNU 1998 Apr 1 58
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- MMooddiiffiieerrss
- After the optional word designator, there may appear a
- sequence of one or more of the following modifiers, each
- preceded by a `:'.
-
- hh Remove a trailing file name component, leaving only
- the head.
- tt Remove all leading file name components, leaving
- the tail.
- rr Remove a trailing suffix of the form _._x_x_x, leaving
- the basename.
- ee Remove all but the trailing suffix.
- pp Print the new command but do not execute it.
- qq Quote the substituted words, escaping further sub-
- stitutions.
- xx Quote the substituted words as with qq, but break
- into words at bbllaannkkss and newlines.
- ss//_o_l_d//_n_e_w//
- Substitute _n_e_w for the first occurrence of _o_l_d in
- the event line. Any delimiter can be used in place
- of /. The final delimiter is optional if it is the
- last character of the event line. The delimiter
- may be quoted in _o_l_d and _n_e_w with a single back-
- slash. If & appears in _n_e_w, it is replaced by _o_l_d.
- A single backslash will quote the &. If _o_l_d is
- null, it is set to the last _o_l_d substituted, or, if
- no previous history substitutions took place, the
- last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search.
- && Repeat the previous substitution.
- gg Cause changes to be applied over the entire event
- line. This is used in conjunction with `::ss' (e.g.,
- `::ggss//_o_l_d//_n_e_w//') or `::&&'. If used with `::ss', any
- delimiter can be used in place of /, and the final
- delimiter is optional if it is the last character
- of the event line.
-
- SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
- Unless otherwise noted, each builtin command documented in
- this section as accepting options preceded by -- accepts ----
- to signify the end of the options.
- :: [_a_r_g_u_m_e_n_t_s]
- No effect; the command does nothing beyond expand-
- ing _a_r_g_u_m_e_n_t_s and performing any specified redirec-
- tions. A zero exit code is returned.
-
- .. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s]
- ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s]
- Read and execute commands from _f_i_l_e_n_a_m_e in the cur-
- rent shell environment and return the exit status
- of the last command executed from _f_i_l_e_n_a_m_e. If
- _f_i_l_e_n_a_m_e does not contain a slash, file names in
- PPAATTHH are used to find the directory containing
- _f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not
- be executable. The current directory is searched
-
-
-
- GNU 1998 Apr 1 59
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- if no file is found in PPAATTHH. If the ssoouurrcceeppaatthh
- option to the sshhoopptt builtin command is turned off,
- the PPAATTHH is not searched. If any _a_r_g_u_m_e_n_t_s are
- supplied, they become the positional parameters
- when _f_i_l_e_n_a_m_e is executed. Otherwise the posi-
- tional parameters are unchanged. The return status
- is the status of the last command exited within the
- script (0 if no commands are executed), and false
- if _f_i_l_e_n_a_m_e is not found or cannot be read.
-
- aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
- AAlliiaass with no arguments or with the --pp option
- prints the list of aliases in the form aalliiaass
- _n_a_m_e=_v_a_l_u_e on standard output. When arguments are
- supplied, an alias is defined for each _n_a_m_e whose
- _v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes
- the next word to be checked for alias substitution
- when the alias is expanded. For each _n_a_m_e in the
- argument list for which no _v_a_l_u_e is supplied, the
- name and value of the alias is printed. AAlliiaass
- returns true unless a _n_a_m_e is given for which no
- alias has been defined.
-
- bbgg [_j_o_b_s_p_e_c]
- Resume the suspended job _j_o_b_s_p_e_c in the background,
- as if it had been started with &&. If _j_o_b_s_p_e_c is
- not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b
- is used. bbgg _j_o_b_s_p_e_c returns 0 unless run when job
- control is disabled or, when run with job control
- enabled, if _j_o_b_s_p_e_c was not found or started with-
- out job control.
-
- bbiinndd [--mm _k_e_y_m_a_p] [--llppssvvPPSSVV]
- bbiinndd [--mm _k_e_y_m_a_p] [--qq _f_u_n_c_t_i_o_n] [--uu _f_u_n_c_t_i_o_n] [--rr _k_e_y_s_e_q]
- bbiinndd [--mm _k_e_y_m_a_p] --ff _f_i_l_e_n_a_m_e
- bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_f_u_n_c_t_i_o_n_-_n_a_m_e
- Display current rreeaaddlliinnee key and function bindings,
- or bind a key sequence to a rreeaaddlliinnee function or
- macro. The binding syntax accepted is identical to
- that of _._i_n_p_u_t_r_c, but each binding must be passed
- as a separate argument; e.g., '"\C-x\C-r":
- re-read-init-file'. Options, if supplied, have the
- following meanings:
- --mm _k_e_y_m_a_p
- Use _k_e_y_m_a_p as the keymap to be affected by
- the subsequent bindings. Acceptable _k_e_y_m_a_p
- names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_,
- _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_m_a_n_d, and _v_i_-_i_n_s_e_r_t.
- _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is
- equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d.
- --ll List the names of all rreeaaddlliinnee functions.
- --pp Display rreeaaddlliinnee function names and bindings
- in such a way that they can be re-read.
- --PP List current rreeaaddlliinnee function names and
-
-
-
- GNU 1998 Apr 1 60
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- bindings.
- --vv Display rreeaaddlliinnee variable names and values
- in such a way that they can be re-read.
- --VV List current rreeaaddlliinnee variable names and
- values.
- --ss Display rreeaaddlliinnee key sequences bound to
- macros and the strings they output in such a
- way that they can be re-read.
- --SS Display rreeaaddlliinnee key sequences bound to
- macros and the strings they output.
- --ff _f_i_l_e_n_a_m_e
- Read key bindings from _f_i_l_e_n_a_m_e.
- --qq _f_u_n_c_t_i_o_n
- Query about which keys invoke the named
- _f_u_n_c_t_i_o_n.
- --uu _f_u_n_c_t_i_o_n
- Unbind all keys bound to the named _f_u_n_c_t_i_o_n.
- --rr _k_e_y_s_e_q
- Remove any current binding for _k_e_y_s_e_q.
-
- The return value is 0 unless an unrecognized option
- is given or an error occurred.
-
- bbrreeaakk [_n]
- Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt
- loop. If _n is specified, break _n levels. _n must
- be >= 1. If _n is greater than the number of
- enclosing loops, all enclosing loops are exited.
- The return value is 0 unless the shell is not exe-
- cuting a loop when bbrreeaakk is executed.
-
- bbuuiillttiinn _s_h_e_l_l_-_b_u_i_l_t_i_n [_a_r_g_u_m_e_n_t_s]
- Execute the specified shell builtin, passing it
- _a_r_g_u_m_e_n_t_s, and return its exit status. This is
- useful when defining a function whose name is the
- same as a shell builtin, retaining the functional-
- ity of the builtin within the function. The ccdd
- builtin is commonly redefined this way. The return
- status is false if _s_h_e_l_l_-_b_u_i_l_t_i_n is not a shell
- builtin command.
-
- ccdd [--LLPP] [_d_i_r]
- Change the current directory to _d_i_r. The variable
- HHOOMMEE is the default _d_i_r. The variable CCDDPPAATTHH
- defines the search path for the directory contain-
- ing _d_i_r. Alternative directory names in CCDDPPAATTHH are
- separated by a colon (:). A null directory name in
- CCDDPPAATTHH is the same as the current directory, i.e.,
- ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH
- is not used. The --PP option says to use the physical
- directory structure instead of following symbolic
- links (see also the --PP option to the sseett builtin
- command); the --LL option forces symbolic links to be
- followed. An argument of -- is equivalent to
-
-
-
- GNU 1998 Apr 1 61
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- $$OOLLDDPPWWDD. The return value is true if the directory
- was successfully changed; false otherwise.
-
- ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...]
- Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell
- function lookup. Only builtin commands or commands
- found in the PPAATTHH are executed. If the --pp option
- is given, the search for _c_o_m_m_a_n_d is performed using
- a default value for PPAATTHH that is guaranteed to find
- all of the standard utilities. If either the --VV or
- --vv option is supplied, a description of _c_o_m_m_a_n_d is
- printed. The --vv option causes a single word indi-
- cating the command or file name used to invoke _c_o_m_-
- _m_a_n_d to be displayed; the --VV option produces a more
- verbose description. If the --VV or --vv option is
- supplied, the exit status is 0 if _c_o_m_m_a_n_d was
- found, and 1 if not. If neither option is supplied
- and an error occurred or _c_o_m_m_a_n_d cannot be found,
- the exit status is 127. Otherwise, the exit status
- of the ccoommmmaanndd builtin is the exit status of _c_o_m_-
- _m_a_n_d.
-
- ccoonnttiinnuuee [_n]
- Resume the next iteration of the enclosing ffoorr,
- wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is specified,
- resume at the _nth enclosing loop. _n must be >= 1.
- If _n is greater than the number of enclosing loops,
- the last enclosing loop (the ``top-level'' loop) is
- resumed. The return value is 0 unless the shell is
- not executing a loop when ccoonnttiinnuuee is executed.
-
- ddeeccllaarree [--aaffFFiirrxx] [--pp] [_n_a_m_e[=_v_a_l_u_e]]
- ttyyppeesseett [--aaffFFiirrxx] [--pp] [_n_a_m_e[=_v_a_l_u_e]]
- Declare variables and/or give them attributes. If
- no _n_a_m_es are given then display the values of vari-
- ables. The --pp option will display the attributes
- and values of each _n_a_m_e. When --pp is used, addi-
- tional options are ignored. The --FF option inhibits
- the display of function definitions; only the func-
- tion name and attributes are printed. The --FF
- option implies --ff. The following options can be
- used to restrict output to variables with the spec-
- ified attribute or to give variables attributes:
- --aa Each _n_a_m_e is an array variable (see AArrrraayyss
- above).
- --ff Use function names only.
- --ii The variable is treated as an integer;
- arithmetic evaluation (see AARRIITTHHMMEETTIICC EEVVAALLUU--
- AATTIIOONN )) is performed when the variable is
- assigned a value.
- --rr Make _n_a_m_es readonly. These names cannot
- then be assigned values by subsequent
- assignment statements or unset.
- --xx Mark _n_a_m_es for export to subsequent commands
-
-
-
- GNU 1998 Apr 1 62
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- via the environment.
-
- Using `+' instead of `-' turns off the attribute
- instead, with the exception that ++aa may not be used
- to destroy an array variable. When used in a func-
- tion, makes each _n_a_m_e local, as with the llooccaall com-
- mand. The return value is 0 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 vari-
- able without using the compound assignment syntax
- (see AArrrraayyss above), one of the _n_a_m_e_s is not a valid
- shell variable name, an attempt is made to turn off
- readonly status for a readonly variable, an attempt
- is made to turn off array status for an array vari-
- able, or an attempt is made to display a non-exis-
- tent function with -f.
-
- ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]]
- Without options, displays the list of currently
- remembered directories. The default display is on
- a single line with directory names separated by
- spaces. Directories are added to the list with the
- ppuusshhdd command; the ppooppdd command removes entries
- from the list.
- ++_n Displays the _nth entry counting from the
- left of the list shown by ddiirrss when invoked
- without options, starting with zero.
- --_n Displays the _nth entry counting from the
- right of the list shown by ddiirrss when invoked
- without options, starting with zero.
- --cc Clears the directory stack by deleting all
- of the entries.
- --ll Produces a longer listing; the default list-
- ing format uses a tilde to denote the home
- directory.
- --pp Print the directory stack with one entry per
- line.
- --vv Print the directory stack with one entry per
- line, prefixing each entry with its index in
- the stack.
-
- The return value is 0 unless an invalid option is
- supplied or _n indexes beyond the end of the direc-
- tory stack.
-
- ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ...]
- Without options, each _j_o_b_s_p_e_c is removed from the
- table of active jobs. If the --hh option is given,
- each _j_o_b_s_p_e_c is not removed from the table, but is
- marked so that SSIIGGHHUUPP is not sent to the job if the
- shell receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is present,
- and neither the --aa nor the --rr option is supplied,
-
-
-
- GNU 1998 Apr 1 63
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- the _c_u_r_r_e_n_t _j_o_b is used. If no _j_o_b_s_p_e_c is sup-
- plied, the --aa option means to remove or mark all
- jobs; the --rr option without a _j_o_b_s_p_e_c argument
- restricts operation to running jobs. The return
- value is 0 unless a _j_o_b_s_p_e_c does not specify a
- valid job.
-
- eecchhoo [--nneeEE] [_a_r_g ...]
- Output the _a_r_gs, separated by spaces, followed by a
- newline. The return status is always 0. If --nn is
- specified, the trailing newline is suppressed. If
- the --ee option is given, interpretation of the fol-
- lowing backslash-escaped characters is enabled.
- The --EE option disables the interpretation of these
- escape characters, even on systems where they are
- interpreted by default. eecchhoo does not interpret ----
- to mean the end of options. eecchhoo interprets the
- following escape sequences:
- \\aa alert (bell)
- \\bb backspace
- \\cc suppress trailing newline
- \\ee an escape character
- \\ff form feed
- \\nn new line
- \\rr carriage return
- \\tt horizontal tab
- \\vv vertical tab
- \\\\ backslash
- \\_n_n_n the character whose ASCII code is the octal
- value _n_n_n (one to three digits)
- \\xx_n_n_n the character whose ASCII code is the hex-
- adecimal value _n_n_n (one to three digits)
-
- eennaabbllee [--aaddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...]
- Enable and disable builtin shell commands. Dis-
- abling a builtin allows a disk command which has
- the same name as a shell builtin to be executed
- with specifying a full pathname, even though the
- shell normally searches for builtins before disk
- commands. If --nn is used, each _n_a_m_e is disabled;
- otherwise, _n_a_m_e_s are enabled. For example, to use
- the tteesstt binary found via the PPAATTHH instead of the
- shell builtin version, run enable -n test.. TThhee --ff
- option means to load the new builtin command _n_a_m_e
- from shared object _f_i_l_e_n_a_m_e, on systems that sup-
- port dynamic loading. The --dd option will delete a
- builtin previously loaded with --ff. If no _n_a_m_e
- arguments are given, or if the --pp option is sup-
- plied, a list of shell builtins is printed. With
- no other option arguments, the list consists of all
- enabled shell builtins. If --nn is supplied, only
- disabled builtins are printed. If --aa is supplied,
- the list printed includes all builtins, with an
- indication of whether or not each is enabled. If
-
-
-
- GNU 1998 Apr 1 64
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- --ss is supplied, the output is restricted to the
- POSIX _s_p_e_c_i_a_l builtins. The return value is 0
- unless a _n_a_m_e is not a shell builtin or there is a
- problem loading a new builtin from a shared object.
-
- eevvaall [_a_r_g ...]
- The _a_r_gs are read and concatenated together into a
- single command. This command is then read and exe-
- cuted by the shell, and its exit status is returned
- as the value of eevvaall. If there are no _a_r_g_s, or
- only null arguments, eevvaall returns 0.
-
- eexxeecc [--ccll] [--aa _n_a_m_e] [_c_o_m_m_a_n_d [_a_r_g_u_m_e_n_t_s]]
- If _c_o_m_m_a_n_d is specified, it replaces the shell. No
- new process is created. The _a_r_g_u_m_e_n_t_s become the
- arguments to _c_o_m_m_a_n_d. If the --ll option is sup-
- plied, the shell places a dash in the zeroth arg
- passed to _c_o_m_m_a_n_d. This is what _l_o_g_i_n(1) does.
- The --cc option causes _c_o_m_m_a_n_d to be executed with an
- empty environment. If --aa is supplied, the shell
- passes _n_a_m_e as the zeroth argument to the executed
- command. If _c_o_m_m_a_n_d cannot be executed for some
- reason, a non-interactive shell exits, unless the
- shell option eexxeeccffaaiill is enabled, in which case it
- returns failure. An interactive shell returns
- failure if the file cannot be executed. If _c_o_m_m_a_n_d
- is not specified, any redirections take effect in
- the current shell, and the return status is 0. If
- there is a redirection error, the return status is
- 1.
-
- eexxiitt [_n]
- Cause the shell to exit with a status of _n. If _n
- is omitted, the exit status is that of the last
- command executed. A trap on EEXXIITT is executed
- before the shell terminates.
-
- eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ...
- eexxppoorrtt --pp
- The supplied _n_a_m_e_s are marked for automatic export
- to the environment of subsequently executed com-
- mands. If the --ff option is given, the _n_a_m_e_s refer
- to functions. If no _n_a_m_e_s are given, or if the --pp
- option is supplied, a list of all names that are
- exported in this shell is printed. The --nn option
- causes the export property to be removed from the
- named variables. eexxppoorrtt returns an exit status of
- 0 unless an invalid option is encountered, one of
- the _n_a_m_e_s is not a valid shell variable name, or --ff
- is supplied with a _n_a_m_e that is not a function.
-
- ffcc [--ee _e_n_a_m_e] [--nnllrr] [_f_i_r_s_t] [_l_a_s_t]
- ffcc --ss [_p_a_t=_r_e_p] [_c_m_d]
- Fix Command. In the first form, a range of
-
-
-
- GNU 1998 Apr 1 65
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- commands from _f_i_r_s_t to _l_a_s_t is selected from the
- history list. _F_i_r_s_t and _l_a_s_t may be specified as a
- string (to locate the last command beginning with
- that string) or as a number (an index into the his-
- tory list, where a negative number is used as an
- offset from the current command number). If _l_a_s_t
- is not specified it is set to the current command
- for listing (so that ffcc --ll --1100 prints the last 10
- commands) and to _f_i_r_s_t otherwise. If _f_i_r_s_t is not
- specified it is set to the previous command for
- editing and -16 for listing.
-
- The --nn option suppresses the command numbers when
- listing. The --rr option reverses the order of the
- commands. If the --ll option is given, the commands
- are listed on standard output. Otherwise, the edi-
- tor given by _e_n_a_m_e is invoked on a file containing
- those commands. If _e_n_a_m_e is not given, the value
- of the FFCCEEDDIITT variable is used, and the value of
- EEDDIITTOORR if FFCCEEDDIITT is not set. If neither variable
- is set, _v_i is used. When editing is complete, the
- edited commands are echoed and executed.
-
- In the second form, _c_o_m_m_a_n_d is re-executed after
- each instance of _p_a_t is replaced by _r_e_p. A useful
- alias to use with this is ``r=fc -s'', so that typ-
- ing ``r cc'' runs the last command beginning with
- ``cc'' and typing ``r'' re-executes the last com-
- mand.
-
- If the first form is used, the return value is 0
- unless an invalid option is encountered or _f_i_r_s_t or
- _l_a_s_t specify history lines out of range. If the --ee
- option is supplied, the return value is the value
- of the last command executed or failure if an error
- occurs with the temporary file of commands. If the
- second form is used, the return status is that of
- the command re-executed, unless _c_m_d does not spec-
- ify a valid history line, in which case ffcc returns
- failure.
-
- ffgg [_j_o_b_s_p_e_c]
- Resume _j_o_b_s_p_e_c in the foreground, and make it the
- current job. If _j_o_b_s_p_e_c is not present, the
- shell's notion of the _c_u_r_r_e_n_t _j_o_b is used. The
- return value is that of the command placed into the
- foreground, or failure if run when job control is
- disabled or, when run with job control enabled, if
- _j_o_b_s_p_e_c does not specify a valid job or _j_o_b_s_p_e_c
- specifies a job that was started without job con-
- trol.
-
- ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g_s]
- ggeettooppttss is used by shell procedures to parse
-
-
-
- GNU 1998 Apr 1 66
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- positional parameters. _o_p_t_s_t_r_i_n_g contains the
- option letters to be recognized; if a letter is
- followed by a colon, the option is expected to have
- an argument, which should be separated from it by
- white space. Each time it is invoked, ggeettooppttss
- places the next option in the shell variable _n_a_m_e,
- initializing _n_a_m_e if it does not exist, and the
- index of the next argument to be processed into the
- variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to 1 each
- time the shell or a shell script is invoked. When
- an option requires an argument, ggeettooppttss places that
- argument into the variable OOPPTTAARRGG. The shell does
- not reset OOPPTTIINNDD automatically; it must be manually
- reset between multiple calls to ggeettooppttss within the
- same shell invocation if a new set of parameters is
- to be used.
-
- When the end of options is encountered, ggeettooppttss
- exits with a return value greater than zero.
- OOPPTTIINNDD is set to the index of the first non-option
- argument, and nnaammee is set to ?.
-
- ggeettooppttss normally parses the positional parameters,
- but if more arguments are given in _a_r_g_s, ggeettooppttss
- parses those instead.
-
- ggeettooppttss can report errors in two ways. If the
- first character of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t
- error reporting is used. In normal operation diag-
- nostic messages are printed when invalid options or
- missing option arguments are encountered. If the
- variable OOPPTTEERRRR is set to 0, no error messages will
- be displayed, even if the first character of _o_p_t_-
- _s_t_r_i_n_g is not a colon.
-
- If an invalid option is seen, ggeettooppttss places ? into
- _n_a_m_e and, if not silent, prints an error message
- and unsets OOPPTTAARRGG. If ggeettooppttss is silent, the
- option character found is placed in OOPPTTAARRGG and no
- diagnostic message is printed.
-
- If a required argument is not found, and ggeettooppttss is
- not silent, a question mark (??) is placed in _n_a_m_e,
- OOPPTTAARRGG is unset, and a diagnostic message is
- printed. If ggeettooppttss is silent, then a colon (::) is
- placed in _n_a_m_e and OOPPTTAARRGG is set to the option
- character found.
-
- ggeettooppttss returns true if an option, specified or
- unspecified, is found. It returns false if the end
- of options is encountered or an error occurs.
-
- hhaasshh [--rr] [--pp _f_i_l_e_n_a_m_e] [_n_a_m_e]
- For each _n_a_m_e, the full file name of the command is
-
-
-
- GNU 1998 Apr 1 67
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- determined by searching the directories in $$PPAATTHH
- and remembered. If the --pp option is supplied, no
- path search is performed, and _f_i_l_e_n_a_m_e is used as
- the full file name of the command. The --rr option
- causes the shell to forget all remembered loca-
- tions. If no arguments are given, information
- about remembered commands is printed. The return
- status is true unless a _n_a_m_e is not found or an
- invalid option is supplied.
-
- hheellpp [_p_a_t_t_e_r_n]
- Display helpful information about builtin commands.
- If _p_a_t_t_e_r_n is specified, hheellpp gives detailed help
- on all commands matching _p_a_t_t_e_r_n; otherwise help
- for all the builtins and shell control structures
- is printed. The return status is 0 unless no com-
- mand matches _p_a_t_t_e_r_n.
-
- hhiissttoorryy [--cc] [_n]
- hhiissttoorryy --aannrrww [_f_i_l_e_n_a_m_e]
- hhiissttoorryy --pp _a_r_g [_a_r_g _._._.]
- hhiissttoorryy --ss _a_r_g [_a_r_g _._._.]
- With no options, display the command history list
- with line numbers. Lines listed with a ** have been
- modified. An argument of _n lists only the last _n
- lines. If _f_i_l_e_n_a_m_e is supplied, it is used as the
- name of the history file; if not, the value of
- HHIISSTTFFIILLEE is used. Options, if supplied, have the
- following meanings:
- --aa Append the ``new'' history lines (history
- lines entered since the beginning of the
- current bbaasshh session) to the history file.
- --nn Read the history lines not already read from
- the history file into the current history
- list. These are lines appended to the his-
- tory file since the beginning of the current
- bbaasshh session.
- --rr Read the contents of the history file and
- use them as the current history.
- --ww Write the current history to the history
- file, overwriting the history file's con-
- tents.
- --cc Clear the history list by deleting all the
- entries.
- --pp Perform history substitution on the follow-
- ing _a_r_g_s and display the result on the stan-
- dard output. Does not store the results in
- the history list. Each _a_r_g must be quoted
- to disable normal history expansion.
- --ss Store the _a_r_g_s in the history list as a sin-
- gle entry. The last command in the history
- list is removed before the _a_r_g_s are added.
-
- The return value is 0 unless an invalid option is
-
-
-
- GNU 1998 Apr 1 68
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- encountered or an error occurs while reading or
- writing the history file.
-
- jjoobbss [--llnnpprrss] [ _j_o_b_s_p_e_c ... ]
- jjoobbss --xx _c_o_m_m_a_n_d [ _a_r_g_s ... ]
- The first form lists the active jobs. The options
- have the following meanings:
- --ll List process IDs in addition to the normal
- information.
- --pp List only the process ID of the job's pro-
- cess group leader.
- --nn Display information only about jobs that
- have changed status since the user was last
- notified of their status.
- --rr Restrict output to running jobs.
- --ss Restrict output to stopped jobs.
-
- If _j_o_b_s_p_e_c is given, output is restricted to infor-
- mation about that job. The return status is 0
- unless an invalid option is encountered or an
- invalid _j_o_b_s_p_e_c is supplied.
-
- If the --xx option is supplied, jjoobbss replaces any
- _j_o_b_s_p_e_c found in _c_o_m_m_a_n_d or _a_r_g_s with the corre-
- sponding process group ID, and executes _c_o_m_m_a_n_d
- passing it _a_r_g_s, returning its exit status.
-
- kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c]
- ...
- kkiillll --ll [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s]
- Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the
- processes named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is
- either a signal name such as SSIIGGKKIILLLL or a signal
- number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is a
- signal name, the name may be given with or without
- the SSIIGG prefix. If _s_i_g_s_p_e_c is not present, then
- SSIIGGTTEERRMM is assumed. An argument of --ll lists the
- signal names. If any arguments are supplied when
- --ll is given, the names of the signals corresponding
- to the arguments are listed, and the return status
- is 0. The _e_x_i_t___s_t_a_t_u_s argument to --ll is a number
- specifying either a signal number or the exit sta-
- tus of a process terminated by a signal. kkiillll
- returns true if at least one signal was success-
- fully sent, or false if an error occurs or an
- invalid option is encountered.
-
- lleett _a_r_g [_a_r_g ...]
- Each _a_r_g is an arithmetic expression to be evalu-
- ated (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN). If the last _a_r_g
- evaluates to 0, lleett returns 1; 0 is returned other-
- wise.
-
-
-
-
-
- GNU 1998 Apr 1 69
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- llooccaall [_n_a_m_e[=_v_a_l_u_e] ...]
- For each argument, a local variable named _n_a_m_e is
- created, and assigned _v_a_l_u_e. When llooccaall is used
- within a function, it causes the variable _n_a_m_e to
- have a visible scope restricted to that function
- and its children. With no operands, llooccaall writes a
- list of local variables to the standard output. It
- is an error to use llooccaall when not within a func-
- tion. The return status is 0 unless llooccaall is used
- outside a function, or an invalid _n_a_m_e is supplied.
-
- llooggoouutt Exit a login shell.
-
- ppooppdd [-nn] [+_n] [-_n]
- Removes entries from the directory stack. With no
- arguments, removes the top directory from the
- stack, and performs a ccdd to the new top directory.
- Arguments, if supplied, have the following mean-
- ings:
- ++_n Removes the _nth entry counting from the left
- of the list shown by ddiirrss, starting with
- zero. For example: ``popd +0'' removes the
- first directory, ``popd +1'' the second.
- --_n Removes the _nth entry counting from the
- right of the list shown by ddiirrss, starting
- with zero. For example: ``popd -0'' removes
- the last directory, ``popd -1'' the next to
- last.
- --nn Suppresses the normal change of directory
- when removing directories from the stack, so
- that only the stack is manipulated.
-
- If the ppooppdd command is successful, a ddiirrss is per-
- formed as well, and the return status is 0. ppooppdd
- returns false if an invalid option is encountered,
- the directory stack is empty, a non-existent direc-
- tory stack entry is specified, or the directory
- change fails.
-
- pprriinnttff _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s]
- Write the formatted _a_r_g_u_m_e_n_t_s to the standard out-
- put under the control of the _f_o_r_m_a_t. The _f_o_r_m_a_t 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 out-
- put, and format specifications, each of which
- causes printing of the next successive _a_r_g_u_m_e_n_t.
- In addition to the standard _p_r_i_n_t_f(1) formats, %b
- causes pprriinnttff to expand backslash escape sequences
- in the corresponding _a_r_g_u_m_e_n_t, and %q causes pprriinnttff
- to output the corresponding _a_r_g_u_m_e_n_t in a format
- that can be reused as shell input.
-
-
-
-
- GNU 1998 Apr 1 70
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- The _f_o_r_m_a_t is reused as necessary to consume all of
- the _a_r_g_u_m_e_n_t_s. If the _f_o_r_m_a_t requires more _a_r_g_u_-
- _m_e_n_t_s than are supplied, the extra format specifi-
- cations behave as if a zero value or null string,
- as appropriate, had been supplied.
-
- ppuusshhdd [--nn] [_d_i_r]
- ppuusshhdd [--nn] [+_n] [-_n]
- Adds a directory to the top of the directory stack,
- or rotates the stack, making the new top of the
- stack the current working directory. With no argu-
- ments, exchanges the top two directories and
- returns 0, unless the directory stack is empty.
- Arguments, if supplied, have the following mean-
- ings:
- ++_n Rotates the stack so that the _nth directory
- (counting from the left of the list shown by
- ddiirrss, starting with zero) is at the top.
- --_n Rotates the stack so that the _nth directory
- (counting from the right of the list shown
- by ddiirrss, starting with zero) is at the top.
- --nn Suppresses the normal change of directory
- when adding directories to the stack, so
- that only the stack is manipulated.
- ddiirr Adds _d_i_r to the directory stack at the top,
- making it the new current working directory.
-
- If the ppuusshhdd command is successful, a ddiirrss is per-
- formed as well. If the first form is used, ppuusshhdd
- returns 0 unless the cd to _d_i_r fails. With the
- second form, ppuusshhdd returns 0 unless the directory
- stack is empty, a non-existent directory stack ele-
- ment is specified, or the directory change to the
- specified new current directory fails.
-
- ppwwdd [--LLPP]
- Print the absolute file name of the current working
- directory. The file name printed contains no sym-
- bolic links if the --PP option is supplied or the --oo
- pphhyyssiiccaall option to the sseett builtin command is
- enabled. If the --LL option is used, symbolic links
- are followed. The return status is 0 unless an
- error occurs while reading the name of the current
- directory or an invalid option is supplied.
-
- rreeaadd [--eerr] [--aa _a_n_a_m_e] [--pp _p_r_o_m_p_t] [_n_a_m_e ...]
- One line is read from the standard input, and the
- first word is assigned to the first _n_a_m_e, the sec-
- ond word to the second _n_a_m_e, and so on, with left-
- over words and their intervening separators
- assigned to the last _n_a_m_e. If there are fewer
- words read from the standard input than names, the
- remaining names are assigned empty values. The
- characters in IIFFSS are used to split the line into
-
-
-
- GNU 1998 Apr 1 71
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- words. Options, if supplied, have the following
- meanings:
- --rr A backslash-newline pair is not ignored, and
- the backslash is considered to be part of
- the line.
- --pp Display _p_r_o_m_p_t, without a trailing newline,
- before attempting to read any input. The
- prompt is displayed only if input is coming
- from a terminal.
- --aa The words are assigned to sequential indices
- of the array variable _a_n_a_m_e, starting at 0.
- _a_n_a_m_e is unset before any new values are
- assigned. Other _n_a_m_e arguments are ignored.
- --ee If the standard input is coming from a ter-
- minal, rreeaaddlliinnee (see RREEAADDLLIINNEE above) is used
- to obtain the line.
-
- If no _n_a_m_e_s are supplied, the line read is assigned
- to the variable RREEPPLLYY. The return code is zero,
- unless end-of-file is encountered.
-
- rreeaaddoonnllyy [--aappff] [_n_a_m_e ...]
- The given _n_a_m_e_s are marked readonly; the values of
- these _n_a_m_e_s may not be changed by subsequent
- assignment. If the --ff option is supplied, the
- functions corresponding to the _n_a_m_e_s are so marked.
- The --aa option restricts the variables to arrays.
- If no _n_a_m_e arguments are given, or if the --pp option
- is supplied, a list of all readonly names is
- printed. The --pp option causes output to be dis-
- played in a format thatmay be reused as input. The
- return status is 0 unless an invalid option is
- encountered, one of the _n_a_m_e_s is not a valid shell
- variable name, or --ff is supplied with a _n_a_m_e that
- is not a function.
-
- rreettuurrnn [_n]
- Causes a function to exit with the return value
- specified by _n. If _n is omitted, the return status
- is that of the last command executed in the func-
- tion body. If used outside a function, but during
- execution of a script by the .. (ssoouurrccee) command,
- it causes the shell to stop executing that script
- and return either _n or the exit status of the last
- command executed within the script as the exit sta-
- tus of the script. If used outside a function and
- not during execution of a script by .., the return
- status is false.
-
- sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCHHPP] [--oo _o_p_t_i_o_n] [_a_r_g ...]
- Without options, the name and value of each shell
- variable are displayed in a format that can be
- reused as input. The output is sorted according to
- the current locale. When options are specified,
-
-
-
- GNU 1998 Apr 1 72
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- they set or unset shell attributes. Any arguments
- remaining after the options are processed are
- treated as values for the positional parameters and
- are assigned, in order, to $$11, $$22, ...... $$_n.
- Options, if specified, have the following meanings:
- --aa Automatically mark variables which are mod-
- ified or created for export to the environ-
- ment of subsequent commands.
- --bb Report the status of terminated background
- jobs immediately, rather than before the
- next primary prompt. This is effective
- only when job control is enabled.
- --ee Exit immediately if a _s_i_m_p_l_e _c_o_m_m_a_n_d (see
- SSHHEELLLL GGRRAAMMMMAARR above) exits with a non-zero
- status. The shell does not exit if the
- command that fails is part of an _u_n_t_i_l or
- _w_h_i_l_e loop, part of an _i_f statement, part
- of a &&&& or |||| list, or if the command's
- return value is being inverted via !!.
- --ff Disable pathname expansion.
- --hh Remember the location of commands as they
- are looked up for execution. This is
- enabled by default.
- --kk All arguments in the form of assignment
- statements are placed in the environment
- for a command, not just those that precede
- the command name.
- --mm Monitor mode. Job control is enabled.
- This option is on by default for interac-
- tive shells on systems that support it (see
- JJOOBB CCOONNTTRROOLL above). Background processes
- run in a separate process group and a line
- containing their exit status is printed
- upon their completion.
- --nn Read commands but do not execute them.
- This may be used to check a shell script
- for syntax errors. This is ignored by
- interactive shells.
- --oo _o_p_t_i_o_n_-_n_a_m_e
- The _o_p_t_i_o_n_-_n_a_m_e can be one of the follow-
- ing:
- aalllleexxppoorrtt
- Same as --aa.
- bbrraacceeeexxppaanndd
- Same as --BB.
- eemmaaccss Use an emacs-style command line
- editing interface. This is enabled
- by default when the shell is inter-
- active, unless the shell is started
- with the ----nnooeeddiittiinngg option.
- eerrrreexxiitt Same as --ee.
- hhaasshhaallll Same as --hh.
- hhiisstteexxppaanndd
- Same as --HH.
-
-
-
- GNU 1998 Apr 1 73
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- hhiissttoorryy Enable command history, as
- described above under HHIISSTTOORRYY.
- This option is on by default in
- interactive shells.
- iiggnnoorreeeeooff
- The effect is as if the shell com-
- mand IGNOREEOF=10 hhaadd bbeeeenn eexxeeccuutteedd
- ((sseeee SShheellll VVaarriiaabblleess above).
- kkeeyywwoorrdd Same as --kk.
- mmoonniittoorr Same as --mm.
- nnoocclloobbbbeerr
- Same as --CC.
- nnooeexxeecc Same as --nn.
- nnoogglloobb Same as --ff.
- nnoottiiffyy Same as --bb.
- nnoouunnsseett Same as --uu.
- oonneeccmmdd Same as --tt.
- pphhyyssiiccaall
- Same as --PP.
- ppoossiixx Change the behavior of bbaasshh where
- the default operation differs from
- the POSIX 1003.2 standard to match
- the standard.
- pprriivviilleeggeedd
- Same as --pp.
- vveerrbboossee Same as --vv.
- vvii Use a vi-style command line editing
- interface.
- xxttrraaccee Same as --xx.
- If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the
- values of the current options are printed.
- If ++oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, a
- series of sseett commands to recreate the cur-
- rent option settings is displayed on the
- standard output.
- --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the
- $$EENNVV file is not processed, shell functions
- are not inherited from the environment, and
- the variable The SSHHEELLLLOOPPTTSS variable, if it
- appears in the environment, is ignored.
- This is enabled automatically on startup if
- the effective user (group) id is not equal
- to the real user (group) id. Turning this
- option off causes the effective user and
- group ids to be set to the real user and
- group ids.
- --tt Exit after reading and executing one com-
- mand.
- --uu Treat unset variables as an error when per-
- forming parameter expansion. If expansion
- is attempted on an unset variable, the
- shell prints an error message, and, if not
- interactive, exits with a non-zero status.
- --vv Print shell input lines as they are read.
-
-
-
- GNU 1998 Apr 1 74
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, dis-
- play the expanded value of PPSS44, followed by
- the command and its expanded arguments.
- --BB The shell performs brace expansion (see
- BBrraaccee EExxppaannssiioonn above). This is on by
- default.
- --CC If set, bbaasshh does not overwrite an existing
- file with the >>, >>&&, and <<>> redirection
- operators. This may be overridden when
- creating output files by using the redirec-
- tion operator >>|| instead of >>.
- --HH Enable !! style history substitution. This
- option is on by default when the shell is
- interactive.
- --PP If set, the shell does not follow symbolic
- links when executing commands such as ccdd
- that change the current working directory.
- It uses the physical directory structure
- instead. By default, bbaasshh follows the log-
- ical chain of directories when performing
- commands which change the current direc-
- tory.
- ---- If no arguments follow this option, then
- the positional parameters are unset. Oth-
- erwise, the positional parameters are set
- to the _a_r_gs, even if some of them begin
- with a --.
- -- Signal the end of options, cause all
- remaining _a_r_gs to be assigned to the posi-
- tional parameters. The --xx and --vv options
- are turned off. If there are no _a_r_gs, the
- positional parameters remain unchanged.
-
- The options are off by default unless otherwise
- noted. Using + rather than - causes these options
- to be turned off. The options can also be speci-
- fied as arguments to an invocation of the shell.
- The current set of options may be found in $$--. The
- return status is always true unless an invalid
- option is encountered.
-
- sshhiifftt [_n]
- The positional parameters from _n+1 ... are renamed
- to $$11 ........ Parameters represented by the numbers
- $$## down to $$##-_n+1 are unset. _n must be a non-nega-
- tive number less than or equal to $$##. If _n is 0,
- no parameters are changed. If _n is not given, it
- is assumed to be 1. If _n is greater than $$##, the
- positional parameters are not changed. The return
- status is greater than zero if _n is greater than $$##
- or less than zero; otherwise 0.
-
- sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...]
- Toggle the values of variables controlling optional
-
-
-
- GNU 1998 Apr 1 75
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- shell behavior. With no options, or with the --pp
- option, a list of all settable options is dis-
- played, with an indication of whether or not each
- is set. The --pp option causes output to be dis-
- played in a form that may be reused as input.
- Other options have the following meanings:
- --ss Enable (set) each _o_p_t_n_a_m_e.
- --uu Disable (unset) each _o_p_t_n_a_m_e.
- --qq Suppresses normal output (quiet mode); the
- return status indicates whether the _o_p_t_n_a_m_e
- is set or unset. If multiple _o_p_t_n_a_m_e argu-
- ments are given with --qq, the return status
- is zero if all _o_p_t_n_a_m_e_s are enabled; non-
- zero otherwise.
- --oo Restricts the values of _o_p_t_n_a_m_e to be those
- defined for the --oo option to the sseett
- builtin.
-
- If either --ss or --uu is used with no _o_p_t_n_a_m_e argu-
- ments, the display is limited to those options
- which are set or unset, respectively. Unless oth-
- erwise noted, the sshhoopptt options are disabled
- (unset) by default.
-
- The return status when listing options is zero if
- all _o_p_t_n_a_m_e_s are enabled, non-zero otherwise. When
- setting or unsetting options, the return status is
- zero unless an _o_p_t_n_a_m_e is not a valid shell option.
-
- The list of sshhoopptt options is:
-
- ccddaabbllee__vvaarrss
- If set, an argument to the ccdd builtin com-
- mand that is not a directory is assumed to
- be the name of a variable whose value is
- the directory to change to.
- ccddssppeellll If set, minor errors in the spelling of a
- directory component in a ccdd command will be
- corrected. The errors checked for are
- transposed characters, a missing character,
- and one character too many. If a correc-
- tion is found, the corrected file name is
- printed, and the command proceeds. This
- option is only used by interactive shells.
- cchheecckkhhaasshh
- If set, bbaasshh checks that a command found in
- the hash table exists before trying to exe-
- cute it. If a hashed command no longer
- exists, a normal path search is performed.
- cchheecckkwwiinnssiizzee
- If set, bbaasshh checks the window size after
- each command and, if necessary, updates the
- values of LLIINNEESS and CCOOLLUUMMNNSS.
- ccmmddhhiisstt If set, bbaasshh attempts to save all lines of
-
-
-
- GNU 1998 Apr 1 76
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- a multiple-line command in the same history
- entry. This allows easy re-editing of
- multi-line commands.
- ddoottgglloobb If set, bbaasshh includes filenames beginning
- with a `.' in the results of pathname
- expansion.
- eexxeeccffaaiill
- If set, a non-interactive shell will not
- exit if it cannot execute the file speci-
- fied as an argument to the eexxeecc builtin
- command. An interactive shell does not
- exit if eexxeecc fails.
- eexxppaanndd__aalliiaasseess
- If set, aliases are expanded as described
- above under AALLIIAASSEESS. This option is
- enabled by default for interactive shells.
- eexxttgglloobb If set, the extended pattern matching fea-
- tures described above under PPaatthhnnaammee EExxppaann--
- ssiioonn are enabled.
- hhiissttaappppeenndd
- If set, the history list is appended to the
- file named by the value of the HHIISSTTFFIILLEE
- variable when the shell exits, rather than
- overwriting the file.
- hhiissttrreeeeddiitt
- If set, and rreeaaddlliinnee is being used, a user
- is given the opportunity to re-edit a
- failed history substitution.
- hhiissttvveerriiffyy
- If set, and rreeaaddlliinnee is being used, the
- results of history substitution are not
- immediately passed to the shell parser.
- Instead, the resulting line is loaded into
- the rreeaaddlliinnee editing buffer, allowing fur-
- ther modification.
- hhoossttccoommpplleettee
- If set, and rreeaaddlliinnee is being used, bbaasshh
- will attempt to perform hostname completion
- when a word containing a @@ is being com-
- pleted (see CCoommpplleettiinngg under RREEAADDLLIINNEE
- above). This is enabled by default.
- hhuuppoonneexxiitt
- If set, bbaasshh will send SSIIGGHHUUPP to all jobs
- when an interactive login shell exits.
- iinntteerraaccttiivvee__ccoommmmeennttss
- If set, allow a word beginning with ## to
- cause that word and all remaining charac-
- ters on that line to be ignored in an
- interactive shell (see CCOOMMMMEENNTTSS above).
- This option is enabled by default.
- lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled,
- multi-line commands are saved to the his-
- tory with embedded newlines rather than
- using semicolon separators where possible.
-
-
-
- GNU 1998 Apr 1 77
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- mmaaiillwwaarrnn
- If set, and a file that bbaasshh is checking
- for mail has been accessed since the last
- time it was checked, the message ``The mail
- in _m_a_i_l_f_i_l_e has been read'' is displayed.
- nnooccaasseegglloobb
- If set, bbaasshh matches filenames in a
- case-insensitive fashion when performing
- pathname expansion (see PPaatthhnnaammee EExxppaannssiioonn
- above).
- nnuullllgglloobb
- If set, bbaasshh allows patterns which match no
- files (see PPaatthhnnaammee EExxppaannssiioonn above) to
- expand to a null string, rather than them-
- selves.
- pprroommppttvvaarrss
- If set, prompt strings undergo variable and
- parameter expansion after being expanded as
- described in PPRROOMMPPTTIINNGG above. This option
- is enabled by default.
- sshhiifftt__vveerrbboossee
- If set, the sshhiifftt builtin prints an error
- message when the shift count exceeds the
- number of positional parameters.
- ssoouurrcceeppaatthh
- If set, the ssoouurrccee (..) builtin uses the
- value of PPAATTHH to find the directory con-
- taining the file supplied as an argument.
- This option is enabled by default.
- ssuussppeenndd [--ff]
- Suspend the execution of this shell until it
- receives a SSIIGGCCOONNTT signal. The --ff option says not
- to complain if this is a login shell; just suspend
- anyway. The return status is 0 unless the shell is
- a login shell and --ff is not supplied, or if job
- control is not enabled.
- tteesstt _e_x_p_r
- [[ _e_x_p_r ]]
- Return a status of 0 or 1 depending on the evalua-
- tion of the conditional expression _e_x_p_r. Each
- operator and operand must be a separate argument.
- Expressions are composed of the primaries described
- above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS.
-
- Expressions may be combined using the following
- operators, listed in decreasing order of prece-
- dence.
- !! _e_x_p_r True if _e_x_p_r is false.
- (( _e_x_p_r ))
- Returns the value of _e_x_p_r. This may be used
- to override the normal precedence of opera-
- tors.
- _e_x_p_r_1 -aa _e_x_p_r_2
- True if both _e_x_p_r_1 and _e_x_p_r_2 are true.
-
-
-
- GNU 1998 Apr 1 78
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- _e_x_p_r_1 -oo _e_x_p_r_2
- True if either _e_x_p_r_1 or _e_x_p_r_2 is true.
-
- tteesstt and [[ 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 listed above
- under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expres-
- sion is true if the unary test is true. If
- the first argument is not a valid unary con-
- ditional operator, the expression is false.
- 3 arguments
- If the second argument is one of the binary
- conditional operators listed above under
- CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, 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 argu-
- ment. Otherwise, the expression is false.
- The --aa and --oo operators are considered
- binary operators in this case.
- 4 arguments
- If the first argument is !!, the result is
- the negation of the three-argument expres-
- sion 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.
-
- ttiimmeess Print the accumulated user and system times for the
- shell and for processes run from the shell. The
- return status is 0.
-
- ttrraapp [--llpp] [_a_r_g] [_s_i_g_s_p_e_c ...]
- The command _a_r_g is to be read and executed when the
- shell receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent
-
-
-
- GNU 1998 Apr 1 79
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- or --, all specified signals are reset to their
- original values (the values they had upon entrance
- to the shell). If _a_r_g is the null string the sig-
- nal specified by each _s_i_g_s_p_e_c is ignored by the
- shell and by the commands it invokes. If _a_r_g is --pp
- then the trap commands associated with each _s_i_g_s_p_e_c
- are displayed. If no arguments are supplied or if
- only --pp is given, ttrraapp prints the list of commands
- associated with each signal number. Each _s_i_g_s_p_e_c
- is either a signal name defined in <_s_i_g_n_a_l_._h>, or a
- signal number. If a _s_i_g_s_p_e_c is EEXXIITT (0) the com-
- mand _a_r_g is executed on exit from the shell. If a
- _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is executed after
- every _s_i_m_p_l_e _c_o_m_m_a_n_d (see SSHHEELLLL GGRRAAMMMMAARR above).
- The --ll option causes the shell to print a list of
- signal names and their corresponding numbers. Sig-
- nals ignored upon entry to the shell cannot be
- trapped or reset. Trapped signals are reset to
- their original values in a child process when it is
- created. The return status is false if any _s_i_g_s_p_e_c
- is invalid; otherwise ttrraapp returns true.
-
- ttyyppee [--aattpp] _n_a_m_e [_n_a_m_e ...]
- With no options, indicate how each _n_a_m_e would be
- interpreted if used as a command name. If the --tt
- option is used, ttyyppee prints a string which is one
- of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or _f_i_l_e if
- _n_a_m_e is an alias, shell reserved word, function,
- builtin, or disk file, respectively. If the _n_a_m_e
- is not found, then nothing is printed, and an exit
- status of false is returned. If the --pp option is
- used, ttyyppee either returns the name of the disk file
- that would be executed if _n_a_m_e were specified as a
- command name, or nothing if type -t name _w_o_u_l_d _n_o_t
- _r_e_t_u_r_n _f_i_l_e. If a command is hashed, --pp prints the
- hashed value, not necessarily the file that appears
- first in PPAATTHH. If the --aa option is used, ttyyppee
- prints all of the places that contain an executable
- named _n_a_m_e. This includes aliases and functions,
- if and only if the --pp option is not also used. The
- table of hashed commands is not consulted when
- using --aa. ttyyppee returns true if any of the argu-
- ments are found, false if none are found.
-
- uulliimmiitt [--SSHHaaccddffllmmnnppssttuuvv [_l_i_m_i_t]]
- Provides control over the resources available to
- the shell and to processes started by it, on sys-
- tems that allow such control. The value of _l_i_m_i_t
- can be a number in the unit specified for the
- resource, or the value uunnlliimmiitteedd. The --HH and --SS
- options specify that the hard or soft limit is set
- for the given resource. A hard limit cannot be
- increased once it is set; a soft limit may be
- increased up to the value of the hard limit. If
-
-
-
- GNU 1998 Apr 1 80
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- neither --HH nor --SS is specified, both the soft and
- hard limits are set. If _l_i_m_i_t is omitted, the cur-
- rent value of the soft limit of the resource is
- printed, unless the --HH option is given. When more
- than one resource is specified, the limit name and
- unit are printed before the value. Other options
- are interpreted as follows:
- --aa All current limits are reported
- --cc The maximum size of core files created
- --dd The maximum size of a process's data segment
- --ff The maximum size of files created by the
- shell
- --ll The maximum size that may be locked into
- memory
- --mm The maximum resident set size
- --nn The maximum number of open file descriptors
- (most systems do not allow this value to be
- set)
- --pp The pipe size in 512-byte blocks (this may
- not be set)
- --ss The maximum stack size
- --tt The maximum amount of cpu time in seconds
- --uu The maximum number of processes available to
- a single user
- --vv The maximum amount of virtual memory avail-
- able to the shell
-
- If _l_i_m_i_t is given, it is the new value of the spec-
- ified resource (the --aa option is display only). If
- no option is given, then --ff is assumed. Values are
- in 1024-byte increments, except for --tt, which is in
- seconds, --pp, which is in units of 512-byte blocks,
- and --nn and --uu, which are unscaled values. The
- return status is 0 unless an invalid option is
- encountered, a non-numeric argument other than
- uunnlliimmiitteedd is supplied as _l_i_m_i_t, or an error occurs
- while setting a new limit.
-
- uummaasskk [--pp] [--SS] [_m_o_d_e]
- The user file-creation mask is set to _m_o_d_e. If
- _m_o_d_e begins with a digit, it is interpreted as an
- octal number; otherwise it is interpreted as a sym-
- bolic mode mask similar to that accepted by
- _c_h_m_o_d(1). If _m_o_d_e is omitted, or if the --SS option
- is supplied, the current value of the mask is
- printed. The --SS option causes the mask to be
- printed in symbolic form; the default output is an
- octal number. If the --pp option is supplied, and
- _m_o_d_e is omitted, the output is in a form that may
- be reused as input. The return status is 0 if the
- mode was successfully changed or if no _m_o_d_e argu-
- ment was supplied, and false otherwise.
-
-
-
-
-
- GNU 1998 Apr 1 81
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- uunnaalliiaass [-aa] [_n_a_m_e ...]
- Remove _n_a_m_es from the list of defined aliases. If
- --aa is supplied, all alias definitions are removed.
- The return value is true unless a supplied _n_a_m_e is
- not a defined alias.
-
- uunnsseett [-ffvv] [_n_a_m_e ...]
- For each _n_a_m_e, remove the corresponding variable or
- function. If no options are supplied, or the --vv
- option is given, each _n_a_m_e refers to a shell vari-
- able. Read-only variables may not be unset. If --ff
- is specifed, each _n_a_m_e refers to a shell function,
- and the function definition is removed. Each unset
- variable or function is removed from the environ-
- ment passed to subsequent commands. If any of RRAANN--
- DDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, or DDIIRRSSTTAACCKK are
- unset, they lose their special properties, even if
- they are subsequently reset. The exit status is
- true unless a _n_a_m_e does not exist or is readonly.
-
- wwaaiitt [_n]
- Wait for the specified process and return its ter-
- mination status. _n may be a process ID or a job
- specification; if a job spec is given, all pro-
- cesses in that job's pipeline are waited for. If _n
- is not given, all currently active child processes
- are waited for, and the return status is zero. If
- _n specifies a non-existent process or job, the
- return status is 127. Otherwise, the return status
- is the exit status of the last process or job
- waited for.
-
- RREESSTTRRIICCTTEEDD SSHHEELLLL
- If bbaasshh is started with the name rrbbaasshh, or the --rr 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. It behaves identi-
- cally to bbaasshh with the exception that the following are
- disallowed or not performed:
-
- +o changing directories with ccdd
-
- +o setting or unsetting the values of SSHHEELLLL or PPAATTHH
-
- +o specifying command names containing //
-
- +o specifying a file name containing a // as an argu-
- ment to the .. builtin command
-
- +o importing function definitions from the shell envi-
- ronment at startup
-
- +o parsing the value of SSHHEELLLLOOPPTTSS from the shell envi-
- ronment at startup
-
-
-
- GNU 1998 Apr 1 82
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- +o redirecting output using the >, >|, <>, >&, &>, and
- >> redirection operators
-
- +o using the eexxeecc builtin command to replace the shell
- with another command
-
- +o adding or deleting builtin commands with the --ff and
- --dd options to the eennaabbllee builtin command
-
- +o specifying the --pp option to the ccoommmmaanndd builtin
- command
-
- +o turning off restricted mode with sseett ++rr or sseett ++oo
- rreessttrriicctteedd.
-
- These restrictions are enforced after any startup files
- are read.
-
- When a command that is found to be a shell script is exe-
- cuted (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any
- restrictions in the shell spawned to execute the script.
-
- SSEEEE AALLSSOO
- _B_a_s_h _F_e_a_t_u_r_e_s, Brian Fox and Chet Ramey
- _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey
- _P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e _(_P_O_S_I_X_) _P_a_r_t _2_:
- _S_h_e_l_l _a_n_d _U_t_i_l_i_t_i_e_s, IEEE
- _s_h(1), _k_s_h(1), _c_s_h(1)
- _e_m_a_c_s(1), _v_i(1)
- _r_e_a_d_l_i_n_e(3)
-
- FFIILLEESS
- _/_b_i_n_/_b_a_s_h
- The bbaasshh executable
- _/_e_t_c_/_p_r_o_f_i_l_e
- The systemwide initialization file, executed for
- login shells
- _~_/_._b_a_s_h___p_r_o_f_i_l_e
- The personal initialization file, executed for
- login shells
- _~_/_._b_a_s_h_r_c
- The individual per-interactive-shell startup file
- _~_/_._i_n_p_u_t_r_c
- Individual _r_e_a_d_l_i_n_e initialization file
-
- AAUUTTHHOORRSS
- Brian Fox, Free Software Foundation
- bfox@gnu.ai.MIT.Edu
-
- Chet Ramey, Case Western Reserve University
- chet@ins.CWRU.Edu
-
-
-
-
-
- GNU 1998 Apr 1 83
-
-
-
-
-
- BASH(1) BASH(1)
-
-
- BBUUGG RREEPPOORRTTSS
- If you find a bug in bbaasshh,, you should report it. But
- first, you should make sure that it really is a bug, and
- that it appears in the latest version of bbaasshh that you
- have.
-
- Once you have determined that a bug actually exists, use
- the _b_a_s_h_b_u_g 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 _b_u_g_-
- _b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup
- ggnnuu..bbaasshh..bbuugg.
-
- ALL bug reports should include:
-
- The version number of bbaasshh
- The hardware and operating system
- The compiler used to compile
- A description of the bug behaviour
- A short script or `recipe' which exercises the bug
-
- _b_a_s_h_b_u_g inserts the first three items automatically into
- the template it provides for filing a bug report.
-
- Comments and bug reports concerning this manual page
- should be directed to _c_h_e_t_@_i_n_s_._C_W_R_U_._E_d_u.
-
- BBUUGGSS
- It's too big and too slow.
-
- There are some subtle differences between bbaasshh and tradi-
- tional versions of sshh, mostly because of the PPOOSSIIXX speci-
- fication.
-
- Aliases are confusing in some uses.
-
- Shell builtin commands and functions are not stop-
- pable/restartable.
-
- Compound commands and command sequences of the form `a ; b
- ; c' are not handled gracefully when process suspension is
- attempted. When a process is stopped, the shell immedi-
- ately executes the next command in the sequence. It suf-
- fices to place the sequence of commands between parenthe-
- ses to force it into a subshell, which may be stopped as a
- unit.
-
- Commands inside of $$((...)) command substitution are not
- parsed until substitution is attempted. This will delay
- error reporting until some time after the command is
- entered.
-
- Array variables may not (yet) be exported.
-
-
-
-
- GNU 1998 Apr 1 84
-
-
-