From 9c8a70bc9e2572156fbece23e4153e68c267b510 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Fri, 7 Aug 2026 11:46:08 -0400 Subject: [PATCH] fix readline vi-mode mark commands to prevent errors if user types an arrow key where a mark name is expected; fix for non-ascii characters being included in variable names if the system isalnum(3) returns success for the character --- CWRU/CWRU.chlog | 26 + builtins/reserved.def | 2 +- doc/bash.0 | 13544 +++++++++++++++++++------------------- doc/bash.html | 13725 +++++++++++++++++++-------------------- doc/bash.info | 244 +- doc/bash.pdf | Bin 446265 -> 312984 bytes doc/bashref.aux | 2 +- doc/bashref.cp | 4 +- doc/bashref.cps | 4 +- doc/bashref.html | 2604 ++++---- doc/bashref.info | 244 +- doc/bashref.log | 46 +- doc/bashref.pdf | Bin 814924 -> 815595 bytes doc/bashref.toc | 2 +- doc/builtins.0 | 4608 +++++++------ doc/builtins.pdf | Bin 145578 -> 97802 bytes doc/rbash.0 | 77 +- general.h | 9 +- include/chartypes.h | 3 +- lib/readline/vi_mode.c | 12 + mksyntax.c | 45 +- po/id.gmo | Bin 81233 -> 82596 bytes po/id.po | 2935 +++++---- syntax.h | 2 + 24 files changed, 18698 insertions(+), 19440 deletions(-) diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 24968377..7e5d9371 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -13158,3 +13158,29 @@ lib/readline/display.c - rl_redisplay: make sure not to display any standout mode if the region is zero-length (rl_point == rl_mark) Report and fix from kurku + + 8/5 + --- +syntax.h + - CNAMESTART, CNAME: add flags for characters that are valid shell + variable name starters and characters, respectively + +mksyntax.c + - set CNAMESTART and CNAME for the appropriate characters from the + portable character set in sh_syntaxtab[] + + 8/6 + --- +lib/readline/vi_mode.c + - _rl_vi_set_mark,_rl_vi_goto_mark: if we read ESC for the mark + identifier, and we're reading from the terminal, check for queued + input and assume we have something like an arrow key sequence if + there is input available to be read. In this case, we push the + ESC back so we can read the entire arrow key or CSI sequence. + Report from kurku + +general.h + - legal_variable_starter,legal_variable_char: change to use the + appropriate CNAME and CNAMESTART flags from sh_syntaxtab[] + Report from zheng + diff --git a/builtins/reserved.def b/builtins/reserved.def index 359754e3..1b8ca551 100644 --- a/builtins/reserved.def +++ b/builtins/reserved.def @@ -264,7 +264,7 @@ MACHTYPE A string describing the current system Bash is running on. MAILCHECK How often, in seconds, Bash checks for new mail. MAILPATH A colon-separated list of filenames which Bash checks for new mail. -OSTYPE The version of Unix this version of Bash is running on. +OSTYPE The version of the operating system this version of Bash is running on. PATH A colon-separated list of directories to search when looking for commands. PROMPT_COMMAND A command to be executed before the printing of each diff --git a/doc/bash.0 b/doc/bash.0 index 87e6f8f9..d1d1bbcd 100644 --- a/doc/bash.0 +++ b/doc/bash.0 @@ -1,7638 +1,7376 @@ -_B_A_S_H(1) General Commands Manual _B_A_S_H(1) +_B_A_S_H(1) General Commands Manual _B_A_S_H(1) NNAAMMEE - bash - GNU Bourne-Again SHell + bash - GNU Bourne-Again SHell SSYYNNOOPPSSIISS - bbaasshh [options] [command_string | file] + bbaasshh [options] [command_string | file] CCOOPPYYRRIIGGHHTT - Bash is Copyright (C) 1989-2026 by the Free Software Foundation, Inc. + Bash is Copyright (C) 1989-2026 by the Free Software Foundation, Inc. DDEESSCCRRIIPPTTIIOONN - BBaasshh is a command language interpreter that executes commands read from - the standard input, from a string, or from a file. It is a reimplemen- - tation and extension of the Bourne shell, the historical Unix command - language interpreter. BBaasshh also incorporates useful features from the - _K_o_r_n and _C shells (kksshh and ccsshh). + BBaasshh is a command language interpreter that executes commands read from the + standard input, from a string, or from a file. It is a reimplementation + and extension of the Bourne shell, the historical Unix command language in- + terpreter. BBaasshh also incorporates useful features from the _K_o_r_n and _C + shells (kksshh and ccsshh). - POSIX is the name for a family of computing standards based on Unix. - BBaasshh is intended to be a conformant implementation of the Shell and - Utilities portion of the IEEE POSIX specification (IEEE Standard - 1003.1). BBaasshh POSIX mode (hereafter referred to as _p_o_s_i_x _m_o_d_e) changes - the shell's behavior where its default operation differs from the stan- - dard to strictly conform to the standard. See SSEEEE AALLSSOO below for a - reference to a document that details how posix mode affects bbaasshh's be- - havior. BBaasshh can be configured to be POSIX-conformant by default. + POSIX is the name for a family of computing standards based on Unix. BBaasshh + is intended to be a conformant implementation of the Shell and Utilities + portion of the IEEE POSIX specification (IEEE Standard 1003.1). BBaasshh POSIX + mode (hereafter referred to as _p_o_s_i_x _m_o_d_e) changes the shell's behavior + where its default operation differs from the standard to strictly conform + to the standard. See SSEEEE AALLSSOO below for a reference to a document that de- + tails how posix mode affects bbaasshh's behavior. BBaasshh can be configured to be + POSIX-conformant by default. OOPPTTIIOONNSS - All of the single-character shell options documented in the description - of the sseett builtin command, including --oo, can be used as options when - the shell is invoked. In addition, bbaasshh interprets the following op- - tions when it is invoked: + All of the single-character shell options documented in the description of + the sseett builtin command, including --oo, can be used as options when the + shell is invoked. In addition, bbaasshh interprets the following options when + it is invoked: - --cc If the --cc option is present, then commands are read from the - first non-option argument _c_o_m_m_a_n_d___s_t_r_i_n_g. If there are argu- - ments after the _c_o_m_m_a_n_d___s_t_r_i_n_g, the first argument is as- - signed to $$00 and any remaining arguments are assigned to the - positional parameters. The assignment to $$00 sets the name of - the shell, which is used in warning and error messages. + --cc If the --cc option is present, then commands are read from the + first non-option argument _c_o_m_m_a_n_d___s_t_r_i_n_g. If there are arguments + after the _c_o_m_m_a_n_d___s_t_r_i_n_g, the first argument is assigned to $$00 + and any remaining arguments are assigned to the positional para- + meters. The assignment to $$00 sets the name of the shell, which + is used in warning and error messages. - --ii If the --ii option is present, the shell is _i_n_t_e_r_a_c_t_i_v_e. + --ii If the --ii option is present, the shell is _i_n_t_e_r_a_c_t_i_v_e. - --ll Make bbaasshh act as if it had been invoked as a login shell (see - IINNVVOOCCAATTIIOONN below). + --ll Make bbaasshh act as if it had been invoked as a login shell (see IINN-- + VVOOCCAATTIIOONN below). - --rr If the --rr option is present, the shell becomes _r_e_s_t_r_i_c_t_e_d - (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). + --rr If the --rr option is present, the shell becomes _r_e_s_t_r_i_c_t_e_d (see + RREESSTTRRIICCTTEEDD SSHHEELLLL below). - --ss If the --ss option is present, or if no arguments remain after - option processing, the shell reads commands from the standard - input. This option allows the positional parameters to be - set when invoking an interactive shell or when reading input - through a pipe. + --ss If the --ss option is present, or if no arguments remain after op- + tion processing, the shell reads commands from the standard in- + put. This option allows the positional parameters to be set when + invoking an interactive shell or when reading input through a + pipe. - --DD Print a list of all double-quoted strings preceded by $$ on - the standard output. These are the strings that are subject - to language translation when the current locale is not CC or - PPOOSSIIXX. This implies the --nn option; no commands will be exe- - cuted. + --DD Print a list of all double-quoted strings preceded by $$ on the + standard output. These are the strings that are subject to lan- + guage translation when the current locale is not CC or PPOOSSIIXX. + This implies the --nn option; no commands will be executed. - [[--++]]OO [[_s_h_o_p_t___o_p_t_i_o_n]] - _s_h_o_p_t___o_p_t_i_o_n is one of the shell options accepted by the - sshhoopptt builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). If - _s_h_o_p_t___o_p_t_i_o_n is present, --OO sets the value of that option; ++OO - unsets it. If _s_h_o_p_t___o_p_t_i_o_n is not supplied, bbaasshh prints the - names and values of the shell options accepted by sshhoopptt on - the standard output. If the invocation option is ++OO, the - output is displayed in a format that may be reused as input. + [[--++]]OO [[_s_h_o_p_t___o_p_t_i_o_n]] + _s_h_o_p_t___o_p_t_i_o_n is one of the shell options accepted by the sshhoopptt + builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). If _s_h_o_p_t___o_p_t_i_o_n is + present, --OO sets the value of that option; ++OO unsets it. If + _s_h_o_p_t___o_p_t_i_o_n is not supplied, bbaasshh prints the names and values of + the shell options accepted by sshhoopptt on the standard output. If + the invocation option is ++OO, the output is displayed in a format + that may be reused as input. - ---- A ---- signals the end of options and disables further option - processing. Any arguments after the ---- are treated as a - shell script filename (see below) and arguments passed to - that script. An argument of -- is equivalent to ----. + ---- A ---- signals the end of options and disables further option pro- + cessing. Any arguments after the ---- are treated as a shell + script filename (see below) and arguments passed to that script. + An argument of -- is equivalent to ----. - BBaasshh also interprets a number of multi-character options. These op- - tions must appear on the command line before the single-character op- - tions to be recognized. + BBaasshh also interprets a number of multi-character options. These options + must appear on the command line before the single-character options to be + recognized. - ----ddeebbuuggggeerr - Arrange for the debugger profile to be executed before the shell - starts. Turns on extended debugging mode (see the description - of the eexxttddeebbuugg option to the sshhoopptt builtin below). + ----ddeebbuuggggeerr + Arrange for the debugger profile to be executed before the shell + starts. Turns on extended debugging mode (see the description of + the eexxttddeebbuugg option to the sshhoopptt builtin below). - ----dduummpp--ppoo--ssttrriinnggss - Equivalent to --DD, but the output is in the GNU _g_e_t_t_e_x_t "po" - (portable object) file format. + ----dduummpp--ppoo--ssttrriinnggss + Equivalent to --DD, but the output is in the GNU _g_e_t_t_e_x_t "po" + (portable object) file format. - ----dduummpp--ssttrriinnggss - Equivalent to --DD. + ----dduummpp--ssttrriinnggss + Equivalent to --DD. - ----hheellpp Display a usage message on standard output and exit success- - fully. + ----hheellpp + Display a usage message on standard output and exit successfully. - ----iinniitt--ffiillee _f_i_l_e - ----rrccffiillee _f_i_l_e - Execute commands from _f_i_l_e instead of the standard personal ini- - tialization file _~_/_._b_a_s_h_r_c if the shell is interactive (see IINN-- - VVOOCCAATTIIOONN below). + ----iinniitt--ffiillee _f_i_l_e + ----rrccffiillee _f_i_l_e + Execute commands from _f_i_l_e instead of the standard personal initial- + ization file _~_/_._b_a_s_h_r_c if the shell is interactive (see IINNVVOOCCAATTIIOONN + below). - ----llooggiinn - Equivalent to --ll. + ----llooggiinn + Equivalent to --ll. - ----nnooeeddiittiinngg - Do not use the GNU rreeaaddlliinnee library to read command lines when - the shell is interactive. + ----nnooeeddiittiinngg + Do not use the GNU rreeaaddlliinnee library to read command lines when the + shell is 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 be- - low). + ----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 in- + voked 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 de- - fault if the shell is invoked as sshh. + ----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 - Enable posix mode; change the behavior of bbaasshh where the default - operation differs from the POSIX standard to match the standard. + ----ppoossiixx + Enable posix mode; change the behavior of bbaasshh where the default op- + eration differs from the POSIX standard to match the standard. - ----rreessttrriicctteedd - The shell becomes restricted (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). + ----rreessttrriicctteedd + The shell becomes restricted (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). - ----vveerrbboossee - Equivalent to --vv. + ----vveerrbboossee + Equivalent to --vv. - ----vveerrssiioonn - Show version information for this instance of bbaasshh on the stan- - dard output and exit successfully. + ----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 treated as the name - of a file containing shell commands (a _s_h_e_l_l _s_c_r_i_p_t). When bbaasshh is in- - voked in this fashion, $$00 is set to the name of the file, and the posi- - tional parameters are set to the remaining arguments. BBaasshh reads and - executes commands from this file, then exits. BBaasshh's exit status is - the exit status of the last command executed in the script. If no com- - mands are executed, the exit status is 0. BBaasshh first attempts to open - the file in the current directory, and, if no file is found, searches - the directories in PPAATTHH for the script. + If arguments remain after option processing, and neither the --cc nor the --ss + option has been supplied, the first argument is treated as the name of a + file containing shell commands (a _s_h_e_l_l _s_c_r_i_p_t). When bbaasshh is invoked in + this fashion, $$00 is set to the name of the file, and the positional parame- + ters are set to the remaining arguments. BBaasshh reads and executes 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. BBaasshh first attempts to open the file in the current direc- + tory, and, if no file is found, searches the directories in PPAATTHH for the + script. IINNVVOOCCAATTIIOONN - A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument zero is a --, or - one started with the ----llooggiinn option. + A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument zero is a --, or one + started with the ----llooggiinn option. - An _i_n_t_e_r_a_c_t_i_v_e _s_h_e_l_l is one started without non-option arguments (un- - less --ss is specified) and without the --cc option, and whose standard in- - put and standard error are both connected to terminals (as determined - by _i_s_a_t_t_y(3)), or one started with the --ii option. BBaasshh sets PPSS11 and $$-- - includes ii if the shell is interactive, so a shell script or a startup - file can test this state. + An _i_n_t_e_r_a_c_t_i_v_e _s_h_e_l_l is one started without non-option arguments (unless --ss + is specified) and without the --cc option, and whose standard input and stan- + dard error are both connected to terminals (as determined by _i_s_a_t_t_y(3)), or + one started with the --ii option. BBaasshh sets PPSS11 and $$-- includes ii if the + shell is interactive, so a shell script or a startup file can test this + state. - A _n_o_n_-_i_n_t_e_r_a_c_t_i_v_e _s_h_e_l_l is, not surprisingly, one that does not satisfy - the tests for interactivity given above. A non-interactive shell is - usually started to run commands from a script file supplied as an argu- - ment (a _s_h_e_l_l _s_c_r_i_p_t) or from a string supplied with the --cc option. + A _n_o_n_-_i_n_t_e_r_a_c_t_i_v_e _s_h_e_l_l is, not surprisingly, one that does not satisfy the + tests for interactivity given above. A non-interactive shell is usually + started to run commands from a script file supplied as an argument (a _s_h_e_l_l + _s_c_r_i_p_t) or from a string supplied with the --cc option. - 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 in filenames are expanded as described below under TTiillddee EExxppaann-- - ssiioonn in the EEXXPPAANNSSIIOONN section. + 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 + in filenames are expanded as described below under TTiillddee EExxppaannssiioonn in the + EEXXPPAANNSSIIOONN section. - When bbaasshh is invoked as an interactive login shell, or as a non-inter- - active shell with the ----llooggiinn option, it first reads and executes com- - mands 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 bbaasshh is invoked as an interactive login shell, or as a non-interactive + shell with the ----llooggiinn option, 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 read- + able. The ----nnoopprrooffiillee option may be used when the shell is started to in- + hibit this behavior. - When an interactive login shell exits, or a non-interactive login shell - executes the eexxiitt builtin command, bbaasshh reads and executes commands - from the file _~_/_._b_a_s_h___l_o_g_o_u_t, if it exists. + When an interactive login shell exits, or a non-interactive login shell ex- + ecutes the eexxiitt builtin command, 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. The - ----nnoorrcc option inhibits this behavior. The ----rrccffiillee _f_i_l_e option causes - bbaasshh to use _f_i_l_e instead of _~_/_._b_a_s_h_r_c. + 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. The ----nnoorrcc op- + tion inhibits this behavior. The ----rrccffiillee _f_i_l_e option causes bbaasshh to use + _f_i_l_e instead of _~_/_._b_a_s_h_r_c. - When bbaasshh is started non-interactively, 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: + When bbaasshh is started non-interactively, it looks for the variable BBAASSHH__EENNVV + in the environment, expands its value if it appears there, and uses the ex- + panded 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 + if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi - but does not use the value of the PPAATTHH variable to search for the file- - name. + but does not use the value of the PPAATTHH variable to search for the filename. - If bbaasshh is invoked with the name sshh, it tries to mimic the startup be- - havior of historical versions of sshh as closely as possible, while con- - forming to the POSIX standard as well. When invoked as an interactive - login shell, or a non-interactive shell with the ----llooggiinn option, 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 inhibits this behav- - ior. 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 read and execute commands from - any other startup files, the ----rrccffiillee option has no effect. A non-in- - teractive shell invoked with the name sshh does not attempt to read any - other startup files. + 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, or + a non-interactive shell with the ----llooggiinn option, 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 inhibits 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 read and exe- + cute commands from any other startup files, the ----rrccffiillee option has no ef- + fect. A non-interactive shell invoked with the name sshh does not attempt to + read any other startup files. - When invoked as sshh, bbaasshh enters posix mode after reading the startup - files. + When invoked as sshh, bbaasshh enters posix mode after reading the startup files. - When bbaasshh is started in posix 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 read and execute com- - mands from the file whose name is the expanded value. A posix-mode - shell does not attempt to read any other startup files, even when in- - voked as a login shell. + When bbaasshh is started in posix mode, as with the ----ppoossiixx command line op- + tion, it follows the POSIX standard for startup files. In this mode, in- + teractive shells expand the EENNVV variable and read and execute commands from + the file whose name is the expanded value. A posix-mode shell does not at- + tempt to read any other startup files, even when invoked as a login shell. - BBaasshh attempts to determine when it is being run with its standard input - connected to a network connection, as when executed by the secure shell - daemon _s_s_h_d or the historical and rarely-seen remote shell daemon, usu- - ally _r_s_h_d. If bbaasshh determines it is being run non-interactively in - this fashion, it reads and executes commands from _~_/_._b_a_s_h_r_c, if that - file exists and is readable. BBaasshh does not read this file if invoked - as sshh. The ----nnoorrcc option inhibits this behavior, and the ----rrccffiillee op- - tion makes bbaasshh use a different file instead of _~_/_._b_a_s_h_r_c, but neither - _s_s_h_d nor _r_s_h_d generally invoke the shell with those options or allow - them to be specified. + BBaasshh attempts to determine when it is being run with its standard input + connected to a network connection, as when executed by the secure shell + daemon _s_s_h_d or the historical and rarely-seen remote shell daemon, usually + _r_s_h_d. If bbaasshh determines it is being run non-interactively in this fash- + ion, it reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists and + is readable. BBaasshh does not read this file if invoked as sshh. The ----nnoorrcc + option inhibits this behavior, and the ----rrccffiillee option makes bbaasshh use a + different file instead of _~_/_._b_a_s_h_r_c, but neither _s_s_h_d nor _r_s_h_d generally + invoke the shell with those options or allow them to be specified. - If the shell is started with the effective user (group) id not equal to - the real user (group) id, and the --pp option is not supplied, bash does - not attempt to read any startup files or _~_/_._b_a_s_h___l_o_g_o_u_t, does not in- - herit shell functions from the environment, ignores the SSHHEELLLLOOPPTTSS, - BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they appear in the envi- - ronment, and sets the effective user id to the real user id. If the --pp - option is supplied at invocation, the startup behavior is the same, but - bbaasshh does not reset the effective user id. + If the shell is started with the effective user (group) id not equal to the + real user (group) id, and the --pp option is not supplied, bash does not at- + tempt to read any startup files or _~_/_._b_a_s_h___l_o_g_o_u_t, does not inherit shell + functions from the environment, ignores the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, + and GGLLOOBBIIGGNNOORREE variables, if they appear in the environment, and sets the + effective user id to the real user id. If the --pp option is supplied at in- + vocation, the startup behavior is the same, but bbaasshh does not reset the ef- + fective user id. DDEEFFIINNIITTIIOONNSS - The following definitions are used throughout the rest of this docu- - ment. - bbllaannkk A space or tab. - wwhhiitteessppaaccee - A character belonging to the ssppaaccee character class in the cur- - rent locale, or for which _i_s_s_p_a_c_e(3) returns true. - 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 under- - scores, and beginning with an alphabetic character or an under- - score. Also referred to as an iiddeennttiiffiieerr. - mmeettaacchhaarraacctteerr - A character that, when unquoted, separates words. One of the - following: - || && ;; (( )) << >> ssppaaccee ttaabb nneewwlliinnee - ccoonnttrrooll ooppeerraattoorr - A _t_o_k_e_n that performs a control function. It is one of the fol- - lowing symbols: - |||| && &&&& ;; ;;;; ;;&& ;;;;&& (( )) || ||&& <> + The following definitions are used throughout the rest of this document. + bbllaannkk A space or tab. + wwhhiitteessppaaccee + A character belonging to the ssppaaccee character class in the current + locale, or for which _i_s_s_p_a_c_e(3) returns true. + 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 fol- + lowing: + || && ;; (( )) << >> ssppaaccee ttaabb nneewwlliinnee + ccoonnttrrooll ooppeerraattoorr + A _t_o_k_e_n that performs a control function. It is one of the follow- + ing symbols: + |||| && &&&& ;; ;;;; ;;&& ;;;;&& (( )) || ||&& <> 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 + _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 - +o the first word of a command (see SSHHEELLLL GGRRAAMMMMAARR below); + * the first word of a command (see SSHHEELLLL GGRRAAMMMMAARR below); - +o the first word following a reserved word other than ccaassee, ffoorr, - sseelleecctt, or iinn; + * the first word following a reserved word other than ccaassee, ffoorr, ssee-- + lleecctt, or iinn; - +o the third word of a ccaassee command (only iinn is valid); + * the third word of a ccaassee command (only iinn is valid); - +o the third word of a ffoorr or sseelleecctt command (only iinn and ddoo are - valid); + * the third word of a ffoorr or sseelleecctt command (only iinn and ddoo are + valid); - +o following a control operator. + * following a control operator. - The shell will also recognize reserved words where the syntax of a com- - mand specifically requires the reserved word as the only correct token. + The shell will also recognize reserved words where the syntax of a command + specifically requires the reserved word as the only correct token. - The following are reserved words: + The following are reserved words: - !! ccaassee ccoopprroocc ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt - tthheenn uunnttiill wwhhiillee {{ }} ttiimmee [[[[ ]]]] + !! ccaassee ccoopprroocc ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt tthheenn + uunnttiill wwhhiillee {{ }} ttiimmee [[[[ ]]]] SSHHEELLLL GGRRAAMMMMAARR - This section describes the syntax of the various forms of shell com- - mands. + This section describes the syntax of the various forms of shell commands. SSiimmppllee CCoommmmaannddss - A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol- - lowed by bbllaannkk-separated words and redirections, 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, - and is passed as argument zero. The remaining words are passed as ar- - guments to the invoked command. + 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 redirections, 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, and is passed as + argument zero. 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. + 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 one of - the control operators || or ||&&. The format for a pipeline is: + A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of the + control operators || or ||&&. The format for a pipeline is: - [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d_1 [ [|||||&&] _c_o_m_m_a_n_d_2 ... ] + [ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d_1 [ [|||||&&] _c_o_m_m_a_n_d_2 ... ] - The standard output of _c_o_m_m_a_n_d_1 is connected via a pipe to the standard - input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec- - tions specified by the _c_o_m_m_a_n_d_1(see RREEDDIIRREECCTTIIOONN below). If ||&& is the - pipeline operator, _c_o_m_m_a_n_d_1's standard error, in addition to its stan- - dard output, is connected to _c_o_m_m_a_n_d_2's standard input through the - pipe; it is shorthand for 22>>&&11 ||. This implicit redirection of the - standard error to the standard output is performed after any redirec- - tions specified by _c_o_m_m_a_n_d_1. + The standard output of _c_o_m_m_a_n_d_1 is connected via a pipe to the standard in- + put of _c_o_m_m_a_n_d_2. This connection is performed before any redirections + specified by the _c_o_m_m_a_n_d_1(see RREEDDIIRREECCTTIIOONN below). If ||&& is the pipeline + operator, _c_o_m_m_a_n_d_1's standard error, in addition to its standard output, is + connected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand + for 22>>&&11 ||. This implicit redirection of the standard error to the stan- + dard output is performed after any redirections specified by _c_o_m_m_a_n_d_1. - The return status of a pipeline is the exit status of the last command, - unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the - pipeline's return status is the value of the last (rightmost) command - to exit with a non-zero status, or zero if all commands exit success- - fully. If the reserved word !! precedes a pipeline, the exit status of - that pipeline is the logical negation of the exit status as described - above. If a pipeline is executed synchronously, the shell waits for - all commands in the pipeline to terminate before returning a value. + The return status of a pipeline is the exit status of the last command, un- + less the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the + pipeline's return status is the value of the last (rightmost) command to + exit with a non-zero status, or zero if all commands exit successfully. If + the reserved word !! precedes a pipeline, the exit status of that pipeline + is the logical negation of the exit status as described above. If a + pipeline is executed synchronously, the shell waits for all commands in the + pipeline to terminate before returning a value. - If the ttiimmee reserved word precedes a pipeline, the shell reports the - elapsed as well as user and system time consumed by its execution when - the pipeline terminates. The --pp option changes the output format to - that specified by POSIX. When the shell is in posix mode, it does not - recognize ttiimmee as a reserved word if the next token begins with a "-". - The value of the TTIIMMEEFFOORRMMAATT variable is a format string that specifies - how the timing information should be displayed; see the description of - TTIIMMEEFFOORRMMAATT below under SShheellll VVaarriiaabblleess. + If the ttiimmee reserved word precedes a pipeline, the shell reports the + elapsed as well as user and system time consumed by its execution when the + pipeline terminates. The --pp option changes the output format to that spec- + ified by POSIX. When the shell is in posix mode, it does not recognize + ttiimmee as a reserved word if the next token begins with a "-". The value of + the TTIIMMEEFFOORRMMAATT variable is a format string that specifies how the timing + information should be displayed; see the description of TTIIMMEEFFOORRMMAATT below + under SShheellll VVaarriiaabblleess. - When the shell is in posix mode, ttiimmee may appear by itself as the only - word in a simple command. In this case, the shell displays the total - user and system time consumed by the shell and its children. The TTIIMMEE-- - FFOORRMMAATT variable specifies the format of the time information. + When the shell is in posix mode, ttiimmee may appear by itself as the only word + in a simple command. In this case, the shell displays the total user and + system time consumed by the shell and its children. The TTIIMMEEFFOORRMMAATT vari- + able specifies the format of the time information. - Each command in a multi-command pipeline, where pipes are created, is - executed in a _s_u_b_s_h_e_l_l, which is a separate process. See CCOOMMMMAANNDD EEXXEE-- - CCUUTTIIOONN EENNVVIIRROONNMMEENNTT for a description of subshells and a subshell envi- - ronment. If the llaassttppiippee option is enabled using the sshhoopptt builtin - (see the description of sshhoopptt below), and job control is not active, - the last element of a pipeline may be run by the shell process. + Each command in a multi-command pipeline, where pipes are created, is exe- + cuted in a _s_u_b_s_h_e_l_l, which is a separate process. See CCOOMMMMAANNDD EEXXEECCUUTTIIOONN + EENNVVIIRROONNMMEENNTT for a description of subshells and a subshell environment. If + the llaassttppiippee option is enabled using the sshhoopptt builtin (see the description + of sshhoopptt below), and job control is not active, the last element of a + pipeline may be run by the shell process. LLiissttss - A _l_i_s_t is a sequence of one or more AND or OR lists separated by one of - the operators ;;, &&, or <>, and optionally terminated by one of - those three characters. + A _l_i_s_t is a sequence of one or more AND or OR lists separated by one of the + operators ;;, &&, or <>, and optionally terminated by one of those + three characters. - AND and OR lists are sequences of one or more pipelines separated by - the &&&& and |||| control operators, respectively. AND and OR lists are - executed with left associativity. + AND and OR lists are sequences of one or more pipelines separated by the &&&& + and |||| control operators, respectively. AND and OR lists are executed with + left associativity. - An AND list has the form + An AND list has the form - _c_o_m_m_a_n_d_1 &&&& _c_o_m_m_a_n_d_2 + _c_o_m_m_a_n_d_1 &&&& _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_1 returns an exit status - of zero (success). + _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns an exit status of + zero (success). - An OR list has the form + An OR list has the form - _c_o_m_m_a_n_d_1 |||| _c_o_m_m_a_n_d_2 + _c_o_m_m_a_n_d_1 |||| _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_1 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. + _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns a non-zero exit sta- + tus. The return status of AND and OR lists is the exit status of the last + command executed in the list. - Of these list operators, &&&& and |||| have equal precedence, followed by ;; - and &&, which have equal precedence. + Of these list operators, &&&& and |||| have equal precedence, followed by ;; and + &&, which have equal precedence. - A sequence of one or more newlines may appear in a _l_i_s_t instead of a - semicolon to delimit commands. + A sequence of one or more newlines may appear in a _l_i_s_t instead of a semi- + colon to delimit commands. - If a command is terminated by the control operator &&, the shell exe- - cutes the command asynchronously in a subshell. This is known as exe- - cuting a command in the _b_a_c_k_g_r_o_u_n_d, and these are referred to as _a_s_y_n_- - _c_h_r_o_n_o_u_s commands. The shell does not wait for the command to finish, - and the return status is 0. When job control is not active, the stan- - dard input for asynchronous commands, in the absence of any explicit - redirections involving the standard input, is redirected from - _/_d_e_v_/_n_u_l_l. + If a command is terminated by the control operator &&, the shell executes + the command asynchronously in a subshell. This is known as executing a + command in the _b_a_c_k_g_r_o_u_n_d, and these are referred to as _a_s_y_n_c_h_r_o_n_o_u_s com- + mands. The shell does not wait for the command to finish, and the return + status is 0. When job control is not active, the standard input for asyn- + chronous commands, in the absence of any explicit redirections involving + the standard input, is redirected from _/_d_e_v_/_n_u_l_l. - Commands separated or terminated by ;; (or an equivalent <>) are - executed sequentially; the shell waits for each command to terminate in - turn. + Commands separated or terminated by ;; (or an equivalent <>) are exe- + cuted sequentially; the shell waits for each command to terminate in turn. - The return status of a list is the exit status of the last command exe- - cuted. + The return status of a list is the exit status of the last command exe- + cuted. CCoommppoouunndd CCoommmmaannddss - A _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d is one of the following. In most cases a _l_i_s_t in a - command's description may be separated from the rest of the command by - one or more newlines, and may be followed by a newline in place of a - semicolon. + A _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d is one of the following. In most cases a _l_i_s_t in a com- + mand's description may be separated from the rest of the command by one or + more newlines, and may be followed by a newline in place of a semicolon. - (_l_i_s_t) _l_i_s_t is executed in a subshell (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONN-- - MMEENNTT below for a description of a subshell environment). Vari- - able assignments and builtin commands that affect the shell's - environment do not remain in effect after the command completes. - The return status is the exit status of _l_i_s_t. + (_l_i_s_t) + _l_i_s_t is executed in a subshell (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT + below for a description of a subshell environment). Variable as- + signments and builtin commands that affect the shell's environment + do not remain in effect after the command completes. The return + status is the exit status of _l_i_s_t. - { _l_i_s_t; } - _l_i_s_t is executed in the current shell environment. _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. + { _l_i_s_t; } + _l_i_s_t is executed in the current shell environment. _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. - Note that unlike the metacharacters (( and )), {{ and }} are _r_e_- - _s_e_r_v_e_d _w_o_r_d_s and must occur where a reserved word is permitted - to be recognized. Since they do not cause a word break, they - must be separated from _l_i_s_t by whitespace or another shell - metacharacter. + Note that unlike the metacharacters (( and )), {{ and }} are _r_e_s_e_r_v_e_d + _w_o_r_d_s and must occur where a reserved word is permitted to be recog- + nized. Since they do not cause a word break, they must be separated + from _l_i_s_t by whitespace or another shell metacharacter. - ((_e_x_p_r_e_s_s_i_o_n)) - The arithmetic _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. The _e_x_p_r_e_s_s_i_o_n undergoes the same ex- - pansions as if it were within double quotes, but unescaped dou- - ble quote characters in _e_x_p_r_e_s_s_i_o_n are not treated specially and - are removed. Since this can potentially result in empty - strings, this command treats those as expressions that evaluate - to 0. + ((_e_x_p_r_e_s_s_i_o_n)) + The arithmetic _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules de- + scribed below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If the value of the ex- + pression is non-zero, the return status is 0; otherwise the return + status is 1. The _e_x_p_r_e_s_s_i_o_n undergoes the same expansions as if it + were within double quotes, but unescaped double quote characters in + _e_x_p_r_e_s_s_i_o_n are not treated specially and are removed. Since this + can potentially result in empty strings, this command treats those + as expressions that evaluate to 0. - [[[[ _e_x_p_r_e_s_s_i_o_n ]]]] - Evaluate the conditional expression _e_x_p_r_e_s_s_i_o_n and return a sta- - tus of zero (true) or non-zero (false). Expressions are com- - posed of the primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESS-- - SSIIOONNSS. The words between the [[[[ and ]]]] do not undergo word - splitting and pathname expansion. The shell performs tilde ex- - pansion, parameter and variable expansion, arithmetic expansion, - command substitution, process substitution, and quote removal on - those words. Conditional operators such as --ff must be unquoted - to be recognized as primaries. + [[[[ _e_x_p_r_e_s_s_i_o_n ]]]] + Evaluate the conditional expression _e_x_p_r_e_s_s_i_o_n and return a status + of zero (true) or non-zero (false). Expressions are composed of the + primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. The words + between the [[[[ and ]]]] do not undergo word splitting and pathname ex- + pansion. The shell performs tilde expansion, parameter and variable + expansion, arithmetic expansion, command substitution, process sub- + stitution, and quote removal on those words. Conditional operators + such as --ff must be unquoted to be recognized as primaries. - When used with [[[[, the << and >> operators sort lexicographically - using the current locale. + When used with [[[[, the << and >> operators sort lexicographically us- + ing the current locale. - When the ==== and !!== operators are used, the string to the right - of the operator is considered a pattern and matched according to - the rules described below under PPaatttteerrnn MMaattcchhiinngg, as if the eexxtt-- - gglloobb shell option were enabled. The == operator is equivalent to - ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is - performed without regard to the case of alphabetic characters. - The return value is 0 if the string matches (====) or does not - match (!!==) the pattern, and 1 otherwise. If any part of the - pattern is quoted, the quoted portion is matched as a string: - every character in the quoted portion matches itself, instead of - having any special pattern matching meaning. + When the ==== and !!== operators are used, the string to the right of + the operator is considered a pattern and matched according to the + rules described below under PPaatttteerrnn MMaattcchhiinngg, as if the eexxttgglloobb + shell option were enabled. The == operator is equivalent to ====. If + the nnooccaasseemmaattcchh shell option is enabled, the match is performed + without regard to the case of alphabetic characters. The return + value is 0 if the string matches (====) or does not match (!!==) the + pattern, and 1 otherwise. If any part of the pattern is quoted, the + quoted portion is matched as a string: every character in the quoted + portion matches itself, instead of having any special pattern match- + ing meaning. - An additional binary operator, ==~~, is available, with the same - precedence as ==== and !!==. When it is used, the string to the - right of the operator is considered a POSIX extended regular ex- - pression and matched accordingly (using the POSIX _r_e_g_c_o_m_p and - _r_e_g_e_x_e_c interfaces usually described in _r_e_g_e_x(3)). The return - value is 0 if the string matches the pattern, and 1 otherwise. - If the regular expression is syntactically incorrect, the condi- - tional expression's return value is 2. If the nnooccaasseemmaattcchh shell - option is enabled, the match is performed without regard to the - case of alphabetic characters. + An additional binary operator, ==~~, is available, with the same + precedence as ==== and !!==. When it is used, the string to the right + of the operator is considered a POSIX extended regular expression + and matched accordingly (using the POSIX _r_e_g_c_o_m_p and _r_e_g_e_x_e_c inter- + faces usually described in _r_e_g_e_x(3)). The return value is 0 if the + string matches the pattern, and 1 otherwise. If the regular expres- + sion is syntactically incorrect, the conditional expression's return + value is 2. If the nnooccaasseemmaattcchh shell option is enabled, the match + is performed without regard to the case of alphabetic characters. - If any part of the pattern is quoted, the quoted portion is - matched literally, as above. If the pattern is stored in a - shell variable, quoting the variable expansion forces the entire - pattern to be matched literally. Treat bracket expressions in - regular expressions carefully, since normal quoting and pattern - characters lose their meanings between brackets. + If any part of the pattern is quoted, the quoted portion is matched + literally, as above. If the pattern is stored in a shell variable, + quoting the variable expansion forces the entire pattern to be + matched literally. Treat bracket expressions in regular expressions + carefully, since normal quoting and pattern characters lose their + meanings between brackets. - The match succeeds if the pattern matches any part of the - string. Anchor the pattern using the ^^ and $$ regular expression - operators to force it to match the entire string. + The match succeeds if the pattern matches any part of the string. + Anchor the pattern using the ^^ and $$ regular expression operators to + force it to match the entire string. - The array variable BBAASSHH__RREEMMAATTCCHH records which parts of the - string matched the pattern. BBaasshh unsets BBAASSHH__RREEMMAATTCCHH before at- - tempting the match, so if there is no match, it remains unset. - The element of BBAASSHH__RREEMMAATTCCHH with index 0 contains the portion of - the string matching the entire regular expression. Substrings - matched by parenthesized subexpressions within the regular ex- - pression are saved in the remaining BBAASSHH__RREEMMAATTCCHH indices. The - element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion of the - string matching the _nth parenthesized subexpression. BBaasshh sets - BBAASSHH__RREEMMAATTCCHH in the global scope if it is not set; if it is de- - clared as a local variable before running [[[[, bbaasshh keeps it a - local variable. + The array variable BBAASSHH__RREEMMAATTCCHH records which parts of the string + matched the pattern. BBaasshh unsets each element of BBAASSHH__RREEMMAATTCCHH be- + fore attempting the match, so if there is no match, it remains + empty. The element of BBAASSHH__RREEMMAATTCCHH with index 0 contains the por- + tion of the string matching the entire regular expression. Sub- + strings matched by parenthesized subexpressions within the regular + expression are saved in the remaining BBAASSHH__RREEMMAATTCCHH indices. The el- + ement of BBAASSHH__RREEMMAATTCCHH with index _n is the portion of the string + matching the _nth parenthesized subexpression. BBaasshh sets BBAASSHH__RREE-- + MMAATTCCHH in the global scope if it is not set; if it is declared as a + local variable before running [[[[, bbaasshh keeps it a local variable. - Expressions may be combined using the following operators, - listed in decreasing order of precedence: + Expressions may be combined using the following operators, listed in + decreasing order of precedence: - (( _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. + (( _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 over- + ride 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 evaluate _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. + The &&&& and |||| operators do not evaluate _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 en- + tire conditional expression. - ffoorr _n_a_m_e [ [ iinn _w_o_r_d _._._. ] ; ] ddoo _l_i_s_t ; ddoonnee - First, expand the list of words following iinn, generating a list - of items. Then, the variable _n_a_m_e is set to each element of - this list in turn, and _l_i_s_t is executed each time. If the iinn - _w_o_r_d is omitted, the ffoorr command executes _l_i_s_t once for each po- - sitional parameter that is set (see PPAARRAAMMEETTEERRSS below). The re- - turn status is the exit status of the last command that exe- - cutes. If the expansion of the items following iinn results in an - empty list, no commands are executed, and the return status is - 0. + ffoorr _n_a_m_e [ [ iinn _w_o_r_d _._._. ] ; ] ddoo _l_i_s_t ; ddoonnee + First, expand the list of words following iinn, generating a list of + items. Then, the variable _n_a_m_e is set to each element of this list + in turn, and _l_i_s_t is executed 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 command that executes. If the expansion of the + items following iinn results in an empty list, no commands are exe- + cuted, and the return status is 0. - ffoorr (( _e_x_p_r_1 ; _e_x_p_r_2 ; _e_x_p_r_3 )) [;] ddoo _l_i_s_t ; ddoonnee - First, evaluate the arithmetic expression _e_x_p_r_1 according to the - rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. Then, re- - peatedly evaluate the arithmetic expression _e_x_p_r_2 until it eval- - uates to zero. Each time _e_x_p_r_2 evaluates to a non-zero value, - execute _l_i_s_t and evaluate the arithmetic expression _e_x_p_r_3. If - any expression is omitted, it behaves as if it evaluates to 1. - The return value is the exit status of the last command in _l_i_s_t - that is executed, or non-zero if any of the expressions is in- - valid. + ffoorr (( _e_x_p_r_1 ; _e_x_p_r_2 ; _e_x_p_r_3 )) [;] ddoo _l_i_s_t ; ddoonnee + First, evaluate the arithmetic expression _e_x_p_r_1 according to the + rules described below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. Then, repeatedly + evaluate the arithmetic expression _e_x_p_r_2 until it evaluates to zero. + Each time _e_x_p_r_2 evaluates to a non-zero value, execute _l_i_s_t and + evaluate the arithmetic expression _e_x_p_r_3. If any expression is + omitted, it behaves as if it evaluates to 1. The return value is + the exit status of the last command in _l_i_s_t that is executed, or + non-zero if any of the expressions is invalid. - Use the bbrreeaakk and ccoonnttiinnuuee builtins (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS - below) to control loop execution. + Use the bbrreeaakk and ccoonnttiinnuuee builtins (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS be- + low) to control loop execution. - sseelleecctt _n_a_m_e [ [ iinn _w_o_r_d _._._. ] ; ] ddoo _l_i_s_t ; ddoonnee - First, expand the list of words following iinn, generating a list - of items, and print the set of expanded words the standard er- - ror, each preceded by a number. If the iinn _w_o_r_d is omitted, - print the positional parameters (see PPAARRAAMMEETTEERRSS below). sseelleecctt - then displays the PPSS33 prompt and reads a line from the standard - input. If the line consists of a number corresponding to one of - the displayed words, then sseelleecctt sets the value of _n_a_m_e to that - word. If the line is empty, sseelleecctt displays the words and - prompt again. If EOF is read, sseelleecctt completes and returns 1. - Any other value sets _n_a_m_e to null. The line read is saved in - the variable RREEPPLLYY. The _l_i_s_t is executed after each selection - until a bbrreeaakk 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. + sseelleecctt _n_a_m_e [ [ iinn _w_o_r_d _._._. ] ; ] ddoo _l_i_s_t ; ddoonnee + First, expand the list of words following iinn, generating a list of + items, and print the set of expanded words the standard error, each + preceded by a number. If the iinn _w_o_r_d is omitted, print the posi- + tional parameters (see PPAARRAAMMEETTEERRSS below). sseelleecctt then displays the + PPSS33 prompt and reads a line from the standard input. If the line + consists of a number corresponding to one of the displayed words, + then sseelleecctt sets the value of _n_a_m_e to that word. If the line is + empty, sseelleecctt displays the words and prompt again. If EOF is read, + sseelleecctt completes and returns 1. Any other value sets _n_a_m_e to null. + The line read is saved in the variable RREEPPLLYY. The _l_i_s_t is executed + after each selection until a bbrreeaakk 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, proceeding from first to last, using the - matching rules described under PPaatttteerrnn MMaattcchhiinngg below. The _w_o_r_d - is expanded using tilde expansion, parameter and variable expan- - sion, arithmetic expansion, command substitution, process sub- - stitution and quote removal. Each _p_a_t_t_e_r_n examined is expanded - using tilde expansion, parameter and variable expansion, arith- - metic expansion, command substitution, process substitution, and - quote removal. If the nnooccaasseemmaattcchh shell option is enabled, the - match is performed without regard to the case of alphabetic - characters. + 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, proceeding from first to last, using the + matching rules described under PPaatttteerrnn MMaattcchhiinngg below. The _w_o_r_d is + expanded using tilde expansion, parameter and variable expansion, + arithmetic expansion, command substitution, process substitution and + quote removal. Each _p_a_t_t_e_r_n examined is expanded using tilde expan- + sion, parameter and variable expansion, arithmetic expansion, com- + mand substitution, process substitution, and quote removal. If the + nnooccaasseemmaattcchh shell option is enabled, the match is performed without + regard to the case of alphabetic characters. - A _p_a_t_t_e_r_n _l_i_s_t is a set of one or more patterns separated by ||, - and terminated by the )) operator. A case _c_l_a_u_s_e is a pattern - list and an associated _l_i_s_t, terminated by ;;;;, ;;&&, or ;;;;&&. The - terminator is optional for the last clause preceding eessaacc. - There may be an arbitrary number of case clauses. The first - pattern that matches determines the _l_i_s_t that is executed. + A _p_a_t_t_e_r_n _l_i_s_t is a set of one or more patterns separated by ||, and + terminated by the )) operator. A case _c_l_a_u_s_e is a pattern list and + an associated _l_i_s_t, terminated by ;;;;, ;;&&, or ;;;;&&. The terminator is + optional for the last clause preceding eessaacc. There may be an arbi- + trary number of case clauses. The first pattern that matches deter- + mines the _l_i_s_t that is executed. - When a match is found, ccaassee executes the corresponding _l_i_s_t. If - the ;;;; operator terminates the case clause, the ccaassee command - completes after the first match. Using the ;;&& terminator con- - tinues execution with the _l_i_s_t associated with the next clause, - if any. Using the ;;;;&& terminator causes the shell to test the - pattern list in the next clause, if any, and execute any associ- - ated _l_i_s_t if the match succeeds, continuing the case statement - execution as if the pattern list had not matched. + When a match is found, ccaassee executes the corresponding _l_i_s_t. If the + ;;;; operator terminates the case clause, the ccaassee command completes + after the first match. Using the ;;&& terminator continues execution + with the _l_i_s_t associated with the next clause, if any. Using the + ;;;;&& terminator causes the shell to test the pattern list in the next + clause, if any, and execute any associated _l_i_s_t if the match suc- + ceeds, continuing the case statement execution as if the pattern + list had not matched. - The exit status is zero if no pattern matches. Otherwise, it is - the exit status of the last command executed in the last _l_i_s_t - executed. + The exit status is zero if no pattern matches. Otherwise, it is the + exit status of the last command executed in the last _l_i_s_t executed. - 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 status is zero, the corresponding tthheenn - _l_i_s_t is executed and the command completes. Otherwise, the eellssee - _l_i_s_t is executed, if present. The exit status is the exit sta- - tus of the last command executed, or zero if no condition tested - true. + 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 status is zero, the corresponding tthheenn _l_i_s_t is executed 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 ex- + ecuted, or zero if no condition tested true. - wwhhiillee _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee - uunnttiill _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee - The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long - as the last command in the list _l_i_s_t_-_1 returns an exit status of - zero. The uunnttiill command is identical to the wwhhiillee command, ex- - cept that the test is negated: _l_i_s_t_-_2 is executed as long as the - last command in _l_i_s_t_-_1 returns a non-zero exit status. The exit - status of the wwhhiillee and uunnttiill commands is the exit status of the - last command executed in _l_i_s_t_-_2, or zero if none was executed. + wwhhiillee _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee + uunnttiill _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee + The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long as + the last command in the list _l_i_s_t_-_1 returns an exit status of zero. + The uunnttiill command is identical to the wwhhiillee command, except that the + test is negated: _l_i_s_t_-_2 is executed as long as the last command in + _l_i_s_t_-_1 returns a non-zero exit status. The exit status of the wwhhiillee + and uunnttiill commands is the exit status of the last command executed + in _l_i_s_t_-_2, or zero if none was executed. CCoopprroocceesssseess - A _c_o_p_r_o_c_e_s_s is a shell command preceded by the ccoopprroocc reserved word. A - coprocess is executed asynchronously in a subshell, as if the command - had been terminated with the && control operator, with a two-way pipe - established between the executing shell and the coprocess. + A _c_o_p_r_o_c_e_s_s is a shell command preceded by the ccoopprroocc reserved word. A co- + process is executed asynchronously in a subshell, as if the command had + been terminated with the && control operator, with a two-way pipe estab- + lished between the executing shell and the coprocess. - The syntax for a coprocess is: + The syntax for a coprocess is: - ccoopprroocc [_N_A_M_E] _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s] + ccoopprroocc [_N_A_M_E] _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s] - This creates a coprocess named _N_A_M_E. _c_o_m_m_a_n_d may be either a simple - command or a compound command (see above). _N_A_M_E is a shell variable - name. If _N_A_M_E is not supplied, the default name is CCOOPPRROOCC. + This creates a coprocess named _N_A_M_E. _c_o_m_m_a_n_d may be either a simple com- + mand or a compound command (see above). _N_A_M_E is a shell variable name. If + _N_A_M_E is not supplied, the default name is CCOOPPRROOCC. - The recommended form to use for a coprocess is + The recommended form to use for a coprocess is - ccoopprroocc _N_A_M_E { _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s]; } + ccoopprroocc _N_A_M_E { _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s]; } - This form is preferred because simple commands result in the coprocess - always being named CCOOPPRROOCC, and it is simpler to use and more complete - than the other compound commands. + This form is preferred because simple commands result in the coprocess al- + ways being named CCOOPPRROOCC, and it is simpler to use and more complete than + the other compound commands. - If _c_o_m_m_a_n_d is a compound command, _N_A_M_E is optional. The word following - ccoopprroocc determines whether that word is interpreted as a variable name: - it is interpreted as _N_A_M_E if it is not a reserved word that introduces - a compound command. If _c_o_m_m_a_n_d is a simple command, _N_A_M_E is not al- - lowed; this is to avoid confusion between _N_A_M_E and the first word of - the simple command. + If _c_o_m_m_a_n_d is a compound command, _N_A_M_E is optional. The word following ccoo-- + pprroocc determines whether that word is interpreted as a variable name: it is + interpreted as _N_A_M_E if it is not a reserved word that introduces a compound + command. If _c_o_m_m_a_n_d is a simple command, _N_A_M_E is not allowed; this is to + avoid confusion between _N_A_M_E and the first word of the simple command. - When the coprocess is executed, the shell creates an array variable - (see AArrrraayyss below) named _N_A_M_E in the context of the executing shell. - The standard output of _c_o_m_m_a_n_d is connected via a pipe to a file de- - scriptor in the executing shell, and that file descriptor is assigned - to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is connected via a pipe to a - file descriptor in the executing shell, and that file descriptor is as- - signed to _N_A_M_E[1]. This pipe is established before any redirections - specified by the command (see RREEDDIIRREECCTTIIOONN below). The file descriptors - can be utilized as arguments to shell commands and redirections using - standard word expansions. Other than those created to execute command - and process substitutions, the file descriptors are not available in - subshells. + When the coprocess is executed, the shell creates an array variable (see + AArrrraayyss below) named _N_A_M_E in the context of the executing shell. The stan- + dard output of _c_o_m_m_a_n_d is connected via a pipe to a file descriptor in the + executing shell, and that file descriptor is assigned to _N_A_M_E[0]. The + standard input of _c_o_m_m_a_n_d is connected via a pipe to a file descriptor in + the executing shell, and that file descriptor is assigned to _N_A_M_E[1]. This + pipe is established before any redirections specified by the command (see + RREEDDIIRREECCTTIIOONN below). The file descriptors can be utilized as arguments to + shell commands and redirections using standard word expansions. Other than + those created to execute command and process substitutions, the file de- + scriptors are not available in subshells. - The process ID of the shell spawned to execute the coprocess is avail- - able as the value of the variable _N_A_M_E_PID. The wwaaiitt builtin may be - used to wait for the coprocess to terminate. + The process ID of the shell spawned to execute the coprocess is available + as the value of the variable _N_A_M_E_PID. The wwaaiitt builtin may be used to + wait for the coprocess to terminate. - Since the coprocess is created as an asynchronous command, the ccoopprroocc - command always returns success. The return status of a coprocess is - the exit status of _c_o_m_m_a_n_d. + Since the coprocess is created as an asynchronous command, the ccoopprroocc com- + mand always returns success. The return status of a coprocess is the exit + status of _c_o_m_m_a_n_d. SShheellll FFuunnccttiioonn DDeeffiinniittiioonnss - A shell function is an object that is called like a simple command and - executes a compound command with a new set of positional parameters. - Shell functions are declared as follows: + A shell function is an object that is called like a simple command and exe- + cutes a compound command with a new set of positional parameters. Shell + functions are declared as follows: - _f_n_a_m_e () _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n] - ffuunnccttiioonn _f_n_a_m_e [()] _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n] - This defines a function named _f_n_a_m_e. The reserved word ffuunnccttiioonn - is optional. If the ffuunnccttiioonn reserved word is supplied, the - parentheses are optional. The _b_o_d_y of the function is the com- - pound command _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d (see CCoommppoouunndd CCoommmmaannddss above). - That command is usually a _l_i_s_t of commands between { and }, but - may be any command listed under CCoommppoouunndd CCoommmmaannddss above. If the - ffuunnccttiioonn reserved word is used, but the parentheses are not sup- - plied, the braces are recommended. _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d is executed - whenever _f_n_a_m_e is specified as the name of a simple command. - When in posix mode, _f_n_a_m_e must be a valid shell _n_a_m_e and may not - be the name of one of the POSIX _s_p_e_c_i_a_l _b_u_i_l_t_i_n_s. In default - mode, a function name can be any unquoted shell word that does - not contain $$. + _f_n_a_m_e () _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n] + ffuunnccttiioonn _f_n_a_m_e [()] _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n] + This defines a function named _f_n_a_m_e. The reserved word ffuunnccttiioonn is + optional. If the ffuunnccttiioonn reserved word is supplied, the parenthe- + ses are optional. The _b_o_d_y of the function is the compound command + _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d (see CCoommppoouunndd CCoommmmaannddss above). That command is + usually a _l_i_s_t of commands between { and }, but may be any command + listed under CCoommppoouunndd CCoommmmaannddss above. If the ffuunnccttiioonn reserved word + is used, but the parentheses are not supplied, the braces are recom- + mended. _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d is executed whenever _f_n_a_m_e is specified as + the name of a simple command. When in posix mode, _f_n_a_m_e must be a + valid shell _n_a_m_e and may not be the name of one of the POSIX _s_p_e_c_i_a_l + _b_u_i_l_t_i_n_s. In default mode, a function name can be any unquoted + shell word that does not contain $$. - Any redirections (see RREEDDIIRREECCTTIIOONN below) specified when a function is - defined are performed when the function is executed. + Any redirections (see RREEDDIIRREECCTTIIOONN below) specified when a function is de- + fined are performed when the function is executed. - The exit status of a function definition is zero unless a syntax error - occurs or a readonly function with the same name already exists. When - executed, the exit status of a function is the exit status of the last - command executed in the body. (See FFUUNNCCTTIIOONNSS below.) + The exit status of a function definition is zero unless a syntax error oc- + curs or a readonly function with the same name already exists. When exe- + cuted, 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 iinntteerr-- - aaccttiivvee__ccoommmmeennttss option to the sshhoopptt builtin is enabled (see SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below), a word beginning with ## introduces a comment. - A word begins at the beginning of a line, after unquoted whitespace, or - after an operator. The comment causes that word and all remaining - characters on that line to be ignored. An interactive shell without - the iinntteerraaccttiivvee__ccoommmmeennttss option enabled does not allow comments. The - iinntteerraaccttiivvee__ccoommmmeennttss option is enabled by default in interactive - shells. + In a non-interactive shell, or an interactive shell in which the iinntteerraacc-- + ttiivvee__ccoommmmeennttss option to the sshhoopptt builtin is enabled (see SSHHEELLLL BBUUIILLTTIINN + CCOOMMMMAANNDDSS below), a word beginning with ## introduces a comment. A word be- + gins at the beginning of a line, after unquoted whitespace, or after an op- + erator. The comment causes that word and all remaining characters on that + line to be ignored. An interactive shell without the iinntteerraaccttiivvee__ccoommmmeennttss + option enabled does not allow comments. The iinntteerraaccttiivvee__ccoommmmeennttss option is + enabled 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 prevent reserved words from being recognized - as such, and to prevent parameter expansion. + _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 prevent 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 it is to represent itself. + Each of the _m_e_t_a_c_h_a_r_a_c_t_e_r_s listed above under DDEEFFIINNIITTIIOONNSS has special mean- + ing to the shell and must be quoted if it is to represent itself. - When the command history expansion facilities are being used (see HHIISS-- - TTOORRYY EEXXPPAANNSSIIOONN below), the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, usually !!, must - be quoted to prevent history expansion. + When the command history expansion facilities are being used (see HHIISSTTOORRYY + EEXXPPAANNSSIIOONN below), the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, usually !!, must be + quoted to prevent history expansion. - There are four quoting mechanisms: the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r, single quotes, - double quotes, and dollar-single quotes. + There are four quoting mechanisms: the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r, single quotes, + double quotes, and dollar-single 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, removing any special - meaning it has, with the exception of . If a \\ pair - appears, and the backslash is not itself quoted, the \\ is - treated as a line continuation (that is, it is removed from the input - stream and effectively ignored). + A non-quoted backslash (\\) is the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r. It preserves the lit- + eral value of the next character that follows, removing any special meaning + it has, with the exception of . If a \\ pair appears, and + the backslash is not itself quoted, the \\ 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 literal value of - each character within the quotes. A single quote may not occur between - single quotes, even when preceded by a backslash. + Enclosing characters in single quotes preserves the literal value of each + character within the quotes. A single quote may not occur between single + quotes, even when preceded by a backslash. - Enclosing characters in double quotes preserves the literal value of - all characters within the quotes, with the exception of $$, ``, \\, and, - when history expansion is enabled, !!. When the shell is in posix mode, - the !! has no special meaning within double quotes, even when history - expansion is enabled. The characters $$ and `` retain their special - meaning within double quotes. The backslash retains its special mean- - ing only when followed by one of the following characters: $$, ``, "", \\, - or <>. Backslashes preceding characters without a special mean- - ing are left unmodified. + Enclosing characters in double quotes preserves the literal value of all + characters within the quotes, with the exception of $$, ``, \\, and, when his- + tory expansion is enabled, !!. When the shell is in posix mode, the !! has + no special meaning within double quotes, even when history expansion is en- + abled. 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 <>. Backslashes + preceding characters without a special meaning are left unmodified. - A double quote may be quoted within double quotes by preceding it with - a backslash. If enabled, history expansion will be performed unless an - !! appearing in double quotes is escaped using a backslash. The back- - slash preceding the !! is not removed. + A double quote may be quoted within double quotes by preceding it with a + backslash. If enabled, history expansion will be performed unless an !! + appearing in double quotes is escaped using a backslash. The backslash + preceding the !! is not removed. - The special parameters ** and @@ have special meaning when in double - quotes (see PPAARRAAMMEETTEERRSS below). + The special parameters ** and @@ have special meaning when in double quotes + (see PPAARRAAMMEETTEERRSS below). - Character sequences of the form $$'_s_t_r_i_n_g' are treated as a special - variant of single quotes. The sequence expands to _s_t_r_i_n_g, with back- - slash-escaped characters in _s_t_r_i_n_g replaced as specified by the ANSI C - standard. Backslash escape sequences, if present, are decoded as fol- - lows: - \\aa alert (bell) - \\bb backspace - \\ee - \\EE an escape character - \\ff form feed - \\nn new line - \\rr carriage return - \\tt horizontal tab - \\vv vertical tab - \\\\ backslash - \\'' single quote - \\"" double quote - \\?? question mark - \\_n_n_n The eight-bit character whose value is the octal value - _n_n_n (one to three octal digits). - \\xx_H_H The eight-bit character whose value is the hexadecimal - value _H_H (one or two hex digits). - \\uu_H_H_H_H The Unicode (ISO/IEC 10646) character whose value is the - hexadecimal value _H_H_H_H (one to four hex digits). - \\UU_H_H_H_H_H_H_H_H - The Unicode (ISO/IEC 10646) character whose value is the - hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits). - \\cc_x A control-_x character. + Character sequences of the form $$'_s_t_r_i_n_g' are treated as a special variant + of single quotes. The sequence expands to _s_t_r_i_n_g, with backslash-escaped + characters in _s_t_r_i_n_g replaced as specified by the ANSI C standard. Back- + slash escape sequences, if present, are decoded as follows: + \\aa alert (bell) + \\bb backspace + \\ee + \\EE an escape character + \\ff form feed + \\nn new line + \\rr carriage return + \\tt horizontal tab + \\vv vertical tab + \\\\ backslash + \\'' single quote + \\"" double quote + \\?? question mark + \\_n_n_n The eight-bit character whose value is the octal value _n_n_n + (one to three octal digits). + \\xx_H_H The eight-bit character whose value is the hexadecimal value + _H_H (one or two hex digits). + \\uu_H_H_H_H + The Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value _H_H_H_H (one to four hex digits). + \\UU_H_H_H_H_H_H_H_H + The Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits). + \\cc_x A control-_x character. - The expanded result is single-quoted, as if the dollar sign had not - been present. + The expanded result is single-quoted, as if the dollar sign had not been + present. TTrraannssllaattiinngg SSttrriinnggss - A double-quoted string preceded by a dollar sign ($$"_s_t_r_i_n_g") causes the - string to be translated according to the current locale. The _g_e_t_t_e_x_t - infrastructure performs the lookup and translation, using the LLCC__MMEESS-- - SSAAGGEESS, TTEEXXTTDDOOMMAAIINNDDIIRR, and TTEEXXTTDDOOMMAAIINN shell variables. If the current - locale is CC or PPOOSSIIXX, if there are no translations available, or if the - string is not translated, the dollar sign is ignored, and the string is - treated as double-quoted as described above. This is a form of double - quoting, so the string remains double-quoted by default, whether or not - it is translated and replaced. If the nnooeexxppaanndd__ttrraannssllaattiioonn option is - enabled using the sshhoopptt builtin, translated strings are single-quoted - instead of double-quoted. See the description of sshhoopptt below under - SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS. + A double-quoted string preceded by a dollar sign ($$"_s_t_r_i_n_g") causes the + string to be translated according to the current locale. The _g_e_t_t_e_x_t in- + frastructure performs the lookup and translation, using the LLCC__MMEESSSSAAGGEESS, + TTEEXXTTDDOOMMAAIINNDDIIRR, and TTEEXXTTDDOOMMAAIINN shell variables. If the current locale is CC + or PPOOSSIIXX, if there are no translations available, or if the string is not + translated, the dollar sign is ignored, and the string is treated as dou- + ble-quoted as described above. This is a form of double quoting, so the + string remains double-quoted by default, whether or not it is translated + and replaced. If the nnooeexxppaanndd__ttrraannssllaattiioonn option is enabled using the + sshhoopptt builtin, translated strings are single-quoted instead of double- + quoted. See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS. 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 num- - ber, or one of the special characters listed below under SSppeecciiaall PPaarraa-- - mmeetteerrss. A _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e. A variable has a - _v_a_l_u_e and zero or more _a_t_t_r_i_b_u_t_e_s. Attributes are assigned using the - ddeeccllaarree builtin command (see ddeeccllaarree below in SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS). - The eexxppoorrtt and rreeaaddoonnllyy builtins assign specific attributes. + 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. A + _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e. A variable has a _v_a_l_u_e and zero + or more _a_t_t_r_i_b_u_t_e_s. Attributes are assigned using the ddeeccllaarree builtin com- + mand (see ddeeccllaarree below in SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS). The eexxppoorrtt and rreeaadd-- + oonnllyy builtins assign specific attributes. - 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 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 uunn-- + sseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - A _v_a_r_i_a_b_l_e is assigned to using a statement of the form + A _v_a_r_i_a_b_l_e is assigned to using a statement of the form - _n_a_m_e=[_v_a_l_u_e] + _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, com- - mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN-- - SSIIOONN below). If the variable has its iinntteeggeerr attribute set, then _v_a_l_u_e - is evaluated as an arithmetic expression even if the $$((((...)))) expansion - is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting and path- - name expansion are not performed. Assignment statements may also ap- - pear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett, eexxppoorrtt, rreeaaddoonnllyy, and - llooccaall builtin commands (_d_e_c_l_a_r_a_t_i_o_n commands). When in posix mode, - these builtins may appear in a command after one or more instances of - the ccoommmmaanndd builtin and retain these assignment statement properties. + 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, command sub- + stitution, arithmetic expansion, and quote removal (see EEXXPPAANNSSIIOONN below). + If the variable has its iinntteeggeerr attribute set, then _v_a_l_u_e is evaluated as + an arithmetic expression even if the $$((((...)))) expansion is not used (see + AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting and pathname expansion are not + performed. Assignment statements may also appear as arguments to the + aalliiaass, ddeeccllaarree, ttyyppeesseett, eexxppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands (_d_e_c_- + _l_a_r_a_t_i_o_n commands). When in posix mode, these builtins may appear in a + command after one or more instances of the ccoommmmaanndd builtin and retain these + assignment statement properties. - In the context where an assignment statement is assigning a value to a - shell variable or array index, the "+=" operator appends to or adds to - the variable's previous value. This includes arguments to _d_e_c_l_a_r_a_t_i_o_n - commands such as ddeeccllaarree that accept assignment statements. When "+=" - is applied to a variable for which the iinntteeggeerr attribute has been set, - the variable's current value and _v_a_l_u_e are each evaluated as arithmetic - expressions, and the sum of the results is assigned as the variable's - value. The current value is usually an integer constant, but may be an - expression. When "+=" is applied to an array variable using compound - assignment (see AArrrraayyss below), the variable's value is not unset (as it - is when using "="), and new values are appended to the array beginning - at one greater than the array's maximum index (for indexed arrays) or - added as additional key-value pairs in an associative array. When ap- - plied to a string-valued variable, _v_a_l_u_e is expanded and appended to - the variable's value. + In the context where an assignment statement is assigning a value to a + shell variable or array index, the "+=" operator appends to or adds to the + variable's previous value. This includes arguments to _d_e_c_l_a_r_a_t_i_o_n commands + such as ddeeccllaarree that accept assignment statements. When "+=" is applied to + a variable for which the iinntteeggeerr attribute has been set, the variable's + current value and _v_a_l_u_e are each evaluated as arithmetic expressions, and + the sum of the results is assigned as the variable's value. The current + value is usually an integer constant, but may be an expression. When "+=" + is applied to an array variable using compound assignment (see AArrrraayyss be- + low), the variable's value is not unset (as it is when using "="), and new + values are appended to the array beginning at one greater than the array's + maximum index (for indexed arrays) or added as additional key-value pairs + in an associative array. When applied to a string-valued variable, _v_a_l_u_e + is expanded and appended to the variable's value. - A variable can be assigned the _n_a_m_e_r_e_f attribute using the --nn option to - the ddeeccllaarree or llooccaall builtin commands (see the descriptions of ddeeccllaarree - and llooccaall below) to create a _n_a_m_e_r_e_f, or a reference to another vari- - able. This allows variables to be manipulated indirectly. Whenever - the nameref variable is referenced, assigned to, unset, or has its at- - tributes modified (other than using or changing the _n_a_m_e_r_e_f attribute - itself), the operation is actually performed on the variable specified - by the nameref variable's value. A nameref is commonly used within - shell functions to refer to a variable whose name is passed as an argu- - ment to the function. For instance, if a variable name is passed to a - shell function as its first argument, running + A variable can be assigned the _n_a_m_e_r_e_f attribute using the --nn option to the + ddeeccllaarree or llooccaall builtin commands (see the descriptions of ddeeccllaarree and lloo-- + ccaall below) to create a _n_a_m_e_r_e_f, or a reference to another variable. This + allows variables to be manipulated indirectly. Whenever the nameref vari- + able is referenced, assigned to, unset, or has its attributes modified + (other than using or changing the _n_a_m_e_r_e_f attribute itself), the operation + is actually performed on the variable specified by the nameref variable's + value. A nameref is commonly used within shell functions to refer to a + variable whose name is passed as an argument to the function. For in- + stance, if a variable name is passed to a shell function as its first argu- + ment, running - declare -n ref=$1 + declare -n ref=$1 - inside the function creates a local nameref variable rreeff whose value is - the variable name passed as the first argument. References and assign- - ments to rreeff, and changes to its attributes, are treated as references, - assignments, and attribute modifications to the variable whose name was - passed as $$11. If the control variable in a ffoorr loop has the nameref - attribute, the list of words can be a list of shell variables, and a - name reference is established for each word in the list, in turn, when - the loop is executed. Array variables cannot be given the nnaammeerreeff at- - tribute. However, nameref variables can reference array variables and - subscripted array variables. Namerefs can be unset using the --nn option - to the uunnsseett builtin. Otherwise, if uunnsseett is executed with the name of - a nameref variable as an argument, the variable referenced by the - nameref variable is unset. + inside the function creates a local nameref variable rreeff whose value is the + variable name passed as the first argument. References and assignments to + rreeff, and changes to its attributes, are treated as references, assignments, + and attribute modifications to the variable whose name was passed as $$11. + If the control variable in a ffoorr loop has the nameref attribute, the list + of words can be a list of shell variables, and a name reference is estab- + lished for each word in the list, in turn, when the loop is executed. Ar- + ray variables cannot be given the nnaammeerreeff attribute. However, nameref + variables can reference array variables and subscripted array variables. + Namerefs can be unset using the --nn option to the uunnsseett builtin. Otherwise, + if uunnsseett is executed with the name of a nameref variable as an argument, + the variable referenced by the nameref variable is unset. - When the shell starts, it reads its environment and creates a shell - variable from each environment variable that has a valid name, as de- - scribed below (see EENNVVIIRROONNMMEENNTT). + When the shell starts, it reads its environment and creates a shell vari- + able from each environment variable that has a valid name, as described be- + low (see EENNVVIIRROONNMMEENNTT). 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). + 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 assign- + ment statements. The positional parameters are temporarily replaced when a + shell function is executed (see FFUUNNCCTTIIOONNSS below). - When a positional parameter consisting of more than a single digit is - expanded, it must be enclosed in braces (see EEXXPPAANNSSIIOONN below). Without - braces, a digit following $ can only refer to one of the first nine po- - sitional parameters ($$11--$$99) or the special parameter $$00 (see the next - section). + When a positional parameter consisting of more than a single digit is ex- + panded, it must be enclosed in braces (see EEXXPPAANNSSIIOONN below). Without + braces, a digit following $ can only refer to one of the first nine posi- + tional parameters ($$11--$$99) or the special parameter $$00 (see the next sec- + tion). SSppeecciiaall PPaarraammeetteerrss - The shell treats several parameters specially. These parameters may - only be referenced; assignment to them is not allowed. Special parame- - ters are denoted by one of the following characters. + The shell treats several parameters specially. These parameters may only + be referenced; assignment to them is not allowed. Special parameters are + denoted by one of the following characters. - ** ($$**) Expands to the positional parameters, starting from one. - When the expansion is not within double quotes, each positional - parameter expands to a separate word. In contexts where word - expansions are performed, those words are subject to further - word splitting and pathname expansion. When the expansion oc- - curs within double quotes, it expands to a single word with the - value of each parameter separated by the first character of the - IIFFSS 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. - In contexts where word splitting is performed, this expands each - positional parameter to a separate word; if not within double - quotes, these words are subject to word splitting. In contexts - where word splitting is not performed, such as the value portion - of an assignment statement, this expands to a single word with - each positional parameter separated by a space. When the expan- - sion occurs within double quotes, and word splitting is per- - formed, each parameter expands to a separate word. That is, - ""$$@@"" is equivalent to ""$$11"" ""$$22"" ...... If the double-quoted expan- - sion occurs within a word, the expansion of the first parameter - is joined with the expansion of the beginning part of the origi- - nal word, and the expansion of the last parameter is joined with - the expansion of the last part of the original word. When there - are no positional parameters, ""$$@@"" and $$@@ expand to nothing - (i.e., they are removed). - ## ($$##) Expands to the number of positional parameters in decimal. - ?? ($$??) Expands to the exit status of the most recently executed - command. - -- ($$--) Expands to the current option flags as specified upon invo- - cation, 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 parent shell, not the subshell. - !! ($$!!)Expands to the process ID of the job most recently placed - into the background, whether executed as an asynchronous command - or using the bbgg builtin (see JJOOBB CCOONNTTRROOLL below). - 00 ($$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. Otherwise, - it is set to the filename used to invoke bbaasshh, as given by argu- - ment zero. + ** ($$**) Expands to the positional parameters, starting from one. When + the expansion is not within double quotes, each positional parameter + expands to a separate word. In contexts where word expansions are + performed, those words are subject to further word splitting and + pathname expansion. When the expansion occurs within double quotes, + it expands to a single word with the value of each parameter sepa- + rated by the first character of the IIFFSS 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 sep- + arated by spaces. If IIFFSS is null, the parameters are joined without + intervening separators. + @@ ($$@@) Expands to the positional parameters, starting from one. In + contexts where word splitting is performed, this expands each posi- + tional parameter to a separate word; if not within double quotes, + these words are subject to word splitting. In contexts where word + splitting is not performed, such as the value portion of an assign- + ment statement, this expands to a single word with each positional + parameter separated by a space. When the expansion occurs within + double quotes, and word splitting is performed, each parameter ex- + pands to a separate word. That is, ""$$@@"" is equivalent to + ""$$11"" ""$$22"" ...... If the double-quoted expansion occurs within a word, + the expansion of the first parameter is joined with the expansion of + the beginning part of the original word, and the expansion of the + last parameter is joined with the expansion of the last part of the + original word. When there are no positional parameters, ""$$@@"" and $$@@ + expand to nothing (i.e., they are removed). + ## ($$##) Expands to the number of positional parameters in decimal. + ?? ($$??) Expands to the exit status of the most recently executed com- + mand. + -- ($$--) Expands to the current option flags as specified upon invoca- + tion, 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 ex- + pands to the process ID of the parent shell, not the subshell. + !! ($$!!)Expands to the process ID of the job most recently placed into + the background, whether executed as an asynchronous command or using + the bbgg builtin (see JJOOBB CCOONNTTRROOLL below). + 00 ($$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 com- + mands, $$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. Otherwise, it is set to the + filename used to invoke bbaasshh, as given by argument zero. SShheellll VVaarriiaabblleess - The shell sets following variables: + The shell sets following variables: - __ ($$__, an underscore) This has a number of meanings depending on - context. At shell startup, __ is set to the pathname used to in- - voke the shell or shell script being executed as passed in the - environment or argument list. Subsequently, it expands to the - last argument to the previous simple command executed in the - foreground, after expansion. It is also set to the full path- - name used to invoke each command executed and placed in the en- - vironment exported to that command. When checking mail, $$__ ex- - pands to the name of the mail file currently being checked. - BBAASSHH Expands to the full filename used to invoke this instance of - bbaasshh. - BBAASSHHOOPPTTSS - A colon-separated list of enabled shell options. Each word in - the list is a valid argument for the --ss option to the sshhoopptt - builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options - appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If - this variable is in the environment when bbaasshh starts up, the - shell enables each option in the list before reading any startup - files. If this variable is exported, child shells will enable - each option in the list. This variable is read-only. - BBAASSHHPPIIDD - Expands to the process ID of the current bbaasshh process. This - differs from $$$$ under certain circumstances, such as subshells - that do not require bbaasshh to be re-initialized. Assignments to - BBAASSHHPPIIDD have no effect. If BBAASSHHPPIIDD is unset, it loses its spe- - cial properties, even if it is subsequently reset. - BBAASSHH__AALLIIAASSEESS - An associative array variable whose members correspond to the - internal list of aliases as maintained by the aalliiaass builtin. - Elements added to this array appear in the alias list; however, - unsetting array elements currently does not remove aliases from - the alias list. If BBAASSHH__AALLIIAASSEESS is unset, it loses its special - properties, even if it is subsequently reset. - BBAASSHH__AARRGGCC - An array variable whose values are the number of parameters in - each frame of the current bbaasshh execution call stack. The number - of parameters to the current subroutine (shell function or - script executed with .. or ssoouurrccee) is at the top of the stack. - When a subroutine is executed, the number of parameters passed - is pushed onto BBAASSHH__AARRGGCC. The shell sets BBAASSHH__AARRGGCC only when in - extended debugging mode (see the description of the eexxttddeebbuugg op- - tion to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the - shell has started to execute a script, or referencing this vari- - able when eexxttddeebbuugg is not set, may result in inconsistent val- - ues. Assignments to BBAASSHH__AARRGGCC have no effect, and it may not be - unset. - BBAASSHH__AARRGGVV - An array variable containing all of the parameters in the cur- - rent bbaasshh execution call stack. The final parameter of the last - subroutine call is at the top of the stack; the first parameter - of the initial call is at the bottom. When a subroutine is exe- - cuted, the shell pushes the supplied parameters onto BBAASSHH__AARRGGVV. - The shell sets BBAASSHH__AARRGGVV only when in extended debugging mode - (see the description of the eexxttddeebbuugg option to the sshhoopptt builtin - below). Setting eexxttddeebbuugg after the shell has started to execute - a script, or referencing this variable when eexxttddeebbuugg is not set, - may result in inconsistent values. Assignments to BBAASSHH__AARRGGVV - have no effect, and it may not be unset. - BBAASSHH__AARRGGVV00 - When referenced, this variable expands to the name of the shell - or shell script (identical to $$00; see the description of special - parameter 0 above). Assigning a value to BBAASSHH__AARRGGVV00 sets $$00 to - the same value. If BBAASSHH__AARRGGVV00 is unset, it loses its special - properties, even if it is subsequently reset. - BBAASSHH__CCMMDDSS - An associative array variable whose members correspond to the - internal hash table of commands as maintained by the hhaasshh - builtin. Adding elements to this array makes them appear in the - hash table; however, unsetting array elements currently does not - remove command names from the hash table. If BBAASSHH__CCMMDDSS is un- - set, it loses its special properties, even if it is subsequently - reset. - BBAASSHH__CCOOMMMMAANNDD - Expands to the command currently being executed or about to be - executed, unless the shell is executing a command as the result - of a trap, in which case it is the command executing at the time - of the trap. If BBAASSHH__CCOOMMMMAANNDD is unset, it loses its special - properties, even if it is subsequently reset. - BBAASSHH__EEXXEECCUUTTIIOONN__SSTTRRIINNGG - The command argument to the --cc invocation option. - BBAASSHH__LLIINNEENNOO - An array variable whose members are the line numbers in source - files where each corresponding member of FFUUNNCCNNAAMMEE was invoked. - $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}} is the line number in the source file - ($${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}) where $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called (or - $${{BBAASSHH__LLIINNEENNOO[[_$_i_-_1]]}} if referenced within another shell func- - tion). Use LLIINNEENNOO to obtain the current line number. Assign- - ments to BBAASSHH__LLIINNEENNOO have no effect, and it may not be unset. - BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH - A colon-separated list of directories in which the eennaabbllee com- - mand looks for dynamically loadable builtins. - BBAASSHH__MMOONNOOSSEECCOONNDDSS - Each time this variable is referenced, it expands to the value - returned by the system's monotonic clock, if one is available. - If there is no monotonic clock, this is equivalent to EEPPOOCCHHSSEECC-- - OONNDDSS. If BBAASSHH__MMOONNOOSSEECCOONNDDSS is unset, it loses its special prop- - erties, even if it is subsequently reset. - BBAASSHH__RREEMMAATTCCHH - An array variable whose members are assigned by the ==~~ binary - operator to the [[[[ conditional command. The element with index - 0 is the portion of the string matching the entire regular ex- - pression. The element with index _n is the portion of the string - matching the _nth parenthesized subexpression. - BBAASSHH__SSOOUURRCCEE - An array variable whose members are the source filenames where - the corresponding shell function names in the FFUUNNCCNNAAMMEE array - variable are defined. The shell function $${{FFUUNNCCNNAAMMEE[[_$_i]]}} is de- - fined in the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from - $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}. Assignments to BBAASSHH__SSOOUURRCCEE have no ef- - fect, and it may not be unset. - BBAASSHH__SSUUBBSSHHEELLLL - Incremented by one within each subshell or subshell environment - when the shell begins executing in that environment. The ini- - tial value is 0. If BBAASSHH__SSUUBBSSHHEELLLL is unset, it loses its spe- - cial properties, even if it is subsequently reset. - BBAASSHH__TTRRAAPPSSIIGG - Set to the signal number corresponding to the trap action being - executed during its execution. See the description of ttrraapp un- - der SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below for information about signal - numbers and trap execution. - BBAASSHH__VVEERRSSIINNFFOO - A readonly array variable whose members hold version information - for this instance of bbaasshh. The values assigned to the array - members are as follows: - 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). - BBAASSHH__VVEERRSSIINNFFOO[[5]] The value of MMAACCHHTTYYPPEE. - BBAASSHH__VVEERRSSIIOONN - Expands to a string describing the version of this instance of - bbaasshh (e.g., 5.2.37(3)-release). - CCOOMMPP__CCWWOORRDD - An index into $${{CCOOMMPP__WWOORRDDSS}} of the word containing the current - cursor position. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see - PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOMMPP__KKEEYY - The key (or final key of a key sequence) used to invoke the cur- - rent completion function. This variable is available only in - shell functions and external commands invoked by the programma- - ble completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOMMPP__LLIINNEE - The current command line. This variable is available only in - shell functions and external commands invoked by the programma- - ble completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOMMPP__PPOOIINNTT - The index of the current cursor position relative to the begin- - ning of the current command. If the current cursor position is - at the end of the current command, the value of this variable is - equal to $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in - shell functions and external commands invoked by the programma- - ble completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOMMPP__TTYYPPEE - Set to an integer value corresponding to the type of attempted - completion that caused a completion function to be called: _T_A_B, - for normal completion, _?, for listing completions after succes- - sive tabs, _!, for listing alternatives on partial word comple- - tion, _@, to list completions if the word is not unmodified, or - _%, for menu completion. This variable is available only in - shell functions and external commands invoked by the programma- - ble completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOMMPP__WWOORRDDBBRREEAAKKSS - The set of characters that the rreeaaddlliinnee library treats as word - separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS - is unset, it loses its special properties, even if it is subse- - quently reset. - CCOOMMPP__WWOORRDDSS - An array variable (see AArrrraayyss below) consisting of the individ- - ual words in the current command line. The line is split into - words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as de- - scribed above. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see - PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file - descriptors for output from and input to an unnamed coprocess - (see CCoopprroocceesssseess above). - DDIIRRSSTTAACCKK - An array variable (see AArrrraayyss below) containing the current con- - tents of the directory stack. Directories appear in the stack - in the order they are displayed by the ddiirrss builtin. Assigning - to members of this array variable may be used to modify directo- - ries already in the stack, but the ppuusshhdd and ppooppdd builtins must - be used to add and remove directories. Assigning to this vari- - able does not change the current directory. If DDIIRRSSTTAACCKK is un- - set, it loses its special properties, even if it is subsequently - reset. - EEPPOOCCHHRREEAALLTTIIMMEE - Each time this parameter is referenced, it expands to the number - of seconds since the Unix Epoch (see _t_i_m_e(3)) as a floating- - point value with micro-second granularity. Assignments to - EEPPOOCCHHRREEAALLTTIIMMEE are ignored. If EEPPOOCCHHRREEAALLTTIIMMEE is unset, it loses - its special properties, even if it is subsequently reset. - EEPPOOCCHHSSEECCOONNDDSS - Each time this parameter is referenced, it expands to the number - of seconds since the Unix Epoch (see _t_i_m_e(3)). Assignments to - EEPPOOCCHHSSEECCOONNDDSS are ignored. If EEPPOOCCHHSSEECCOONNDDSS is unset, it loses - its special properties, even if it is subsequently reset. - EEUUIIDD Expands to the effective user ID of the current user, initial- - ized at shell startup. This variable is readonly. - FFUUNNCCNNAAMMEE - An array variable containing the names of all shell functions - currently in the execution call stack. The element with index 0 - is the name of any currently-executing shell function. The bot- - tom-most element (the one with the highest index) is "main". - This variable exists only when a shell function is executing. - Assignments to FFUUNNCCNNAAMMEE have no effect. If FFUUNNCCNNAAMMEE is unset, - it loses its special properties, even if it is subsequently re- - set. + __ ($$__, an underscore) This has a number of meanings depending on con- + text. At shell startup, __ is set to the pathname used to invoke the + shell or shell script being executed as passed in the environment or + argument list. Subsequently, it expands to the last argument to the + previous simple command executed in the foreground, after expansion. + It is also set to the full pathname used to invoke each command exe- + cuted and placed in the environment exported to that command. When + checking mail, $$__ expands to the name of the mail file currently be- + ing checked. + BBAASSHH Expands to the full filename used to invoke this instance of bbaasshh. + BBAASSHHOOPPTTSS + A colon-separated list of enabled shell options. Each word in the + list is a valid argument for the --ss option to the sshhoopptt builtin com- + mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options appearing in + BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If this variable is in + the environment when bbaasshh starts up, the shell enables each option + in the list before reading any startup files. If this variable is + exported, child shells will enable each option in the list. This + variable is read-only. + BBAASSHHPPIIDD + Expands to the process ID of the current bbaasshh process. This differs + from $$$$ under certain circumstances, such as subshells that do not + require bbaasshh to be re-initialized. Assignments to BBAASSHHPPIIDD have no + effect. If BBAASSHHPPIIDD is unset, it loses its special properties, even + if it is subsequently reset. + BBAASSHH__AALLIIAASSEESS + An associative array variable whose members correspond to the inter- + nal list of aliases as maintained by the aalliiaass builtin. Elements + added to this array appear in the alias list; however, unsetting ar- + ray elements currently does not remove aliases from the alias list. + If BBAASSHH__AALLIIAASSEESS is unset, it loses its special properties, even if + it is subsequently reset. + BBAASSHH__AARRGGCC + An array variable whose values are the number of parameters in each + frame of the current bbaasshh execution call stack. The number of para- + meters to the current subroutine (shell function or script executed + with .. or ssoouurrccee) is at the top of the stack. When a subroutine is + executed, the number of parameters passed is pushed onto BBAASSHH__AARRGGCC. + The shell sets BBAASSHH__AARRGGCC only when in extended debugging mode (see + the description of the eexxttddeebbuugg option to the sshhoopptt builtin below). + Setting eexxttddeebbuugg after the shell has started to execute a script, or + referencing this variable when eexxttddeebbuugg is not set, may result in + inconsistent values. Assignments to BBAASSHH__AARRGGCC have no effect, and + it may not be unset. + BBAASSHH__AARRGGVV + An array variable containing all of the parameters in the current + bbaasshh execution call stack. The final parameter of the last subrou- + tine call is at the top of the stack; the first parameter of the + initial call is at the bottom. When a subroutine is executed, the + shell pushes the supplied parameters onto BBAASSHH__AARRGGVV. The shell sets + BBAASSHH__AARRGGVV only when in extended debugging mode (see the description + of the eexxttddeebbuugg option to the sshhoopptt builtin below). Setting eexxttddee-- + bbuugg after the shell has started to execute a script, or referencing + this variable when eexxttddeebbuugg is not set, may result in inconsistent + values. Assignments to BBAASSHH__AARRGGVV have no effect, and it may not be + unset. + BBAASSHH__AARRGGVV00 + When referenced, this variable expands to the name of the shell or + shell script (identical to $$00; see the description of special para- + meter 0 above). Assigning a value to BBAASSHH__AARRGGVV00 sets $$00 to the same + value. If BBAASSHH__AARRGGVV00 is unset, it loses its special properties, + even if it is subsequently reset. + BBAASSHH__CCMMDDSS + An associative array variable whose members correspond to the inter- + nal hash table of commands as maintained by the hhaasshh builtin. + Adding elements to this array makes them appear in the hash table; + however, unsetting array elements currently does not remove command + names from the hash table. If BBAASSHH__CCMMDDSS is unset, it loses its spe- + cial properties, even if it is subsequently reset. + BBAASSHH__CCOOMMMMAANNDD + Expands to the command currently being executed or about to be exe- + cuted, unless the shell is executing a command as the result of a + trap, in which case it is the command executing at the time of the + trap. If BBAASSHH__CCOOMMMMAANNDD is unset, it loses its special properties, + even if it is subsequently reset. + BBAASSHH__EEXXEECCUUTTIIOONN__SSTTRRIINNGG + The command argument to the --cc invocation option. + BBAASSHH__LLIINNEENNOO + An array variable whose members are the line numbers in source files + where each corresponding member of FFUUNNCCNNAAMMEE was invoked. + $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}} is the line number in the source file + ($${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}) where $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called (or + $${{BBAASSHH__LLIINNEENNOO[[_$_i_-_1]]}} if referenced within another shell function). + Use LLIINNEENNOO to obtain the current line number. Assignments to + BBAASSHH__LLIINNEENNOO have no effect, and it may not be unset. + BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH + A colon-separated list of directories in which the eennaabbllee command + looks for dynamically loadable builtins. + BBAASSHH__MMOONNOOSSEECCOONNDDSS + Each time this variable is referenced, it expands to the value re- + turned by the system's monotonic clock, if one is available. If + there is no monotonic clock, this is equivalent to EEPPOOCCHHSSEECCOONNDDSS. If + BBAASSHH__MMOONNOOSSEECCOONNDDSS is unset, it loses its special properties, even if + it is subsequently reset. + BBAASSHH__RREEMMAATTCCHH + An array variable whose members are assigned by the ==~~ binary opera- + tor to the [[[[ conditional command. The element with index 0 is the + portion of the string matching the entire regular expression. The + element with index _n is the portion of the string matching the _nth + parenthesized subexpression. + BBAASSHH__SSOOUURRCCEE + An array variable whose members are the source filenames where the + corresponding shell function names in the FFUUNNCCNNAAMMEE array variable + are defined. The shell function $${{FFUUNNCCNNAAMMEE[[_$_i]]}} is defined in the + file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}. As- + signments to BBAASSHH__SSOOUURRCCEE have no effect, and it may not be unset. + BBAASSHH__SSUUBBSSHHEELLLL + Incremented by one within each subshell or subshell environment when + the shell begins executing in that environment. The initial value + is 0. If BBAASSHH__SSUUBBSSHHEELLLL is unset, it loses its special properties, + even if it is subsequently reset. + BBAASSHH__TTRRAAPPSSIIGG + Set to the signal number corresponding to the trap action being exe- + cuted during its execution. See the description of ttrraapp under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below for information about signal numbers and trap + execution. + BBAASSHH__VVEERRSSIINNFFOO + A readonly array variable whose members hold version information for + this instance of bbaasshh. The values assigned to the array members are + as follows: + 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). + BBAASSHH__VVEERRSSIINNFFOO[[5]] The value of MMAACCHHTTYYPPEE. + BBAASSHH__VVEERRSSIIOONN + Expands to a string describing the version of this instance of bbaasshh + (e.g., 5.2.37(3)-release). + CCOOMMPP__CCWWOORRDD + An index into $${{CCOOMMPP__WWOORRDDSS}} of the word containing the current cur- + sor position. This variable is available only in shell functions + invoked by the programmable completion facilities (see PPrrooggrraammmmaabbllee + CCoommpplleettiioonn below). + CCOOMMPP__KKEEYY + The key (or final key of a key sequence) used to invoke the current + completion function. This variable is available only in shell func- + tions and external commands invoked by the programmable completion + facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). + CCOOMMPP__LLIINNEE + The current command line. This variable is available only in shell + functions and external commands invoked by the programmable comple- + tion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). + CCOOMMPP__PPOOIINNTT + The index of the current cursor position relative to the beginning + of the current command. If the current cursor position is at the + end of the current command, the value of this variable is equal to + $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in shell functions + and external commands invoked by the programmable completion facili- + ties (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). + CCOOMMPP__TTYYPPEE + Set to an integer value corresponding to the type of attempted com- + pletion that caused a completion function to be called: _T_A_B, for + normal completion, _?, for listing completions after successive tabs, + _!, for listing alternatives on partial word completion, _@, to list + completions if the word is not unmodified, or _%, for menu comple- + tion. This variable is available only in shell functions and exter- + nal commands invoked by the programmable completion facilities (see + PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). + CCOOMMPP__WWOORRDDBBRREEAAKKSS + The set of characters that the rreeaaddlliinnee library treats as word sepa- + rators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS is un- + set, it loses its special properties, even if it is subsequently re- + set. + CCOOMMPP__WWOORRDDSS + An array variable (see AArrrraayyss below) consisting of the individual + words in the current command line. The line is split into words as + rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as described above. + This variable is available only in shell functions invoked by the + programmable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn be- + low). + CCOOPPRROOCC + An array variable (see AArrrraayyss below) created to hold the file de- + scriptors for output from and input to an unnamed coprocess (see CCoo-- + pprroocceesssseess above). + DDIIRRSSTTAACCKK + An array variable (see AArrrraayyss below) containing the current contents + of the directory stack. Directories appear in the stack in the or- + der they are displayed by the ddiirrss builtin. Assigning to members of + this array variable may be used to modify directories already in the + stack, but the ppuusshhdd and ppooppdd builtins must be used to add and re- + move directories. Assigning to this variable does not change the + current directory. If DDIIRRSSTTAACCKK is unset, it loses its special prop- + erties, even if it is subsequently reset. + EEPPOOCCHHRREEAALLTTIIMMEE + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch (see _t_i_m_e(3)) as a floating-point value + with micro-second granularity. Assignments to EEPPOOCCHHRREEAALLTTIIMMEE are ig- + nored. If EEPPOOCCHHRREEAALLTTIIMMEE is unset, it loses its special properties, + even if it is subsequently reset. + EEPPOOCCHHSSEECCOONNDDSS + Each time this parameter is referenced, it expands to the number of + seconds since the Unix Epoch (see _t_i_m_e(3)). Assignments to + EEPPOOCCHHSSEECCOONNDDSS are ignored. If EEPPOOCCHHSSEECCOONNDDSS is unset, it loses its + special properties, even if it is subsequently reset. + EEUUIIDD Expands to the effective user ID of the current user, initialized at + shell startup. This variable is readonly. + FFUUNNCCNNAAMMEE + An array variable containing the names of all shell functions cur- + rently in the execution call stack. The element with index 0 is the + name of any currently-executing shell function. The bottom-most el- + ement (the one with the highest index) is "main". This variable ex- + ists only when a shell function is executing. Assignments to FFUUNNCC-- + NNAAMMEE have no effect. If FFUUNNCCNNAAMMEE is unset, it loses its special + properties, even if it is subsequently reset. - This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. - Each element of FFUUNNCCNNAAMMEE has corresponding elements in - BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For in- - stance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file - $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The - ccaalllleerr builtin displays the current call stack using this infor- - mation. - GGRROOUUPPSS An array variable containing the list of groups of which the - current user is a member. Assignments to GGRROOUUPPSS have no effect. - If GGRROOUUPPSS is unset, it loses its special properties, even if it - is subsequently reset. - HHIISSTTCCMMDD - The history number, or index in the history list, of the current - command. Assignments to HHIISSTTCCMMDD have no effect. If HHIISSTTCCMMDD is - unset, it loses its special properties, even if it is subse- - quently reset. - 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 executing. The default is system- - dependent. - LLIINNEENNOO Each time this parameter is referenced, the shell substitutes a - decimal number representing the current sequential line number - (starting with 1) within a script or function. When not in a - script or function, the value substituted is not guaranteed to - be meaningful. If LLIINNEENNOO is unset, it loses its special proper- - ties, even if it is subsequently reset. - 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. - MMAAPPFFIILLEE - An array variable (see AArrrraayyss below) created to hold the text - read by the mmaappffiillee builtin when no variable name is supplied. - OOLLDDPPWWDD The previous working directory as set by the ccdd command. - OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss - builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss - builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOSSTTYYPPEE Automatically set to a string that describes the operating sys- - tem on which bbaasshh is executing. The default is system-depen- - dent. - PPIIPPEESSTTAATTUUSS - An array variable (see AArrrraayyss below) containing a list of exit - status values from the commands in the most-recently-executed - foreground pipeline, which may consist of only a simple command - (see SSHHEELLLL GGRRAAMMMMAARR above). BBaasshh sets PPIIPPEESSTTAATTUUSS after executing - multi-element pipelines, timed and negated pipelines, simple - commands, subshells created with the ( operator, the [[[[ and (((( - compound commands, and after error conditions that result in the - shell aborting command execution. - PPPPIIDD The process ID of the shell's parent. This variable is read- - only. - PPWWDD The current working directory as set by the ccdd command. - RRAANNDDOOMM Each time this parameter is referenced, it expands to a random - integer between 0 and 32767. Assigning a value to RRAANNDDOOMM ini- - tializes (seeds) the sequence of random numbers. Seeding the - random number generator with the same constant value produces - the same sequence of values. If RRAANNDDOOMM is unset, it loses its - special properties, even if it is subsequently reset. - RREEAADDLLIINNEE__AARRGGUUMMEENNTT - Any numeric argument given to a rreeaaddlliinnee command that was de- - fined using "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) when it - was invoked. - RREEAADDLLIINNEE__LLIINNEE - The contents of the rreeaaddlliinnee line buffer, for use with "bind -x" - (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - RREEAADDLLIINNEE__MMAARRKK - The position of the mark (saved insertion point) in the rreeaaddlliinnee - line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS - below). The characters between the insertion point and the mark - are often called the _r_e_g_i_o_n. - RREEAADDLLIINNEE__PPOOIINNTT - The position of the insertion point in the rreeaaddlliinnee line buffer, - for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when - no arguments are supplied. - SSEECCOONNDDSS - Each time this parameter is referenced, it expands to the number - of seconds since shell invocation. If a value is assigned to - SSEECCOONNDDSS, the value returned upon subsequent references is the - number of seconds since the assignment plus the value assigned. - The number of seconds at shell invocation and the current time - are always determined by querying the system clock at one-second - resolution. If SSEECCOONNDDSS is unset, it loses its special proper- - ties, even if it is subsequently reset. - 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, the - shell enables each option in the list before reading any startup - files. If this variable is exported, child shells will enable - each option in the list. This variable is read-only. - SSHHLLVVLL Incremented by one each time an instance of bbaasshh is started. - SSRRAANNDDOOMM - Each time it is referenced, this variable expands to a 32-bit - pseudo-random number. The random number generator is not linear - on systems that support _/_d_e_v_/_u_r_a_n_d_o_m or _a_r_c_4_r_a_n_d_o_m(3), so each - returned number has no relationship to the numbers preceding it. - The random number generator cannot be seeded, so assignments to - this variable have no effect. If SSRRAANNDDOOMM is unset, it loses its - special properties, even if it is subsequently reset. - UUIIDD Expands to the user ID of the current user, initialized at shell - startup. This variable is readonly. + This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. Each + element of FFUUNNCCNNAAMMEE has corresponding elements in BBAASSHH__LLIINNEENNOO and + BBAASSHH__SSOOUURRCCEE to describe the call stack. For instance, + $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at + line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The ccaalllleerr builtin displays the + current call stack using this information. + GGRROOUUPPSS + An array variable containing the list of groups of which the current + user is a member. Assignments to GGRROOUUPPSS have no effect. If GGRROOUUPPSS + 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. Assignments to HHIISSTTCCMMDD have no effect. If HHIISSTTCCMMDD is un- + set, it loses its special properties, even if it is subsequently re- + set. + 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 executing. The default is system-depen- + dent. + LLIINNEENNOO + Each time this parameter is referenced, the shell substitutes a dec- + imal number representing the current sequential line number (start- + ing with 1) within a script or function. When not in a script or + function, the value substituted is not guaranteed to be meaningful. + If LLIINNEENNOO is unset, it loses its special properties, even if it is + subsequently reset. + 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. + MMAAPPFFIILLEE + An array variable (see AArrrraayyss below) created to hold the text read + by the mmaappffiillee builtin when no variable name is supplied. + OOLLDDPPWWDD + The previous working directory as set by the ccdd command. + OOPPTTAARRGG + The value of the last option argument processed by the ggeettooppttss + builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + OOPPTTIINNDD + The index of the next argument to be processed by the ggeettooppttss + builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + OOSSTTYYPPEE + Automatically set to a string that describes the operating system on + which bbaasshh is executing. The default is system-dependent. + PPIIPPEESSTTAATTUUSS + An array variable (see AArrrraayyss below) containing a list of exit sta- + tus values from the commands in the most-recently-executed fore- + ground pipeline, which may consist of only a simple command (see + SSHHEELLLL GGRRAAMMMMAARR above). BBaasshh sets PPIIPPEESSTTAATTUUSS after executing multi- + element pipelines, timed and negated pipelines, simple commands, + subshells created with the ( operator, the [[[[ and (((( compound com- + mands, and after error conditions that result in the shell aborting + command execution. + PPPPIIDD The process ID of the shell's parent. This variable is readonly. + PPWWDD The current working directory as set by the ccdd command. + RRAANNDDOOMM + Each time this parameter is referenced, it expands to a random inte- + ger between 0 and 32767. Assigning a value to RRAANNDDOOMM initializes + (seeds) the sequence of random numbers. Seeding the random number + generator with the same constant value produces the same sequence of + values. If RRAANNDDOOMM is unset, it loses its special properties, even + if it is subsequently reset. + RREEAADDLLIINNEE__AARRGGUUMMEENNTT + Any numeric argument given to a rreeaaddlliinnee command that was defined + using "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) when it was in- + voked. + RREEAADDLLIINNEE__LLIINNEE + The contents of the rreeaaddlliinnee line buffer, for use with "bind -x" + (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + RREEAADDLLIINNEE__MMAARRKK + The position of the mark (saved insertion point) in the rreeaaddlliinnee + line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS be- + low). The characters between the insertion point and the mark are + often called the _r_e_g_i_o_n. + RREEAADDLLIINNEE__PPOOIINNTT + The position of the insertion point in the rreeaaddlliinnee line buffer, for + use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when no + arguments are supplied. + SSEECCOONNDDSS + Each time this parameter is referenced, it expands to the number of + seconds since shell invocation. If a value is assigned to SSEECCOONNDDSS, + the value returned upon subsequent references is the number of sec- + onds since the assignment plus the value assigned. The number of + seconds at shell invocation and the current time are always deter- + mined by querying the system clock at one-second resolution. If + SSEECCOONNDDSS is unset, it loses its special properties, even if it is + subsequently reset. + 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 com- + mand (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, the shell enables each op- + tion in the list before reading any startup files. If this variable + is exported, child shells will enable each option in the list. This + variable is read-only. + SSHHLLVVLL Incremented by one each time an instance of bbaasshh is started. + SSRRAANNDDOOMM + Each time it is referenced, this variable expands to a 32-bit + pseudo-random number. The random number generator is not linear on + systems that support _/_d_e_v_/_u_r_a_n_d_o_m or _a_r_c_4_r_a_n_d_o_m(3), so each returned + number has no relationship to the numbers preceding it. The random + number generator cannot be seeded, so assignments to this variable + have no effect. If SSRRAANNDDOOMM is unset, it loses its special proper- + ties, even if it is subsequently reset. + UUIIDD Expands to the user ID of the current user, initialized at shell + startup. This variable is readonly. - The shell uses the following variables. In some cases, bbaasshh assigns a - default value to a variable; these cases are noted below. + The shell uses the following variables. In some cases, bbaasshh assigns a de- + fault value to a variable; these cases are noted below. - BBAASSHH__CCOOMMPPAATT - The value is used to set the shell's compatibility level. See - SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below for a description of the various - compatibility levels and their effects. The value may be a dec- - imal number (e.g., 4.2) or an integer (e.g., 42) corresponding - to the desired compatibility level. If BBAASSHH__CCOOMMPPAATT is unset or - set to the empty string, the compatibility level is set to the - default for the current version. If BBAASSHH__CCOOMMPPAATT is set to a - value that is not one of the valid compatibility levels, the - shell prints an error message and sets the compatibility level - to the default for the current version. A subset of the valid - values correspond to the compatibility levels described below - under SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE. For example, 4.2 and 42 are - valid values that correspond to the ccoommppaatt4422 sshhoopptt option and - set the compatibility level to 42. The current version is also - a valid value. - BBAASSHH__EENNVV - If this parameter is set when bbaasshh is executing a shell script, - its expanded value is interpreted as a filename containing com- - mands to initialize the shell before it reads and executes com- - mands from the script. The value of BBAASSHH__EENNVV is subjected to - parameter expansion, command substitution, and arithmetic expan- - sion before being interpreted as a filename. PPAATTHH is not used - to search for the resultant filename. - BBAASSHH__XXTTRRAACCEEFFDD - If set to an integer corresponding to a valid file descriptor, - bbaasshh writes the trace output generated when "set -x" is enabled - to that file descriptor, instead of the standard error. The - file descriptor is closed when BBAASSHH__XXTTRRAACCEEFFDD is unset or as- - signed a new value. Unsetting BBAASSHH__XXTTRRAACCEEFFDD or assigning it the - empty string causes the trace output to be sent to the standard - error. Note that setting BBAASSHH__XXTTRRAACCEEFFDD to 2 (the standard error - file descriptor) and then unsetting it will result in the stan- - dard error being closed. - CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated - list of directories where the shell looks for directories speci- - fied as arguments to the ccdd command. A sample value is - ".:~:/usr". - CCHHIILLDD__MMAAXX - Set the number of exited child status values for the shell to - remember. BBaasshh will not allow this value to be decreased below - a POSIX-mandated minimum, and there is a maximum value (cur- - rently 8192) that this may not exceed. The minimum value is - system-dependent. - CCOOLLUUMMNNSS - Used by the sseelleecctt compound command to determine the terminal - width when printing selection lists. Automatically set if the - cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon - receipt of a SSIIGGWWIINNCCHH. - CCOOMMPPRREEPPLLYY - An array variable from which bbaasshh reads the possible completions - generated by a shell function invoked by the programmable com- - pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each ar- - ray element contains one possible completion. - EEMMAACCSS If bbaasshh finds this variable in the environment when the shell - starts with value "t", it assumes that the shell is running in - an Emacs shell buffer and disables line editing. - EENNVV Expanded and executed similarly to BBAASSHH__EENNVV (see IINNVVOOCCAATTIIOONN - above) when an interactive shell is invoked in posix mode. - EEXXEECCIIGGNNOORREE - A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg) - defining the set of filenames to be ignored by command search - using PPAATTHH. Files whose full pathnames match one of these pat- - terns are not considered executable files for the purposes of - completion and command execution via PPAATTHH lookup. This does not - affect the behavior of the [[, tteesstt, and [[[[ commands. Full path- - names in the command hash table are not subject to EEXXEECCIIGGNNOORREE. - Use this variable to ignore shared library files that have the - executable bit set, but are not executable files. The pattern - matching honors the setting of the eexxttgglloobb shell option. - 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 suf- - fix matches one of the entries in FFIIGGNNOORREE is excluded from the - list of matched filenames. A sample value is ".o:~". Since - tilde expansion takes place after ":" in assignment statements, - make sure to quote assignments appropriately to avoid it as ap- - propriate. - FFUUNNCCNNEESSTT - If set to a numeric value greater than 0, defines a maximum - function nesting level. Function invocations that exceed this - nesting level cause the current command to abort. - GGLLOOBBIIGGNNOORREE - A colon-separated list of patterns defining the set of file - names to be ignored by pathname expansion. If a file name - matched by a pathname expansion pattern also matches one of the - patterns in GGLLOOBBIIGGNNOORREE, it is removed from the list of matches. - The pattern matching honors the setting of the eexxttgglloobb shell op- - tion. - GGLLOOBBSSOORRTT - Controls how the results of pathname expansion are sorted. The - value of this variable specifies the sort criteria and sort or- - der for the results of pathname expansion. If this variable is - unset or set to the null string, pathname expansion uses the - historical behavior of sorting by name, in ascending lexico- - graphic order as determined by the LLCC__CCOOLLLLAATTEE shell variable. + BBAASSHH__CCOOMMPPAATT + The value is used to set the shell's compatibility level. See SSHHEELLLL + CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below for a description of the various compati- + bility levels and their effects. The value may be a decimal number + (e.g., 4.2) or an integer (e.g., 42) corresponding to the desired + compatibility level. If BBAASSHH__CCOOMMPPAATT is unset or set to the empty + string, the compatibility level is set to the default for the cur- + rent version. If BBAASSHH__CCOOMMPPAATT is set to a value that is not one of + the valid compatibility levels, the shell prints an error message + and sets the compatibility level to the default for the current ver- + sion. A subset of the valid values correspond to the compatibility + levels described below under SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE. For example, + 4.2 and 42 are valid values that correspond to the ccoommppaatt4422 sshhoopptt + option and set the compatibility level to 42. The current version + is also a valid value. + BBAASSHH__EENNVV + If this parameter is set when bbaasshh is executing a shell script, its + expanded value is interpreted as a filename containing commands to + initialize the shell before it reads and executes commands from the + script. The value of BBAASSHH__EENNVV is subjected to parameter expansion, + command substitution, and arithmetic expansion before being inter- + preted as a filename. PPAATTHH is not used to search for the resultant + filename. + BBAASSHH__XXTTRRAACCEEFFDD + If set to an integer corresponding to a valid file descriptor, bbaasshh + writes the trace output generated when "set -x" is enabled to that + file descriptor, instead of the standard error. The file descriptor + is closed when BBAASSHH__XXTTRRAACCEEFFDD is unset or assigned a new value. Un- + setting BBAASSHH__XXTTRRAACCEEFFDD or assigning it the empty string causes the + trace output to be sent to the standard error. Note that setting + BBAASSHH__XXTTRRAACCEEFFDD to 2 (the standard error file descriptor) and then un- + setting it will result in the standard error being closed. + CCDDPPAATTHH + The search path for the ccdd command. This is a colon-separated list + of directories where the shell looks for directories specified as + arguments to the ccdd command. A sample value is ".:~:/usr". + CCHHIILLDD__MMAAXX + Set the number of exited child status values for the shell to remem- + ber. BBaasshh will not allow this value to be decreased below a POSIX- + mandated minimum, and there is a maximum value (currently 8192) that + this may not exceed. The minimum value is system-dependent. + CCOOLLUUMMNNSS + Used by the sseelleecctt compound command to determine the terminal width + when printing selection lists. Automatically set if the cchheecckkwwiinn-- + ssiizzee option is enabled or in an interactive shell upon receipt of a + SSIIGGWWIINNCCHH. + CCOOMMPPRREEPPLLYY + An array variable from which bbaasshh reads the possible completions + generated by a shell function invoked by the programmable completion + facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each array element + contains one possible completion. + EEMMAACCSS If bbaasshh finds this variable in the environment when the shell starts + with value "t", it assumes that the shell is running in an Emacs + shell buffer and disables line editing. + EENNVV Expanded and executed similarly to BBAASSHH__EENNVV (see IINNVVOOCCAATTIIOONN above) + when an interactive shell is invoked in posix mode. + EEXXEECCIIGGNNOORREE + A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg) + defining the set of filenames to be ignored by command search using + PPAATTHH. Files whose full pathnames match one of these patterns are + not considered executable files for the purposes of completion and + command execution via PPAATTHH lookup. This does not affect the behav- + ior of the [[, tteesstt, and [[[[ commands. Full pathnames in the command + hash table are not subject to EEXXEECCIIGGNNOORREE. Use this variable to ig- + nore shared library files that have the executable bit set, but are + not executable files. The pattern matching honors the setting of + the eexxttgglloobb shell option. + FFCCEEDDIITT + The default editor for the ffcc builtin command. + FFIIGGNNOORREE + A colon-separated list of suffixes to ignore when performing file- + name 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:~". Since tilde expansion + takes place after ":" in assignment statements, make sure to quote + assignments appropriately to avoid it as appropriate. + FFUUNNCCNNEESSTT + If set to a numeric value greater than 0, defines a maximum function + nesting level. Function invocations that exceed this nesting level + cause the current command to abort. + GGLLOOBBIIGGNNOORREE + A colon-separated list of patterns defining the set of file names to + be ignored by pathname expansion. If a file name matched by a path- + name expansion pattern also matches one of the patterns in GGLLOOBBIIGG-- + NNOORREE, it is removed from the list of matches. The pattern matching + honors the setting of the eexxttgglloobb shell option. + GGLLOOBBSSOORRTT + Controls how the results of pathname expansion are sorted. The + value of this variable specifies the sort criteria and sort order + for the results of pathname expansion. If this variable is unset or + set to the null string, pathname expansion uses the historical be- + havior of sorting by name, in ascending lexicographic order as de- + termined by the LLCC__CCOOLLLLAATTEE shell variable. - If set, a valid value begins with an optional _+, which is ig- - nored, or _-, which reverses the sort order from ascending to de- - scending, followed by a sort specifier. The valid sort speci- - fiers are _n_a_m_e, _n_u_m_e_r_i_c, _s_i_z_e, _m_t_i_m_e, _a_t_i_m_e, _c_t_i_m_e, and _b_l_o_c_k_s, - which sort the files on name, names in numeric rather than lexi- - cographic order, file size, modification time, access time, in- - ode change time, and number of blocks, respectively. If any of - the non-name keys compare as equal (e.g., if two files are the - same size), sorting uses the name as a secondary sort key. + If set, a valid value begins with an optional _+, which is ignored, + or _-, which reverses the sort order from ascending to descending, + followed by a sort specifier. The valid sort specifiers are _n_a_m_e, + _n_u_m_e_r_i_c, _s_i_z_e, _m_t_i_m_e, _a_t_i_m_e, _c_t_i_m_e, and _b_l_o_c_k_s, which sort the files + on name, names in numeric rather than lexicographic order, file + size, modification time, access time, inode change time, and number + of blocks, respectively. If any of the non-name keys compare as + equal (e.g., if two files are the same size), sorting uses the name + as a secondary sort key. - For example, a value of _-_m_t_i_m_e sorts the results in descending - order by modification time (newest first). + For example, a value of _-_m_t_i_m_e sorts the results in descending order + by modification time (newest first). - The _n_u_m_e_r_i_c specifier treats names consisting solely of digits - as numbers and sorts them using their numeric value (so "2" - sorts before "10", for example). When using _n_u_m_e_r_i_c, names con- - taining non-digits sort after all the all-digit names and are - sorted by name using the traditional behavior. + The _n_u_m_e_r_i_c specifier treats names consisting solely of digits as + numbers and sorts them using their numeric value (so "2" sorts be- + fore "10", for example). When using _n_u_m_e_r_i_c, names containing non- + digits sort after all the all-digit names and are sorted by name us- + ing the traditional behavior. - A sort specifier of _n_o_s_o_r_t disables sorting completely; bbaasshh re- - turns the results in the order they are read from the file sys- - tem, ignoring any leading _-. + A sort specifier of _n_o_s_o_r_t disables sorting completely; bbaasshh returns + the results in the order they are read from the file system, ignor- + ing any leading _-. - If the sort specifier is missing, it defaults to _n_a_m_e, so a - value of _+ is equivalent to the null string, and a value of _- - sorts by name in descending order. Any invalid value restores - the historical sorting behavior. - HHIISSTTCCOONNTTRROOLL - A colon-separated list of values controlling how commands are - saved on the history list. If the list of values includes - _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not - saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines - matching the previous history entry not to be saved. A value of - _i_g_n_o_r_e_b_o_t_h is shorthand for _i_g_n_o_r_e_s_p_a_c_e and _i_g_n_o_r_e_d_u_p_s. A value - of _e_r_a_s_e_d_u_p_s causes all previous lines matching the current line - to be removed from the history list before that line is saved. - Any value not in the above list is ignored. If HHIISSTTCCOONNTTRROOLL is - unset, or does not include a valid value, bbaasshh saves all lines - read by the shell parser on the history list, subject to the - value of HHIISSTTIIGGNNOORREE. If the first line of a multi-line compound - command was saved, the second and subsequent lines are not - tested, and are added to the history regardless of the value of - HHIISSTTCCOONNTTRROOLL. If the first line was not saved, the second and - subsequent lines of the command are not saved either. - HHIISSTTFFIILLEE - The name of the file in which command history is saved (see HHIISS-- - TTOORRYY below). BBaasshh assigns a default value of _~_/_._b_a_s_h___h_i_s_t_o_r_y. - If HHIISSTTFFIILLEE is unset or null, the shell does not save the com- - mand history when it exits. - HHIISSTTFFIILLEESSIIZZEE - The maximum number of lines contained in the history file. When - this variable is assigned a value, the history file is trun- - cated, if necessary, to contain no more than the number of his- - tory entries that total no more than that number of lines by re- - moving the oldest entries. If the history list contains multi- - line entries, the history file may contain more lines than this - maximum to avoid leaving partial history entries. The history - file is also truncated to this size after writing it when a - shell exits or by the hhiissttoorryy builtin. If the value is 0, the - history file is truncated to zero size. Non-numeric values and - numeric values less than zero inhibit truncation. The shell - sets the default value to the value of HHIISSTTSSIIZZEE after reading - any startup files. - HHIISSTTIIGGNNOORREE - A colon-separated list of patterns used to decide which command - lines should be saved on the history list. If a command line - matches one of the patterns in the value of HHIISSTTIIGGNNOORREE, it is - not saved on the history list. Each pattern is anchored at the - beginning of the line and must match the complete line (bbaasshh - does not implicitly append a "**"). Each pattern is tested - against the line after the checks specified by HHIISSTTCCOONNTTRROOLL are - applied. In addition to the normal shell pattern matching char- - acters, "&&" matches the previous history line. A backslash es- - capes the "&&"; the backslash is removed before attempting a - match. If the first line of a multi-line compound command was - saved, the second and subsequent lines are not tested, and are - added to the history regardless of the value of HHIISSTTIIGGNNOORREE. If - the first line was not saved, the second and subsequent lines of - the command are not saved either. The pattern matching honors - the setting of the eexxttgglloobb shell option. - HHIISSTTIIGGNNOORREE subsumes some of the function of HHIISSTTCCOONNTTRROOLL. A pat- - tern of "&" is identical to "ignoredups", and a pattern of "[ - ]*" is identical to "ignorespace". Combining these two pat- - terns, separating them with a colon, provides the functionality - of "ignoreboth". - HHIISSTTSSIIZZEE - The number of commands to remember in the command history (see - HHIISSTTOORRYY below). If the value is 0, commands are not saved in - the history list. Numeric values less than zero result in every - command being saved on the history list (there is no limit). - The shell sets the default value to 500 after reading any - startup files. - HHIISSTTTTIIMMEEFFOORRMMAATT - If this variable is set and not null, its value is used as a - format string for _s_t_r_f_t_i_m_e(3) to print the time stamp associated - with each history entry displayed by the hhiissttoorryy builtin. If - this variable is set, the shell writes time stamps to the his- - tory file so they may be preserved across shell sessions. This - uses the history comment character to distinguish timestamps - from other history lines. - 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. - 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 list of possible hostname completions may be changed while - the shell is running; the next time hostname completion is at- - tempted after the value is changed, bbaasshh adds the contents of - the new file to the existing list. If HHOOSSTTFFIILLEE is set, but has - no value, or does not name a readable file, bbaasshh attempts to - read _/_e_t_c_/_h_o_s_t_s to obtain the list of possible hostname comple- - tions. When HHOOSSTTFFIILLEE is unset, bbaasshh clears the hostname list. - 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 af- - ter expansion and to split lines into words with the rreeaadd - builtin command. Word splitting is described below under EEXXPPAANN-- - SSIIOONN. The default value is "". - 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 - characters on an input line before bbaasshh exits. If the variable - is set but does not have a numeric value, or the value is null, - the default value is 10. If it is unset, EEOOFF signifies the end - of input to the shell. - IINNPPUUTTRRCC - The filename for the rreeaaddlliinnee startup file, overriding the de- - fault of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE below). - IINNSSIIDDEE__EEMMAACCSS - If this variable appears in the environment when the shell - starts, bbaasshh assumes that it is running inside an Emacs shell - buffer and may disable line editing, depending on the value of - TTEERRMM. - LLAANNGG Used to determine the locale category for any category 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, equivalence classes, and collating se- - quences 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 translate double- - quoted strings preceded by a $$. - LLCC__NNUUMMEERRIICC - This variable determines the locale category used for number - formatting. - LLCC__TTIIMMEE - This variable determines the locale category used for data and - time formatting. - LLIINNEESS Used by the sseelleecctt compound command to determine the column - length for printing selection lists. Automatically set if the - cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon - receipt of a SSIIGGWWIINNCCHH. - MMAAIILL If the value is set to a file or directory name and the MMAAIILLPPAATTHH - variable is not set, bbaasshh informs the user of the arrival of - mail in the specified file or Maildir-format directory. - MMAAIILLCCHHEECCKK - Specifies how often (in seconds) bbaasshh checks for mail. The de- - fault is 60 seconds. When it is time to check for mail, the - shell does so before displaying the primary prompt. If this - variable is unset, or set to a value that is not a number - greater than or equal to zero, the shell disables mail checking. - MMAAIILLPPAATTHH - A colon-separated list of filenames to be checked for mail. The - message to be printed when mail arrives in a particular file may - be specified by separating the filename from the message with a - "?". When used in the text of the message, $$__ expands to the - name of the current mailfile. For example: - MMAAIILLPPAATTHH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"' - BBaasshh can be configured to supply a default value for this vari- - able (there is no value by default), but the location of the - user mail files that it uses is system dependent (e.g., - /var/mail/$$UUSSEERR). - 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. - PPAATTHH The search path for commands. It is a colon-separated list of - directories in which the shell looks for commands (see CCOOMMMMAANNDD - EEXXEECCUUTTIIOONN below). A zero-length (null) directory name in the - value of PPAATTHH indicates the current directory. A null directory - name may appear as two adjacent colons, or as an initial or - trailing colon. The default path is system-dependent, and is - set by the administrator who installs bbaasshh. A common value is - /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin - PPOOSSIIXXLLYY__CCOORRRREECCTT - If this variable is in the environment when bbaasshh starts, the - shell enters posix mode before reading the startup files, as if - the ----ppoossiixx invocation option had been supplied. If it is set - while the shell is running, bbaasshh enables posix mode, as if the - command "set -o posix" had been executed. When the shell enters - posix mode, it sets this variable if it was not already set. - PPRROOMMPPTT__CCOOMMMMAANNDD - If this variable is set, and is an array, the value of each set - element is executed as a command prior to issuing each primary - prompt. If this is set but not an array variable, its value is - used as a command to execute instead. - PPRROOMMPPTT__DDIIRRTTRRIIMM - If set to a number greater than zero, the value is used as the - number of trailing directory components to retain when expanding - the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). - Characters removed are replaced with an ellipsis. - PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) - and displayed by interactive shells after reading a command and - before the command is executed. - PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) - and used as the primary prompt string. The default value is - "\s-\v\$ ". - 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 ex- - ecution trace. The first character of the expanded value of PPSS44 - is replicated multiple times, as necessary, to indicate multiple - levels of indirection. The default is "+ ". - SSHHEELLLL This variable expands to the full pathname to the shell. If it - is not set when the shell starts, bbaasshh assigns to it the full - pathname of the current user's login shell. - TTIIMMEEFFOORRMMAATT - The value of this parameter is used as a format string specify- - ing how the timing information for pipelines prefixed with the - ttiimmee reserved word should be displayed. The %% character intro- - duces an escape sequence that is expanded to a time value or - other information. The escape sequences and their meanings are - as follows; the brackets 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. + If the sort specifier is missing, it defaults to _n_a_m_e, so a value of + _+ is equivalent to the null string, and a value of _- sorts by name + in descending order. Any invalid value restores the historical + sorting behavior. + HHIISSTTCCOONNTTRROOLL + A colon-separated list of values controlling how commands are saved + on the history list. If the list of values includes _i_g_n_o_r_e_s_p_a_c_e, + lines which begin with a ssppaaccee character are not saved in the his- + tory list. A value of _i_g_n_o_r_e_d_u_p_s causes lines matching the previous + history entry not to be saved. A value of _i_g_n_o_r_e_b_o_t_h is shorthand + for _i_g_n_o_r_e_s_p_a_c_e and _i_g_n_o_r_e_d_u_p_s. A value of _e_r_a_s_e_d_u_p_s causes all + previous lines matching the current line to be removed from the his- + tory list before that line is saved. Any value not in the above + list is ignored. If HHIISSTTCCOONNTTRROOLL is unset, or does not include a + valid value, bbaasshh saves all lines read by the shell parser on the + history list, subject to the value of HHIISSTTIIGGNNOORREE. If the first line + of a multi-line compound command was saved, the second and subse- + quent lines are not tested, and are added to the history regardless + of the value of HHIISSTTCCOONNTTRROOLL. If the first line was not saved, the + second and subsequent lines of the command are not saved either. + HHIISSTTFFIILLEE + The name of the file in which command history is saved (see HHIISSTTOORRYY + below). BBaasshh assigns a default value of _~_/_._b_a_s_h___h_i_s_t_o_r_y. If HHIISSTT-- + FFIILLEE is unset or null, the shell does not save the command history + when it exits. + HHIISSTTFFIILLEESSIIZZEE + The maximum number of lines contained in the history file. When + this variable is assigned a value, the history file is truncated, if + necessary, to contain no more than the number of history entries + that total no more than that number of lines by removing the oldest + entries. If the history list contains multi-line entries, the his- + tory file may contain more lines than this maximum to avoid leaving + partial history entries. The history file is also truncated to this + size after writing it when a shell exits or by the hhiissttoorryy builtin. + If the value is 0, the history file is truncated to zero size. Non- + numeric values and numeric values less than zero inhibit truncation. + The shell sets the default value to the value of HHIISSTTSSIIZZEE after + reading any startup files. + HHIISSTTIIGGNNOORREE + A colon-separated list of patterns used to decide which command + lines should be saved on the history list. If a command line + matches one of the patterns in the value of HHIISSTTIIGGNNOORREE, it is not + saved on the history list. Each pattern is anchored at the begin- + ning of the line and must match the complete line (bbaasshh does not + implicitly append a "**"). 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. A backslash escapes the "&&"; the backslash + is removed before attempting a match. If the first line of a multi- + line compound command was saved, the second and subsequent lines are + not tested, and are added to the history regardless of the value of + HHIISSTTIIGGNNOORREE. If the first line was not saved, the second and subse- + quent lines of the command are not saved either. The pattern match- + ing honors the setting of the eexxttgglloobb shell option. + HHIISSTTIIGGNNOORREE subsumes some of the function of HHIISSTTCCOONNTTRROOLL. A pattern + of "&" is identical to "ignoredups", and a pattern of "[ ]*" is + identical to "ignorespace". Combining these two patterns, separat- + ing them with a colon, provides the functionality of "ignoreboth". + HHIISSTTSSIIZZEE + The number of commands to remember in the command history (see HHIISS-- + TTOORRYY below). If the value is 0, commands are not saved in the his- + tory list. Numeric values less than zero result in every command + being saved on the history list (there is no limit). The shell sets + the default value to 500 after reading any startup files. + HHIISSTTTTIIMMEEFFOORRMMAATT + If this variable is set and not null, its value is used as a format + string for _s_t_r_f_t_i_m_e(3) to print the time stamp associated with each + history entry displayed by the hhiissttoorryy builtin. If this variable is + set, the shell writes time stamps to the history file so they may be + preserved across shell sessions. This uses the history comment + character to distinguish timestamps from other history lines. + 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. + 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 + list of possible hostname completions may be changed while the shell + is running; the next time hostname completion is attempted after the + value is changed, bbaasshh adds the contents of the new file to the ex- + isting list. If HHOOSSTTFFIILLEE is set, but has no value, or does not name + a readable file, bbaasshh attempts to read _/_e_t_c_/_h_o_s_t_s to obtain the list + of possible hostname completions. When HHOOSSTTFFIILLEE is unset, bbaasshh + clears the hostname list. + 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 com- + mand. Word splitting is described below under EEXXPPAANNSSIIOONN. The de- + fault value is "". + 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 is set but + does not have a numeric value, or the value is null, the default + value is 10. If it is unset, EEOOFF signifies the end of input to the + shell. + IINNPPUUTTRRCC + The filename for the rreeaaddlliinnee startup file, overriding the default + of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE below). + IINNSSIIDDEE__EEMMAACCSS + If this variable appears in the environment when the shell starts, + bbaasshh assumes that it is running inside an Emacs shell buffer and may + disable line editing, depending on the value of TTEERRMM. + LLAANNGG Used to determine the locale category for any category not specifi- + cally 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, 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 translate double-quoted + strings preceded by a $$. + LLCC__NNUUMMEERRIICC + This variable determines the locale category used for number format- + ting. + LLCC__TTIIMMEE + This variable determines the locale category used for data and time + formatting. + LLIINNEESS Used by the sseelleecctt compound command to determine the column length + for printing selection lists. Automatically set if the cchheecckkwwiinnssiizzee + option is enabled or in an interactive shell upon receipt of a SSIIGG-- + WWIINNCCHH. + MMAAIILL If the value is set to a file or directory name and the MMAAIILLPPAATTHH + variable is not set, bbaasshh informs the user of the arrival of mail in + the specified file or Maildir-format directory. + 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 displaying the primary prompt. If this variable is unset, or + set to a value that is not a number greater than or equal to zero, + the shell disables mail checking. + MMAAIILLPPAATTHH + A colon-separated list of filenames to be checked for mail. The + message to be printed when mail arrives in a particular file may be + specified by separating the filename from the message with a "?". + When used in the text of the message, $$__ expands to the name of the + current mailfile. For example: + MMAAIILLPPAATTHH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"' + BBaasshh can be configured to supply a default value for this variable + (there is no value by default), but the location of the user mail + files that it uses is system dependent (e.g., /var/mail/$$UUSSEERR). + 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. + PPAATTHH The search path for commands. It is a colon-separated list of di- + rectories in which the shell looks for commands (see CCOOMMMMAANNDD EEXXEECCUU-- + TTIIOONN below). A zero-length (null) directory name in the value of + PPAATTHH indicates the current directory. A null directory name may ap- + pear as two adjacent colons, or as an initial or trailing colon. + The default path is system-dependent, and is set by the administra- + tor who installs bbaasshh. A common value is + /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin + PPOOSSIIXXLLYY__CCOORRRREECCTT + If this variable is in the environment when bbaasshh starts, the shell + enters posix mode before reading the startup files, as if the + ----ppoossiixx invocation option had been supplied. If it is set while the + shell is running, bbaasshh enables posix mode, as if the command "set -o + posix" had been executed. When the shell enters posix mode, it sets + this variable if it was not already set. + PPRROOMMPPTT__CCOOMMMMAANNDD + If this variable is set, and is an array, the value of each set ele- + ment is executed as a command prior to issuing each primary prompt. + If this is set but not an array variable, its value is used as a + command to execute instead. + PPRROOMMPPTT__DDIIRRTTRRIIMM + If set to a number greater than zero, the value is used as the num- + ber of trailing directory components to retain when expanding the \\ww + and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). Characters re- + moved are replaced with an ellipsis. + PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) and + displayed by interactive shells after reading a command and before + the command is executed. + PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) and + used as the primary prompt string. The default value is "\s-\v\$ ". + 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 the expanded value of PPSS44 is replicated mul- + tiple times, as necessary, to indicate multiple levels of indirec- + tion. The default is "+ ". + SSHHEELLLL This variable expands to the full pathname to the shell. If it is + not set when the shell starts, bbaasshh assigns to it the full pathname + of the current user's login shell. + TTIIMMEEFFOORRMMAATT + The value of this parameter is used as a format string specifying + how the timing information for pipelines prefixed with the ttiimmee re- + served word should be displayed. The %% character introduces an es- + cape sequence that is expanded to a time value or other information. + The escape sequences and their meanings are as follows; the brackets + 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, the number - of fractional digits after a decimal point. A value of 0 causes - no decimal point or fraction to be output. ttiimmee prints at most - six digits after the decimal point; values of _p greater than 6 - are changed to 6. If _p is not specified, ttiimmee prints three dig- - its after the decimal point. + The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n, the number of + fractional digits after a decimal point. A value of 0 causes no + decimal point or fraction to be output. ttiimmee prints at most six + digits after the decimal point; values of _p greater than 6 are + changed to 6. If _p is not specified, ttiimmee prints three digits after + the decimal point. - 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. + 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 frac- + tion is included. - If this variable is not set, bbaasshh acts as if it had the value - $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null, - bbaasshh does not display any timing information. A trailing new- - line is added when the format string is displayed. - TTMMOOUUTT If set to a value greater than zero, the rreeaadd builtin uses the - value as its default timeout. The sseelleecctt command terminates if - input does not arrive after TTMMOOUUTT seconds when input is coming - from a terminal. In an interactive shell, the value is inter- - preted as the number of seconds to wait for a line of input af- - ter issuing the primary prompt. BBaasshh terminates after waiting - for that number of seconds if a complete line of input does not - arrive. - TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which - bbaasshh creates temporary files for the shell's use. - aauuttoo__rreessuummee - This variable controls how the shell interacts with the user and - job control. If this variable is set, simple commands consist- - ing of only a single word, 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 or containing the word, this selects the most recently ac- - cessed job. The _n_a_m_e of a stopped job, in this context, is the - command line used to start it, as displayed by jjoobbss. If set to - the value _e_x_a_c_t, the word must match the name of a stopped job - exactly; if set to _s_u_b_s_t_r_i_n_g, the word needs to match a sub- - string of the name of a stopped job. The _s_u_b_s_t_r_i_n_g value pro- - vides functionality analogous to the %%?? job identifier (see JJOOBB - CCOONNTTRROOLL below). If set to any other value (e.g., _p_r_e_f_i_x), the - word must be a prefix of a stopped job's name; this provides - functionality analogous to the %%_s_t_r_i_n_g job identifier. - hhiissttcchhaarrss - The two or three characters which control history expansion, - quick substitution, and tokenization (see HHIISSTTOORRYY EEXXPPAANNSSIIOONN be- - low). The first character is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, - the character which begins 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 character, nor- - mally "^^". When it appears as the first character on the line, - history substitution repeats the previous command, replacing one - string with another. The optional third character is the _h_i_s_- - _t_o_r_y _c_o_m_m_e_n_t character, normally "##", which indicates that the - remainder of the line is a comment when it appears as the first - character of a word. The history comment character disables - history substitution for the remaining words on the line. It - does not necessarily cause the shell parser to treat the rest of - the line as a comment. + If this variable is not set, bbaasshh acts as if it had the value + $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null, bbaasshh + does not display any timing information. A trailing newline is + added when the format string is displayed. + TTMMOOUUTT If set to a value greater than zero, the rreeaadd builtin uses the value + as its default timeout. The sseelleecctt command terminates if input does + not arrive after TTMMOOUUTT seconds when input is coming from a terminal. + In an interactive shell, the value is interpreted as the number of + seconds to wait for a line of input after issuing the primary + prompt. BBaasshh terminates after waiting for that number of seconds if + a complete line of input does not arrive. + TTMMPPDDIIRR + If set, bbaasshh uses its value as the name of a directory in which bbaasshh + creates temporary files for the shell's use. + aauuttoo__rreessuummee + This variable controls how the shell interacts with the user and job + control. If this variable is set, simple commands consisting of + only a single word, 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 or containing + the word, this selects the most recently accessed job. The _n_a_m_e of + a stopped job, in this context, is the command line used to start + it, as displayed by jjoobbss. If set to the value _e_x_a_c_t, the word must + match the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the + word 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 analogous to the %%?? job + identifier (see JJOOBB CCOONNTTRROOLL below). If set to any other value + (e.g., _p_r_e_f_i_x), the word must be a prefix of a stopped job's name; + this provides functionality analogous to the %%_s_t_r_i_n_g job identifier. + hhiissttcchhaarrss + The two or three characters which control history expansion, quick + substitution, 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 character, the character + which begins a history expansion, normally "!!". The second charac- + ter is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n character, normally "^^". When it ap- + pears as the first character on the line, history substitution re- + peats the previous command, replacing one string with another. The + optional third character is the _h_i_s_t_o_r_y _c_o_m_m_e_n_t character, normally + "##", which indicates that the remainder of the line is a comment + when it appears as the first character of a word. The history com- + ment character disables history substitution for the remaining words + on the line. It does not necessarily cause the shell parser to + treat the rest of the line as a comment. AArrrraayyss - BBaasshh provides one-dimensional indexed and associative array variables. - Any variable may be used as an indexed array; the ddeeccllaarree builtin ex- - plicitly declares an array. There is no maximum limit on the size of - an array, nor any requirement that members be indexed or assigned con- - tiguously. Indexed arrays are referenced using arithmetic expressions - that must expand to an integer (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below) and - are zero-based; associative arrays are referenced using arbitrary - strings. Unless otherwise noted, indexed array indices must be non- - negative integers. + BBaasshh provides one-dimensional indexed and associative array variables. Any + variable may be used as an indexed array; the ddeeccllaarree builtin explicitly + declares an array. There is no maximum limit on the size of an array, nor + any requirement that members be indexed or assigned contiguously. Indexed + arrays are referenced using arithmetic expressions that must expand to an + integer (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below) and are zero-based; associative + arrays are referenced using arbitrary strings. Unless otherwise noted, in- + dexed array indices must be non-negative integers. - The shell performs parameter and variable expansion, arithmetic expan- - sion, command substitution, and quote removal on indexed array sub- - scripts. Since this can potentially result in empty strings, subscript - indexing treats those as expressions that evaluate to 0. + The shell performs parameter and variable expansion, arithmetic expansion, + command substitution, and quote removal on indexed array subscripts. Since + this can potentially result in empty strings, subscript indexing treats + those as expressions that evaluate to 0. - The shell performs tilde expansion, parameter and variable expansion, - arithmetic expansion, command substitution, and quote removal on asso- - ciative array subscripts. Empty strings cannot be used as associative - array keys. + The shell performs tilde expansion, parameter and variable expansion, + arithmetic expansion, command substitution, and quote removal on associa- + tive array subscripts. Empty strings cannot be used as associative array + keys. - BBaasshh automatically creates an indexed array 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 - indexed 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. + BBaasshh automatically creates an indexed array 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 indexed + 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. - Associative arrays are created using - ddeeccllaarree --AA _n_a_m_e - . + Associative arrays are created using + ddeeccllaarree --AA _n_a_m_e + . - Attributes may be specified for an array variable using the ddeeccllaarree and - rreeaaddoonnllyy builtins. Each attribute applies to all members of an array. + Attributes may be specified for an array variable using the ddeeccllaarree and + rreeaaddoonnllyy builtins. Each attribute applies to all members of an array. - Arrays are assigned using compound assignments of the form _n_a_m_e=((value_1 - ... value_n)), where each _v_a_l_u_e may be of the form [_s_u_b_s_c_r_i_p_t]=_s_t_r_i_n_g. - Indexed array assignments do not require anything but _s_t_r_i_n_g. Each - _v_a_l_u_e in the list is expanded using the shell expansions described be- - low under EEXXPPAANNSSIIOONN, but _v_a_l_u_es that are valid variable assignments in- - cluding the brackets and subscript do not undergo brace expansion and - word splitting, as with individual variable assignments. + Arrays are assigned using compound assignments of the form _n_a_m_e=((value_1 ... + value_n)), where each _v_a_l_u_e may be of the form [_s_u_b_s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed + array assignments do not require anything but _s_t_r_i_n_g. Each _v_a_l_u_e in the + list is expanded using the shell expansions described below under EEXXPPAANN-- + SSIIOONN, but _v_a_l_u_es that are valid variable assignments including the brackets + and subscript do not undergo brace expansion and word splitting, as with + individual variable assignments. - When assigning to indexed arrays, if the optional brackets and sub- - script 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. + When assigning to indexed arrays, 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. - When assigning to an associative array, the words in a compound assign- - ment may be either assignment statements, for which the subscript is - required, or a list of words that is interpreted as a sequence of al- - ternating keys and values: _n_a_m_e=(( _k_e_y_1 _v_a_l_u_e_1 _k_e_y_2 _v_a_l_u_e_2 ...)). These - are treated identically to _n_a_m_e=(( [_k_e_y_1]=_v_a_l_u_e_1 [_k_e_y_2]=_v_a_l_u_e_2 ...)). - The first word in the list determines how the remaining words are in- - terpreted; all assignments in a list must be of the same type. When - using key/value pairs, the keys may not be missing or empty; a final - missing value is treated like the empty string. + When assigning to an associative array, the words in a compound assignment + may be either assignment statements, for which the subscript is required, + or a list of words that is interpreted as a sequence of alternating keys + and values: _n_a_m_e=(( _k_e_y_1 _v_a_l_u_e_1 _k_e_y_2 _v_a_l_u_e_2 ...)). These are treated identi- + cally to _n_a_m_e=(( [_k_e_y_1]=_v_a_l_u_e_1 [_k_e_y_2]=_v_a_l_u_e_2 ...)). The first word in the + list determines how the remaining words are interpreted; all assignments in + a list must be of the same type. When using key/value pairs, the keys may + not be missing or empty; a final missing value is treated like the empty + string. - This syntax is also accepted by the ddeeccllaarree builtin. Individual array - elements 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 in- - troduced above. + 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. - When assigning to an indexed array, if _n_a_m_e is subscripted by a nega- - tive number, that number is interpreted as relative to one greater than - the maximum index of _n_a_m_e, so negative indices count back from the end - of the array, and an index of -1 references the last element. + When assigning to an indexed array, if _n_a_m_e is subscripted by a negative + number, that number is interpreted as relative to one greater than the max- + imum index of _n_a_m_e, so negative indices count back from the end of the ar- + ray, and an index of -1 references the last element. - The "+=" operator appends to an array variable when assigning using the - compound assignment syntax; see PPAARRAAMMEETTEERRSS above. + The "+=" operator appends to an array variable when assigning using the + compound assignment syntax; see PPAARRAAMMEETTEERRSS above. - If one of the word expansions in a compound array assignment unsets the - variable, the results are unspecified. + If one of the word expansions in a compound array assignment unsets the + variable, the results are unspecified. - An array element is referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. The braces - are required to avoid conflicts 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, unless noted in the - description of a builtin or word expansion. These subscripts differ - only when the word appears within double quotes. If the word is dou- - ble-quoted, ${_n_a_m_e[*]} expands to a single word with the value of each - array member separated by the first character of the IIFFSS special vari- - able, 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. If the - double-quoted expansion occurs within a word, the expansion of the - first parameter is joined with the beginning part of the expansion of - the original word, and the expansion of the last parameter is joined - with the last part of the expansion of the original word. This is - analogous to the expansion of the special parameters ** and @@ (see SSppee-- - cciiaall PPaarraammeetteerrss above). + An array element is referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. The braces are + required to avoid conflicts 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, unless noted in the description + of a builtin or word expansion. These subscripts differ only when the word + appears within double quotes. If the word is double-quoted, ${_n_a_m_e[*]} ex- + pands to a single 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. If the double-quoted expansion occurs + within a word, the expansion of the first parameter is joined with the be- + ginning part of the expansion of the original word, and the expansion of + the last parameter is joined with the last part of the expansion of the + original word. This is analogous to the expansion of the special parame- + ters ** 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 ar- - ray. + ${#_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. - If the _s_u_b_s_c_r_i_p_t used to reference an element of an indexed array eval- - uates to a number less than zero, it is interpreted as relative to one - greater than the maximum index of the array, so negative indices count - back from the end of the array, and an index of -1 references the last - element. + If the _s_u_b_s_c_r_i_p_t used to reference an element of an indexed array evaluates + to a number less than zero, it is interpreted as relative to one greater + than the maximum index of the array, so negative indices count back from + the end of the array, and an index of -1 references the last element. - Referencing an array variable without a subscript is equivalent to ref- - erencing the array with a subscript of 0. Any reference to a variable - using a valid subscript is valid; bbaasshh creates an array if necessary. + Referencing an array variable without a subscript is equivalent to refer- + encing the array with a subscript of 0. Any reference to a variable using + a valid subscript is valid; bbaasshh creates an array if necessary. - An array variable is considered set if a subscript has been assigned a - value. The null string is a valid value. + An array variable is considered set if a subscript has been assigned a + value. The null string is a valid value. - It is possible to obtain the keys (indices) of an array as well as the - values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in - array variable _n_a_m_e. The treatment when in double quotes is similar to - the expansion of the special parameters _@ and _* within double quotes. + It is possible to obtain the keys (indices) of an array as well as the val- + ues. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in array + variable _n_a_m_e. The treatment when in double quotes is similar to the ex- + pansion of the special parameters _@ and _* within double quotes. - The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] un- - sets the array element at index _s_u_b_s_c_r_i_p_t, for both indexed and asso- - ciative arrays. Negative subscripts to indexed arrays are interpreted - as described above. Unsetting the last element of an array variable - does not unset the variable. uunnsseett _n_a_m_e, where _n_a_m_e is an array, re- - moves the entire array. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] behaves differently de- - pending on whether _n_a_m_e is an indexed or associative array when _s_u_b_- - _s_c_r_i_p_t is ** or @@. If _n_a_m_e is an associative array, this unsets the el- - ement with subscript ** or @@. If _n_a_m_e is an indexed array, unset re- - moves all of the elements but does not remove the array itself. + The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] unsets + the array element at index _s_u_b_s_c_r_i_p_t, for both indexed and associative ar- + rays. Negative subscripts to indexed arrays are interpreted as described + above. Unsetting the last element of an array variable does not unset the + variable. uunnsseett _n_a_m_e, where _n_a_m_e is an array, removes the entire array. + uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] behaves differently depending on whether _n_a_m_e is an + indexed or associative array when _s_u_b_s_c_r_i_p_t is ** or @@. If _n_a_m_e is an asso- + ciative array, this unsets the element with subscript ** or @@. If _n_a_m_e is + an indexed array, unset removes all of the elements but does not remove the + array itself. - When using a variable name with a subscript as an argument to a com- - mand, such as with uunnsseett, without using the word expansion syntax de- - scribed above, (e.g., unset a[4]), the argument is subject to pathname - expansion. Quote the argument if pathname expansion is not desired - (e.g., unset 'a[4]'). + When using a variable name with a subscript as an argument to a command, + such as with uunnsseett, without using the word expansion syntax described + above, (e.g., unset a[4]), the argument is subject to pathname expansion. + Quote the argument if pathname expansion is not desired (e.g., unset + 'a[4]'). - The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to - specify an indexed array and a --AA option to specify an associative ar- - ray. If both options are supplied, --AA takes precedence. 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. Other - builtins accept array name arguments as well (e.g., mmaappffiillee); see the - descriptions of individual builtins below for details. The shell pro- - vides a number of builtin array variables. + The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to spec- + ify an indexed array and a --AA option to specify an associative array. If + both options are supplied, --AA takes precedence. The rreeaadd builtin accepts a + --aa option to assign a list of words read from the standard input to an ar- + ray. The sseett and ddeeccllaarree builtins display array values in a way that al- + lows them to be reused as assignments. Other builtins accept array name + arguments as well (e.g., mmaappffiillee); see the descriptions of individual + builtins below for details. The shell provides a number of builtin array + variables. EEXXPPAANNSSIIOONN - Expansion is performed on the command line after it has been split into - words. The shell performs these expansions: _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, _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n, and _q_u_o_t_e _r_e_m_o_v_a_l. + Expansion is performed on the command line after it has been split into + words. The shell performs these expansions: _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, _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n, and _q_u_o_t_e _r_e_m_o_v_a_l. - The order of expansions is: brace expansion; tilde expansion, parameter - and variable expansion, arithmetic expansion, and command substitution - (done in a left-to-right fashion); word splitting; pathname expansion; - and quote removal. + The order of expansions is: brace expansion; tilde expansion, parameter and + variable expansion, arithmetic expansion, and command substitution (done in + a left-to-right fashion); word splitting; pathname expansion; and quote re- + moval. - On systems that can support it, there is an additional expansion avail- - able: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. This is performed at the same time as - tilde, parameter, variable, and arithmetic expansion and command sub- - stitution. + 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. This is performed at the same time as tilde, parame- + ter, variable, and arithmetic expansion and command substitution. - _Q_u_o_t_e _r_e_m_o_v_a_l is always performed last. It removes quote characters - present in the original word, not ones resulting from one of the other - expansions, unless they have been quoted themselves. + _Q_u_o_t_e _r_e_m_o_v_a_l is always performed last. It removes quote characters + present in the original word, not ones resulting from one of the other ex- + pansions, unless they have been quoted themselves. - Only brace expansion, word splitting, and pathname expansion can in- - crease the number of words of the expansion; other expansions expand a - single word to a single word. The only exceptions to this are the ex- - pansions of ""$$@@"" and ""$${{_n_a_m_e[[@@]]}}"", and, in most cases, $$** and - $${{_n_a_m_e[[**]]}} as explained above (see PPAARRAAMMEETTEERRSS). + Only brace expansion, word splitting, and pathname expansion can increase + 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[[@@]]}}"", and, in most cases, $$** 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 to generate arbitrary strings sharing a - common prefix and suffix, either of which can be empty. 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 are formed from an optional _p_r_e_- - _a_m_b_l_e, followed by either a series of comma-separated strings or a se- - quence expression 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 contained within - the braces, and the postscript is then appended to each resulting - string, expanding left to right. + _B_r_a_c_e _e_x_p_a_n_s_i_o_n is a mechanism to generate arbitrary strings sharing a com- + mon prefix and suffix, either of which can be empty. 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 are formed from an optional _p_r_e_a_m_b_l_e, fol- + lowed by either a series of comma-separated strings or a sequence expres- + sion 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 contained within the braces, and the + postscript is then appended to each resulting string, expanding left to + right. - Brace expansions may be nested. The results of each expanded string - are not sorted; brace expansion preserves left to right order. For ex- - ample, a{{d,c,b}}e expands into "ade ace abe". + Brace expansions may be nested. The results of each expanded string are + not sorted; brace expansion preserves left to right order. For example, + a{{d,c,b}}e expands into "ade ace abe". - A sequence expression takes the form _x...._y[[...._i_n_c_r]], where _x and _y are - either integers or single letters, and _i_n_c_r, an optional increment, is - an integer. When integers are supplied, the expression expands to each - number between _x and _y, inclusive. If either _x or _y begins with a - zero, each generated term will contain the same number of digits, zero- - padding where necessary. When letters are supplied, the expression ex- - pands to each character lexicographically between _x and _y, inclusive, - using the C locale. Note that both _x and _y must be of the same type - (integer or letter). When the increment is supplied, it is used as the - difference between each term. The default increment is 1 or -1 as ap- - propriate. + A sequence expression takes the form _x...._y[[...._i_n_c_r]], where _x and _y are either + integers or single letters, and _i_n_c_r, an optional increment, is an integer. + When integers are supplied, the expression expands to each number between _x + and _y, inclusive. If either _x or _y begins with a zero, each generated term + will contain the same number of digits, zero-padding where necessary. When + letters are supplied, the expression expands to each character lexicograph- + ically between _x and _y, inclusive, using the C locale. Note that both _x + and _y must be of the same type (integer or letter). When the increment is + supplied, it is used as the difference between each term. The default in- + crement is 1 or -1 as appropriate. - Brace expansion is performed before any other expansions, and any char- - acters special to other expansions are preserved 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. + Brace expansion is performed before any other expansions, and any charac- + ters special to other expansions are preserved 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 or a valid sequence ex- - pression. Any incorrectly formed brace expansion is left unchanged. + A correctly-formed brace expansion must contain unquoted opening and clos- + ing braces, and at least one unquoted comma or a valid sequence expression. + Any incorrectly formed brace expansion is left unchanged. - A "{" or Q , may be quoted with a backslash to prevent its being con- - sidered part of a brace expression. To avoid conflicts with parameter - expansion, the string "${" is not considered eligible for brace expan- - sion, and inhibits brace expansion until the closing "}". + A "{" or Q , may be quoted with a backslash to prevent its being considered + part of a brace expression. To avoid conflicts with parameter expansion, + the string "${" is not considered eligible for brace expansion, and in- + hibits brace expansion until the closing "}". - This construct is typically used as shorthand when the common prefix of - the strings to be generated is longer than in the above example: + 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}} + 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 "file{1,2}" appears identically in - the output. BBaasshh outputs that word as "file1 file2" after brace expan- - sion. Start bbaasshh with the ++BB option or disable brace expansion with - the ++BB option to the sseett command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) for - strict sshh compatibility. + Brace expansion introduces a slight incompatibility with historical ver- + sions 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 re- + moves braces from words as a consequence of brace expansion. For example, + a word entered to sshh as "file{1,2}" appears identically in the output. + BBaasshh outputs that word as "file1 file2" after brace expansion. Start bbaasshh + with the ++BB option or disable brace expansion with the ++BB option to the sseett + command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) for strict sshh compatibility. 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 _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 tilde expands - to the home directory of the user executing the shell instead. Other- - wise, the tilde-prefix is replaced with the home directory associated - with the specified login name. + If a word begins with an unquoted tilde character ("~~"), all of the charac- + ters 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 follow- + ing the tilde are treated as a possible _l_o_g_i_n _n_a_m_e. If this login name is + the null string, the tilde is replaced with the value of the shell parame- + ter HHOOMMEE. If HHOOMMEE is unset, the tilde expands to the home directory of the + user executing the shell 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 re- - places the tilde-prefix. If the tilde-prefix is a "~-", the shell sub- - stitutes the value of the shell variable OOLLDDPPWWDD, if it is set. 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 characters following the - tilde in the tilde-prefix as an argument. If the characters following - the tilde in the tilde-prefix consist of a number without a leading "+" - or "-", tilde expansion assumes "+". + If the tilde-prefix is a "~+", the value of the shell variable PPWWDD replaces + the tilde-prefix. If the tilde-prefix is a "~-", the shell substitutes the + value of the shell variable OOLLDDPPWWDD, if it is set. If the characters fol- + lowing the tilde in the tilde-prefix consist of a number _N, optionally pre- + fixed by a "+" or a "-", the tilde-prefix is replaced with the correspond- + ing element from the directory stack, as it would be displayed by the ddiirrss + builtin invoked with the characters following the tilde in the tilde-prefix + as an argument. If the characters following the tilde in the tilde-prefix + consist of a number without a leading "+" or "-", tilde expansion assumes + "+". - The results of tilde expansion are treated as if they were quoted, so - the replacement is not subject to word splitting and pathname expan- - sion. + The results of tilde expansion are treated as if they were quoted, so the + replacement is not subject to word splitting and pathname expansion. - If the login name is invalid, or the tilde expansion fails, the tilde- - prefix is unchanged. + If the login name is invalid, or the tilde expansion fails, the tilde-pre- + fix is unchanged. - BBaasshh checks each variable assignment for unquoted tilde-prefixes imme- - diately following a :: or the first ==, and performs tilde expansion in - these cases. Consequently, one may use filenames with tildes in as- - signments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the ex- - panded value. + BBaasshh checks each variable assignment for unquoted tilde-prefixes immedi- + ately following a :: or the first ==, and performs tilde expansion in these + cases. Consequently, one may use filenames with tildes in assignments to + PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the expanded value. - BBaasshh also performs tilde expansion on words satisfying the conditions - of variable assignments (as described above under PPAARRAAMMEETTEERRSS) when they - appear as arguments to simple commands. BBaasshh does not do this, except - for the _d_e_c_l_a_r_a_t_i_o_n commands listed above, when in posix mode. + BBaasshh also performs tilde expansion on words satisfying the conditions of + variable assignments (as described above under PPAARRAAMMEETTEERRSS) when they appear + as arguments to simple commands. BBaasshh does not do this, except for the _d_e_- + _c_l_a_r_a_t_i_o_n commands listed above, when in posix mode. 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. + 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 inter- + preted 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 em- - bedded arithmetic expansion, command substitution, or parameter expan- - sion. + When braces are used, the matching ending brace is the first "}}" not es- + caped by a backslash or within a quoted string, and not within an embedded + arithmetic expansion, command substitution, or parameter expansion. - The basic form of parameter expansion is + The basic form of parameter expansion is - ${_p_a_r_a_m_e_t_e_r} + ${_p_a_r_a_m_e_t_e_r} - which substitutes the value of _p_a_r_a_m_e_t_e_r. The braces are required when - _p_a_r_a_m_e_t_e_r is a positional parameter 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 interpreted as - part of its name. The _p_a_r_a_m_e_t_e_r is a shell parameter as described - above (PPAARRAAMMEETTEERRSS) or an array reference (AArrrraayyss). + which substitutes the value of _p_a_r_a_m_e_t_e_r. The braces are required when _p_a_- + _r_a_m_e_t_e_r is a positional parameter 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 interpreted as part of + its name. The _p_a_r_a_m_e_t_e_r is a shell parameter as described above (PPAARRAAMMEE-- + TTEERRSS) or an array reference (AArrrraayyss). - If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), and - _p_a_r_a_m_e_t_e_r is not a _n_a_m_e_r_e_f, it introduces a level of indirection. BBaasshh - uses the value formed by expanding the rest of _p_a_r_a_m_e_t_e_r as the new _p_a_- - _r_a_m_e_t_e_r; this new parameter is then expanded and that value is used in - the rest of the expansion, rather than the expansion of the original - _p_a_r_a_m_e_t_e_r. This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The value is subject - to tilde expansion, parameter expansion, command substitution, and - arithmetic expansion. If _p_a_r_a_m_e_t_e_r is a nameref, this expands to the - name of the parameter referenced by _p_a_r_a_m_e_t_e_r instead of performing the - complete indirect expansion, for compatibility. The exceptions to this - are the expansions of ${!!_p_r_e_f_i_x**} and ${!!_n_a_m_e[_@]} described below. The - exclamation point must immediately follow the left brace in order to - introduce indirection. + If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), and _p_a_r_a_- + _m_e_t_e_r is not a _n_a_m_e_r_e_f, it introduces a level of indirection. BBaasshh uses + the value formed by expanding the rest of _p_a_r_a_m_e_t_e_r as the new _p_a_r_a_m_e_t_e_r; + this new parameter is then expanded and that value is used in the rest of + the expansion, rather than the expansion of the original _p_a_r_a_m_e_t_e_r. This + is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The value is subject to tilde expansion, + parameter expansion, command substitution, and arithmetic expansion. If + _p_a_r_a_m_e_t_e_r is a nameref, this expands to the name of the parameter refer- + enced by _p_a_r_a_m_e_t_e_r instead of performing the complete indirect expansion, + for compatibility. The exceptions to this are the expansions of ${!!_p_r_e_- + _f_i_x**} and ${!!_n_a_m_e[_@]} described below. The exclamation point must immedi- + ately follow the left brace in order to introduce indirection. - In each of the cases below, _w_o_r_d is subject to tilde expansion, parame- - ter expansion, command substitution, and arithmetic expansion. + In each of the cases below, _w_o_r_d is subject to tilde expansion, parameter + expansion, command substitution, and arithmetic expansion. - When performing the first four expansions documented below (::--, ::==, ::??, - and ::++), including the colon, bbaasshh tests for a parameter that is unset - or null. Omitting the colon tests only for a parameter that is unset. + When performing the first four expansions documented below (::--, ::==, ::??, and + ::++), including the colon, bbaasshh tests for a parameter that is unset or null. + Omitting the colon tests 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, or unset if - the colon is not present, 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} + UUssee DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, or unset if the + colon is not present, the expansion of _w_o_r_d is substituted. Other- + wise, 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, or unset - if the colon is not present, the expansion of _w_o_r_d is assigned - to _p_a_r_a_m_e_t_e_r, and the expansion is the final value of _p_a_r_a_m_e_t_e_r. - Positional parameters and special parameters may not be assigned - in this way. + ${_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, or unset if + the colon is not present, the expansion of _w_o_r_d is assigned to _p_a_r_a_- + _m_e_t_e_r, and the expansion is the final value of _p_a_r_a_m_e_t_e_r. Posi- + tional parameters and special parameters may not be assigned 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 unset or null, - or unset if the colon is not present, the shell writes the ex- - pansion of _w_o_r_d (or a message to that effect if _w_o_r_d is not - present) to the standard error and, if it is not interactive, - exits with a non-zero status. An interactive shell does not - exit, but does not execute the command associated with the ex- - pansion. 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} + DDiissppllaayy EErrrroorr iiff NNuullll oorr UUnnsseett. If _p_a_r_a_m_e_t_e_r is unset or null, or + unset if the colon is not present, the shell writes the expansion of + _w_o_r_d (or a message to that effect if _w_o_r_d is not present) to the + standard error and, if it is not interactive, exits with a non-zero + status. An interactive shell does not exit, but does not execute + the command associated with the expansion. 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 unset or null, or unset if - the colon is not present, nothing is substituted, otherwise the - expansion of _w_o_r_d is substituted. The value of _p_a_r_a_m_e_t_e_r is not - used. + ${_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 unset or null, or unset if the + colon is not present, nothing is substituted, otherwise the expan- + sion of _w_o_r_d is substituted. The value of _p_a_r_a_m_e_t_e_r is not used. - ${_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 characters of the - value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_- - _s_e_t. If _p_a_r_a_m_e_t_e_r is @@ or **, an indexed array subscripted by @@ - or **, or an associative array name, the results differ as de- - scribed below. If ::_l_e_n_g_t_h is omitted (the first form above), - this expands to the substring of the value of _p_a_r_a_m_e_t_e_r starting - at the character specified by _o_f_f_s_e_t and extending to the end of - the value. If _o_f_f_s_e_t is omitted, it is treated as 0. If _l_e_n_g_t_h - is omitted, but the colon after _o_f_f_s_e_t is present, it is treated - as 0. _l_e_n_g_t_h and _o_f_f_s_e_t are arithmetic expressions (see AARRIITTHH-- - MMEETTIICC EEVVAALLUUAATTIIOONN below). + ${_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 characters of the + value of _p_a_r_a_m_e_t_e_r starting at the character specified by _o_f_f_s_e_t. + If _p_a_r_a_m_e_t_e_r is @@ or **, an indexed array subscripted by @@ or **, or + an associative array name, the results differ as described below. + If ::_l_e_n_g_t_h is omitted (the first form above), this expands to the + substring of the value of _p_a_r_a_m_e_t_e_r starting at the character speci- + fied by _o_f_f_s_e_t and extending to the end of the value. If _o_f_f_s_e_t is + omitted, it is treated as 0. If _l_e_n_g_t_h is omitted, but the colon + after _o_f_f_s_e_t is present, it is treated as 0. _l_e_n_g_t_h and _o_f_f_s_e_t are + arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below). - If _o_f_f_s_e_t evaluates to a number less than zero, the value is - used as an offset in characters from the end of the value of _p_a_- - _r_a_m_e_t_e_r. If _l_e_n_g_t_h evaluates to a number less than zero, it is - interpreted as an offset in characters from the end of the value - of _p_a_r_a_m_e_t_e_r rather than a number of characters, and the expan- - sion is the characters between _o_f_f_s_e_t and that result. Note - that a negative offset must be separated from the colon by at - least one space to avoid being confused with the ::-- expansion. + If _o_f_f_s_e_t evaluates to a number less than zero, the value is used as + an offset in characters from the end of the value of _p_a_r_a_m_e_t_e_r. If + _l_e_n_g_t_h evaluates to a number less than zero, it is interpreted as an + offset in characters from the end of the value of _p_a_r_a_m_e_t_e_r rather + than a number of characters, and the expansion is the characters be- + tween _o_f_f_s_e_t and that result. Note that a negative offset must be + separated from the colon by at least one space to avoid being con- + fused with the ::-- expansion. - If _p_a_r_a_m_e_t_e_r is @@ or **, the result is _l_e_n_g_t_h positional parame- - ters beginning at _o_f_f_s_e_t. A negative _o_f_f_s_e_t is taken relative - to one greater than the greatest positional parameter, so an - offset of -1 evaluates to the last positional parameter (or 0 if - there are no positional parameters). It is an expansion error - if _l_e_n_g_t_h evaluates to a number less than zero. + If _p_a_r_a_m_e_t_e_r is @@ or **, the result is _l_e_n_g_t_h positional parameters + beginning at _o_f_f_s_e_t. A negative _o_f_f_s_e_t is taken relative to one + greater than the greatest positional parameter, so an offset of -1 + evaluates to the last positional parameter (or 0 if there are no po- + sitional parameters). It is an expansion error if _l_e_n_g_t_h evaluates + to a number less than zero. - If _p_a_r_a_m_e_t_e_r is an indexed array name subscripted 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]}. A negative _o_f_f_s_e_t is taken relative to one - greater than the maximum index of the specified array. It is an - expansion error if _l_e_n_g_t_h evaluates to a number less than zero. + If _p_a_r_a_m_e_t_e_r is an indexed array name subscripted by @ or *, the re- + sult 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]}. A negative _o_f_f_s_e_t is taken relative to one greater + than the maximum index of the specified array. It is an expansion + error if _l_e_n_g_t_h evaluates to a number less than zero. - Substring expansion applied to an associative array produces un- - defined results. + Substring expansion applied to an associative array produces unde- + fined results. - Substring indexing is zero-based unless the positional parame- - ters are used, in which case the indexing starts at 1 by de- - fault. If _o_f_f_s_e_t is 0, and the positional parameters are used, - $$00 is prefixed to the list. + Substring indexing is zero-based unless the positional parameters + are used, in which case the indexing starts at 1 by default. If + _o_f_f_s_e_t is 0, and the positional parameters are used, $$00 is prefixed + to the list. - ${!!_p_r_e_f_i_x**} - ${!!_p_r_e_f_i_x@@} - NNaammeess mmaattcchhiinngg pprreeffiixx. Expands to the names of variables whose - names begin with _p_r_e_f_i_x, separated by the first character of the - IIFFSS special variable. When _@ is used and the expansion appears - within double quotes, each variable name expands to a separate - word. + ${!!_p_r_e_f_i_x**} + ${!!_p_r_e_f_i_x@@} + NNaammeess mmaattcchhiinngg pprreeffiixx. Expands to the names of variables whose + names begin with _p_r_e_f_i_x, separated by the first character of the IIFFSS + special variable. When _@ is used and the expansion appears within + double quotes, each variable name expands to a separate word. - ${!!_n_a_m_e[_@]} - ${!!_n_a_m_e[_*]} - LLiisstt ooff aarrrraayy kkeeyyss. If _n_a_m_e is an array variable, expands to - the list of array indices (keys) assigned in _n_a_m_e. If _n_a_m_e is - not an array, expands to 0 if _n_a_m_e is set and null otherwise. - When _@ is used and the expansion appears within double quotes, - each key expands to a separate word. + ${!!_n_a_m_e[_@]} + ${!!_n_a_m_e[_*]} + LLiisstt ooff aarrrraayy kkeeyyss. If _n_a_m_e is an array variable, expands to the + list of array indices (keys) assigned in _n_a_m_e. If _n_a_m_e is not an + array, expands to 0 if _n_a_m_e is set and null otherwise. When _@ is + used and the expansion appears within double quotes, each key ex- + pands to a separate word. - ${##_p_a_r_a_m_e_t_e_r} - PPaarraammeetteerr lleennggtthh. Substitutes the length in characters of the - expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_r_a_m_e_t_e_r is ** or @@, the value - 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 substi- - tuted is the number of elements in the array. If _p_a_r_a_m_e_t_e_r is - an indexed array name subscripted by a negative number, that - number is interpreted as relative to one greater than the maxi- - mum index of _p_a_r_a_m_e_t_e_r, so negative indices count back from the - end of the array, and an index of -1 references the last ele- - ment. + ${##_p_a_r_a_m_e_t_e_r} + PPaarraammeetteerr lleennggtthh. Substitutes the length in characters of the ex- + panded value of _p_a_r_a_m_e_t_e_r. If _p_a_r_a_m_e_t_e_r is ** or @@, the value sub- + stituted 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 num- + ber of elements in the array. If _p_a_r_a_m_e_t_e_r is an indexed array name + subscripted by a negative number, that number is interpreted as rel- + ative to one greater than the maximum index of _p_a_r_a_m_e_t_e_r, so nega- + tive indices count back from the end of the array, and an index of + -1 references the last element. - ${_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} - RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce - a pattern just as in pathname expansion, and matched against the - expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt-- - tteerrnn MMaattcchhiinngg below. 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 positional parameter in turn, and the expan- - sion 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 ap- - plied 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} + RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce a + pattern just as in pathname expansion, and matched against the ex- + panded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatttteerrnn + MMaattcchhiinngg below. 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 pat- + tern 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%%_w_o_r_d} - ${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d} - RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce - a pattern just as in pathname expansion, and matched against the - expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt-- - tteerrnn MMaattcchhiinngg below. 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 ex- - pansion 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%%_w_o_r_d} + ${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d} + RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce a + pattern just as in pathname expansion, and matched against the ex- + panded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatttteerrnn + MMaattcchhiinngg below. 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 resul- + tant 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} - ${_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} - PPaatttteerrnn ssuubbssttiittuuttiioonn. The _p_a_t_t_e_r_n is expanded to produce a pat- - tern and matched against the expanded value of _p_a_r_a_m_e_t_e_r as de- - scribed under PPaatttteerrnn MMaattcchhiinngg below. The longest match of _p_a_t_- - _t_e_r_n in the expanded value is replaced with _s_t_r_i_n_g. _s_t_r_i_n_g un- - dergoes tilde expansion, parameter and variable expansion, - arithmetic expansion, command and process substitution, and - quote removal. + ${_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} + ${_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} + PPaatttteerrnn ssuubbssttiittuuttiioonn. The _p_a_t_t_e_r_n is expanded to produce a pattern + and matched against the expanded value of _p_a_r_a_m_e_t_e_r as described un- + der PPaatttteerrnn MMaattcchhiinngg below. The longest match of _p_a_t_t_e_r_n in the ex- + panded value is replaced with _s_t_r_i_n_g. _s_t_r_i_n_g undergoes tilde expan- + sion, parameter and variable expansion, arithmetic expansion, com- + mand and process substitution, and quote removal. - In the first form above, only the first match is replaced. If - there are two slashes separating _p_a_r_a_m_e_t_e_r and _p_a_t_t_e_r_n (the sec- - ond form above), all matches of _p_a_t_t_e_r_n are replaced with - _s_t_r_i_n_g. If _p_a_t_t_e_r_n is preceded by ## (the third form above), it - must match at the beginning of the expanded value of _p_a_r_a_m_e_t_e_r. - If _p_a_t_t_e_r_n is preceded by %% (the fourth form above), it must - match at the end of the expanded value of _p_a_r_a_m_e_t_e_r. + In the first form above, only the first match is replaced. If there + are two slashes separating _p_a_r_a_m_e_t_e_r and _p_a_t_t_e_r_n (the second form + above), all matches of _p_a_t_t_e_r_n are replaced with _s_t_r_i_n_g. If _p_a_t_t_e_r_n + is preceded by ## (the third form above), it must match at the begin- + ning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n is preceded by + %% (the fourth form above), it must match at the end of the expanded + value of _p_a_r_a_m_e_t_e_r. - If the expansion of _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are - deleted and the // following _p_a_t_t_e_r_n may be omitted. + If the expansion of _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted + and the // following _p_a_t_t_e_r_n may be omitted. - If the ppaattssuubb__rreeppllaacceemmeenntt shell option is enabled using sshhoopptt, - any unquoted instances of && in _s_t_r_i_n_g are replaced with the - matching portion of _p_a_t_t_e_r_n. + If the ppaattssuubb__rreeppllaacceemmeenntt shell option is enabled using sshhoopptt, any + unquoted instances of && in _s_t_r_i_n_g are replaced with the matching + portion of _p_a_t_t_e_r_n. - Quoting any part of _s_t_r_i_n_g inhibits replacement in the expansion - of the quoted portion, including replacement strings stored in - shell variables. Backslash escapes && in _s_t_r_i_n_g; the backslash - is removed in order to permit a literal && in the replacement - string. Backslash can also be used to escape a backslash; \\\\ - results in a literal backslash in the replacement. Users should - take care if _s_t_r_i_n_g is double-quoted to avoid unwanted interac- - tions between the backslash and double-quoting, since backslash - has special meaning within double quotes. Pattern substitution - performs the check for unquoted && after expanding _s_t_r_i_n_g; shell - programmers should quote any occurrences of && they want to be - taken literally in the replacement and ensure any instances of && - they want to be replaced are unquoted. + Quoting any part of _s_t_r_i_n_g inhibits replacement in the expansion of + the quoted portion, including replacement strings stored in shell + variables. Backslash escapes && in _s_t_r_i_n_g; the backslash is removed + in order to permit a literal && in the replacement string. Backslash + can also be used to escape a backslash; \\\\ results in a literal + backslash in the replacement. Users should take care if _s_t_r_i_n_g is + double-quoted to avoid unwanted interactions between the backslash + and double-quoting, since backslash has special meaning within dou- + ble quotes. Pattern substitution performs the check for unquoted && + after expanding _s_t_r_i_n_g; shell programmers should quote any occur- + rences of && they want to be taken literally in the replacement and + ensure any instances of && they want to be replaced are unquoted. - Like the pattern removal operators, double quotes surrounding - the replacement string quote the expanded characters, while dou- - ble quotes enclosing the entire parameter substitution do not, - since the expansion is performed in a context that doesn't take - any enclosing double quotes into account. + Like the pattern removal operators, double quotes surrounding the + replacement string quote the expanded characters, while double + quotes enclosing the entire parameter substitution do not, since the + expansion is performed in a context that doesn't take any enclosing + double quotes into account. - If the nnooccaasseemmaattcchh shell option is enabled, the match is per- - formed without regard to the case of alphabetic characters. + If the nnooccaasseemmaattcchh shell option is enabled, the match is performed + without regard to the case of alphabetic characters. - 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 re- - sultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted - with @@ or **, the substitution operation is applied to each mem- - ber of the array in turn, and the expansion is the resultant - list. + 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 resul- + tant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ or + **, the substitution operation is applied to each member of the array + in turn, and the expansion is the resultant list. - ${_p_a_r_a_m_e_t_e_r^^_p_a_t_t_e_r_n} - ${_p_a_r_a_m_e_t_e_r^^^^_p_a_t_t_e_r_n} - ${_p_a_r_a_m_e_t_e_r,,_p_a_t_t_e_r_n} - ${_p_a_r_a_m_e_t_e_r,,,,_p_a_t_t_e_r_n} - CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha- - betic characters in _p_a_r_a_m_e_t_e_r. First, the _p_a_t_t_e_r_n is expanded - to produce a pattern as described below under PPaatttteerrnn MMaattcchhiinngg. - BBaasshh then examines characters in the expanded value of _p_a_r_a_m_e_t_e_r - against _p_a_t_t_e_r_n as described below. If a character matches the - pattern, its case is converted. The pattern should not attempt - to match more than one character. + ${_p_a_r_a_m_e_t_e_r^^_p_a_t_t_e_r_n} + ${_p_a_r_a_m_e_t_e_r^^^^_p_a_t_t_e_r_n} + ${_p_a_r_a_m_e_t_e_r,,_p_a_t_t_e_r_n} + ${_p_a_r_a_m_e_t_e_r,,,,_p_a_t_t_e_r_n} + CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alphabetic + characters in _p_a_r_a_m_e_t_e_r. First, the _p_a_t_t_e_r_n is expanded to produce + a pattern as described below under PPaatttteerrnn MMaattcchhiinngg. BBaasshh then ex- + amines characters in the expanded value of _p_a_r_a_m_e_t_e_r against _p_a_t_t_e_r_n + as described below. If a character matches the pattern, its case is + converted. The pattern should not attempt to match more than one + character. - Using "^" converts lowercase letters matching _p_a_t_t_e_r_n to upper- - case; "," converts matching uppercase letters to lowercase. The - ^^ and ,, variants examine the first character in the expanded - value and convert its case if it matches _p_a_t_t_e_r_n; the ^^^^ and ,,,, - variants examine all characters in the expanded value and con- - vert each one that matches _p_a_t_t_e_r_n. If _p_a_t_t_e_r_n is omitted, it - is treated like a ??, which matches every character. + Using "^" converts lowercase letters matching _p_a_t_t_e_r_n to uppercase; + "," converts matching uppercase letters to lowercase. The ^^ and ,, + variants examine the first character in the expanded value and con- + vert its case if it matches _p_a_t_t_e_r_n; the ^^^^ and ,,,, variants examine + all characters in the expanded value and convert each one that + matches _p_a_t_t_e_r_n. If _p_a_t_t_e_r_n is omitted, it is treated like a ??, + which matches every character. - If _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is ap- - plied 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 sub- - scripted with @@ or **, the case modification operation is applied - to each member of the array in turn, and the expansion is the - resultant list. + If _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is applied + to each positional parameter in turn, and the expansion is the re- + sultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted with @@ + or **, the case modification 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@@_o_p_e_r_a_t_o_r} - PPaarraammeetteerr ttrraannssffoorrmmaattiioonn. The expansion is either a transforma- - tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r - itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a - single letter: - UU The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r - with lowercase alphabetic characters converted to upper- - case. - uu The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r - with the first character converted to uppercase, if it is - alphabetic. - LL The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r - with uppercase alphabetic characters converted to lower- - case. - QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r - quoted in a format that can be reused as input. - EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r - with backslash escape sequences expanded as with the - $$''...'' quoting mechanism. - PP The expansion is a string that is the result of expanding - the value of _p_a_r_a_m_e_t_e_r as if it were a prompt string (see - PPRROOMMPPTTIINNGG below). - AA The expansion is a string in the form of an assignment - statement or ddeeccllaarree command that, if evaluated, recre- - ates _p_a_r_a_m_e_t_e_r with its attributes and value. - KK Produces a possibly-quoted version of the value of _p_a_r_a_- - _m_e_t_e_r, except that it prints the values of indexed and - associative arrays as a sequence of quoted key-value - pairs (see AArrrraayyss above). The keys and values are quoted - in a format that can be reused as input. - aa The expansion is a string consisting of flag values rep- - resenting _p_a_r_a_m_e_t_e_r's attributes. - kk Like the K transformation, but expands the keys and val- - ues of indexed and associative arrays to separate words - after word splitting. + ${_p_a_r_a_m_e_t_e_r@@_o_p_e_r_a_t_o_r} + PPaarraammeetteerr ttrraannssffoorrmmaattiioonn. The expansion is either a transformation + of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r itself, de- + pending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a single letter: + UU The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r with + lowercase alphabetic characters converted to uppercase. + uu The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r with + the first character converted to uppercase, if it is alpha- + betic. + LL The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r with + uppercase alphabetic characters converted to lowercase. + QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r + quoted in a format that can be reused as input. + EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r with + backslash escape sequences expanded as with the $$''...'' quot- + ing mechanism. + PP The expansion is a string that is the result of expanding the + value of _p_a_r_a_m_e_t_e_r as if it were a prompt string (see PPRROOMMPPTT-- + IINNGG below). + AA The expansion is a string in the form of an assignment state- + ment or ddeeccllaarree command that, if evaluated, recreates _p_a_r_a_m_e_- + _t_e_r with its attributes and value. + KK Produces a possibly-quoted version of the value of _p_a_r_a_m_e_t_e_r, + except that it prints the values of indexed and associative + arrays as a sequence of quoted key-value pairs (see AArrrraayyss + above). The keys and values are quoted in a format that can + be reused as input. + aa The expansion is a string consisting of flag values repre- + senting _p_a_r_a_m_e_t_e_r's attributes. + kk Like the K transformation, but expands the keys and values of + indexed and associative arrays to separate words after word + splitting. - If _p_a_r_a_m_e_t_e_r is @@ or **, the 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 operation is applied to each member of the array in turn, - and the expansion is the resultant list. + If _p_a_r_a_m_e_t_e_r is @@ or **, the 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 operation + is applied to each member of the array in turn, and the expansion is + the resultant list. - The result of the expansion is subject to word splitting and - pathname expansion as described below. + The result of the expansion is subject to word splitting and path- + name expansion as described below. 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 com- - mand itself. There are two standard forms: + _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 + itself. There are two standard forms: - $$((_c_o_m_m_a_n_d)) - or (deprecated) - ``_c_o_m_m_a_n_d``. + $$((_c_o_m_m_a_n_d)) + or (deprecated) + ``_c_o_m_m_a_n_d``. - BBaasshh performs the expansion by executing _c_o_m_m_a_n_d in a subshell environ- - ment and replacing the command substitution with the standard output of - the command, with any trailing newlines deleted. Embedded newlines are - not deleted, but they may be removed during word splitting. The com- - mand substitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but - faster $$((<< _f_i_l_e)). + BBaasshh performs the expansion by executing _c_o_m_m_a_n_d in a subshell environment + and replacing the command substitution with the standard output of the com- + mand, with any trailing newlines deleted. Embedded newlines are not + deleted, but they may be removed during word splitting. The command sub- + stitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but faster $$((<< + _f_i_l_e)). - With the old-style backquote form of substitution, backslash retains - its literal meaning except when followed by $$, ``, or \\. The first - backquote not preceded by a backslash terminates the command substitu- - tion. When using the $(_c_o_m_m_a_n_d) form, all characters between the - parentheses make up the command; none are treated specially. + With the old-style backquote form of substitution, backslash retains its + literal meaning except when followed by $$, ``, or \\. The first backquote + not preceded by a backslash terminates the command substitution. When us- + ing the $(_c_o_m_m_a_n_d) form, all characters between the parentheses make up the + command; none are treated specially. - There is an alternate form of command substitution: + There is an alternate form of command substitution: - $${{_c _c_o_m_m_a_n_d;;}} + $${{_c _c_o_m_m_a_n_d;;}} - which executes _c_o_m_m_a_n_d in the current execution environment and cap- - tures its output, again with trailing newlines removed. + which executes _c_o_m_m_a_n_d in the current execution environment and captures + its output, again with trailing newlines removed. - The character _c following the open brace must be a space, tab, newline, - "|", or ";"; and the close brace must be in a position where a reserved - word may appear (i.e., preceded by a command terminator such as semi- - colon). BBaasshh allows the close brace to be joined to the remaining - characters in the word without being followed by a shell metacharacter - as a reserved word would usually require. + The character _c following the open brace must be a space, tab, newline, + "|", or ";"; and the close brace must be in a position where a reserved + word may appear (i.e., preceded by a command terminator such as semicolon). + BBaasshh allows the close brace to be joined to the remaining characters in the + word without being followed by a shell metacharacter as a reserved word + would usually require. - Any side effects of _c_o_m_m_a_n_d take effect immediately in the current exe- - cution environment and persist in the current environment after the - command completes (e.g., the eexxiitt builtin exits the shell). + Any side effects of _c_o_m_m_a_n_d take effect immediately in the current execu- + tion environment and persist in the current environment after the command + completes (e.g., the eexxiitt builtin exits the shell). - This type of command substitution superficially resembles executing an - unnamed shell function: local variables are created as when a shell - function is executing, and the rreettuurrnn builtin forces _c_o_m_m_a_n_d to com- - plete; however, the rest of the execution environment, including the - positional parameters, is shared with the caller. + This type of command substitution superficially resembles executing an un- + named shell function: local variables are created as when a shell function + is executing, and the rreettuurrnn builtin forces _c_o_m_m_a_n_d to complete; however, + the rest of the execution environment, including the positional parameters, + is shared with the caller. - If the first character following the open brace is a ";", the construct - behaves like the form above but preserves any trailing newlines in the - output of _c_o_m_m_a_n_d instead of removing them. This form is useful when - the trailing newlines are significant and should not be stripped from - the command's output. + If the first character following the open brace is a ";", the construct be- + haves like the form above but preserves any trailing newlines in the output + of _c_o_m_m_a_n_d instead of removing them. This form is useful when the trailing + newlines are significant and should not be stripped from the command's out- + put. - If the first character following the open brace is a "|", the construct - expands to the value of the RREEPPLLYY shell variable after _c_o_m_m_a_n_d exe- - cutes, without removing any trailing newlines, and the standard output - of _c_o_m_m_a_n_d remains the same as in the calling shell. BBaasshh creates RREE-- - PPLLYY as an initially-unset local variable when _c_o_m_m_a_n_d executes, and re- - stores RREEPPLLYY to the value it had before the command substitution after - _c_o_m_m_a_n_d completes, as with any local variable. + If the first character following the open brace is a "|", the construct ex- + pands to the value of the RREEPPLLYY shell variable after _c_o_m_m_a_n_d executes, + without removing any trailing newlines, and the standard output of _c_o_m_m_a_n_d + remains the same as in the calling shell. BBaasshh creates RREEPPLLYY as an ini- + tially-unset local variable when _c_o_m_m_a_n_d executes, and restores RREEPPLLYY to + the value it had before the command substitution after _c_o_m_m_a_n_d completes, + as with any local variable. - Command substitutions may be nested. To nest when using the backquoted - form, escape the inner backquotes with backslashes. + 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, bbaasshh does not perform - word splitting and pathname expansion on the results. + If the substitution appears within double quotes, bbaasshh does not perform + word splitting and pathname expansion on the results. AArriitthhmmeettiicc EExxppaannssiioonn - Arithmetic expansion evaluates an arithmetic expression and substitutes - the result. The format for arithmetic expansion is: + Arithmetic expansion evaluates an arithmetic expression and substitutes the + result. The format for arithmetic expansion is: - $$((((_e_x_p_r_e_s_s_i_o_n)))) + $$((((_e_x_p_r_e_s_s_i_o_n)))) - The _e_x_p_r_e_s_s_i_o_n undergoes the same expansions as if it were within dou- - ble quotes, but unescaped double quote characters in _e_x_p_r_e_s_s_i_o_n are not - treated specially and are removed. All tokens in the expression un- - dergo parameter and variable expansion, command substitution, and quote - removal. The result is treated as the arithmetic expression to be - evaluated. Since the way Bash handles double quotes can potentially - result in empty strings, arithmetic expansion treats those as expres- - sions that evaluate to 0. Arithmetic expansions may be nested. + The _e_x_p_r_e_s_s_i_o_n undergoes the same expansions as if it were within double + quotes, but unescaped double quote characters in _e_x_p_r_e_s_s_i_o_n are not treated + specially and are removed. All tokens in the expression undergo parameter + and variable expansion, command substitution, and quote removal. The re- + sult is treated as the arithmetic expression to be evaluated. Since the + way Bash handles double quotes can potentially result in empty strings, + arithmetic expansion treats those as expressions that evaluate to 0. + Arithmetic expansions 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 - to standard error indicating failure, does not perform the substitu- - tion, and does not continue to execute the command in which the error - occurs. + 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 to + standard error indicating failure, does not perform the substitution, and + does not continue to execute the command in which the error occurs. PPrroocceessss SSuubbssttiittuuttiioonn - _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred - to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The - process _l_i_s_t, as long as it is not a null command without redirections, - is run asynchronously, and its input or output appears as a filename. - This filename is passed as an argument to the current command as the - result of the expansion. + _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred to + using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The process + _l_i_s_t, as long as it is not a null command without redirections, is run + asynchronously, and its input or output appears as a filename. This file- + name 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 provides input for - _l_i_s_t. If the <<((_l_i_s_t)) form is used, reading the file obtains the output - of _l_i_s_t. No space may appear between the << or >> and the left parenthe- - sis, otherwise the construct would be interpreted as a redirection. + If the >>((_l_i_s_t)) form is used, writing to the file provides input for _l_i_s_t. + If the <<((_l_i_s_t)) form is used, reading the file obtains the output of _l_i_s_t. + No space may appear between the << or >> and the left parenthesis, otherwise + the construct would be interpreted as a redirection. - Process substitution is supported on systems that support named pipes - (_F_I_F_O_s) or the _/_d_e_v_/_f_d method of naming open files. + Process substitution is supported on systems that support named pipes (_F_I_- + _F_O_s) or the _/_d_e_v_/_f_d method of naming open files. - When available, process substitution is performed simultaneously with - parameter and variable expansion, command substitution, and arithmetic - expansion. + When available, process substitution is performed simultaneously with para- + meter and variable expansion, command substitution, and arithmetic expan- + sion. WWoorrdd SSpplliittttiinngg - The shell scans the results of parameter expansion, command substitu- - tion, and arithmetic expansion that did not occur within double quotes - for _w_o_r_d _s_p_l_i_t_t_i_n_g. Words that were not expanded are not split. + The shell scans the results of parameter expansion, command 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. Words that were not expanded are not split. - The shell treats each character of IIFFSS as a delimiter, and splits the - results of the other expansions into words using these characters as - field terminators. + The shell treats each character of IIFFSS as a delimiter, and splits the re- + sults of the other expansions into words using these characters as field + terminators. - An _I_F_S _w_h_i_t_e_s_p_a_c_e character is whitespace as defined above (see DDeeffiinnii-- - ttiioonnss) that appears in the value of IIFFSS. Space, tab, and newline are - always considered IFS whitespace, even if they don't appear in the lo- - cale's ssppaaccee category. + An _I_F_S _w_h_i_t_e_s_p_a_c_e character is whitespace as defined above (see DDeeffiinnii-- + ttiioonnss) that appears in the value of IIFFSS. Space, tab, and newline are al- + ways considered IFS whitespace, even if they don't appear in the locale's + ssppaaccee category. - If IIFFSS is unset, field splitting acts as if its value were - <><><>, and treats these characters as IFS whitespace. - If the value of IIFFSS is null, no word splitting occurs, but implicit - null arguments (see below) are still removed. + If IIFFSS is unset, field splitting acts as if its value were + <><><>, and treats these characters as IFS whitespace. If + the value of IIFFSS is null, no word splitting occurs, but implicit null argu- + ments (see below) are still removed. - Word splitting begins by removing sequences of IFS whitespace charac- - ters from the beginning and end of the results of the previous expan- - sions, then splits the remaining words. + Word splitting begins by removing sequences of IFS whitespace characters + from the beginning and end of the results of the previous expansions, then + splits the remaining words. - If the value of IIFFSS consists solely of IFS whitespace, any sequence of - IFS whitespace characters delimits a field, so a field consists of - characters that are not unquoted IFS whitespace, and null fields result - only from quoting. + If the value of IIFFSS consists solely of IFS whitespace, any sequence of IFS + whitespace characters delimits a field, so a field consists of characters + that are not unquoted IFS whitespace, and null fields result only from + quoting. - If IIFFSS contains a non-whitespace character, then any character in the - value of IIFFSS that is not IFS whitespace, along with any adjacent IFS - whitespace characters, delimits a field. This means that adjacent non- - IFS-whitespace delimiters produce a null field. A sequence of IFS - whitespace characters also delimits a field. + If IIFFSS contains a non-whitespace character, then any character in the value + of IIFFSS that is not IFS whitespace, along with any adjacent IFS whitespace + characters, delimits a field. This means that adjacent non-IFS-whitespace + delimiters produce a null field. A sequence of IFS whitespace characters + also delimits a field. - Explicit null arguments ("""" or '''') are retained and passed to commands - as empty strings. Unquoted implicit null arguments, resulting from the - expansion of parameters that have no values, are removed. Expanding a - parameter with no value within double quotes produces a null field, - which is retained and passed to a command as an empty string. + Explicit null arguments ("""" or '''') are retained and passed to commands as + empty strings. Unquoted implicit null arguments, resulting from the expan- + sion of parameters that have no values, are removed. Expanding a parameter + with no value within double quotes produces a null field, which is retained + and passed to a command as an empty string. - When a quoted null argument appears as part of a word whose expansion - is non-null, word splitting removes the null argument portion, leaving - the non-null expansion. That is, the word "-d''" becomes "-d" after - word splitting and null argument removal. + When a quoted null argument appears as part of a word whose expansion is + non-null, word splitting removes the null argument portion, leaving the + non-null expansion. That is, the word "-d''" becomes "-d" after word + splitting and null argument removal. 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, and is not quoted, then the word is regarded as a _p_a_t_t_e_r_n, and - replaced with a sorted list of filenames matching the pattern (see PPaatt-- - tteerrnn MMaattcchhiinngg below) subject to the value of the GGLLOOBBSSOORRTT shell vari- - able. + After word splitting, unless the --ff option has been set, bbaasshh scans each + word for the characters **, ??, and [[. If one of these characters appears, + and is not quoted, then the word is regarded as a _p_a_t_t_e_r_n, and replaced + with a sorted list of filenames matching the pattern (see PPaatttteerrnn MMaattcchhiinngg + below) subject to the value of the GGLLOOBBSSOORRTT shell variable. - If no matching filenames are found, and the shell option nnuullllgglloobb is - not enabled, the word is left unchanged. If the nnuullllgglloobb option is - set, and no matches are found, the word is removed. If the ffaaiillgglloobb - shell option is set, and no matches are found, bbaasshh prints an error - message and does not execute the command. If the shell option nnooccaassee-- - gglloobb is enabled, the match is performed without regard to the case of - alphabetic characters. + If no matching filenames are found, and the shell option nnuullllgglloobb is not + enabled, the word is left unchanged. If the nnuullllgglloobb option is set, and no + matches are found, the word is removed. If the ffaaiillgglloobb shell option is + set, and no matches are found, bbaasshh prints an error message and does not + execute the command. 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 pathname expansion, the character "." at the - start of a name or immediately following a slash must be matched ex- - plicitly, unless the shell option ddoottgglloobb is set. In order to match - the filenames _. and _._., the pattern must begin with "." (for example, - ".?"), even if ddoottgglloobb is set. If the gglloobbsskkiippddoottss shell option is en- - abled, the filenames _. and _._. never match, even if the pattern begins - with a ".". When not matching pathnames, the "." character is not - treated specially. + When a pattern is used for pathname expansion, the character "." at the + start of a name or immediately following a slash must be matched explic- + itly, unless the shell option ddoottgglloobb is set. In order to match the file- + names _. and _._., the pattern must begin with "." (for example, ".?"), even + if ddoottgglloobb is set. If the gglloobbsskkiippddoottss shell option is enabled, the file- + names _. and _._. never match, even if the pattern begins with a ".". When + not matching pathnames, the "." character is not treated specially. - When matching a pathname, the slash character must always be matched - explicitly by a slash in the pattern, but in other matching contexts it - can be matched by a special pattern character as described below under - PPaatttteerrnn MMaattcchhiinngg. + When matching a pathname, the slash character must always be matched ex- + plicitly by a slash in the pattern, but in other matching contexts it can + be matched by a special pattern character as described below under PPaatttteerrnn + MMaattcchhiinngg. - See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a - description of the nnooccaasseegglloobb, nnuullllgglloobb, gglloobbsskkiippddoottss, ffaaiillgglloobb, and - ddoottgglloobb shell options. + See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a de- + scription of the nnooccaasseegglloobb, nnuullllgglloobb, gglloobbsskkiippddoottss, ffaaiillgglloobb, 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. If the nnooccaasseegglloobb option is set, the match- - ing against the patterns in GGLLOOBBIIGGNNOORREE is performed without regard to - case. The filenames _. and _._. are always ignored when GGLLOOBBIIGGNNOORREE is set - and not null. However, setting GGLLOOBBIIGGNNOORREE to a non-null value has the - effect of enabling the ddoottgglloobb shell option, so all other filenames be- - ginning with a "." match. To get the old behavior of ignoring file- - names beginning with a ".", make ".*" one of the patterns in GGLLOOBBIIGG-- - NNOORREE. The ddoottgglloobb option is disabled when GGLLOOBBIIGGNNOORREE is unset. The - GGLLOOBBIIGGNNOORREE pattern matching honors the setting of the eexxttgglloobb shell op- - tion. + 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. If the nnooccaasseegglloobb option is set, the matching against the pat- + terns in GGLLOOBBIIGGNNOORREE is performed without regard to case. The filenames _. + and _._. are always ignored when GGLLOOBBIIGGNNOORREE is set and not null. However, + setting GGLLOOBBIIGGNNOORREE to a non-null value has the effect of enabling the ddoott-- + gglloobb shell option, so all other filenames beginning with a "." match. To + get the old behavior of ignoring filenames beginning with a ".", make ".*" + one of the patterns in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when + GGLLOOBBIIGGNNOORREE is unset. The GGLLOOBBIIGGNNOORREE pattern matching honors the setting of + the eexxttgglloobb shell option. - The value of the GGLLOOBBSSOORRTT shell variable controls how the results of - pathname expansion are sorted, as described above under SShheellll VVaarrii-- - aabblleess. + The value of the GGLLOOBBSSOORRTT shell variable controls how the results of path- + name expansion are sorted, as described above under SShheellll VVaarriiaabblleess. - PPaatttteerrnn MMaattcchhiinngg + 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. A backslash escapes the following character; the - escaping backslash is discarded when matching. The special pattern - characters must be quoted if they are to be matched literally. + Any character that appears in a pattern, other than the special pattern + characters described below, matches itself. The NUL character may not oc- + cur in a pattern. A backslash escapes the following character; the escap- + ing backslash is discarded when matching. The special pattern characters + must be quoted if they are to be matched literally. - The special pattern characters have the following meanings: + The special pattern characters have the following meanings: - ** Matches any string, including the null string. When the - gglloobbssttaarr shell option is enabled, and ** is used in a - pathname expansion context, two adjacent **s used as a - single pattern match all files and zero or more directo- - ries and subdirectories. If followed by a //, two adja- - cent **s match only directories and subdirectories. - ?? Matches any single character. - [[...]] Matches any one of the characters enclosed between the - brackets. This is known as a _b_r_a_c_k_e_t _e_x_p_r_e_s_s_i_o_n and - matches a single character. A pair of characters sepa- - rated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_s_i_o_n; any charac- - ter that falls between those two characters, inclusive, - using the current locale's collating sequence and charac- - ter set, matches. If the first character following the [[ - is a !! or a ^^ then any character not within the range - matches. To match a --, include it as the first or last - character in the set. To match a ]], include it as the - first character in the set. + ** Matches any string, including the null string. When the + gglloobbssttaarr shell option is enabled, and ** is used in a pathname + expansion context, two adjacent **s used as a single pattern + match all files and zero or more directories and subdirecto- + ries. If followed by a //, two adjacent **s match only direc- + tories and subdirectories. + ?? Matches any single character. + [[...]] Matches any one of the characters enclosed between the brack- + ets. This is known as a _b_r_a_c_k_e_t _e_x_p_r_e_s_s_i_o_n and matches a + single character. A pair of characters separated by a hyphen + denotes a _r_a_n_g_e _e_x_p_r_e_s_s_i_o_n; any character that falls between + those two characters, inclusive, using the current locale's + collating sequence and character set, matches. If the first + character following the [[ is a !! or a ^^ then any character + not within the range matches. To match a --, include it as + the first or last character in the set. To match a ]], in- + clude it as the first character in the set. - The sorting order of characters in range expressions, and - the characters included in the range, are determined by - the collating sequence of the current locale and the val- - ues of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell variables, if set. + The sorting order of characters in range expressions, and the + characters included in the range, are determined by the col- + lating sequence of the current locale and the values of the + LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell variables, if set. - For example, in the C locale, [[aa--dd]] is equivalent to - [[aabbccdd]]. Many locales sort characters in dictionary or- - der, and in these locales [[aa--dd]] is typically not equiva- - lent to [[aabbccdd]]; it might be equivalent to [[aaBBbbCCccDDdd]] or - [[aaAAbbBBccCCdd]]. To obtain the traditional interpretation of - range expressions, where [[aa--dd]] is equivalent to [[aabbccdd]], - set the value of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell variables - to CC, or enable the gglloobbaasscciiiirraannggeess shell option. + For example, in the C locale, [[aa--dd]] is equivalent to [[aabbccdd]]. + Many locales sort characters in dictionary order, and in + these locales [[aa--dd]] is typically not equivalent to [[aabbccdd]]; it + might be equivalent to [[aaBBbbCCccDDdd]] or [[aaAAbbBBccCCdd]]. To obtain the + traditional interpretation of range expressions, where [[aa--dd]] + is equivalent to [[aabbccdd]], set the value of the LLCC__CCOOLLLLAATTEE or + LLCC__AALLLL shell variables to CC, or enable the gglloobbaasscciiiirraannggeess + shell option. - Within a bracket expression, _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 standard: + Within a bracket expression, _c_h_a_r_a_c_t_e_r _c_l_a_s_s_e_s can be speci- + fied using the syntax [[::_c_l_a_s_s::]], where _c_l_a_s_s is one of the + following classes defined in the POSIX standard: - aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt - ppuunncctt ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt + aallnnuumm aallpphhaa aasscciiii bbllaannkk ccnnttrrll ddiiggiitt ggrraapphh lloowweerr pprriinntt ppuunncctt + ssppaaccee uuppppeerr wwoorrdd xxddiiggiitt - A character class matches any character belonging to that - class. The wwoorrdd character class matches letters, digits, - and the character _. + A character class matches any character belonging to that + class. The wwoorrdd character class matches letters, digits, and + the character _. - Within a bracket expression, an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be - specified using the syntax [[==_c==]], which matches all char- - acters with the same collation weight (as defined by the - current locale) as the character _c. + Within a bracket expression, an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be + specified using the syntax [[==_c==]], which matches all charac- + ters with the same collation weight (as defined by the cur- + rent locale) as the character _c. - Within a bracket expression, the syntax [[.._s_y_m_b_o_l..]] - matches the collating symbol _s_y_m_b_o_l. + Within a bracket expression, 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, the - shell recognizes several extended pattern matching operators. 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 ||. Composite patterns may be formed using one or more - of the following sub-patterns: + If the eexxttgglloobb shell option is enabled using the sshhoopptt builtin, the shell + recognizes several extended pattern matching operators. 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 ||. Composite 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 one of the given patterns. - !!((_p_a_t_t_e_r_n_-_l_i_s_t)) - Matches anything except one of the given 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 one of the given patterns. + !!((_p_a_t_t_e_r_n_-_l_i_s_t)) + Matches anything except one of the given patterns. - The eexxttgglloobb option changes the behavior of the parser, since the paren- - theses are normally treated as operators with syntactic meaning. To - ensure that extended matching patterns are parsed correctly, make sure - that eexxttgglloobb is enabled before parsing constructs containing the pat- - terns, including shell functions and command substitutions. + The eexxttgglloobb option changes the behavior of the parser, since the parenthe- + ses are normally treated as operators with syntactic meaning. To ensure + that extended matching patterns are parsed correctly, make sure that eexxtt-- + gglloobb is enabled before parsing constructs containing the patterns, includ- + ing shell functions and command substitutions. - When matching filenames, the ddoottgglloobb shell option determines the set of - filenames that are tested: when ddoottgglloobb is enabled, the set of file- - names includes all files beginning with ".", but _. and _._. must be - matched by a pattern or sub-pattern that begins with a dot; when it is - disabled, the set does not include any filenames beginning with "." un- - less the pattern or sub-pattern begins with a ".". If the gglloobbsskkiippddoottss - shell option is enabled, the filenames _. and _._. never appear in the - set. As above, "." only has a special meaning when matching filenames. + When matching filenames, the ddoottgglloobb shell option determines the set of + filenames that are tested: when ddoottgglloobb is enabled, the set of filenames + includes all files beginning with ".", but _. and _._. must be matched by a + pattern or sub-pattern that begins with a dot; when it is disabled, the set + does not include any filenames beginning with "." unless the pattern or + sub-pattern begins with a ".". If the gglloobbsskkiippddoottss shell option is en- + abled, the filenames _. and _._. never appear in the set. As above, "." only + has a special meaning when matching filenames. - Complicated extended pattern matching against long strings is slow, es- - pecially when the patterns contain alternations and the strings contain - multiple matches. Using separate matches against shorter strings, or - using arrays of strings instead of a single long string, may be faster. + Complicated extended pattern matching against long strings is slow, espe- + cially when the patterns contain alternations and the strings contain mul- + tiple matches. Using separate matches against shorter strings, or using + arrays of strings instead of a single long string, may be faster. QQuuoottee RReemmoovvaall - After the preceding expansions, all unquoted occurrences of the charac- - ters \\, '', and "" that did not result from one of the above expansions - are removed. + After the preceding expansions, all unquoted occurrences of the characters + \\, '', and "" that did not result from one of the above expansions are re- + moved. 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. _R_e_d_i_r_e_c_t_i_o_n allows - commands' file handles to be duplicated, opened, closed, made to refer - to different files, and can change the files the command reads from and - writes to. When used with the eexxeecc builtin, redirections modify file - handles in the current shell execution environment. The following - redirection operators may precede or appear anywhere 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 or- - der they appear, from left to right. + 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. _R_e_d_i_r_e_c_t_i_o_n allows commands' + file handles to be duplicated, opened, closed, made to refer to different + files, and can change the files the command reads from and writes to. When + used with the eexxeecc builtin, redirections modify file handles in the current + shell execution environment. The following redirection operators may pre- + cede or appear anywhere 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. - Each redirection that may be preceded by a file descriptor number may - instead be preceded by a word of the form {_v_a_r_n_a_m_e}. In this case, for - each redirection operator except >>&&-- and <<&&--, the shell allocates a - file descriptor greater than or equal to 10 and assigns it to _v_a_r_n_a_m_e. - If {_v_a_r_n_a_m_e} precedes >>&&-- or <<&&--, the value of _v_a_r_n_a_m_e defines the file - descriptor to close. If {_v_a_r_n_a_m_e} is supplied, the redirection per- - sists beyond the scope of the command, which allows the shell program- - mer to manage the file descriptor's lifetime manually without using the - eexxeecc builtin. The vvaarrrreeddiirr__cclloossee shell option manages this behavior. + Each redirection that may be preceded by a file descriptor number may in- + stead be preceded by a word of the form {_v_a_r_n_a_m_e}. In this case, for each + redirection operator except >>&&-- and <<&&--, the shell allocates a file de- + scriptor greater than or equal to 10 and assigns it to _v_a_r_n_a_m_e. If {_v_a_r_- + _n_a_m_e} precedes >>&&-- or <<&&--, the value of _v_a_r_n_a_m_e defines the file descriptor + to close. If {_v_a_r_n_a_m_e} is supplied, the redirection persists beyond the + scope of the command, which allows the shell programmer to manage the file + descriptor's lifetime manually without using the eexxeecc builtin. The + vvaarrrreeddiirr__cclloossee shell option manages this behavior. - In the following descriptions, if the file descriptor number is omit- - ted, 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). + In the following descriptions, if the file descriptor number is omitted, + and the first character of the redirection operator is "<", the redirection + refers to the standard input (file descriptor 0). If the first character + of the redirection operator is ">", the redirection refers to the standard + output (file descriptor 1). - The _w_o_r_d following the redirection operator in the following descrip- - tions, unless otherwise noted, is subjected to brace expansion, tilde - expansion, parameter and variable expansion, command substitution, - arithmetic expansion, quote removal, pathname expansion, and word - splitting. If it expands to more than one word, bbaasshh reports an error. + The _w_o_r_d following the redirection operator in the following descriptions, + unless otherwise noted, is subjected to brace expansion, tilde expansion, + parameter and variable expansion, command substitution, arithmetic expan- + sion, quote removal, pathname expansion, and word splitting. If it expands + to more than one word, bbaasshh reports an error. - The order of redirections is significant. For example, the command + The order of redirections is significant. For example, the command - ls >> dirlist 2>>&&1 + ls >> dirlist 2>>&&1 - directs both standard output and standard error to the file _d_i_r_l_i_s_t, - while the command + directs both standard output and standard error to the file _d_i_r_l_i_s_t, while + the command - ls 2>>&&1 >> dirlist + ls 2>>&&1 >> dirlist - directs only the standard output to file _d_i_r_l_i_s_t, because the standard - error was directed to the standard output before the standard output - was redirected to _d_i_r_l_i_s_t. + directs only the standard output to file _d_i_r_l_i_s_t, because the standard er- + ror was directed to the standard output before the standard output was + redirected to _d_i_r_l_i_s_t. - BBaasshh handles several filenames specially when they are used in redirec- - tions, as described in the following table. If the operating system on - which bbaasshh is running provides these special files, bbaasshh uses them; - otherwise it emulates them internally with the behavior described be- - low. + BBaasshh handles several filenames specially when they are used in redirec- + tions, as described in the following table. If the operating system on + which bbaasshh is running provides these special files, bbaasshh uses them; other- + wise it emulates them internally with the behavior described below. - //ddeevv//ffdd//_f_d - If _f_d is a valid integer, duplicate file descriptor _f_d. - //ddeevv//ssttddiinn - File descriptor 0 is duplicated. - //ddeevv//ssttddoouutt - File descriptor 1 is duplicated. - //ddeevv//ssttddeerrrr - File descriptor 2 is duplicated. - //ddeevv//ttccpp//_h_o_s_t//_p_o_r_t - If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts - to open the corresponding TCP socket. - //ddeevv//uuddpp//_h_o_s_t//_p_o_r_t - If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t - is an integer port number or service name, bbaasshh attempts - to open the corresponding UDP socket. + //ddeevv//ffdd//_f_d + If _f_d is a valid integer, duplicate file descriptor _f_d. + //ddeevv//ssttddiinn + File descriptor 0 is duplicated. + //ddeevv//ssttddoouutt + File descriptor 1 is duplicated. + //ddeevv//ssttddeerrrr + File descriptor 2 is duplicated. + //ddeevv//ttccpp//_h_o_s_t//_p_o_r_t + If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t is + an integer port number or service name, bbaasshh attempts to open + the corresponding TCP socket. + //ddeevv//uuddpp//_h_o_s_t//_p_o_r_t + If _h_o_s_t is a valid hostname or Internet address, and _p_o_r_t is + an integer port number or service name, bbaasshh attempts to open + the corresponding UDP socket. - A failure to open or create a file causes the redirection to fail. + A failure to open or create a file causes the redirection to fail. - Redirections using file descriptors greater than 9 should be used with - care, as they may conflict with file descriptors the shell uses inter- - nally. + Redirections using file descriptors greater than 9 should be used with + care, as they may conflict with file descriptors the shell uses internally. RReeddiirreeccttiinngg IInnppuutt - Redirecting input opens the file whose name results from the expansion - of _w_o_r_d for reading on file descriptor _n, or the standard input (file - descriptor 0) if _n is not specified. + Redirecting input opens the file whose name results from the expansion of + _w_o_r_d for reading on file descriptor _n, or the standard input (file descrip- + tor 0) if _n is not specified. - The general format for redirecting input is: + The general format for redirecting input is: - [_n]<<_w_o_r_d + [_n]<<_w_o_r_d RReeddiirreeccttiinngg OOuuttppuutt - Redirecting output opens the file whose name results from the expansion - of _w_o_r_d 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. + Redirecting output opens the file whose name results from the expansion of + _w_o_r_d for writing on file descriptor _n, or the standard output (file de- + scriptor 1) if _n is not specified. If the file does not exist it is cre- + ated; if it does exist it is truncated to zero size. - The general format for redirecting output is: + The general format for redirecting output is: - [_n]>>_w_o_r_d + [_n]>>_w_o_r_d - If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett - builtin command has been enabled, the redirection fails if the file - 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 is not enabled, bbaasshh - attempts the redirection even if the file named by _w_o_r_d exists. + If the redirection operator is >>, and the nnoocclloobbbbeerr option to the sseett + builtin command has been enabled, the redirection fails if the file 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 is not enabled, bbaasshh attempts the redi- + rection even if the file named by _w_o_r_d exists. AAppppeennddiinngg RReeddiirreecctteedd OOuuttppuutt - Redirecting output in this fashion opens the file whose name results - from the expansion of _w_o_r_d 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. + Redirecting output in this fashion opens the file whose name results from + the expansion of _w_o_r_d for appending on file descriptor _n, or the standard + output (file descriptor 1) if _n is not specified. If the file does not ex- + ist it is created. - The general format for appending output is: + The general format for appending output is: - [_n]>>>>_w_o_r_d + [_n]>>>>_w_o_r_d RReeddiirreeccttiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - This construct redirects both the standard output (file descriptor 1) - and the standard error output (file descriptor 2) to the file whose - name is the expansion of _w_o_r_d. + This construct redirects both the standard output (file descriptor 1) and + the standard error output (file descriptor 2) to the file whose name is the + expansion of _w_o_r_d. - There are two formats for redirecting standard output and standard er- - ror: + There are two formats for redirecting standard output and standard error: - &&>>_w_o_r_d - and - >>&&_w_o_r_d + &&>>_w_o_r_d + and + >>&&_w_o_r_d - Of the two forms, the first is preferred. This is semantically equiva- - lent to + Of the two forms, the first is preferred. This is semantically equivalent + to - >>_w_o_r_d 2>>&&1 + >>_w_o_r_d 2>>&&1 - When using the second form, _w_o_r_d may not expand to a number or --. If - it does, other redirection operators apply (see DDuupplliiccaattiinngg FFiillee DDee-- - ssccrriippttoorrss below) for compatibility reasons. + When using the second form, _w_o_r_d may not expand to a number or --. If it + does, other redirection operators apply (see DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss + below) for compatibility reasons. AAppppeennddiinngg SSttaannddaarrdd OOuuttppuutt aanndd SSttaannddaarrdd EErrrroorr - This construct appends both the standard output (file descriptor 1) and - the standard error output (file descriptor 2) to the file whose name is - the expansion of _w_o_r_d. + This construct appends both the standard output (file descriptor 1) and the + standard error output (file descriptor 2) to the file whose name is the ex- + pansion of _w_o_r_d. - The format for appending standard output and standard error is: + The format for appending standard output and standard error is: - &&>>>>_w_o_r_d + &&>>>>_w_o_r_d - This is semantically equivalent to + This is semantically equivalent to - >>>>_w_o_r_d 2>>&&1 + >>>>_w_o_r_d 2>>&&1 - (see DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss below). + (see DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss below). HHeerree DDooccuummeennttss - This type of redirection instructs the shell to read input from the - current source until it reads a line containing only _d_e_l_i_m_i_t_e_r (with no - trailing blanks). All of the lines read up to that point then become - the standard input (or file descriptor _n if _n is specified) for a com- - mand. + This type of redirection instructs the shell to read input from the current + source until it reads a line containing only _d_e_l_i_m_i_t_e_r (with no trailing + blanks). All of the lines read up to that point then become the standard + input (or file descriptor _n if _n is specified) for a command. - The format of here-documents is: + The format of here-documents is: - [_n]<<<<[--]_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 + [_n]<<<<[--]_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 - The shell does not perform parameter and variable expansion, command - substitution, arithmetic expansion, or pathname expansion on _w_o_r_d. + The shell does not perform parameter and variable expansion, command sub- + stitution, arithmetic expansion, or pathname expansion on _w_o_r_d. - If any part of _w_o_r_d is quoted, the _d_e_l_i_m_i_t_e_r is the result of quote re- - moval on _w_o_r_d, and the lines in the here-document are not expanded. If - _w_o_r_d is unquoted, the _d_e_l_i_m_i_t_e_r is _w_o_r_d itself, and the here-document - text is treated similarly to a double-quoted string: all lines of the - here-document are subjected to parameter expansion, command substitu- - tion, and arithmetic expansion, the character sequence \\<> is - treated as a line continuation, and \\ must be used to quote the charac- - ters \\, $$, and ``; however, double quote characters have no special - meaning. + If any part of _w_o_r_d is 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, the _d_e_l_i_m_i_t_e_r is _w_o_r_d itself, and the here-document text is + treated similarly to a double-quoted string: all lines of the here-document + are subjected to parameter expansion, command substitution, and arithmetic + expansion, the character sequence \\<> is treated as a line continua- + tion, and \\ must be used to quote the characters \\, $$, and ``; however, dou- + ble quote characters have no special meaning. - If the redirection operator is <<<<--, then the shell strips all leading - tab characters from input lines and the line containing _d_e_l_i_m_i_t_e_r. - This allows here-documents within shell scripts to be indented in a - natural fashion. + If the redirection operator is <<<<--, then the shell strips all leading tab + characters from input lines and the line containing _d_e_l_i_m_i_t_e_r. This allows + here-documents within shell scripts to be indented in a natural fashion. - If the delimiter is not quoted, the shell treats the \\<> se- - quence as a line continuation: the two lines are joined and the back- - slash-newline is removed. This happens while reading the here-docu- - ment, before the check for the ending delimiter, so joined lines can - form the end delimiter. + If the delimiter is not quoted, the shell treats the \\<> sequence as + a line continuation: the two lines are joined and the backslash-newline is + removed. This happens while reading the here-document, before the check + for the ending delimiter, so joined lines can form the end delimiter. HHeerree SSttrriinnggss - A variant of here documents, the format is: + A variant of here documents, the format is: - [_n]<<<<<<_w_o_r_d + [_n]<<<<<<_w_o_r_d - The _w_o_r_d undergoes tilde expansion, parameter and variable expansion, - command substitution, arithmetic expansion, and quote removal. Path- - name expansion and word splitting are not performed. The result is - supplied as a single string, with a newline appended, to the command on - its standard input (or file descriptor _n if _n is specified). + The _w_o_r_d undergoes tilde expansion, parameter and variable expansion, com- + mand substitution, arithmetic expansion, and quote removal. Pathname ex- + pansion and word splitting are not performed. The result is supplied as a + single string, with a newline appended, to the command on its standard in- + put (or file descriptor _n if _n is specified). DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss - The redirection operator + The redirection operator - [_n]<<&&_w_o_r_d + [_n]<<&&_w_o_r_d - is used to duplicate input file descriptors. If _w_o_r_d expands to one or - more digits, file descriptor _n is made to be a copy of that file de- - scriptor. It is a redirection error if the digits in _w_o_r_d do not spec- - ify a file descriptor open for input. If _w_o_r_d evaluates to --, file de- - scriptor _n is closed. If _n is not specified, this uses the standard - input (file descriptor 0). + is used to duplicate input file descriptors. If _w_o_r_d expands to one or + more digits, file descriptor _n is made to be a copy of that file descrip- + tor. It is a redirection error if the digits in _w_o_r_d do not specify a file + descriptor open for input. If _w_o_r_d evaluates to --, file descriptor _n is + closed. If _n is not specified, this uses the standard input (file descrip- + tor 0). - The operator + The operator - [_n]>>&&_w_o_r_d + [_n]>>&&_w_o_r_d - is used similarly to duplicate output file descriptors. If _n is not - specified, this uses the standard output (file descriptor 1). It is a - redirection error if the digits in _w_o_r_d do not specify a file descrip- - tor open for output. If _w_o_r_d evaluates to --, file descriptor _n is - closed. As a special case, if _n is omitted, and _w_o_r_d does not expand - to one or more digits or --, this redirects the standard output and - standard error as described previously. + is used similarly to duplicate output file descriptors. If _n is not speci- + fied, this uses the standard output (file descriptor 1). It is a redirec- + tion error if the digits in _w_o_r_d do not specify a file descriptor open for + output. If _w_o_r_d evaluates to --, file descriptor _n is closed. As a special + case, if _n is omitted, and _w_o_r_d does not expand to one or more digits or --, + this redirects the standard output and standard error as described previ- + ously. MMoovviinngg FFiillee DDeessccrriippttoorrss - The redirection operator + The redirection operator - [_n]<<&&_d_i_g_i_t-- + [_n]<<&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard - input (file descriptor 0) if _n is not specified. _d_i_g_i_t is closed after - being duplicated to _n. + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard input + (file descriptor 0) if _n is not specified. _d_i_g_i_t is closed after being du- + plicated to _n. - Similarly, the redirection operator + Similarly, the redirection operator - [_n]>>&&_d_i_g_i_t-- + [_n]>>&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard - output (file descriptor 1) if _n is not specified. + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard out- + put (file descriptor 1) if _n is not specified. OOppeenniinngg FFiillee DDeessccrriippttoorrss ffoorr RReeaaddiinngg aanndd WWrriittiinngg - The redirection operator + The redirection operator - [_n]<<>>_w_o_r_d + [_n]<<>>_w_o_r_d - opens the file whose name is the expansion of _w_o_r_d for both reading and - writing on file descriptor _n, or on file descriptor 0 if _n is not spec- - ified. If the file does not exist, it is created. + opens the file whose name is the expansion of _w_o_r_d for both reading and + writing on file descriptor _n, or on file descriptor 0 if _n is not speci- + fied. If the file does not exist, it is created. AALLIIAASSEESS - _A_l_i_a_s_e_s allow a string to be substituted for a word that is in a posi- - tion in the input where it can be the first word of a simple command. - Aliases have names and corresponding values that are set and unset us- - ing the aalliiaass and uunnaalliiaass builtin commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS - below). + _A_l_i_a_s_e_s allow a string to be substituted for a word that is in a position + in the input where it can be the first word of a simple command. Aliases + have names and corresponding values that are set and unset using the aalliiaass + and uunnaalliiaass builtin commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - If the shell reads an unquoted word in the right position, it checks - the word to see if it matches an alias name. If it matches, the shell - replaces the word with the alias value, and reads that value as if it - had been read instead of the word. The shell doesn't look at any char- - acters following the word before attempting alias substitution. + If the shell reads an unquoted word in the right position, it checks the + word to see if it matches an alias name. If it matches, the shell replaces + the word with the alias value, and reads that value as if it had been read + instead of the word. The shell doesn't look at any characters following + the word before attempting alias substitution. - The characters //, $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or - quoting characters listed above may not appear in an alias name. The - replacement text may contain any valid shell input, including shell - metacharacters. The first word of the replacement text is tested for - aliases, but a word that is identical to an alias being expanded is not - expanded a second time. This means that one may alias llss to llss --FF, for - instance, and bbaasshh does not try to recursively expand the replacement - text. + The characters //, $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quot- + ing characters listed above may not appear in an alias name. The replace- + ment text may contain any valid shell input, including shell metacharac- + ters. 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 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, the shell checks - the next command word following the alias for alias expansion. + If the last character of the alias value is a _b_l_a_n_k, the shell checks the + next command word following the alias for alias expansion. - Aliases are created and listed with the aalliiaass command, and removed with - the uunnaalliiaass command. + Aliases are created and listed with the aalliiaass command, and removed with the + uunnaalliiaass command. - There is no mechanism for using arguments in the replacement text. If - arguments are needed, use a shell function (see FFUUNNCCTTIIOONNSS below) in- - stead. + There is no mechanism for using arguments in the replacement text. If ar- + guments are needed, use a shell function (see FFUUNNCCTTIIOONNSS below) instead. - Aliases are not expanded when the shell is not interactive, unless the - eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of - sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + Aliases are not expanded when the shell is not interactive, unless the eexx-- + ppaanndd__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 complete line of input, and - all lines that make up a compound command, before executing any of the - commands on that line or the compound command. Aliases are expanded - when a command is read, not when it is executed. Therefore, an alias - definition appearing on the same line as another command does not take - effect until the shell reads the next line of input, and an alias defi- - nition in a compound command does not take effect until the shell - parses and executes the entire compound command. The commands follow- - ing the alias definition on that line, or in the rest of a compound - command, are not affected by the new alias. This behavior is also an - issue when functions are executed. Aliases are expanded when a func- - tion definition is read, not when the function is executed, because a - function definition is itself a command. As a consequence, aliases de- - fined in a function are not available until after that function is exe- - cuted. To be safe, always put alias definitions on a separate line, - and do not use aalliiaass in compound commands. + The rules concerning the definition and use of aliases are somewhat confus- + ing. BBaasshh always reads at least one complete line of input, and all lines + that make up a compound command, before executing any of the commands on + that line or the compound command. Aliases are expanded when a command is + read, not when it is executed. Therefore, an alias definition appearing on + the same line as another command does not take effect until the shell reads + the next line of input, and an alias definition in a compound command does + not take effect until the shell parses and executes the entire compound + command. The commands following the alias definition on that line, or in + the rest of a compound command, are not affected by the new alias. This + behavior is also an issue when functions are executed. Aliases are ex- + panded when a function definition is read, not when the function is exe- + cuted, because a function definition is itself a command. As a conse- + quence, aliases defined in a function are not available until after that + function is executed. To be safe, always put alias definitions on a sepa- + rate line, and do not use aalliiaass in compound commands. - For almost every purpose, shell functions are preferable to aliases. + For almost every purpose, shell functions are preferable to aliases. FFUUNNCCTTIIOONNSS - A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, - stores a series of commands for later execution. When the name of a - shell function is used as a simple command name, the shell executes the - list of commands associated with that function name. Functions are ex- - ecuted in the context of the calling shell; there is no new process - created to interpret them (contrast this with the execution of a shell - script). + A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, stores a + series of commands for later execution. When the name of a shell function + is used as a simple command name, the shell executes the list of commands + associated with that function name. Functions are executed in the context + of the calling shell; there is no new process created to interpret them + (contrast 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 special parameter ## is - updated to reflect the new positional parameters. Special parameter 00 - is unchanged. The first element of the FFUUNNCCNNAAMMEE variable is set to the - name of the function while the function is executing. + When a function is executed, the arguments to the function become the posi- + tional parameters during its execution. The special parameter ## is updated + to reflect the new positional parameters. Special parameter 00 is un- + changed. The first element of the FFUUNNCCNNAAMMEE variable is set to the name of + the function while the function is executing. - All other aspects of the shell execution environment are identical be- - tween a function and its caller with these exceptions: the DDEEBBUUGG and - RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been - given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin - below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett - builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN - traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell - option has been enabled. + All other aspects of the shell execution environment are identical between + a function and its caller with these exceptions: the DDEEBBUUGG and RREETTUURRNN traps + (see the description of the ttrraapp builtin under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS be- + low) are not inherited unless the function has been given the ttrraaccee at- + tribute (see the description of the ddeeccllaarree builtin below) or the --oo ffuunncc-- + ttrraaccee shell option has been enabled with the sseett builtin (in which case all + functions inherit the DDEEBBUUGG and RREETTUURRNN traps), and the EERRRR trap is not in- + herited unless the --oo eerrrrttrraaccee shell option has been enabled. - Variables local to the function are declared with the llooccaall builtin - command (_l_o_c_a_l _v_a_r_i_a_b_l_e_s). Ordinarily, variables and their values are - shared between the function and its caller. If a variable is declared - llooccaall, the variable's visible scope is restricted to that function and - its children (including the functions it calls). + Variables local to the function are declared with the llooccaall builtin command + (_l_o_c_a_l _v_a_r_i_a_b_l_e_s). Ordinarily, variables and their values are shared be- + tween the function and its caller. If a variable is declared llooccaall, the + variable's visible scope is restricted to that function and its children + (including the functions it calls). - In the following description, the _c_u_r_r_e_n_t _s_c_o_p_e is a currently- execut- - ing function. Previous scopes consist of that function's caller and so - on, back to the "global" scope, where the shell is not executing any - shell function. A local variable at the current scope is a variable - declared using the llooccaall or ddeeccllaarree builtins in the function that is - currently executing. + In the following description, the _c_u_r_r_e_n_t _s_c_o_p_e is a currently- executing + function. Previous scopes consist of that function's caller and so on, + back to the "global" scope, where the shell is not executing any shell + function. A local variable at the current scope is a variable declared us- + ing the llooccaall or ddeeccllaarree builtins in the function that is currently execut- + ing. - Local variables "shadow" variables with the same name declared at pre- - vious scopes. For instance, a local variable declared in a function - hides variables with the same name declared at previous scopes, includ- - ing global variables: references and assignments refer to the local - variable, leaving the variables at previous scopes unmodified. When - the function returns, the global variable is once again visible. + Local variables "shadow" variables with the same name declared at previous + scopes. For instance, a local variable declared in a function hides vari- + ables with the same name declared at previous scopes, including global + variables: references and assignments refer to the local variable, leaving + the variables at previous scopes unmodified. When the function returns, + the global variable is once again visible. - The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility - within functions. With dynamic scoping, visible variables and their - values are a result of the sequence of function calls that caused exe- - cution to reach the current function. The value of a variable that a - function sees depends on its value within its caller, if any, whether - that caller is the global scope or another shell function. This is - also the value that a local variable declaration shadows, and the value - that is restored when the function returns. + The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility within + functions. With dynamic scoping, visible variables and their values are a + result of the sequence of function calls that caused execution to reach the + current function. The value of a variable that a function sees depends on + its value within its caller, if any, whether that caller is the global + scope or another shell function. This is also the value that a local vari- + able declaration shadows, and the value that is restored when the function + returns. - For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1, - and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from - within _f_u_n_c_2 resolve to the local variable _v_a_r from _f_u_n_c_1, shadowing - any global variable named _v_a_r. + For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1, and + _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from within + _f_u_n_c_2 resolve to the local variable _v_a_r from _f_u_n_c_1, shadowing any global + variable named _v_a_r. - The uunnsseett builtin also acts using the same dynamic scope: if a variable - is local to the current scope, uunnsseett unsets it; otherwise the unset - will refer to the variable found in any calling scope as described - above. If a variable at the current local scope is unset, it remains - so (appearing as unset) until it is reset in that scope or until the - function returns. Once the function returns, any instance of the vari- - able at a previous scope becomes visible. If the unset acts on a vari- - able at a previous scope, any instance of a variable with that name - that had been shadowed becomes visible (see below how the llooccaallvvaarr__uunn-- - sseett shell option changes this behavior). + The uunnsseett builtin also acts using the same dynamic scope: if a variable is + local to the current scope, uunnsseett unsets it; otherwise the unset will refer + to the variable found in any calling scope as described above. If a vari- + able at the current local scope is unset, it remains so (appearing as un- + set) until it is reset in that scope or until the function returns. Once + the function returns, any instance of the variable at a previous scope be- + comes visible. If the unset acts on a variable at a previous scope, any + instance of a variable with that name that had been shadowed becomes visi- + ble (see below how the llooccaallvvaarr__uunnsseett shell option changes this behavior). - The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, de- - fines a maximum function nesting level. Function invocations that ex- - ceed the limit cause the entire command to abort. + The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, defines a + maximum function nesting level. Function invocations that exceed the limit + cause the entire command to abort. - If the builtin command rreettuurrnn is executed in a function, the function - completes and execution resumes with the next command after the func- - tion call. If rreettuurrnn is supplied a numeric argument, that is the func- - tion's return status; otherwise the function's return status is the - exit status of the last command executed before the rreettuurrnn. Any com- - mand associated with the RREETTUURRNN trap is executed before execution re- - sumes. When a function completes, the values of the positional parame- - ters and the special parameter ## are restored to the values they had - prior to the function's execution. + If the builtin command rreettuurrnn is executed in a function, the function com- + pletes and execution resumes with the next command after the function call. + If rreettuurrnn is supplied a numeric argument, that is the function's return + status; otherwise the function's return status is the exit status of the + last command executed before the rreettuurrnn. Any command associated with the + RREETTUURRNN trap is executed before execution resumes. 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. - The --ff option to the ddeeccllaarree or ttyyppeesseett builtin commands lists function - names and definitions. The --FF option to ddeeccllaarree or ttyyppeesseett lists the - function names only (and optionally the source file and line number, if - the eexxttddeebbuugg shell option is enabled). Functions may be exported so - that child shell processes (those created when executing a separate - shell invocation) automatically have them defined with the --ff option to - the eexxppoorrtt builtin. The --ff option to the uunnsseett builtin deletes a func- - tion definition. + The --ff option to the ddeeccllaarree or ttyyppeesseett builtin commands lists function + names and definitions. The --FF option to ddeeccllaarree or ttyyppeesseett lists the func- + tion names only (and optionally the source file and line number, if the + eexxttddeebbuugg shell option is enabled). Functions may be exported so that child + shell processes (those created when executing a separate shell invocation) + automatically have them defined with the --ff option to the eexxppoorrtt builtin. + The --ff option to the uunnsseett builtin deletes a function definition. - Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit - the depth of the function call stack and restrict the number of func- - tion invocations. By default, bbaasshh imposes no limit on the number of - recursive calls. + Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit the + depth of the function call stack and restrict the number of function invo- + cations. By default, bbaasshh imposes no limit on the number of recursive + calls. AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN - The shell allows arithmetic expressions to be evaluated, under certain - circumstances (see the lleett and ddeeccllaarree builtin commands, the (((( com- - pound command, the arithmetic ffoorr command, the [[[[ conditional command, - and AArriitthhmmeettiicc EExxppaannssiioonn). + The shell allows arithmetic expressions to be evaluated, under certain cir- + cumstances (see the lleett and ddeeccllaarree builtin commands, the (((( compound com- + mand, the arithmetic ffoorr command, the [[[[ conditional command, and AArriitthh-- + mmeettiicc EExxppaannssiioonn). - Evaluation is done in the largest fixed-width integers available, with - no check for overflow, though division by 0 is trapped and flagged as - an error. The operators and their precedence, associativity, and val- - ues are the same as in the C language. The following list of operators - is grouped into levels of equal-precedence operators. The levels are - listed in order of decreasing precedence. + Evaluation is done in the largest fixed-width integers available, with no + check for overflow, though division by 0 is trapped and flagged as an er- + ror. The operators and their precedence, associativity, and values are the + same as in the C language. The following list of operators is grouped into + levels of equal-precedence operators. The levels are listed in order of + decreasing precedence. - _i_d++++ _i_d---- - variable post-increment and post-decrement - ++++_i_d ----_i_d - variable pre-increment and pre-decrement - -- ++ unary minus and plus - !! ~~ logical and bitwise negation - **** exponentiation - ** // %% multiplication, division, remainder - ++ -- addition, subtraction - <<<< >>>> left and right bitwise shifts - <<== >>== << >> - comparison - ==== !!== equality and inequality - && bitwise AND - ^^ bitwise exclusive OR - || bitwise OR - &&&& logical AND - |||| logical OR - _e_x_p_r??_e_x_p_r::_e_x_p_r - conditional operator - == **== //== %%== ++== --== <<<<== >>>>== &&== ^^== ||== - assignment - _e_x_p_r_1 ,, _e_x_p_r_2 - comma + _i_d++++ _i_d---- + variable post-increment and post-decrement + ++++_i_d ----_i_d + variable pre-increment and pre-decrement + -- ++ unary minus and plus + !! ~~ logical and bitwise negation + **** exponentiation + ** // %% multiplication, division, remainder + ++ -- addition, subtraction + <<<< >>>> left and right bitwise shifts + <<== >>== << >> + comparison + ==== !!== equality and inequality + && bitwise AND + ^^ bitwise exclusive OR + || bitwise OR + &&&& logical AND + |||| logical OR + _e_x_p_r??_e_x_p_r::_e_x_p_r + conditional operator + == **== //== %%== ++== --== <<<<== >>>>== &&== ^^== ||== + assignment + _e_x_p_r_1 ,, _e_x_p_r_2 + comma - Shell variables are allowed as operands; parameter expansion is per- - formed before the expression is evaluated. Within an expression, shell - variables may also be referenced by name without using the parameter - expansion syntax. This means you can use "x", where _x is a shell vari- - able name, in an arithmetic expression, and the shell will evaluate its - value as an expression and use the result. A shell variable that is - null or unset evaluates to 0 when referenced by name in an expression. + Shell variables are allowed as operands; parameter expansion is performed + before the expression is evaluated. Within an expression, shell variables + may also be referenced by name without using the parameter expansion syn- + tax. This means you can use "x", where _x is a shell variable name, in an + arithmetic expression, and the shell will evaluate its value as an expres- + sion and use the result. A shell variable that is null or unset evaluates + to 0 when referenced by name in an expression. - The value of a variable is evaluated as an arithmetic expression when - it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r - attribute using ddeeccllaarree --ii is assigned a value. A null value evaluates - to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute enabled to - be used in an expression. + The value of a variable is evaluated as an arithmetic expression when it is + referenced, or when a variable which has been given the _i_n_t_e_g_e_r attribute + using ddeeccllaarree --ii is assigned a value. A null value evaluates to 0. A + shell variable need not have its _i_n_t_e_g_e_r attribute enabled to be used in an + expression. - Integer constants follow the C language definition, without suffixes or - character constants. Constants with a leading 0 are interpreted as oc- - tal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, num- - bers take the form [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal num- - ber between 2 and 64 representing the arithmetic base, and _n is a num- - ber in that base. If _b_a_s_e_# is omitted, then base 10 is used. When - specifying _n, if a non-digit is required, the digits greater than 9 are - represented 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 up- - percase letters may be used interchangeably to represent numbers be- - tween 10 and 35. + Integer constants follow the C language definition, without suffixes or + character constants. Constants with a leading 0 are interpreted as octal + numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, numbers take + the form [_b_a_s_e_#]n, where the optional _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. When specifying _n, if a non- + digit is required, the digits greater than 9 are represented by the lower- + case 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 in- + terchangeably to represent numbers between 10 and 35. - Operators are evaluated in precedence order. Sub-expressions in paren- - theses are evaluated first and may override the precedence rules above. + Operators are evaluated in precedence order. Sub-expressions in parenthe- + ses are evaluated first and may override the precedence rules above. CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS - Conditional expressions are used by the [[[[ compound command and the - tteesstt and [[ builtin commands to test file attributes and perform string - and arithmetic comparisons. The tteesstt and [[ commands determine their - behavior based on the number of arguments; see the descriptions of - those commands for any other command-specific actions. + Conditional expressions are used by the [[[[ compound command and the tteesstt + and [[ builtin commands to test file attributes and perform string and + arithmetic comparisons. The tteesstt and [[ commands determine their behavior + based on the number of arguments; see the descriptions of those commands + for any other command-specific actions. - Expressions are formed from the unary or binary primaries listed below. - Unary expressions are often used to examine the status of a file or - shell variable. Binary operators are used for string, numeric, and - file attribute comparisons. + Expressions are formed from the unary or binary primaries listed below. + Unary expressions are often used to examine the status of a file or shell + variable. Binary operators are used for string, numeric, and file at- + tribute comparisons. - BBaasshh handles several filenames specially when they are used in expres- - sions. If the operating system on which bbaasshh is running provides these - special files, bash will use them; otherwise it will emulate them in- - ternally with this behavior: If any _f_i_l_e argument to one of the pri- - maries is of the form _/_d_e_v_/_f_d_/_n, then bbaasshh checks file descriptor _n. - If the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n, - _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, bbaasshh checks file descriptor 0, 1, or 2, - respectively. + BBaasshh handles several filenames specially when they are used in expressions. + If the operating system on which bbaasshh is running provides these special + files, bash will use them; otherwise it will emulate them internally with + this behavior: If any _f_i_l_e argument to one of the primaries is of the form + _/_d_e_v_/_f_d_/_n, then bbaasshh checks file descriptor _n. If the _f_i_l_e argument to one + of the primaries is one of _/_d_e_v_/_s_t_d_i_n, _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, bbaasshh + checks file descriptor 0, 1, or 2, respectively. - Unless otherwise specified, primaries that operate on files follow sym- - bolic links and operate on the target of the link, rather than the link - itself. + Unless otherwise specified, primaries that operate on files follow symbolic + links and operate on the target of the link, rather than the link itself. - When used with [[[[, or when the shell is in posix mode, the << and >> op- - erators sort lexicographically using the current locale. When the - shell is not in posix mode, the tteesstt command sorts using ASCII order- - ing. + When used with [[[[, or when the shell is in posix mode, the << and >> opera- + tors sort lexicographically using the current locale. When the shell is + not in posix mode, the tteesstt command sorts using ASCII ordering. - --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. - --hh _f_i_l_e - True if _f_i_l_e exists and is a symbolic link. - --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. - --xx _f_i_l_e - True if _f_i_l_e exists and is executable. - --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. - --NN _f_i_l_e - True if _f_i_l_e exists and has been modified since it was last ac- - cessed. - --OO _f_i_l_e - True if _f_i_l_e exists and is owned by the effective user id. - --SS _f_i_l_e - True if _f_i_l_e exists and is a socket. - --oo _o_p_t_n_a_m_e - True if the 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. - --vv _v_a_r_n_a_m_e - True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a - value). If _v_a_r_n_a_m_e is an indexed array variable name sub- - scripted by _@ or _*, this returns true if the array has any set - elements. If _v_a_r_n_a_m_e is an associative array variable name sub- - scripted by _@ or _*, this returns true if an element with that - key is set. - --RR _v_a_r_n_a_m_e - True if the shell variable _v_a_r_n_a_m_e is set and is a name refer- - ence. - --zz _s_t_r_i_n_g - True if the length of _s_t_r_i_n_g is zero. - _s_t_r_i_n_g - --nn _s_t_r_i_n_g - True if the length of _s_t_r_i_n_g is non-zero. + --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. + --hh _f_i_l_e + True if _f_i_l_e exists and is a symbolic link. + --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. + --xx _f_i_l_e + True if _f_i_l_e exists and is executable. + --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. + --NN _f_i_l_e + True if _f_i_l_e exists and has been modified since it was last ac- + cessed. + --OO _f_i_l_e + True if _f_i_l_e exists and is owned by the effective user id. + --SS _f_i_l_e + True if _f_i_l_e exists and is a socket. + --oo _o_p_t_n_a_m_e + True if the shell option _o_p_t_n_a_m_e is enabled. See the list of op- + tions under the description of the --oo option to the sseett builtin be- + low. + --vv _v_a_r_n_a_m_e + True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a + value). If _v_a_r_n_a_m_e is an indexed array variable name subscripted by + _@ or _*, this returns true if the array has any set elements. If + _v_a_r_n_a_m_e is an associative array variable name subscripted by _@ or _*, + this returns true if an element with that key is set. + --RR _v_a_r_n_a_m_e + True if the shell variable _v_a_r_n_a_m_e is set and is a name reference. + --zz _s_t_r_i_n_g + True if the length of _s_t_r_i_n_g is zero. + _s_t_r_i_n_g + --nn _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 - _s_t_r_i_n_g_1 == _s_t_r_i_n_g_2 - True if the strings are equal. == should be used with the tteesstt - command for POSIX conformance. When used with the [[[[ command, - this performs pattern matching as described above (CCoommppoouunndd CCoomm-- - mmaannddss). - _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 lexicographically. - _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 lexicographically. + _s_t_r_i_n_g_1 ==== _s_t_r_i_n_g_2 + _s_t_r_i_n_g_1 == _s_t_r_i_n_g_2 + True if the strings are equal. == should be used with the tteesstt com- + mand for POSIX conformance. When used with the [[[[ command, this + performs pattern matching as described above (CCoommppoouunndd CCoommmmaannddss). + _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 lexicographically. + _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 lexicographically. - _f_i_l_e_1 --eeff _f_i_l_e_2 - True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num- - bers. - _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, or if _f_i_l_e_1 exists and _f_i_l_e_2 does not. - _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, or if _f_i_l_e_2 exists and _f_i_l_e_1 - does not. + _f_i_l_e_1 --eeff _f_i_l_e_2 + True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode numbers. + _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, + or if _f_i_l_e_1 exists and _f_i_l_e_2 does not. + _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, or if _f_i_l_e_2 exists and _f_i_l_e_1 does + not. - _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. When used with the [[[[ command, _a_r_g_1 and - _a_r_g_2 are evaluated as arithmetic expressions (see AARRIITTHHMMEETTIICC - EEVVAALLUUAATTIIOONN above). Since the expansions the [[[[ command performs - on _a_r_g_1 and _a_r_g_2 can potentially result in empty strings, arith- - metic expression evaluation treats those as expressions that - evaluate to 0. + _a_r_g_1 OOPP _a_r_g_2 + OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic bi- + nary 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. When used with the [[[[ command, _a_r_g_1 and _a_r_g_2 are evalu- + ated as arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above). + Since the expansions the [[[[ command performs on _a_r_g_1 and _a_r_g_2 can + potentially result in empty strings, arithmetic expression evalua- + tion treats those as expressions that evaluate to 0. SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN - When the shell executes a simple command, it performs the following ex- - pansions, assignments, and redirections, from left to right, in the - following order. + When the shell executes a simple command, it performs the following expan- + sions, assignments, and redirections, from left to right, in the following + order. - 1. The words that the parser has marked as variable assignments - (those preceding the command name) and redirections are saved - for later processing. + 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. + 2. The words that are not variable assignments or redirections are ex- + panded. 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. + 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. + 4. The text after the == in each variable assignment undergoes tilde ex- + pansion, parameter expansion, command substitution, arithmetic ex- + pansion, and quote removal before being assigned to the variable. - If no command name results, the variable assignments affect the current - shell environment. In the case of such a command (one that consists - only of assignment statements and redirections), assignment statements - are performed before redirections. Otherwise, the variables are added - to the environment of the executed command and do not affect the cur- - rent 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, the variable assignments affect the current + shell environment. In the case of such a command (one that consists only + of assignment statements and redirections), assignment statements are per- + formed before redirections. Otherwise, the variables are added to the en- + vironment of the executed command and do not affect the current shell envi- + ronment. If any of the assignments attempts to assign a value to a read- + only variable, an error occurs, and the command exits with a non-zero sta- + tus. - If no command name results, redirections are performed, but do not af- - fect the current shell environment. A redirection error causes the - command to exit with a non-zero status. + If no command name results, redirections are performed, but do not affect + the current shell environment. A redirection error causes the command to + exit with a non-zero status. - If there is a command name left after expansion, execution proceeds as - described below. Otherwise, the command exits. If one of the expan- - sions contained a command substitution, the exit status of the command - is the exit status of the last command substitution performed. If - there were no command substitutions, the command exits with a zero sta- - tus. + If there is a command name left after expansion, execution proceeds as de- + scribed below. Otherwise, the command exits. If one of the expansions + contained a command substitution, the exit status of the command is the + exit status of the last command substitution performed. If there were no + command substitutions, the command exits with a zero status. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN - After a command has been split into words, if it results in a simple - command and an optional list of arguments, the shell performs the fol- - lowing actions. + After a command has been split into words, if it results in a simple com- + mand and an optional list of arguments, the shell performs the following + actions. - 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 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 PPAATTHH for a directory con- - taining an executable file by that name. BBaasshh uses a hash table to re- - member the full pathnames of executable files (see hhaasshh under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below). Bash performs a full search of the directo- - ries in PPAATTHH only if the command is not found in the hash table. If - the search is unsuccessful, the shell searches for a defined shell - function named ccoommmmaanndd__nnoott__ffoouunndd__hhaannddllee. If that function exists, it - is invoked in a separate execution environment with the original com- - mand and the original command's arguments as its arguments, and the - function's exit status becomes the exit status of that subshell. If - that function is not defined, the shell prints an error message and re- - turns an exit status of 127. + If the name is neither a shell function nor a builtin, and contains no + slashes, bbaasshh searches each element of the PPAATTHH for a directory containing + an executable file by that name. BBaasshh uses a hash table to remember the + full pathnames of executable files (see hhaasshh under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS + below). Bash performs a full search of the directories in PPAATTHH only if the + command is not found in the hash table. If the search is unsuccessful, the + shell searches for a defined shell function named ccoommmmaanndd__nnoott__ffoouunndd__hhaannddllee. + If that function exists, it is invoked in a separate execution environment + with the original command and the original command's arguments as its argu- + ments, and the function's exit status becomes the exit status of that sub- + shell. If that function is not defined, the shell prints an error message + and returns an exit status of 127. - If the search is successful, or if the command name contains one or - more slashes, the shell executes the named program in a separate execu- - tion environment. Argument 0 is set to the name given, and the remain- - ing arguments to the command are set to the arguments given, if any. + If the search is successful, or if the command name contains one or more + slashes, the shell executes the named program in a separate execution envi- + ronment. 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 executable 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 commands, and the shell creates a new instance of - itself to execute it. Bash tries to determine whether the file is a - text file or a binary, and will not execute files it determines to be - binaries. This subshell reinitializes itself, so that the effect is as - if a new shell had been invoked to handle the script, with the excep- - tion that the locations of commands remembered by the parent (see hhaasshh - below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS are retained by the child. + If this execution fails because the file is not in executable format, and + the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a file + containing shell commands, and the shell creates a new instance of itself + to execute it. Bash tries to determine whether the file is a text file or + a binary, and will not execute files it determines to be binaries. This + subshell 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 CCOOMM-- + MMAANNDDSS are retained by the child. - If the program is a file beginning with ##!!, the remainder of the first - line specifies an interpreter for the program. The shell executes the - specified interpreter on operating systems that do not handle this exe- - cutable format 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. + If the program is a file beginning with ##!!, the remainder of the first line + specifies an interpreter for the program. The shell executes the specified + interpreter on operating systems that do not handle this executable format + 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 follow- - ing: + 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. + * 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. + * The current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or in- + herited by the shell at invocation. - +o The file creation mode mask as set by uummaasskk or inherited from - the shell's parent. + * The file creation mode mask as set by uummaasskk or inherited from the + shell's parent. - +o Current traps set by ttrraapp. + * Current traps set by ttrraapp. - +o Shell parameters that are set by variable assignment or with sseett - or inherited from the shell's parent in the environment. + * Shell parameters that are set by variable assignment or with sseett or + inherited from the shell's parent in the environment. - +o Shell functions defined during execution or inherited from the - shell's parent in the environment. + * Shell functions defined during execution or inherited from the + shell's parent in the environment. - +o Options enabled at invocation (either by default or with com- - mand-line arguments) or by sseett. + * Options enabled at invocation (either by default or with command- + line arguments) or by sseett. - +o Options enabled by sshhoopptt. + * Options enabled by sshhoopptt. - +o Shell aliases defined with aalliiaass. + * Shell aliases defined with aalliiaass. - +o Various process IDs, including those of background jobs, the - value of $$$$, and the value of PPPPIIDD. + * 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 function is to be - executed, it is invoked in a separate execution environment that con- - sists of the following. Unless otherwise noted, the values are inher- - ited from the shell. + When a simple command other than a builtin or shell function is to be exe- + cuted, it is invoked in a separate execution 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. + * The shell's open files, plus any modifications and additions speci- + fied by redirections to the command. - +o The current working directory. + * The current working directory. - +o The file creation mode mask. + * The file creation mode mask. - +o Shell variables and functions marked for export, along with - variables exported for the command, passed in the environment. + * Shell variables and functions marked for export, along with vari- + ables exported for the command, passed in the environment. - +o Traps caught by the shell are reset to the values inherited from - the shell's parent, and traps ignored by the shell are ignored. + * Traps caught by the shell are reset to the values inherited from the + shell's parent, and traps ignored by the shell are ignored. - A command invoked in this separate environment cannot affect the - shell's execution environment. + A command invoked in this separate environment cannot affect the shell's + execution environment. - A _s_u_b_s_h_e_l_l is a copy of the shell process. + A _s_u_b_s_h_e_l_l is a copy of the shell process. - Command substitution, commands grouped with parentheses, and asynchro- - nous commands are invoked in a subshell environment that is a duplicate - of the shell environment, except that traps caught by the shell are re- - set to the values that the shell inherited from its parent at invoca- - tion. Builtin commands that are invoked as part of a pipeline, except - possibly in the last element depending on the value of the llaassttppiippee - shell option, are also executed in a subshell environment. Changes - made to the subshell environment cannot affect the shell's execution - environment. + Command substitution, commands grouped with parentheses, and asynchronous + commands are invoked in a subshell environment that is a duplicate of the + shell environment, except that traps caught by the shell are reset to the + values that the shell inherited from its parent at invocation. Builtin + commands that are invoked as part of a pipeline, except possibly in the + last element depending on the value of the llaassttppiippee shell option, are also + executed in a subshell environment. Changes made to the subshell environ- + ment cannot affect the shell's execution environment. - When the shell is in posix mode, subshells spawned to execute command - substitutions inherit the value of the --ee option from their parent - shell. When not in posix mode, bbaasshh clears the --ee option in such sub- - shells. See the description of the iinnhheerriitt__eerrrreexxiitt shell option below - for how to control this behavior when not in posix mode. + When the shell is in posix mode, subshells spawned to execute command sub- + stitutions inherit the value of the --ee option from their parent shell. + When not in posix mode, bbaasshh clears the --ee option in such subshells. See + the description of the iinnhheerriitt__eerrrreexxiitt shell option below for how to con- + trol this behavior when not in posix mode. - If a command is followed by a && and job control is not active, the de- - fault standard input for the command is the empty file _/_d_e_v_/_n_u_l_l, un- - less the command has an explicit redirection involving the standard in- - put. Otherwise, the invoked command inherits the file descriptors of - the calling shell as modified by redirections. + If a command is followed by a && and job control is not active, the default + standard input for the command is the empty file _/_d_e_v_/_n_u_l_l, unless the com- + mand has an explicit redirection involving the standard input. Otherwise, + the invoked command inherits the file descriptors of the calling shell as + modified by redirections. 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. + 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 provides several ways to manipulate the environment. On in- - vocation, the shell scans its own environment and creates a parameter - for each name found, automatically marking it for _e_x_p_o_r_t to child - processes. Executed commands inherit the environment. The eexxppoorrtt, ddee-- - ccllaarree --xx, and uunnsseett commands modify the environment by adding and - deleting parameters and functions. If the value of a parameter in the - environment is modified, the new value automatically 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 uunn-- - sseett or eexxppoorrtt --nn commands, plus any additions via the eexxppoorrtt and ddee-- - ccllaarree --xx commands. + The shell provides several ways to manipulate the environment. On invoca- + tion, the shell scans its own environment and creates a parameter for each + name found, automatically marking it for _e_x_p_o_r_t to child processes. Exe- + cuted commands inherit the environment. The eexxppoorrtt, ddeeccllaarree --xx, and uunnsseett + commands modify the environment by adding and deleting parameters and func- + tions. If the value of a parameter in the environment is modified, the new + value automatically 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 or eexxppoorrtt --nn commands, plus any additions via + the eexxppoorrtt and ddeeccllaarree --xx commands. - If any parameter assignments, as described above in PPAARRAAMMEETTEERRSS, appear - before a _s_i_m_p_l_e _c_o_m_m_a_n_d, the variable assignments are part of that com- - mand's environment for as long as it executes. These assignment state- - ments affect only the environment seen by that command. If these as- - signments precede a call to a shell function, the variables are local - to the function and exported to that function's children. + If any parameter assignments, as described above in PPAARRAAMMEETTEERRSS, appear be- + fore a _s_i_m_p_l_e _c_o_m_m_a_n_d, the variable assignments are part of that command's + environment for as long as it executes. These assignment statements affect + only the environment seen by that command. If these assignments precede a + call to a shell function, the variables are local to the function and ex- + ported to that function's children. - 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. + If the --kk option is set (see the sseett builtin command below), then _a_l_l para- + meter 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 pathname of the command and passed to that command in its environ- - ment. + When bbaasshh invokes an external command, the variable __ is set to the full + pathname of the command and passed to that command in its environment. EEXXIITT SSTTAATTUUSS - The exit status of an executed command is the value returned by the - _w_a_i_t_p_i_d system call or equivalent function. Exit statuses fall between - 0 and 255, though, as explained below, the shell may use values above - 125 specially. Exit statuses from shell builtins and compound commands - are also limited to this range. Under certain circumstances, the shell - will use special values to indicate specific failure modes. + The exit status of an executed command is the value returned by the _w_a_i_t_p_i_d + system call or equivalent function. Exit statuses fall between 0 and 255, + though, as explained below, the shell may use values above 125 specially. + Exit statuses from shell builtins and compound commands are also limited to + this range. Under certain circumstances, the shell will use special values + to indicate specific failure modes. - For the shell's purposes, a command which exits with a zero exit status - has succeeded. So while an exit status of zero indicates success, a - non-zero exit status indicates failure. + For the shell's purposes, a command which exits with a zero exit status has + succeeded. So while an exit status of zero indicates success, a non-zero + exit status indicates failure. - When a command terminates on a fatal signal _N, bbaasshh uses the value of - 128+_N as the exit status. + When a command terminates on a fatal signal _N, bbaasshh uses the value of 128+_N + as the exit status. - If a command is not found, the child process created to execute it re- - turns a status of 127. If a command is found but is not executable, - the return status is 126. + 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. + 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 successful, 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, generally in- - valid options or missing arguments. + Shell builtin commands return a status of 0 (_t_r_u_e) if successful, 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, generally invalid options or + missing arguments. - The exit status of the last command is available in the special parame- - ter $?. + The exit status of the last command is available in the special parameter + $?. - BBaasshh itself returns the exit status of the last command executed, un- - less a syntax error occurs, in which case it exits with a non-zero - value. See also the eexxiitt builtin command below. + 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 interactive shell), and - catches and handles SSIIGGIINNTT (so that the wwaaiitt builtin is interruptible). - When bbaasshh receives SSIIGGIINNTT, it breaks out of any executing loops and - command lists. In all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is - in effect, bbaasshh ignores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP. + When bbaasshh is interactive, in the absence of any traps, it ignores SSIIGGTTEERRMM + (so that kkiillll 00 does not kill an interactive shell), and catches and han- + dles SSIIGGIINNTT (so that the wwaaiitt builtin is interruptible). When bbaasshh re- + ceives SSIIGGIINNTT, it breaks out of any executing loops and command lists. In + all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh ignores + SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP. - The ttrraapp builtin modifies the shell's signal handling, as described be- - low. + The ttrraapp builtin modifies the shell's signal handling, as described below. - Non-builtin commands bbaasshh executes have signal handlers set to the val- - ues inherited by the shell from its parent, unless ttrraapp sets them to be - ignored, in which case the child process will ignore them as well. - When job control is not in effect, asynchronous commands ignore SSIIGGIINNTT - and SSIIGGQQUUIITT in addition to these inherited handlers. Commands run as a - result of command substitution ignore the keyboard-generated job con- - trol signals SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP. + Non-builtin commands bbaasshh executes have signal handlers set to the values + inherited by the shell from its parent, unless ttrraapp sets them to be ig- + nored, in which case the child process will ignore them as well. When job + control is not in effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT + in addition to these inherited handlers. Commands run as a result of com- + mand substitution ignore the keyboard-generated job control signals SSIIGGTT-- + TTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP. - The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, - an interactive shell resends the SSIIGGHHUUPP to all jobs, running or - stopped. The shell sends SSIIGGCCOONNTT to stopped jobs to ensure that they - receive the SSIIGGHHUUPP (see JJOOBB CCOONNTTRROOLL below for more information about - running and stopped jobs). To prevent the shell from sending the sig- - nal to a particular job, remove it from the jobs table with the ddiissoowwnn - builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or mark it not to receive - SSIIGGHHUUPP using ddiissoowwnn --hh. + The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, an + interactive shell resends the SSIIGGHHUUPP to all jobs, running or stopped. The + shell sends SSIIGGCCOONNTT to stopped jobs to ensure that they receive the SSIIGGHHUUPP + (see JJOOBB CCOONNTTRROOLL below for more information about running and stopped + jobs). To prevent the shell from sending the signal to a particular job, + remove it from the jobs table with the ddiissoowwnn builtin (see SSHHEELLLL BBUUIILLTTIINN + CCOOMMMMAANNDDSS below) or mark it not to receive SSIIGGHHUUPP using ddiissoowwnn --hh. - If the hhuuppoonneexxiitt shell option has been set using sshhoopptt, bbaasshh sends a - SSIIGGHHUUPP to all jobs when an interactive login shell exits. + If the hhuuppoonneexxiitt shell option has been set using sshhoopptt, bbaasshh sends a SSIIGGHHUUPP + to all jobs when an interactive login shell exits. - If bbaasshh is waiting for a command to complete and receives a signal for - which a trap has been set, it will not execute the trap until the com- - mand completes. If bbaasshh is waiting for an asynchronous command via the - wwaaiitt builtin, and it receives a signal for which a trap has been set, - the wwaaiitt builtin will return immediately with an exit status greater - than 128, immediately after which the shell executes the trap. + If bbaasshh is waiting for a command to complete and receives a signal for + which a trap has been set, it will not execute the trap until the command + completes. If bbaasshh is waiting for an asynchronous command via the wwaaiitt + builtin, and it receives a signal for which a trap has been set, the wwaaiitt + builtin will return immediately with an exit status greater than 128, imme- + diately after which the shell executes the trap. - When job control is not enabled, and bbaasshh is waiting for a foreground - command to complete, the shell receives keyboard-generated signals such - as SSIIGGIINNTT (usually generated by ^^CC) that users commonly intend to send - to that command. This happens because the shell and the command are in - the same process group as the terminal, and ^^CC sends SSIIGGIINNTT to all - processes in that process group. Since bbaasshh does not enable job con- - trol by default when the shell is not interactive, this scenario is - most common in non-interactive shells. + When job control is not enabled, and bbaasshh is waiting for a foreground com- + mand to complete, the shell receives keyboard-generated signals such as + SSIIGGIINNTT (usually generated by ^^CC) that users commonly intend to send to that + command. This happens because the shell and the command are in the same + process group as the terminal, and ^^CC sends SSIIGGIINNTT to all processes in that + process group. Since bbaasshh does not enable job control by default when the + shell is not interactive, this scenario is most common in non-interactive + shells. - When job control is enabled, and bbaasshh is waiting for a foreground com- - mand to complete, the shell does not receive keyboard-generated sig- - nals, because it is not in the same process group as the terminal. - This scenario is most common in interactive shells, where bbaasshh attempts - to enable job control by default. See JJOOBB CCOONNTTRROOLL below for more in- - formation about process groups. + When job control is enabled, and bbaasshh is waiting for a foreground command + to complete, the shell does not receive keyboard-generated signals, because + it is not in the same process group as the terminal. This scenario is most + common in interactive shells, where bbaasshh attempts to enable job control by + default. See JJOOBB CCOONNTTRROOLL below for more information about process groups. - When job control is not enabled, and bbaasshh receives SSIIGGIINNTT while waiting - for a foreground command, it waits until that foreground command termi- - nates and then decides what to do about the SSIIGGIINNTT: + When job control is not enabled, and bbaasshh receives SSIIGGIINNTT while waiting for + a foreground command, it waits until that foreground command terminates and + then decides what to do about the SSIIGGIINNTT: - 1. If the command terminates due to the SSIIGGIINNTT, bbaasshh concludes that - the user meant to send the SSIIGGIINNTT to the shell as well, and acts - on the SSIIGGIINNTT (e.g., by running a SSIIGGIINNTT trap, exiting a non-in- - teractive shell, or returning to the top level to read a new - command). + 1. If the command terminates due to the SSIIGGIINNTT, bbaasshh concludes that the + user meant to send the SSIIGGIINNTT to the shell as well, and acts on the + SSIIGGIINNTT (e.g., by running a SSIIGGIINNTT trap, exiting a non-interactive + shell, or returning to the top level to read a new command). - 2. If the command does not terminate due to SSIIGGIINNTT, the program - handled the SSIIGGIINNTT itself and did not treat it as a fatal sig- - nal. In that case, bbaasshh does not treat SSIIGGIINNTT as a fatal sig- - nal, either, instead assuming that the SSIIGGIINNTT was used as part - of the program's normal operation (e.g., emacs uses it to abort - editing commands) or deliberately discarded. However, bbaasshh will - run any trap set on SSIIGGIINNTT, as it does with any other trapped - signal it receives while it is waiting for the foreground com- - mand to complete, for compatibility. + 2. If the command does not terminate due to SSIIGGIINNTT, the program handled + the SSIIGGIINNTT itself and did not treat it as a fatal signal. In that + case, bbaasshh does not treat SSIIGGIINNTT as a fatal signal, either, instead + assuming that the SSIIGGIINNTT was used as part of the program's normal + operation (e.g., emacs uses it to abort editing commands) or delib- + erately discarded. However, bbaasshh will run any trap set on SSIIGGIINNTT, + as it does with any other trapped signal it receives while it is + waiting for the foreground command to complete, for compatibility. - When job control is enabled, bbaasshh does not receive keyboard-generated - signals such as SSIIGGIINNTT while it is waiting for a foreground command. - An interactive shell does not pay attention to the SSIIGGIINNTT, even if the - foreground command terminates as a result, other than noting its exit - status. If the shell is not interactive, and the foreground command - terminates due to the SSIIGGIINNTT, bbaasshh pretends it received the SSIIGGIINNTT it- - self (scenario 1 above), for compatibility. + When job control is enabled, bbaasshh does not receive keyboard-generated sig- + nals such as SSIIGGIINNTT while it is waiting for a foreground command. An in- + teractive shell does not pay attention to the SSIIGGIINNTT, even if the fore- + ground command terminates as a result, other than noting its exit status. + If the shell is not interactive, and the foreground command terminates due + to the SSIIGGIINNTT, bbaasshh pretends it received the SSIIGGIINNTT itself (scenario 1 + above), for compatibility. 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 ex- - ecution 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 in- - terface supplied jointly by the operating system kernel's terminal dri- - ver and bbaasshh. + _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 execu- + tion 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 operating system kernel's terminal driver and bbaasshh. - The shell associates a _j_o_b with each pipeline. It keeps a table of - currently executing jobs, which the jjoobbss command will display. Each - job has a _j_o_b _n_u_m_b_e_r, which jjoobbss displays between brackets. Job num- - bers start at 1. When bbaasshh starts a job asynchronously (in the _b_a_c_k_- - _g_r_o_u_n_d), it prints a line that looks like: + The shell associates a _j_o_b with each pipeline. It keeps a table of cur- + rently executing jobs, which the jjoobbss command will display. Each job has a + _j_o_b _n_u_m_b_e_r, which jjoobbss displays between brackets. Job numbers start at 1. + When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a line + that looks like: - [1] 25647 + [1] 25647 - indicating that this job is job number 1 and that the process ID of the - last process in the pipeline associated with this job is 25647. All of - the processes in a single pipeline are members of the same job. BBaasshh - uses the _j_o_b abstraction as the basis for job control. + indicating that this job is job number 1 and that the process ID of the + last process in the pipeline associated with this job is 25647. All of the + processes in a single pipeline are members of the same job. BBaasshh uses the + _j_o_b abstraction as the basis for job control. - To facilitate the implementation of the user interface to job control, - each process has a _p_r_o_c_e_s_s _g_r_o_u_p _I_D, and the operating 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. This terminal - process group ID is associated with the _c_o_n_t_r_o_l_l_i_n_g _t_e_r_m_i_n_a_l. + To facilitate the implementation of the user interface to job control, each + process has a _p_r_o_c_e_s_s _g_r_o_u_p _I_D, and the operating system maintains the no- + tion 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. This terminal process group + ID is associated with the _c_o_n_t_r_o_l_l_i_n_g _t_e_r_m_i_n_a_l. - Processes that have the same process group ID are said to be part of - the same _p_r_o_c_e_s_s _g_r_o_u_p. Members of the _f_o_r_e_g_r_o_u_n_d process group - (processes whose process group ID is equal to the current terminal - process group ID) receive keyboard-generated signals such as SSIIGGIINNTT. - Processes in the foreground process group are said to be _f_o_r_e_g_r_o_u_n_d - processes. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID dif- - fers from the controlling terminal's; such processes are immune to key- - board-generated signals. Only foreground processes are allowed to read - from or, if the user so specifies with "stty tostop", write to the con- - trolling terminal. The system sends a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal to - background processes which attempt to read from (write to when "tostop" - is in effect) the terminal, which, unless caught, suspends the process. + Processes that have the same process group ID are said to be part of the + same _p_r_o_c_e_s_s _g_r_o_u_p. Members of the _f_o_r_e_g_r_o_u_n_d process group (processes + whose process group ID is equal to the current terminal process group ID) + receive keyboard-generated signals such as SSIIGGIINNTT. Processes in the fore- + ground process group are said to be _f_o_r_e_g_r_o_u_n_d processes. _B_a_c_k_g_r_o_u_n_d + processes are those whose process group ID differs from the controlling + terminal's; such processes are immune to keyboard-generated signals. Only + foreground processes are allowed to read from or, if the user so specifies + with "stty tostop", write to the controlling terminal. The system sends a + SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal to background processes which attempt to read from + (write to when "tostop" is in effect) the terminal, which, unless caught, + suspends the process. - If the operating system on which bbaasshh is running supports job control, - bbaasshh contains facilities to use it. Typing the _s_u_s_p_e_n_d character (typ- - ically ^^ZZ, Control-Z) while a process is running stops that process and - returns control 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 stop when it attempts to read - input from the terminal, and returns control to bbaasshh. The user then - manipulates the state of this job, using the bbgg command to continue it - in the background, the ffgg command to continue it in the foreground, or - the kkiillll command to kill it. The suspend character takes effect imme- - diately, and has the additional side effect of discarding any pending - output and typeahead. To force a background process to stop, or stop a - process that's not associated with the current terminal session, send - it the SSIIGGSSTTOOPP signal using kkiillll. + If the operating system on which bbaasshh is running supports job control, bbaasshh + contains facilities to use it. Typing the _s_u_s_p_e_n_d character (typically ^^ZZ, + Control-Z) while a process is running stops that process and returns con- + trol to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d character (typically ^^YY, Control- + Y) causes the process stop when it attempts to read input from the termi- + nal, and returns control to bbaasshh. The user then manipulates the state of + this job, using the bbgg command to continue it in the background, the ffgg + command to continue it in the foreground, or the kkiillll command to kill it. + The suspend character takes effect immediately, and has the additional side + effect of discarding any pending output and typeahead. To force a back- + ground process to stop, or stop a process that's not associated with the + current terminal session, send it the SSIIGGSSTTOOPP signal using kkiillll. - There are a number of ways to refer to a job in the shell. The %% char- - acter introduces a job specification (jobspec). + There are a number of ways to refer to a job in the shell. The %% character + introduces a job specification (jobspec). - 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 substring that - appears in its command line. For example, %%ccee refers to a job whose - command name begins with ccee. Using %%??ccee, on the other hand, refers to - any job containing the string ccee in its command line. If the prefix or - substring matches more than one job, bbaasshh reports an error. + 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 substring that appears in + its command line. For example, %%ccee refers to a job whose command name be- + gins with ccee. Using %%??ccee, on the other hand, refers to any job containing + the string ccee in its command line. If the prefix or 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. - A single % (with no accompanying job specification) also refers to the - current job. %%-- refers to the _p_r_e_v_i_o_u_s _j_o_b. When a job starts in the - background, a job stops while in the foreground, or a job is resumed in - the background, it becomes the current job. The job that was the cur- - rent job becomes the previous job. When the current job terminates, - the previous job becomes the current job. If there is only a single - job, %%++ and %%-- can both be used to refer to that job. In output per- - taining to jobs (e.g., the output of the jjoobbss command), the current job - is always marked with a ++, and the previous job with a --. + The symbols %%%% and %%++ refer to the shell's notion of the _c_u_r_r_e_n_t _j_o_b. A + single % (with no accompanying job specification) also refers to the cur- + rent job. %%-- refers to the _p_r_e_v_i_o_u_s _j_o_b. When a job starts in the back- + ground, a job stops while in the foreground, or a job is resumed in the + background, it becomes the current job. The job that was the current job + becomes the previous job. When the current job terminates, the previous + job becomes the current job. If there is only a single job, %%++ and %%-- can + both be used to refer to that job. In output pertaining to jobs (e.g., the + output of the jjoobbss command), the current job is always marked with a ++, and + the previous job with a --. - Simply naming a job can be used to bring it into the foreground: %%11 is - a synonym for "fg %1", bringing job 1 from the background into the - foreground. Similarly, "%1 &" resumes job 1 in the background, equiva- - lent to "bg %1". + Simply naming a job can be used to bring it into the foreground: %%11 is a + synonym for "fg %1", bringing job 1 from the background into the fore- + ground. Similarly, "%1 &" resumes job 1 in the background, equivalent to + "bg %1". - The shell learns immediately whenever a job changes state. Normally, - bbaasshh waits until it is about to print a prompt before notifying the - user about changes in a job's status so as to not interrupt any other - output, though it will notify of changes in a job's status after a - foreground command in a list completes, before executing the next com- - mand in the list. If the --bb option to the sseett builtin command is en- - abled, bbaasshh reports status changes immediately. BBaasshh executes any trap - on SSIIGGCCHHLLDD for each child that terminates. + The shell learns immediately whenever a job changes state. Normally, bbaasshh + waits until it is about to print a prompt before notifying the user about + changes in a job's status so as to not interrupt any other output, though + it will notify of changes in a job's status after a foreground command in a + list completes, before executing the next command in the list. If the --bb + option to the sseett builtin command is enabled, bbaasshh reports status changes + immediately. BBaasshh executes any trap on SSIIGGCCHHLLDD for each child that termi- + nates. - When a job terminates and bbaasshh notifies the user about it, bbaasshh removes - the job from the table. It will not appear in jjoobbss output, but wwaaiitt - will report its exit status, as long as it's supplied the process ID - associated with the job as an argument. When the table is empty, job - numbers start over at 1. + When a job terminates and bbaasshh notifies the user about it, bbaasshh removes the + job from the table. It will not appear in jjoobbss output, but wwaaiitt will re- + port its exit status, as long as it's supplied the process ID associated + with the job as an argument. When the table is empty, job numbers start + over at 1. - If a user attempts to exit bbaasshh while jobs are stopped (or, if the - cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run- - ning), the shell prints a warning message, and, if the cchheecckkjjoobbss option - is enabled, lists the jobs and their statuses. The jjoobbss command may - then be used to inspect their status. If the user immediately attempts - to exit again, without an intervening command, bbaasshh does not print an- - other warning, and terminates any stopped jobs. + If a user attempts to exit bbaasshh while jobs are stopped (or, if the cchheecckk-- + jjoobbss shell option has been enabled using the sshhoopptt builtin, running), the + shell prints a warning message, and, if the cchheecckkjjoobbss option is enabled, + lists the jobs and their statuses. The jjoobbss command may then be used to + inspect their status. If the user immediately attempts to exit again, + without an intervening command, bbaasshh does not print another warning, and + terminates any stopped jobs. - When the shell is waiting for a job or process using the wwaaiitt builtin, - and job control is enabled, wwaaiitt will return when the job changes - state. The --ff option causes wwaaiitt to wait until the job or process ter- - minates before returning. + When the shell is waiting for a job or process using the wwaaiitt builtin, and + job control is enabled, wwaaiitt will return when the job changes state. The + --ff option causes wwaaiitt to wait until the job or process terminates before + returning. 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. + 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 examines the value of the array variable PPRROOMMPPTT__CCOOMMMMAANNDD just be- - fore printing each primary prompt. If any elements in PPRROOMMPPTT__CCOOMMMMAANNDD - are set and non-null, Bash executes each value, in numeric order, just - as if it had been typed on the command line. BBaasshh displays PPSS00 after - it reads a command but before executing it. + BBaasshh examines the value of the array variable PPRROOMMPPTT__CCOOMMMMAANNDD just before + printing each primary prompt. If any elements in PPRROOMMPPTT__CCOOMMMMAANNDD are set + and non-null, Bash executes each value, in numeric order, just as if it had + been typed on the command line. BBaasshh displays PPSS00 after it reads a command + but before executing it. - BBaasshh displays PPSS44 as described above before tracing each command when - the --xx option is enabled. + BBaasshh displays PPSS44 as described above before tracing each command when the + --xx option is enabled. - BBaasshh allows the prompt strings PPSS00, PPSS11, PPSS22, and PPSS44, to be customized - by inserting a number of backslash-escaped special characters that are - decoded as follows: + BBaasshh allows the prompt strings PPSS00, PPSS11, PPSS22, and PPSS44, to be customized 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"). - \\DD{{_f_o_r_m_a_t}} - The _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is in- - serted into the prompt string; an empty _f_o_r_m_a_t results in - a locale-specific time representation. The braces are - required. - \\ee An ASCII escape character (033). - \\hh The hostname up to the first ".". - \\HH The hostname. - \\jj The number of jobs currently managed by the shell. - \\ll The basename of the shell's terminal device name (e.g., - "ttys0"). - \\nn A newline. - \\rr A 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. - \\AA The current time in 24-hour HH:MM format. - \\uu The username of the current user. - \\vv The bbaasshh version (e.g., 2.00). - \\VV The bbaasshh release, version + patch level (e.g., 2.00.0) - \\ww The value of the PPWWDD shell variable ($$PPWWDD), with $$HHOOMMEE - abbreviated with a tilde (uses the value of the - PPRROOMMPPTT__DDIIRRTTRRIIMM variable). - \\WW The basename of $$PPWWDD, with $$HHOOMMEE abbreviated with a - tilde. - \\!! 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 control sequence into the - prompt. This escape is only useful when the prompt will - be supplied to rreeaaddlliinnee, and is ignored and removed oth- - erwise, so it shouldn't be used in PPSS00 or PPSS44 or when - line editing is not enabled. - \\]] End a sequence of non-printing characters begun with \\[[. + \\aa An ASCII bell character (07). + \\dd The date in "Weekday Month Date" format (e.g., "Tue May 26"). + \\DD{{_f_o_r_m_a_t}} + The _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is in- + serted into the prompt string; an empty _f_o_r_m_a_t results in a + locale-specific time representation. The braces are re- + quired. + \\ee An ASCII escape character (033). + \\hh The hostname up to the first ".". + \\HH The hostname. + \\jj The number of jobs currently managed by the shell. + \\ll The basename of the shell's terminal device name (e.g., + "ttys0"). + \\nn A newline. + \\rr A carriage return. + \\ss The name of the shell: the basename of $$00 (the portion fol- + lowing 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. + \\AA The current time in 24-hour HH:MM format. + \\uu The username of the current user. + \\vv The bbaasshh version (e.g., 2.00). + \\VV The bbaasshh release, version + patch level (e.g., 2.00.0) + \\ww The value of the PPWWDD shell variable ($$PPWWDD), with $$HHOOMMEE abbre- + viated with a tilde (uses the value of the PPRROOMMPPTT__DDIIRRTTRRIIMM + variable). + \\WW The basename of $$PPWWDD, with $$HHOOMMEE abbreviated with a tilde. + \\!! 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 control sequence into the prompt. + This escape is only useful when the prompt will be supplied + to rreeaaddlliinnee, and is ignored and removed otherwise, so it + shouldn't be used in PPSS00 or PPSS44 or when line editing is not + enabled. + \\]] End a sequence of non-printing characters begun with \\[[. - The command number and the history number are usually different: the - history number of a command is its position in the history list, which - may include commands restored from the history file (see HHIISSTTOORRYY be- - low), while the command number is the position in the sequence of com- - mands executed during the current shell session. After the string is - decoded, it is expanded via parameter expansion, command substitution, - arithmetic expansion, and quote removal, subject to the value of the - pprroommppttvvaarrss shell option (see the description of the sshhoopptt command under - SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). This can have unwanted side effects if - escaped portions of the string appear within command substitution or - contain characters special to word expansion. + The command number and the history number are usually different: the his- + tory number of a command is its position in the history list, which may in- + clude commands restored from the history file (see HHIISSTTOORRYY below), while + the command number is the position in the sequence of commands executed + during the current shell session. After the string is decoded, it is ex- + panded via parameter expansion, command substitution, arithmetic 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). + This can have unwanted side effects if escaped portions of the string ap- + pear within command substitution or contain characters special to word ex- + pansion. RREEAADDLLIINNEE - This is the library that handles reading input when using an interac- - tive shell, unless the ----nnooeeddiittiinngg option is supplied at shell invoca- - tion. Line editing is also used when using the --ee option to the rreeaadd - builtin. By default, the line editing commands are similar to those of - emacs; a vi-style line editing interface is also available. Line edit- - ing can be enabled at any time using the --oo eemmaaccss or --oo vvii options to - the sseett builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). To turn off line - editing after the shell is running, use the ++oo eemmaaccss or ++oo vvii options - to the sseett builtin. + This is the library that handles reading input when using an interactive + shell, unless the ----nnooeeddiittiinngg option is supplied at shell invocation. Line + editing is also used when using the --ee option to the rreeaadd builtin. By de- + fault, the line editing commands are similar to those of emacs; a vi-style + line editing interface is also available. Line editing can be enabled at + any time using the --oo eemmaaccss or --oo vvii options to the sseett builtin (see SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below). To turn off line editing after the shell is run- + ning, use the ++oo eemmaaccss or ++oo vvii options to the sseett builtin. RReeaaddlliinnee NNoottaattiioonn - This section uses Emacs-style editing concepts and uses its notation - for 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. The Meta key is often labeled "Alt" or "Option". + This section uses Emacs-style editing concepts and uses its notation for + 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. The Meta + key is often labeled "Alt" or "Option". - On keyboards without a _M_e_t_a key, M-_x means ESC _x, i.e., press and re- - lease the Escape key, then press and release the _x key, in sequence. - This makes ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x means ESC Con- - trol-_x: press and release the Escape key, then press and hold the Con- - trol key while pressing the _x key, then release both. + On keyboards without a _M_e_t_a key, M-_x means ESC _x, i.e., press and release + the Escape key, then press and release the _x key, in sequence. This makes + ESC the _m_e_t_a _p_r_e_f_i_x. The combination M-C-_x means ESC Control-_x: press and + release the Escape key, then press and hold the Control key while pressing + the _x key, then release both. - On some keyboards, the Meta key modifier produces characters with the - eighth bit (0200) set. You can use the eennaabbllee--mmeettaa--kkeeyy variable to - control whether or not it does this, if the keyboard allows it. On - many others, the terminal or terminal emulator converts the metafied - key to a key sequence beginning with ESC as described in the preceding - paragraph. + On some keyboards, the Meta key modifier produces characters with the + eighth bit (0200) set. You can use the eennaabbllee--mmeettaa--kkeeyy variable to control + whether or not it does this, if the keyboard allows it. On many others, + the terminal or terminal emulator converts the metafied key to a key se- + quence beginning with ESC as described in the preceding paragraph. - If your _M_e_t_a key produces a key sequence with the ESC meta prefix, you - can make M-_k_e_y key bindings you specify (see RReeaaddlliinnee KKeeyy BBiinnddiinnggss be- - low) do the same thing by setting the ffoorrccee--mmeettaa--pprreeffiixx variable. + If your _M_e_t_a key produces a key sequence with the ESC meta prefix, you can + make M-_k_e_y key bindings you specify (see RReeaaddlliinnee KKeeyy BBiinnddiinnggss below) do + the same thing by setting the ffoorrccee--mmeettaa--pprreeffiixx variable. - RReeaaddlliinnee 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) makes that command act - in a backward direction. Commands whose behavior with arguments devi- - ates from this are noted below. + RReeaaddlliinnee 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) makes that command act in a backward + direction. Commands whose behavior with arguments deviates from this are + noted below. - The _p_o_i_n_t is the current cursor position, and _m_a_r_k refers to a saved - cursor position. The text between the point and mark is referred to as - the _r_e_g_i_o_n. RReeaaddlliinnee has the concept of an _a_c_t_i_v_e _r_e_g_i_o_n: when the re- - gion is active, rreeaaddlliinnee redisplay highlights the region using the - value of the aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr variable. The eennaabbllee--aaccttiivvee--rree-- - ggiioonn variable turns this on and off. Several commands set the region - to active; those are noted below. + The _p_o_i_n_t is the current cursor position, and _m_a_r_k refers to a saved cursor + position. The text between the point and mark is referred to as the _r_e_- + _g_i_o_n. RReeaaddlliinnee has the concept of an _a_c_t_i_v_e _r_e_g_i_o_n: when the region is ac- + tive, rreeaaddlliinnee redisplay highlights the region using the value of the aacc-- + ttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr variable. The eennaabbllee--aaccttiivvee--rreeggiioonn variable turns + this on and off. Several commands set the region to active; those 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 accumulate the deleted text 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. + 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 accumulate the deleted text 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 - RReeaaddlliinnee is customized by putting commands in an initialization file - (the _i_n_p_u_t_r_c file). The name of this file is taken from the value of - the IINNPPUUTTRRCC shell variable. If that variable is unset, the default is - _~_/_._i_n_p_u_t_r_c. If that file does not exist or cannot be read, rreeaaddlliinnee - looks for _/_e_t_c_/_i_n_p_u_t_r_c. When a program that uses the rreeaaddlliinnee library - starts up, rreeaaddlliinnee reads the initialization file and sets the key - bindings and variables found there, before reading any user input. + RReeaaddlliinnee is customized by putting commands in an initialization file (the + _i_n_p_u_t_r_c file). The name of this file is taken from the value of the + IINNPPUUTTRRCC shell variable. If that variable is unset, the default is + _~_/_._i_n_p_u_t_r_c. If that file does not exist or cannot be read, rreeaaddlliinnee looks + for _/_e_t_c_/_i_n_p_u_t_r_c. When a program that uses the rreeaaddlliinnee library starts up, + rreeaaddlliinnee reads the initialization file and sets the key bindings and vari- + ables found there, before reading any user input. - There are only a few basic constructs allowed in the inputrc file. - Blank lines are ignored. Lines beginning with a ## are comments. Lines - beginning with a $$ indicate conditional constructs. Other lines denote - key bindings and variable settings. + There are only a few basic constructs allowed in the inputrc file. Blank + lines are ignored. Lines beginning with a ## are comments. Lines beginning + with a $$ indicate conditional constructs. Other lines denote key bindings + and variable settings. - The default key-bindings in this section may be changed using key bind- - ing commands in the _i_n_p_u_t_r_c file. Programs that use the rreeaaddlliinnee li- - brary, including bbaasshh, may add their own commands and bindings. + The default key-bindings in this section may be changed using key binding + commands in the _i_n_p_u_t_r_c file. Programs that use the rreeaaddlliinnee library, in- + cluding bbaasshh, may add their own commands and bindings. - For example, placing + For example, placing - M-Control-u: universal-argument - or - C-Meta-u: universal-argument + 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 rreeaaddlliinnee command _u_n_i_v_e_r_- - _s_a_l_-_a_r_g_u_m_e_n_t. + into the _i_n_p_u_t_r_c would make M-C-u execute the rreeaaddlliinnee command _u_n_i_v_e_r_- + _s_a_l_-_a_r_g_u_m_e_n_t. - Key bindings may contain the following symbolic character names: _D_E_L, - _E_S_C, _E_S_C_A_P_E, _L_F_D, _N_E_W_L_I_N_E, _R_E_T, _R_E_T_U_R_N, _R_U_B_O_U_T (a destructive back- - space), _S_P_A_C_E, _S_P_C, and _T_A_B. + Key bindings may contain the following symbolic character names: _D_E_L, _E_S_C, + _E_S_C_A_P_E, _L_F_D, _N_E_W_L_I_N_E, _R_E_T, _R_E_T_U_R_N, _R_U_B_O_U_T (a destructive backspace), _S_P_A_C_E, + _S_P_C, and _T_A_B. - In addition to command names, rreeaaddlliinnee allows keys to be bound to a - string that is inserted when the key is pressed (a _m_a_c_r_o). The differ- - ence between a macro and a command is that a macro is enclosed in sin- - gle or double quotes. + In addition to command names, rreeaaddlliinnee allows keys to be bound to a string + that is inserted when the key is pressed (a _m_a_c_r_o). The difference between + a macro and a command is that a macro is enclosed in single or double + quotes. 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 key sequence 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 composed of one or - more characters enclosed in double quotes. The key sequence and name - are separated by a colon. There can be no whitespace between the name - and the colon. + 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 key sequence may be speci- + fied 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 composed of one or more characters + enclosed in double quotes. The key sequence and name are separated by a + colon. There can be no whitespace between the name and the colon. - 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: + 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" + Control-u: universal-argument + Meta-Rubout: backward-kill-word + Control-o: "> output" - In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt, - _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to - run the macro expressed on the right hand side (that is, to insert the - text "> output" into the line). + In the above example, _C_-_u is bound to the function uunniivveerrssaall--aarrgguummeenntt, + _M_-_D_E_L is bound to the function bbaacckkwwaarrdd--kkiillll--wwoorrdd, and _C_-_o is bound to run + the macro expressed on the right hand side (that is, to insert the text "> + output" into the line). - In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq 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, but - none of the symbolic character names are recognized. + In the second form, ""kkeeyysseeqq"":_f_u_n_c_t_i_o_n_-_n_a_m_e or _m_a_c_r_o, kkeeyysseeqq differs from + kkeeyynnaammee above in that strings denoting an entire key sequence may be speci- + fied by placing the sequence within double quotes. Some GNU Emacs style + key escapes can be used, as in the following example, but none of the sym- + bolic character names are recognized. - "\C-u": universal-argument - "\C-x\C-r": re-read-init-file - "\e[11~": "Function Key 1" + "\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 uunniivveerrssaall--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 text "Function Key 1". + In this example, _C_-_u is again bound to the function uunniivveerrssaall--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 text "Function Key 1". - The full set of GNU Emacs style escape sequences available when speci- - fying key sequences is - \\CC-- A control prefix. - \\MM-- Adding the meta prefix or converting the following char- - acter to a meta character, as described below under - ffoorrccee--mmeettaa--pprreeffiixx. - \\ee An escape character. - \\\\ Backslash. - \\"" Literal ", a double quote. - \\'' Literal ', a single quote. + The full set of GNU Emacs style escape sequences available when specifying + key sequences is + \\CC-- A control prefix. + \\MM-- Adding the meta prefix or converting the following character + to a meta character, as described below under ffoorrccee--mmeettaa--pprree-- + ffiixx. + \\ee An escape character. + \\\\ Backslash. + \\"" Literal ", a double quote. + \\'' Literal ', a single quote. - 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 eight-bit character whose value is the octal value - _n_n_n (one to three digits). - \\xx_H_H The eight-bit character whose value is the hexadecimal - value _H_H (one or two hex digits). + In addition to the GNU Emacs style escape sequences, a second set of back- + slash 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 eight-bit character whose value is the octal value _n_n_n + (one to three digits). + \\xx_H_H The eight-bit character whose value is the hexadecimal value + _H_H (one or two hex digits). - When entering the text of a macro, single or double quotes must be used - to indicate a macro definition. Unquoted text is assumed to be a func- - tion name. The backslash escapes described above are expanded in the - macro body. Backslash quotes any other character in the macro text, - including " and '. + 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. The backslash escapes described above are expanded in the macro + body. Backslash quotes any other character in the macro text, including " + and '. - BBaasshh will display or modify the current rreeaaddlliinnee key bindings with the - bbiinndd builtin command. The --oo eemmaaccss or --oo vvii options to the sseett builtin - (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) change the editing mode during in- - teractive use. + BBaasshh will display or modify the current rreeaaddlliinnee key bindings with the bbiinndd + builtin command. The --oo eemmaaccss or --oo vvii options to the sseett builtin (see + SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) change the editing mode during interactive + use. RReeaaddlliinnee VVaarriiaabblleess - RReeaaddlliinnee has variables that can be used to further customize its behav- - ior. A variable may be set in the _i_n_p_u_t_r_c file with a statement of the - form + RReeaaddlliinnee has variables that can be used to further customize 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 + sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e - or using the bbiinndd builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + or using the bbiinndd builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - Except where noted, rreeaaddlliinnee variables can take the values OOnn or OOffff - (without regard to case). Unrecognized variable names are ignored. - When rreeaaddlliinnee reads a variable value, empty or null values, "on" (case- - insensitive), and "1" are equivalent to OOnn. All other values are - equivalent to OOffff. + Except where noted, rreeaaddlliinnee variables can take the values OOnn or OOffff (with- + out regard to case). Unrecognized variable names are ignored. When rreeaadd-- + lliinnee reads a variable value, empty or null values, "on" (case-insensitive), + and "1" are equivalent to OOnn. All other values are equivalent to OOffff. - The bbiinndd --VV command lists the current rreeaaddlliinnee variable names and val- - ues (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). + The bbiinndd --VV command lists the current rreeaaddlliinnee variable names and values + (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - The variables and their default values are: + The variables and their default values are: - aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr - A string variable that controls the text color and background - when displaying the text in the active region (see the descrip- - tion of eennaabbllee--aaccttiivvee--rreeggiioonn below). This string must not take - up any physical character positions on the display, so it should - consist only of terminal escape sequences. It is output to the - terminal before displaying the text in the active region. This - variable is reset to the default value whenever the terminal - type changes. The default value is the string that puts the - terminal in standout mode, as obtained from the terminal's ter- - minfo description. A sample value might be "\e[01;33m". - aaccttiivvee--rreeggiioonn--eenndd--ccoolloorr - A string variable that "undoes" the effects of aaccttiivvee--rree-- - ggiioonn--ssttaarrtt--ccoolloorr and restores "normal" terminal display appear- - ance after displaying text in the active region. This string - must not take up any physical character positions on the dis- - play, so it should consist only of terminal escape sequences. - It is output to the terminal after displaying the text in the - active region. This variable is reset to the default value - whenever the terminal type changes. The default value is the - string that restores the terminal from standout mode, as ob- - tained from the terminal's terminfo description. A sample value - might be "\e[0m". - bbeellll--ssttyyllee ((aauuddiibbllee)) - Controls what happens when rreeaaddlliinnee wants to ring the terminal - bell. If set to nnoonnee, rreeaaddlliinnee never rings the bell. If set to - vviissiibbllee, rreeaaddlliinnee uses a visible bell if one is available. If - set to aauuddiibbllee, rreeaaddlliinnee attempts to ring the terminal's bell. - bbiinndd--ttttyy--ssppeecciiaall--cchhaarrss ((OOnn)) - If set to OOnn, rreeaaddlliinnee attempts to bind the control characters - that are treated specially by the kernel's terminal driver to - their rreeaaddlliinnee equivalents. These override the default rreeaaddlliinnee - bindings described here. Type "stty -a" at a bbaasshh prompt to see - your current terminal settings, including the special control - characters (usually cccchhaarrss). This binding takes place on each - call to rreeaaddlliinnee, so changes made by "stty" can take effect. - bblliinnkk--mmaattcchhiinngg--ppaarreenn ((OOffff)) - If set to OOnn, rreeaaddlliinnee attempts to briefly move the cursor to an - opening parenthesis when a closing parenthesis is inserted. - ccoolloorreedd--ccoommpplleettiioonn--pprreeffiixx ((OOffff)) - If set to OOnn, when listing completions, rreeaaddlliinnee displays the - common prefix of the set of possible completions using a differ- - ent color. The color definitions are taken from the value of - the LLSS__CCOOLLOORRSS environment variable. If there is a color defini- - tion in $$LLSS__CCOOLLOORRSS for the custom suffix ".readline-colored-com- - pletion-prefix", rreeaaddlliinnee uses this color for the common prefix - instead of its default. - ccoolloorreedd--ssttaattss ((OOffff)) - If set to OOnn, rreeaaddlliinnee displays possible completions using dif- - ferent colors to indicate their file type. The color defini- - tions are taken from the value of the LLSS__CCOOLLOORRSS environment - variable. - ccoommmmeenntt--bbeeggiinn (("##")) - The string that the rreeaaddlliinnee iinnsseerrtt--ccoommmmeenntt command inserts. - This command is bound to MM--## in emacs mode and to ## in vi com- - mand mode. - ccoommpplleettiioonn--ddiissppllaayy--wwiiddtthh ((--11)) - The number of screen columns used to display possible matches - when performing completion. The value is ignored if it is less - than 0 or greater than the terminal screen width. A value of 0 - causes matches to be displayed one per line. The default value - is -1. - ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff)) - If set to OOnn, rreeaaddlliinnee performs filename matching and completion - in a case-insensitive fashion. - ccoommpplleettiioonn--mmaapp--ccaassee ((OOffff)) - If set to OOnn, and ccoommpplleettiioonn--iiggnnoorree--ccaassee is enabled, rreeaaddlliinnee - treats hyphens (_-) and underscores (__) as equivalent when per- - forming case-insensitive filename matching and completion. - ccoommpplleettiioonn--pprreeffiixx--ddiissppllaayy--lleennggtthh ((00)) - The maximum length in characters of the common prefix of a list - of possible completions that is displayed without modification. - When set to a value greater than zero, rreeaaddlliinnee replaces common - prefixes longer than this value with an ellipsis when displaying - possible completions. If a completion begins with a period, and - eeaaddlliinnee is completing filenames, it uses three underscores in- - stead of an ellipsis. - ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000)) - This determines when the user is queried about viewing the num- - ber of possible completions generated by the ppoossssiibbllee--ccoommppllee-- - ttiioonnss 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 variable, rreeaaddlliinnee - asks whether or not the user wishes to view them; otherwise - rreeaaddlliinnee simply lists them on the terminal. A zero value means - rreeaaddlliinnee should never ask; negative values are treated as zero. - ccoonnvveerrtt--mmeettaa ((OOnn)) - If set to OOnn, rreeaaddlliinnee converts characters it reads that have - the eighth bit set to an ASCII key sequence by clearing the - eighth bit and prefixing it with an escape character (converting - the character to have the meta prefix). The default is _O_n, but - rreeaaddlliinnee sets it to _O_f_f if the locale contains characters whose - encodings may include bytes with the eighth bit set. This vari- - able is dependent on the LLCC__CCTTYYPPEE locale category, and may - change if the locale changes. This variable also affects key - bindings; see the description of ffoorrccee--mmeettaa--pprreeffiixx below. - ddiissaabbllee--ccoommpplleettiioonn ((OOffff)) - If set to OOnn, rreeaaddlliinnee inhibits word completion. Completion - characters are inserted into the line as if they had been mapped - to sseellff--iinnsseerrtt. - eecchhoo--ccoonnttrrooll--cchhaarraacctteerrss ((OOnn)) - When set to OOnn, on operating systems that indicate they support - it, rreeaaddlliinnee echoes a character corresponding to a signal gener- - ated from the keyboard. - eeddiittiinngg--mmooddee ((eemmaaccss)) - Controls whether rreeaaddlliinnee uses 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. - eemmaaccss--mmooddee--ssttrriinngg ((@@)) - If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is - displayed immediately before the last line of the primary prompt - when emacs editing mode is active. The value is expanded like a - key binding, so the standard set of meta- and control- prefixes - and backslash escape sequences is available. The \1 and \2 es- - capes begin and end sequences of non-printing characters, which - can be used to embed a terminal control sequence into the mode - string. - eennaabbllee--aaccttiivvee--rreeggiioonn ((OOnn)) - When this variable is set to _O_n, rreeaaddlliinnee allows certain com- - mands to designate the region as _a_c_t_i_v_e. When the region is ac- - tive, rreeaaddlliinnee highlights the text in the region using the value - of the aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr variable, which defaults to the - string that enables the terminal's standout mode. The active - region shows the text inserted by bracketed-paste and any match- - ing text found by incremental and non-incremental history - searches. - eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOnn)) - When set to OOnn, rreeaaddlliinnee configures the terminal to insert each - paste into the editing buffer as a single string of characters, - instead of treating each character as if it had been read from - the keyboard. This is called _b_r_a_c_k_e_t_e_d_-_p_a_s_t_e _m_o_d_e; it prevents - rreeaaddlliinnee from executing any editing commands bound to key se- - quences appearing in the pasted text. - eennaabbllee--kkeeyyppaadd ((OOffff)) - When set to OOnn, rreeaaddlliinnee tries to enable the application keypad - when it is called. Some systems need this to enable the arrow - keys. - eennaabbllee--mmeettaa--kkeeyy ((OOnn)) - When set to OOnn, rreeaaddlliinnee tries to enable any meta modifier key - the terminal claims to support. On many terminals, the Meta key - is used to send eight-bit characters; this variable checks for - the terminal capability that indicates the terminal can enable - and disable a mode that sets the eighth bit of a character - (0200) if the Meta key is held down when the character is typed - (a meta character). - eexxppaanndd--ttiillddee ((OOffff)) - If set to OOnn, rreeaaddlliinnee performs tilde expansion when it attempts - word completion. - ffoorrccee--mmeettaa--pprreeffiixx ((OOffff)) - If set to OOnn, rreeaaddlliinnee modifies its behavior when binding key - sequences containing \M- or Meta- (see KKeeyy BBiinnddiinnggss above) by - converting a key sequence of the form \M-_C or Meta-_C to the two- - character sequence EESSCC _C (adding the meta prefix). If - ffoorrccee--mmeettaa--pprreeffiixx is set to OOffff (the default), rreeaaddlliinnee uses the - value of the ccoonnvveerrtt--mmeettaa variable to determine whether to per- - form this conversion: if ccoonnvveerrtt--mmeettaa is OOnn, rreeaaddlliinnee performs - the conversion described above; if it is OOffff, rreeaaddlliinnee converts - _C to a meta character by setting the eighth bit (0200). - hhiissttoorryy--pprreesseerrvvee--ppooiinntt ((OOffff)) - If set to OOnn, the history code attempts to place point at the - same location on each history line retrieved with pprreevviioouuss--hhiiss-- - ttoorryy or nneexxtt--hhiissttoorryy. - hhiissttoorryy--ssiizzee ((uunnsseett)) - Set the maximum number of history entries saved in the history - list. If set to zero, any existing history entries are deleted - and no new entries are saved. If set to a value less than zero, - the number of history entries is not limited. By default, bbaasshh - sets the maximum number of history entries to the value of the - HHIISSTTSSIIZZEE shell variable. Setting _h_i_s_t_o_r_y_-_s_i_z_e to a non-numeric - value will set the maximum number of history entries to 500. - hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff)) - Setting this variable to OOnn makes rreeaaddlliinnee 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. This setting is automatically enabled - for terminals of height 1. - iinnppuutt--mmeettaa ((OOffff)) - If set to OOnn, rreeaaddlliinnee enables eight-bit input (that is, it does - not clear the eighth bit in the characters it reads), regardless - of what the terminal claims it can support. The default is _O_f_f, - but rreeaaddlliinnee sets it to _O_n if the locale contains characters - whose encodings may include bytes with the eighth bit set. This - variable is dependent on the LLCC__CCTTYYPPEE locale category, and its - value may change if the locale changes. The name mmeettaa--ffllaagg is a - synonym for iinnppuutt--mmeettaa. - iisseeaarrcchh--tteerrmmiinnaattoorrss (("CC--[[CC--jj")) - The string of characters that should terminate an incremental - search without subsequently executing the character as a com- - mand. If this variable has not been given a value, the charac- - ters _E_S_C and CC--jj terminate an incremental search. - kkeeyymmaapp ((eemmaaccss)) - Set the current rreeaaddlliinnee 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 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. - kkeeyysseeqq--ttiimmeeoouutt ((550000)) - Specifies the duration rreeaaddlliinnee will wait for a character when - reading an ambiguous key sequence (one that can form a complete - key sequence using the input read so far, or can take additional - input to complete a longer key sequence). If rreeaaddlliinnee does not - receive any input within the timeout, it uses the shorter but - complete key sequence. The value is specified in milliseconds, - so a value of 1000 means that rreeaaddlliinnee will wait one second for - additional input. If this variable is set to a value less than - or equal to zero, or to a non-numeric value, rreeaaddlliinnee waits un- - til another key is pressed to decide which key sequence to com- - plete. - mmaarrkk--ddiirreeccttoorriieess ((OOnn)) - If set to OOnn, completed directory names have a slash appended. - mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff)) - If set to OOnn, rreeaaddlliinnee displays history lines that have been - modified with a preceding asterisk (**). - mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff)) - If set to OOnn, completed names which are symbolic links to direc- - tories have a slash appended, subject to the value of mmaarrkk--ddii-- - rreeccttoorriieess. - mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn)) - This variable, when set to OOnn, forces rreeaaddlliinnee to match files - whose names begin with a "." (hidden files) when performing - filename completion. If set to OOffff, the user must include the - leading "." in the filename to be completed. - mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff)) - If set to OOnn, menu completion displays the common prefix of the - list of possible completions (which may be empty) before cycling - through the list. - oouuttppuutt--mmeettaa ((OOffff)) - If set to OOnn, rreeaaddlliinnee displays characters with the eighth bit - set directly rather than as a meta-prefixed escape sequence. - The default is _O_f_f, but rreeaaddlliinnee sets it to _O_n if the locale - contains characters whose encodings may include bytes with the - eighth bit set. This variable is dependent on the LLCC__CCTTYYPPEE lo- - cale category, and its value may change if the locale changes. - ppaaggee--ccoommpplleettiioonnss ((OOnn)) - If set to OOnn, rreeaaddlliinnee uses an internal pager resembling _m_o_r_e(1) - to display a screenful of possible completions at a time. - pprreeffeerr--vviissiibbllee--bbeellll - See bbeellll--ssttyyllee. - pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff)) - If set to OOnn, rreeaaddlliinnee displays completions with matches sorted - horizontally in alphabetical order, rather than down the screen. - rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff)) - If set to OOnn, rreeaaddlliinnee will undo all changes to history lines - before returning when executing aacccceepptt--lliinnee. By default, his- - tory lines may be modified and retain individual undo lists - across calls to rreeaaddlliinnee. - sseeaarrcchh--iiggnnoorree--ccaassee ((OOffff)) - If set to OOnn, rreeaaddlliinnee performs incremental and non-incremental - history list searches in a case-insensitive fashion. - 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. - sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff)) - This alters the default behavior of the completion functions in - a fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to OOnn, words - which have more than one possible completion without any possi- - ble partial completion (the possible completions don't share a - common prefix) cause the matches to be listed immediately in- - stead of ringing the bell. - sshhooww--mmooddee--iinn--pprroommpptt ((OOffff)) - If set to OOnn, add a string to the beginning of the prompt indi- - cating the editing mode: emacs, vi command, or vi insertion. - The mode strings are user-settable (e.g., _e_m_a_c_s_-_m_o_d_e_-_s_t_r_i_n_g). - sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff)) - If set to OOnn, this alters the default completion behavior when - inserting a single match into the line. It's only active when - performing completion in the middle of a word. If enabled, - rreeaaddlliinnee does not insert characters from the completion that - match characters after point in the word being completed, so - portions of the word following the cursor are not duplicated. - vvii--ccmmdd--mmooddee--ssttrriinngg ((((ccmmdd)))) - If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is - displayed immediately before the last line of the primary prompt - when vi editing mode is active and in command mode. The value - is expanded like a key binding, so the standard set of meta- and - control- prefixes and backslash escape sequences is available. - The \1 and \2 escapes begin and end sequences of non-printing - characters, which can be used to embed a terminal control se- - quence into the mode string. - vvii--iinnss--mmooddee--ssttrriinngg ((((iinnss)))) - If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is - displayed immediately before the last line of the primary prompt - when vi editing mode is active and in insertion mode. The value - is expanded like a key binding, so the standard set of meta- and - control- prefixes and backslash escape sequences is available. - The \1 and \2 escapes begin and end sequences of non-printing - characters, which can be used to embed a terminal control se- - quence into the mode string. - 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 com- - pletions. + aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr + A string variable that controls the text color and background when + displaying the text in the active region (see the description of eenn-- + aabbllee--aaccttiivvee--rreeggiioonn below). This string must not take up any physi- + cal character positions on the display, so it should consist only of + terminal escape sequences. It is output to the terminal before dis- + playing the text in the active region. This variable is reset to + the default value whenever the terminal type changes. The default + value is the string that puts the terminal in standout mode, as ob- + tained from the terminal's terminfo description. A sample value + might be "\e[01;33m". + aaccttiivvee--rreeggiioonn--eenndd--ccoolloorr + A string variable that "undoes" the effects of aaccttiivvee--rree-- + ggiioonn--ssttaarrtt--ccoolloorr and restores "normal" terminal display appearance + after displaying text in the active region. This string must not + take up any physical character positions on the display, so it + should consist only of terminal escape sequences. It is output to + the terminal after displaying the text in the active region. This + variable is reset to the default value whenever the terminal type + changes. The default value is the string that restores the terminal + from standout mode, as obtained from the terminal's terminfo de- + scription. A sample value might be "\e[0m". + bbeellll--ssttyyllee ((aauuddiibbllee)) + Controls what happens when rreeaaddlliinnee wants to ring the terminal bell. + If set to nnoonnee, rreeaaddlliinnee never rings the bell. If set to vviissiibbllee, + rreeaaddlliinnee uses a visible bell if one is available. If set to aauuddii-- + bbllee, rreeaaddlliinnee attempts to ring the terminal's bell. + bbiinndd--ttttyy--ssppeecciiaall--cchhaarrss ((OOnn)) + If set to OOnn, rreeaaddlliinnee attempts to bind the control characters that + are treated specially by the kernel's terminal driver to their rreeaadd-- + lliinnee equivalents. These override the default rreeaaddlliinnee bindings de- + scribed here. Type "stty -a" at a bbaasshh prompt to see your current + terminal settings, including the special control characters (usually + cccchhaarrss). This binding takes place on each call to rreeaaddlliinnee, so + changes made by "stty" can take effect. + bblliinnkk--mmaattcchhiinngg--ppaarreenn ((OOffff)) + If set to OOnn, rreeaaddlliinnee attempts to briefly move the cursor to an + opening parenthesis when a closing parenthesis is inserted. + ccoolloorreedd--ccoommpplleettiioonn--pprreeffiixx ((OOffff)) + If set to OOnn, when listing completions, rreeaaddlliinnee displays the common + prefix of the set of possible completions using a different color. + The color definitions are taken from the value of the LLSS__CCOOLLOORRSS en- + vironment variable. If there is a color definition in $$LLSS__CCOOLLOORRSS + for the custom suffix ".readline-colored-completion-prefix", rreeaadd-- + lliinnee uses this color for the common prefix instead of its default. + ccoolloorreedd--ssttaattss ((OOffff)) + If set to OOnn, rreeaaddlliinnee displays possible completions using different + colors to indicate their file type. The color definitions are taken + from the value of the LLSS__CCOOLLOORRSS environment variable. + ccoommmmeenntt--bbeeggiinn (("##")) + The string that the rreeaaddlliinnee iinnsseerrtt--ccoommmmeenntt command inserts. This + command is bound to MM--## in emacs mode and to ## in vi command mode. + ccoommpplleettiioonn--ddiissppllaayy--wwiiddtthh ((--11)) + The number of screen columns used to display possible matches when + performing completion. The value is ignored if it is less than 0 or + greater than the terminal screen width. A value of 0 causes matches + to be displayed one per line. The default value is -1. + ccoommpplleettiioonn--iiggnnoorree--ccaassee ((OOffff)) + If set to OOnn, rreeaaddlliinnee performs filename matching and completion in + a case-insensitive fashion. + ccoommpplleettiioonn--mmaapp--ccaassee ((OOffff)) + If set to OOnn, and ccoommpplleettiioonn--iiggnnoorree--ccaassee is enabled, rreeaaddlliinnee treats + hyphens (_-) and underscores (__) as equivalent when performing + case-insensitive filename matching and completion. + ccoommpplleettiioonn--pprreeffiixx--ddiissppllaayy--lleennggtthh ((00)) + The maximum length in characters of the common prefix of a list of + possible completions that is displayed without modification. When + set to a value greater than zero, rreeaaddlliinnee replaces common prefixes + longer than this value with an ellipsis when displaying possible + completions. If a completion begins with a period, and eeaaddlliinnee is + completing filenames, it uses three underscores instead of an ellip- + sis. + ccoommpplleettiioonn--qquueerryy--iitteemmss ((110000)) + This determines when the user is queried about viewing the number of + possible completions generated 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 variable, rreeaaddlliinnee asks whether or not the user + wishes to view them; otherwise rreeaaddlliinnee simply lists them on the + terminal. A zero value means rreeaaddlliinnee should never ask; negative + values are treated as zero. + ccoonnvveerrtt--mmeettaa ((OOnn)) + If set to OOnn, rreeaaddlliinnee converts characters it reads that have the + eighth bit set to an ASCII key sequence by clearing the eighth bit + and prefixing it with an escape character (converting the character + to have the meta prefix). The default is _O_n, but rreeaaddlliinnee sets it + to _O_f_f if the locale contains characters whose encodings may include + bytes with the eighth bit set. This variable is dependent on the + LLCC__CCTTYYPPEE locale category, and may change if the locale changes. + This variable also affects key bindings; see the description of + ffoorrccee--mmeettaa--pprreeffiixx below. + ddiissaabbllee--ccoommpplleettiioonn ((OOffff)) + If set to OOnn, rreeaaddlliinnee inhibits word completion. Completion charac- + ters are inserted into the line as if they had been mapped to sseellff-- + iinnsseerrtt. + eecchhoo--ccoonnttrrooll--cchhaarraacctteerrss ((OOnn)) + When set to OOnn, on operating systems that indicate they support it, + rreeaaddlliinnee echoes a character corresponding to a signal generated from + the keyboard. + eeddiittiinngg--mmooddee ((eemmaaccss)) + Controls whether rreeaaddlliinnee uses 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. + eemmaaccss--mmooddee--ssttrriinngg ((@@)) + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is dis- + played immediately before the last line of the primary prompt when + emacs editing mode is active. The value is expanded like a key + binding, so the standard set of meta- and control- prefixes and + backslash escape sequences is available. The \1 and \2 escapes be- + gin and end sequences of non-printing characters, which can be used + to embed a terminal control sequence into the mode string. + eennaabbllee--aaccttiivvee--rreeggiioonn ((OOnn)) + When this variable is set to _O_n, rreeaaddlliinnee allows certain commands to + designate the region as _a_c_t_i_v_e. When the region is active, rreeaaddlliinnee + highlights the text in the region using the value of the aaccttiivvee--rree-- + ggiioonn--ssttaarrtt--ccoolloorr variable, which defaults to the string that enables + the terminal's standout mode. The active region shows the text in- + serted by bracketed-paste and any matching text found by incremental + and non-incremental history searches. + eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOnn)) + When set to OOnn, rreeaaddlliinnee configures the terminal to insert each + paste into the editing buffer as a single string of characters, in- + stead of treating each character as if it had been read from the + keyboard. This is called _b_r_a_c_k_e_t_e_d_-_p_a_s_t_e _m_o_d_e; it prevents rreeaaddlliinnee + from executing any editing commands bound to key sequences appearing + in the pasted text. + eennaabbllee--kkeeyyppaadd ((OOffff)) + When set to OOnn, rreeaaddlliinnee tries to enable the application keypad + when it is called. Some systems need this to enable the arrow keys. + eennaabbllee--mmeettaa--kkeeyy ((OOnn)) + When set to OOnn, rreeaaddlliinnee tries to enable any meta modifier key the + terminal claims to support. On many terminals, the Meta key is used + to send eight-bit characters; this variable checks for the terminal + capability that indicates the terminal can enable and disable a mode + that sets the eighth bit of a character (0200) if the Meta key is + held down when the character is typed (a meta character). + eexxppaanndd--ttiillddee ((OOffff)) + If set to OOnn, rreeaaddlliinnee performs tilde expansion when it attempts + word completion. + ffoorrccee--mmeettaa--pprreeffiixx ((OOffff)) + If set to OOnn, rreeaaddlliinnee modifies its behavior when binding key se- + quences containing \M- or Meta- (see KKeeyy BBiinnddiinnggss above) by convert- + ing a key sequence of the form \M-_C or Meta-_C to the two-character + sequence EESSCC _C (adding the meta prefix). If ffoorrccee--mmeettaa--pprreeffiixx is + set to OOffff (the default), rreeaaddlliinnee uses the value of the ccoonn-- + vveerrtt--mmeettaa variable to determine whether to perform this conversion: + if ccoonnvveerrtt--mmeettaa is OOnn, rreeaaddlliinnee performs the conversion described + above; if it is OOffff, rreeaaddlliinnee converts _C to a meta character by set- + ting the eighth bit (0200). + hhiissttoorryy--pprreesseerrvvee--ppooiinntt ((OOffff)) + If set to OOnn, the history code attempts to place point at the same + location on each history line retrieved with pprreevviioouuss--hhiissttoorryy or + nneexxtt--hhiissttoorryy. + hhiissttoorryy--ssiizzee ((uunnsseett)) + Set the maximum number of history entries saved in the history list. + If set to zero, any existing history entries are deleted and no new + entries are saved. If set to a value less than zero, the number of + history entries is not limited. By default, bbaasshh sets the maximum + number of history entries to the value of the HHIISSTTSSIIZZEE shell vari- + able. Setting _h_i_s_t_o_r_y_-_s_i_z_e to a non-numeric value will set the max- + imum number of history entries to 500. + hhoorriizzoonnttaall--ssccrroollll--mmooddee ((OOffff)) + Setting this variable to OOnn makes rreeaaddlliinnee 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. This setting is automatically enabled for terminals of + height 1. + iinnppuutt--mmeettaa ((OOffff)) + If set to OOnn, rreeaaddlliinnee enables eight-bit input (that is, it does not + clear the eighth bit in the characters it reads), regardless of what + the terminal claims it can support. The default is _O_f_f, but rreeaadd-- + lliinnee sets it to _O_n if the locale contains characters whose encodings + may include bytes with the eighth bit set. This variable is depen- + dent on the LLCC__CCTTYYPPEE locale category, and its value may change if + the locale changes. The name mmeettaa--ffllaagg is a synonym for iinnppuutt--mmeettaa. + iisseeaarrcchh--tteerrmmiinnaattoorrss (("CC--[[CC--jj")) + The string of characters that should terminate an incremental search + without subsequently executing the character as a command. If this + variable has not been given a value, the characters _E_S_C and CC--jj ter- + minate an incremental search. + kkeeyymmaapp ((eemmaaccss)) + Set the current rreeaaddlliinnee 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 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 eeddiitt-- + iinngg--mmooddee also affects the default keymap. + kkeeyysseeqq--ttiimmeeoouutt ((550000)) + Specifies the duration rreeaaddlliinnee will wait for a character when read- + ing an ambiguous key sequence (one that can form a complete key se- + quence using the input read so far, or can take additional input to + complete a longer key sequence). If rreeaaddlliinnee does not receive any + input within the timeout, it uses the shorter but complete key se- + quence. The value is specified in milliseconds, so a value of 1000 + means that rreeaaddlliinnee will wait one second for additional input. If + this variable is set to a value less than or equal to zero, or to a + non-numeric value, rreeaaddlliinnee waits until another key is pressed to + decide which key sequence to complete. + mmaarrkk--ddiirreeccttoorriieess ((OOnn)) + If set to OOnn, completed directory names have a slash appended. + mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff)) + If set to OOnn, rreeaaddlliinnee displays history lines that have been modi- + fied with a preceding asterisk (**). + mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff)) + If set to OOnn, completed names which are symbolic links to directo- + ries have a slash appended, subject to the value of mmaarrkk--ddiirreeccttoo-- + rriieess. + mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn)) + This variable, when set to OOnn, forces rreeaaddlliinnee to match files whose + names begin with a "." (hidden files) when performing filename com- + pletion. If set to OOffff, the user must include the leading "." in + the filename to be completed. + mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff)) + If set to OOnn, menu completion displays the common prefix of the list + of possible completions (which may be empty) before cycling through + the list. + oouuttppuutt--mmeettaa ((OOffff)) + If set to OOnn, rreeaaddlliinnee displays characters with the eighth bit set + directly rather than as a meta-prefixed escape sequence. The de- + fault is _O_f_f, but rreeaaddlliinnee sets it to _O_n if the locale contains + characters whose encodings may include bytes with the eighth bit + set. This variable is dependent on the LLCC__CCTTYYPPEE locale category, + and its value may change if the locale changes. + ppaaggee--ccoommpplleettiioonnss ((OOnn)) + If set to OOnn, rreeaaddlliinnee uses an internal pager resembling _m_o_r_e(1) to + display a screenful of possible completions at a time. + pprreeffeerr--vviissiibbllee--bbeellll + See bbeellll--ssttyyllee. + pprriinntt--ccoommpplleettiioonnss--hhoorriizzoonnttaallllyy ((OOffff)) + If set to OOnn, rreeaaddlliinnee displays completions with matches sorted hor- + izontally in alphabetical order, rather than down the screen. + rreevveerrtt--aallll--aatt--nneewwlliinnee ((OOffff)) + If set to OOnn, rreeaaddlliinnee will undo all changes to history lines before + returning when executing aacccceepptt--lliinnee. By default, history lines may + be modified and retain individual undo lists across calls to rreeaadd-- + lliinnee. + sseeaarrcchh--iiggnnoorree--ccaassee ((OOffff)) + If set to OOnn, rreeaaddlliinnee performs incremental and non-incremental his- + tory list searches in a case-insensitive fashion. + 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. + sshhooww--aallll--iiff--uunnmmooddiiffiieedd ((OOffff)) + This alters the default behavior of the completion functions in a + fashion similar to sshhooww--aallll--iiff--aammbbiigguuoouuss. If set to OOnn, words which + have more than one possible completion without any possible partial + completion (the possible completions don't share a common prefix) + cause the matches to be listed immediately instead of ringing the + bell. + sshhooww--mmooddee--iinn--pprroommpptt ((OOffff)) + If set to OOnn, add a string to the beginning of the prompt indicating + the editing mode: emacs, vi command, or vi insertion. The mode + strings are user-settable (e.g., _e_m_a_c_s_-_m_o_d_e_-_s_t_r_i_n_g). + sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff)) + If set to OOnn, this alters the default completion behavior when in- + serting a single match into the line. It's only active when per- + forming completion in the middle of a word. If enabled, rreeaaddlliinnee + does not insert characters from the completion that match characters + after point in the word being completed, so portions of the word + following the cursor are not duplicated. + vvii--ccmmdd--mmooddee--ssttrriinngg ((((ccmmdd)))) + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is dis- + played immediately before the last line of the primary prompt when + vi editing mode is active and in command mode. The value is ex- + panded like a key binding, so the standard set of meta- and control- + prefixes and backslash escape sequences is available. The \1 and \2 + escapes begin and end sequences of non-printing characters, which + can be used to embed a terminal control sequence into the mode + string. + vvii--iinnss--mmooddee--ssttrriinngg ((((iinnss)))) + If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is dis- + played immediately before the last line of the primary prompt when + vi editing mode is active and in insertion mode. The value is ex- + panded like a key binding, so the standard set of meta- and control- + prefixes and backslash escape sequences is available. The \1 and \2 + escapes begin and end sequences of non-printing characters, which + can be used to embed a terminal control sequence into the mode + string. + 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 comple- + tions. RReeaaddlliinnee CCoonnddiittiioonnaall CCoonnssttrruuccttss - RReeaaddlliinnee implements a facility similar in spirit to the conditional - compilation features of the C preprocessor which allows key bindings - and variable settings to be performed as the result of tests. There - are four parser directives available. + RReeaaddlliinnee implements a facility similar in spirit to the conditional compi- + lation features of the C preprocessor which allows key bindings and vari- + able settings to be performed as the result of tests. There are four + parser directives available. - $$iiff The $$iiff construct allows bindings to be made based on the edit- - ing mode, the terminal being used, or the application using - rreeaaddlliinnee. The text of the test, after any comparison operator, - extends to the end of the line; unless otherwise noted, no char- - acters are required to isolate it. + $$iiff The $$iiff construct allows bindings to be made based on the editing + mode, the terminal being used, or the application using rreeaaddlliinnee. + The text of the test, after any comparison operator, extends to the + end of the line; unless otherwise noted, no characters are required + to isolate it. - mmooddee The mmooddee== form of the $$iiff directive is used to test - whether rreeaaddlliinnee is in emacs or vi mode. This may be - used in conjunction with the sseett kkeeyymmaapp command, for in- - stance, 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 rreeaaddlliinnee is starting out in - emacs mode. + mmooddee The mmooddee== form of the $$iiff directive is used to test whether + rreeaaddlliinnee is in emacs or vi mode. This may be used in con- + junction 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 + rreeaaddlliinnee is starting out in emacs mode. - tteerrmm The tteerrmm== form may be used to include terminal-specific - key bindings, perhaps to bind the key sequences output by - the terminal's function keys. The word on the right side - of the == is tested against both the full name of the ter- - minal and the portion of the terminal name before the - first --. This allows _x_t_e_r_m to match both _x_t_e_r_m and - _x_t_e_r_m_-_2_5_6_c_o_l_o_r, for instance. + tteerrmm The tteerrmm== form may be used to include terminal-specific key + bindings, perhaps to bind the key sequences output by the + terminal's function keys. The word on the right side of the + == is tested against both the full name of the terminal and + the portion of the terminal name before the first --. This + allows _x_t_e_r_m to match both _x_t_e_r_m and _x_t_e_r_m_-_2_5_6_c_o_l_o_r, for in- + stance. - vveerrssiioonn - The vveerrssiioonn test may be used to perform comparisons - against specific rreeaaddlliinnee versions. The vveerrssiioonn expands - to the current rreeaaddlliinnee version. The set of comparison - operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>. - The version number supplied on the right side of the op- - erator consists of a major version number, an optional - decimal point, and an optional minor version (e.g., 77..11). - If the minor version is omitted, it defaults to 00. The - operator may be separated from the string vveerrssiioonn and - from the version number argument by whitespace. + vveerrssiioonn + The vveerrssiioonn test may be used to perform comparisons against + specific rreeaaddlliinnee versions. The vveerrssiioonn expands to the cur- + rent rreeaaddlliinnee version. The set of comparison operators in- + cludes ==, (and ====), !!==, <<==, >>==, <<, and >>. The version number + supplied on the right side of the operator consists of a ma- + jor version number, an optional decimal point, and an op- + tional minor version (e.g., 77..11). If the minor version is + omitted, it defaults to 00. The operator may be separated + from the string vveerrssiioonn and from the version number argument + by whitespace. - _a_p_p_l_i_c_a_t_i_o_n - The _a_p_p_l_i_c_a_t_i_o_n construct is used to include application- - specific settings. Each program using the rreeaaddlliinnee li- - brary 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 useful for a specific - program. For instance, the following command adds a key - sequence that quotes the current or previous word in - bbaasshh: + _a_p_p_l_i_c_a_t_i_o_n + The _a_p_p_l_i_c_a_t_i_o_n construct is used to include application-spe- + cific settings. Each program using the rreeaaddlliinnee 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 useful for a specific program. For instance, + the following command adds a key sequence that quotes the + current or previous word in bbaasshh: - $$iiff Bash - # Quote the current or previous word - "\C-xq": "\eb\"\ef\"" - $$eennddiiff + $$iiff Bash + # Quote the current or previous word + "\C-xq": "\eb\"\ef\"" + $$eennddiiff - _v_a_r_i_a_b_l_e - The _v_a_r_i_a_b_l_e construct provides simple equality tests for - rreeaaddlliinnee variables and values. The permitted comparison - operators are _=, _=_=, and _!_=. The variable name must be - separated from the comparison operator by whitespace; the - operator may be separated from the value on the right - hand side by whitespace. String and boolean variables - may be tested. Boolean variables must be tested against - the values _o_n and _o_f_f. + _v_a_r_i_a_b_l_e + The _v_a_r_i_a_b_l_e construct provides simple equality tests for + rreeaaddlliinnee variables and values. The permitted comparison op- + erators are _=, _=_=, and _!_=. The variable name must be sepa- + rated from the comparison operator by whitespace; the opera- + tor may be separated from the value on the right hand side by + whitespace. String and boolean variables may be tested. + Boolean variables must be tested against the values _o_n and + _o_f_f. - $$eellssee Commands in this branch of the $$iiff directive are executed if the - test fails. + $$eellssee Commands in this branch of the $$iiff directive are executed if the + test fails. - $$eennddiiff This command, as seen in the previous example, terminates an $$iiff - command. + $$eennddiiff + This command, as seen in the previous example, terminates an $$iiff + command. - $$iinncclluuddee - This directive takes a single filename as an argument and reads - commands and key bindings from that file. For example, the fol- - lowing directive would read _/_e_t_c_/_i_n_p_u_t_r_c: + $$iinncclluuddee + This directive takes a single filename as an argument and reads com- + mands and key 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 + $$iinncclluuddee _/_e_t_c_/_i_n_p_u_t_r_c SSeeaarrcchhiinngg - RReeaaddlliinnee provides commands for searching through the command 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. + RReeaaddlliinnee provides commands for searching through the command 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, rreeaadd-- - lliinnee 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. When using emacs editing - mode, type CC--rr to search backward in the history for a particular - string. Typing CC--ss searches forward through the history. The charac- - ters present in the value of the iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used - to terminate an incremental search. If that variable has not been as- - signed a value, _E_S_C and CC--jj terminate an incremental search. CC--gg - aborts an incremental search and restores the original line. When the - search is terminated, the history entry containing the search string - becomes the current line. + Incremental searches begin before the user has finished typing the search + string. As each character of the search string is typed, rreeaaddlliinnee displays + the next entry from the history matching the string typed so far. An in- + cremental search requires only as many characters as needed to find the de- + sired history entry. When using emacs editing mode, type CC--rr to search + backward in the history for a particular string. Typing CC--ss searches for- + ward through the history. The characters present in the value of the + iisseeaarrcchh--tteerrmmiinnaattoorrss variable are used to terminate an incremental search. + If that variable has not been assigned a value, _E_S_C and CC--jj terminate an + incremental search. CC--gg aborts an incremental search and restores 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 CC--rr or CC--ss as - appropriate. This searches backward or forward in the history for the - next entry matching the search string typed so far. Any other key se- - quence bound to a rreeaaddlliinnee command terminates the search and executes - that command. For instance, a newline terminates the search and ac- - cepts the line, thereby executing the command from the history list. A - movement command will terminate the search, make the last line found - the current line, and begin editing. + To find other matching entries in the history list, type CC--rr or CC--ss as ap- + propriate. This searches backward or forward in the history for the next + entry matching the search string typed so far. Any other key sequence + bound to a rreeaaddlliinnee command terminates the search and executes that com- + mand. For instance, a newline terminates the search and accepts the line, + thereby executing the command from the history list. A movement command + will terminate the search, make the last line found the current line, and + begin editing. - RReeaaddlliinnee remembers the last incremental search string. If two CC--rrs are - typed without any intervening characters defining a new search string, - rreeaaddlliinnee uses any remembered search string. + RReeaaddlliinnee remembers the last incremental search string. If two CC--rrs are + typed without any intervening characters defining a new search string, + rreeaaddlliinnee uses any remembered search string. - Non-incremental searches read the entire search string before starting - to search for matching history entries. The search string may be typed - by the user or be part of the contents of the current line. + Non-incremental searches read the entire search string before starting to + search for matching history entries. 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. Command names without an accom- - panying key sequence are unbound by default. + The following is a list of the names of the commands and the default key + sequences to which they are bound. Command names without an accompanying + key sequence are unbound by default. - In the following descriptions, _p_o_i_n_t refers to the current cursor posi- - tion, and _m_a_r_k refers to a cursor position saved by the sseett--mmaarrkk com- - mand. The text between the point and mark is referred to as the _r_e_- - _g_i_o_n. RReeaaddlliinnee has the concept of an _a_c_t_i_v_e _r_e_g_i_o_n: when the region is - active, rreeaaddlliinnee redisplay highlights the region using the value of the - aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr variable. The eennaabbllee--aaccttiivvee--rreeggiioonn rreeaaddlliinnee - variable turns this on and off. Several commands set the region to ac- - tive; those are noted below. + In the following descriptions, _p_o_i_n_t refers to the current cursor position, + and _m_a_r_k refers to a cursor position saved by the sseett--mmaarrkk command. The + text between the point and mark is referred to as the _r_e_g_i_o_n. RReeaaddlliinnee has + the concept of an _a_c_t_i_v_e _r_e_g_i_o_n: when the region is active, rreeaaddlliinnee redis- + play highlights the region using the value of the aaccttiivvee--rreeggiioonn--ssttaarrtt--ccoolloorr + variable. The eennaabbllee--aaccttiivvee--rreeggiioonn rreeaaddlliinnee variable turns this on and + off. Several commands set the region to active; those are noted below. CCoommmmaannddss ffoorr MMoovviinngg - bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa)) - Move to the start of the current line. This may also be bound - to the Home key on some keyboards. - eenndd--ooff--lliinnee ((CC--ee)) - Move to the end of the line. This may also be bound to the End - key on some keyboards. - ffoorrwwaarrdd--cchhaarr ((CC--ff)) - Move forward a character. This may also be bound to the right - arrow key on some keyboards. - bbaacckkwwaarrdd--cchhaarr ((CC--bb)) - Move back a character. This may also be bound to the left arrow - key on some keyboards. - 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 the current or previous word. Words - are composed of alphanumeric characters (letters and digits). - sshheellll--ffoorrwwaarrdd--wwoorrdd ((MM--CC--ff)) - Move forward to the end of the next word. Words are delimited - by non-quoted shell metacharacters. - sshheellll--bbaacckkwwaarrdd--wwoorrdd ((MM--CC--bb)) - Move back to the start of the current or previous word. Words - are delimited by non-quoted shell metacharacters. - pprreevviioouuss--ssccrreeeenn--lliinnee - Attempt to move point to the same physical screen column on the - previous physical screen line. This will not have the desired - effect if the current rreeaaddlliinnee line does not take up more than - one physical line or if point is not greater than the length of - the prompt plus the screen width. - nneexxtt--ssccrreeeenn--lliinnee - Attempt to move point to the same physical screen column on the - next physical screen line. This will not have the desired ef- - fect if the current rreeaaddlliinnee line does not take up more than one - physical line or if the length of the current rreeaaddlliinnee line is - not greater than the length of the prompt plus the screen width. - cclleeaarr--ddiissppllaayy ((MM--CC--ll)) - Clear the screen and, if possible, the terminal's scrollback - buffer, then redraw the current line, leaving the current line - at the top of the screen. - cclleeaarr--ssccrreeeenn ((CC--ll)) - Clear the screen, then redraw the current line, leaving the cur- - rent line at the top of the screen. With a numeric argument, - refresh the current line without clearing the screen. - rreeddrraaww--ccuurrrreenntt--lliinnee - Refresh the current line. + bbeeggiinnnniinngg--ooff--lliinnee ((CC--aa)) + Move to the start of the current line. This may also be bound to + the Home key on some keyboards. + eenndd--ooff--lliinnee ((CC--ee)) + Move to the end of the line. This may also be bound to the End key + on some keyboards. + ffoorrwwaarrdd--cchhaarr ((CC--ff)) + Move forward a character. This may also be bound to the right arrow + key on some keyboards. + bbaacckkwwaarrdd--cchhaarr ((CC--bb)) + Move back a character. This may also be bound to the left arrow key + on some keyboards. + ffoorrwwaarrdd--wwoorrdd ((MM--ff)) + Move forward to the end of the next word. Words are composed of al- + phanumeric characters (letters and digits). + bbaacckkwwaarrdd--wwoorrdd ((MM--bb)) + Move back to the start of the current or previous word. Words are + composed of alphanumeric characters (letters and digits). + sshheellll--ffoorrwwaarrdd--wwoorrdd ((MM--CC--ff)) + Move forward to the end of the next word. Words are delimited by + non-quoted shell metacharacters. + sshheellll--bbaacckkwwaarrdd--wwoorrdd ((MM--CC--bb)) + Move back to the start of the current or previous word. Words are + delimited by non-quoted shell metacharacters. + pprreevviioouuss--ssccrreeeenn--lliinnee + Attempt to move point to the same physical screen column on the pre- + vious physical screen line. This will not have the desired effect + if the current rreeaaddlliinnee line does not take up more than one physical + line or if point is not greater than the length of the prompt plus + the screen width. + nneexxtt--ssccrreeeenn--lliinnee + Attempt to move point to the same physical screen column on the next + physical screen line. This will not have the desired effect if the + current rreeaaddlliinnee line does not take up more than one physical line + or if the length of the current rreeaaddlliinnee line is not greater than + the length of the prompt plus the screen width. + cclleeaarr--ddiissppllaayy ((MM--CC--ll)) + Clear the screen and, if possible, the terminal's scrollback buffer, + then redraw the current line, leaving the current line at the top of + the screen. + cclleeaarr--ssccrreeeenn ((CC--ll)) + Clear the screen, then redraw the current line, leaving the current + line at the top of the screen. With a numeric 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 and HHIISSTTIIGGNNOORREE variables. If the line is a - modified history line, 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. This may also be bound to the up arrow key on some - keyboards. - nneexxtt--hhiissttoorryy ((CC--nn)) - Fetch the next command from the history list, moving forward in - the list. This may also be bound to the down arrow key on some - keyboards. - 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. - ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo)) - Accept the current line for execution as if a newline had been - entered, and fetch the next line relative to the current line - from the history for editing. A numeric argument, if supplied, - specifies the history entry to use instead of the current line. - ffeettcchh--hhiissttoorryy - With a numeric argument, fetch that entry from the history list - and make it the current line. Without an argument, move back to - the first entry in the history list. - 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. This command sets the region to the matched text and - activates the region. - 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. This command sets the region to the matched text and - activates the region. - 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. The search string may match anywhere in a history line. - nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn)) - Search forward through the history using a non-incremental - search for a string supplied by the user. The search string may - match anywhere in a history line. - hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd - Search backward through the history for the string of characters - between the start of the current line and the point. The search - string must match at the beginning of a history line. This is a - non-incremental search. This may be bound to the Page Up key on - some keyboards. - hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd - Search forward through the history for the string of characters - between the start of the current line and the point. The search - string must match at the beginning of a history line. This is a - non-incremental search. This may be bound to the Page Down key - on some keyboards. - hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--bbaacckkwwaarrdd - Search backward through the history for the string of characters - between the start of the current line and the point. The search - string may match anywhere in a history line. This is a non-in- - cremental search. - hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--ffoorrwwaarrdd - Search forward through the history for the string of characters - between the start of the current line and the point. The search - string may match anywhere in a history line. This is a non-in- - cremental 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. With an argument _n, - insert the _nth word from the previous command (the words in the - previous command begin with word 0). A negative argument in- - serts the _nth word from the end of the previous command. Once - the argument _n is computed, this uses the history expansion fa- - cilities to extract the _nth word, as if the "!_n" history expan- - sion had been specified. - yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__)) - Insert the last argument to the previous command (the last word - of the previous history entry). With a numeric argument, behave - exactly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg - move back through the history list, inserting the last word (or - the word specified by the argument to the first call) of each - line in turn. Any numeric argument supplied to these successive - calls determines the direction to move through the history. A - negative argument switches the direction through the history - (back or forward). This uses the history expansion facilities - to extract the last word, as if the "!$" history expansion had - been specified. - sshheellll--eexxppaanndd--lliinnee ((MM--CC--ee)) - Expand the line by performing shell word expansions, treating - the line as a single shell word. This performs alias and his- - tory expansion, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting, tilde expan- - sion, parameter and variable expansion, arithmetic expansion, - command and process substitution, word splitting, and quote re- - moval. An explicit argument suppresses command and process sub- - stitution. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of - history expansion. - sshheellll--eexxppaanndd--aanndd--rreeqquuoottee--lliinnee (()) - Expand the line by performing shell word expansions, splitting - the line into shell words in the same way as for programmable - completion. This performs alias and history expansion, - $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting, tilde expansion, parameter and - variable expansion, arithmetic expansion, command and process - substitution, word splitting, and quote removal on each word, - then quotes the resulting words if necessary to prevent further - expansion. An explicit argument suppresses command and process - substitution and quotes each resultant word. As usual, double- - quoting a word will suppress word splitting. This can be useful - when combined with suppressing command substitution, for in- - stance, so the words in the command substitution aren't quoted - individually. - hhiissttoorryy--eexxppaanndd--lliinnee ((MM--^^)) - Perform history expansion on the current line. See HHIISSTTOORRYY EEXX-- - PPAANNSSIIOONN below for a description of history 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. - eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xx CC--ee)) - Invoke an editor on the current command line, and execute the - result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, $$EEDD-- - IITTOORR, and _e_m_a_c_s as the editor, in that order. + 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 and HHIISSTTIIGGNNOORREE variables. If the line is a modified + history line, 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. This may also be bound to the up arrow key on some keyboards. + nneexxtt--hhiissttoorryy ((CC--nn)) + Fetch the next command from the history list, moving forward in the + list. This may also be bound to the down arrow key on some key- + boards. + 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. + ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo)) + Accept the current line for execution as if a newline had been en- + tered, and fetch the next line relative to the current line from the + history for editing. A numeric argument, if supplied, specifies the + history entry to use instead of the current line. + ffeettcchh--hhiissttoorryy + With a numeric argument, fetch that entry from the history list and + make it the current line. Without an argument, move back to the + first entry in the history list. + 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. This com- + mand sets the region to the matched text and activates the region. + 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. + This command sets the region to the matched text and activates the + region. + nnoonn--iinnccrreemmeennttaall--rreevveerrssee--sseeaarrcchh--hhiissttoorryy ((MM--pp)) + Search backward through the history starting at the current line us- + ing a non-incremental search for a string supplied by the user. The + search string may match anywhere in a history line. + nnoonn--iinnccrreemmeennttaall--ffoorrwwaarrdd--sseeaarrcchh--hhiissttoorryy ((MM--nn)) + Search forward through the history using a non-incremental search + for a string supplied by the user. The search string may match any- + where in a history line. + hhiissttoorryy--sseeaarrcchh--bbaacckkwwaarrdd + Search backward through the history for the string of characters be- + tween the start of the current line and the point. The search + string must match at the beginning of a history line. This is a + non-incremental search. This may be bound to the Page Up key on + some keyboards. + hhiissttoorryy--sseeaarrcchh--ffoorrwwaarrdd + Search forward through the history for the string of characters be- + tween the start of the current line and the point. The search + string must match at the beginning of a history line. This is a + non-incremental search. This may be bound to the Page Down key on + some keyboards. + hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--bbaacckkwwaarrdd + Search backward through the history for the string of characters be- + tween the start of the current line and the point. The search + string may match anywhere in a history line. This is a non-incre- + mental search. + hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--ffoorrwwaarrdd + Search forward through the history for the string of characters be- + tween the start of the current line and the point. The search + string may match anywhere in a history line. This is a non-incre- + mental search. + yyaannkk--nntthh--aarrgg ((MM--CC--yy)) + Insert the first argument to the previous command (usually the sec- + ond word on the previous line) at point. With an argument _n, insert + the _nth word from the previous command (the words in the previous + command begin with word 0). A negative argument inserts the _nth + word from the end of the previous command. Once the argument _n is + computed, this uses the history expansion facilities to extract the + _nth word, as if the "!!:_n" history expansion had been specified. + yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__)) + Insert the last argument to the previous command (the last word of + the previous history entry). With a numeric argument, behave ex- + actly like yyaannkk--nntthh--aarrgg. Successive calls to yyaannkk--llaasstt--aarrgg move + back through the history list, inserting the last word (or the word + specified by the argument to the first call) of each line in turn. + Any numeric argument supplied to these successive calls determines + the direction to move through the history. A negative argument + switches the direction through the history (back or forward). This + uses the history expansion facilities to extract the last word, as + if the "!$" history expansion had been specified. + sshheellll--eexxppaanndd--lliinnee ((MM--CC--ee)) + Expand the line by performing shell word expansions, treating the + line as a single shell word. This performs alias and history expan- + sion, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting, tilde expansion, parameter + and variable expansion, arithmetic expansion, command and process + substitution, word splitting, and quote removal. An explicit argu- + ment suppresses command and process substitution. See HHIISSTTOORRYY EEXX-- + PPAANNSSIIOONN below for a description of history expansion. + sshheellll--eexxppaanndd--aanndd--rreeqquuoottee--lliinnee (()) + Expand the line by performing shell word expansions, splitting the + line into shell words in the same way as for programmable comple- + tion. This performs alias and history expansion, $$'_s_t_r_i_n_g' and + $$"_s_t_r_i_n_g" quoting, tilde expansion, parameter and variable expan- + sion, arithmetic expansion, command and process substitution, word + splitting, and quote removal on each word, then quotes the resulting + words if necessary to prevent further expansion. An explicit argu- + ment suppresses command and process substitution and quotes each re- + sultant word. As usual, double-quoting a word will suppress word + splitting. This can be useful when combined with suppressing com- + mand substitution, for instance, so the words in the command substi- + tution aren't quoted individually. + hhiissttoorryy--eexxppaanndd--lliinnee ((MM--^^)) + Perform history expansion on the current line. See HHIISSTTOORRYY EEXXPPAANN-- + SSIIOONN below for a description of history 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. + eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xx CC--ee)) + Invoke an editor on the current command line, and execute the result + as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, $$EEDDIITTOORR, and + _e_m_a_c_s as the editor, in that order. CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt - _e_n_d_-_o_f_-_f_i_l_e ((uussuuaallllyy CC--dd)) - The character indicating end-of-file as set, for example, by - _s_t_t_y(1). If this character is read when there are no characters - on the line, and point is at the beginning of the line, rreeaaddlliinnee - interprets it as the end of input and returns EEOOFF. - ddeelleettee--cchhaarr ((CC--dd)) - Delete the character at point. If this function is bound to the - same character as the tty EEOOFF character, as CC--dd commonly is, see - above for the effects. This may also be bound to the Delete key - on some keyboards. - bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt)) - Delete the character behind the cursor. When given a numeric - argument, save the deleted text on the kill ring. - ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr - Delete the character under the cursor, unless the cursor is at - the end of the line, in which case the character behind the cur- - sor is deleted. - 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. - bbrraacckkeetteedd--ppaassttee--bbeeggiinn - This function is intended to be bound to the "bracketed paste" - escape sequence sent by some terminals, and such a binding is - assigned by default. It allows rreeaaddlliinnee to insert the pasted - text as a single unit without treating each character as if it - had been read from the keyboard. The pasted characters are in- - serted as if each one was bound to sseellff--iinnsseerrtt instead of exe- - cuting any editing commands. - Bracketed paste sets the region to the inserted text and acti- - vates the region. - ttrraannssppoossee--cchhaarrss ((CC--tt)) - Drag the character before point forward over the character at - point, moving point forward as well. If point is at the end of - the line, then this transposes the two characters before point. - Negative arguments have no effect. - ttrraannssppoossee--wwoorrddss ((MM--tt)) - Drag the word before point past the word after point, moving - point past that word as well. If point is at the end of the - line, this transposes the last two words on the line. - sshheellll--ttrraannssppoossee--wwoorrddss ((MM--CC--tt)) - Drag the word before point past the word after point, moving - point past that word as well. If the insertion point is at the - end of the line, this transposes the last two words on the line. - Word boundaries are the same as sshheellll--ffoorrwwaarrdd--wwoorrdd and - sshheellll--bbaacckkwwaarrdd--wwoorrdd. - uuppccaassee--wwoorrdd ((MM--uu)) - Uppercase the current (or following) word. With a negative ar- - gument, uppercase the previous word, but do not move point. - ddoowwnnccaassee--wwoorrdd ((MM--ll)) - Lowercase the current (or following) word. With a negative ar- - gument, lowercase the previous word, but do not move point. - ccaappiittaalliizzee--wwoorrdd ((MM--cc)) - Capitalize the current (or following) word. With a negative ar- - gument, capitalize the previous word, but do not move point. - oovveerrwwrriittee--mmooddee - Toggle overwrite mode. With an explicit positive numeric argu- - ment, switches to overwrite mode. With an explicit non-positive - numeric argument, switches to insert mode. This command affects - only eemmaaccss mode; vvii mode does overwrite differently. Each call - to _r_e_a_d_l_i_n_e_(_) starts in insert mode. - In overwrite mode, characters bound to sseellff--iinnsseerrtt replace the - text at point rather than pushing the text to the right. Char- - acters bound to bbaacckkwwaarrdd--ddeelleettee--cchhaarr replace the character be- - fore point with a space. By default, this command is unbound, - but may be bound to the Insert key on some keyboards. + _e_n_d_-_o_f_-_f_i_l_e ((uussuuaallllyy CC--dd)) + The character indicating end-of-file as set, for example, by + _s_t_t_y(1). If this character is read when there are no characters on + the line, and point is at the beginning of the line, rreeaaddlliinnee inter- + prets it as the end of input and returns EEOOFF. + ddeelleettee--cchhaarr ((CC--dd)) + Delete the character at point. If this function is bound to the + same character as the tty EEOOFF character, as CC--dd commonly is, see + above for the effects. This may also be bound to the Delete key on + some keyboards. + bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt)) + Delete the character behind the cursor. When given a numeric argu- + ment, save the deleted text on the kill ring. + ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr + Delete the character under the cursor, unless the cursor is at the + end of the line, in which case the character behind the cursor is + deleted. + 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. + bbrraacckkeetteedd--ppaassttee--bbeeggiinn + This function is intended to be bound to the "bracketed paste" es- + cape sequence sent by some terminals, and such a binding is assigned + by default. It allows rreeaaddlliinnee to insert the pasted text as a sin- + gle unit without treating each character as if it had been read from + the keyboard. The pasted characters are inserted as if each one was + bound to sseellff--iinnsseerrtt instead of executing any editing commands. + Bracketed paste sets the region to the inserted text and activates + the region. + ttrraannssppoossee--cchhaarrss ((CC--tt)) + Drag the character before point forward over the character at point, + moving point forward as well. If point is at the end of the line, + then this transposes the two characters before point. Negative ar- + guments have no effect. + ttrraannssppoossee--wwoorrddss ((MM--tt)) + Drag the word before point past the word after point, moving point + past that word as well. If point is at the end of the line, this + transposes the last two words on the line. + sshheellll--ttrraannssppoossee--wwoorrddss ((MM--CC--tt)) + Drag the word before point past the word after point, moving point + past that word as well. If the insertion point is at the end of the + line, this transposes the last two words on the line. Word bound- + aries are the same as sshheellll--ffoorrwwaarrdd--wwoorrdd and sshheellll--bbaacckkwwaarrdd--wwoorrdd. + uuppccaassee--wwoorrdd ((MM--uu)) + Uppercase the current (or following) word. With a negative argu- + ment, uppercase the previous word, but do not move point. + ddoowwnnccaassee--wwoorrdd ((MM--ll)) + Lowercase the current (or following) word. With a negative argu- + ment, lowercase the previous word, but do not move point. + ccaappiittaalliizzee--wwoorrdd ((MM--cc)) + Capitalize the current (or following) word. With a negative argu- + ment, capitalize the previous word, but do not move point. + oovveerrwwrriittee--mmooddee + Toggle overwrite mode. With an explicit positive numeric argument, + switches to overwrite mode. With an explicit non-positive numeric + argument, switches to insert mode. This command affects only eemmaaccss + mode; vvii mode does overwrite differently. Each call to _r_e_a_d_l_i_n_e_(_) + starts in insert mode. + In overwrite mode, characters bound to sseellff--iinnsseerrtt replace the text + at point rather than pushing the text to the right. Characters + bound to bbaacckkwwaarrdd--ddeelleettee--cchhaarr replace the character before point + with a space. By default, this command is unbound, but may be bound + to the Insert key on some keyboards. KKiilllliinngg aanndd YYaannkkiinngg - kkiillll--lliinnee ((CC--kk)) - Kill the text from point to the end of the current line. With a - negative numeric argument, kill backward from the cursor to the - beginning of the line. - bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt)) - Kill backward to the beginning of the current line. With a neg- - ative numeric argument, kill forward from the cursor to the end - of the line. - uunniixx--lliinnee--ddiissccaarrdd ((CC--uu)) - Kill backward from point to the beginning of the line, saving - the killed text on the kill-ring. - kkiillll--wwhhoollee--lliinnee - Kill all characters on the current line, no matter where point - is. - kkiillll--wwoorrdd ((MM--dd)) - Kill from point to the end of the current word, or if between - words, to the end of the next word. Word boundaries are the - same as those used by ffoorrwwaarrdd--wwoorrdd. - bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt)) - Kill the word behind point. Word boundaries are the same as - those used by bbaacckkwwaarrdd--wwoorrdd. - sshheellll--kkiillll--wwoorrdd ((MM--CC--dd)) - Kill from point to the end of the current word, or if between - words, to the end of the next word. Word boundaries are the - same as those used by sshheellll--ffoorrwwaarrdd--wwoorrdd. - sshheellll--bbaacckkwwaarrdd--kkiillll--wwoorrdd - Kill the word behind point. Word boundaries are the same as - those used by sshheellll--bbaacckkwwaarrdd--wwoorrdd. - uunniixx--wwoorrdd--rruubboouutt ((CC--ww)) - Kill the word behind point, using white space as a word bound- - ary, saving the killed text on the kill-ring. - uunniixx--ffiilleennaammee--rruubboouutt - Kill the word behind point, using white space and the slash - character as the word boundaries, saving the killed text on the - kill-ring. - ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\)) - Delete all spaces and tabs around point. - kkiillll--rreeggiioonn - Kill the text in the current region. - ccooppyy--rreeggiioonn--aass--kkiillll - Copy the text in the region to the kill buffer, so it can be - yanked immediately. - ccooppyy--bbaacckkwwaarrdd--wwoorrdd - Copy the word before point to the kill buffer. The word bound- - aries 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 point. - yyaannkk--ppoopp ((MM--yy)) - Rotate the kill ring, and yank the new top. Only works follow- - ing yyaannkk or yyaannkk--ppoopp. + kkiillll--lliinnee ((CC--kk)) + Kill the text from point to the end of the current line. With a + negative numeric argument, kill backward from the cursor to the be- + ginning of the line. + bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt)) + Kill backward to the beginning of the current line. With a negative + numeric argument, kill forward from the cursor to the end of the + line. + uunniixx--lliinnee--ddiissccaarrdd ((CC--uu)) + Kill backward from point to the beginning of the line, saving the + killed text on the kill-ring. + kkiillll--wwhhoollee--lliinnee + Kill all characters on the current line, no matter where point is. + kkiillll--wwoorrdd ((MM--dd)) + Kill from point to the end of the current word, or if between words, + to the end of the next word. Word boundaries are the same as those + used by ffoorrwwaarrdd--wwoorrdd. + bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt)) + Kill the word behind point. Word boundaries are the same as those + used by bbaacckkwwaarrdd--wwoorrdd. + sshheellll--kkiillll--wwoorrdd ((MM--CC--dd)) + Kill from point to the end of the current word, or if between words, + to the end of the next word. Word boundaries are the same as those + used by sshheellll--ffoorrwwaarrdd--wwoorrdd. + sshheellll--bbaacckkwwaarrdd--kkiillll--wwoorrdd + Kill the word behind point. Word boundaries are the same as those + used by sshheellll--bbaacckkwwaarrdd--wwoorrdd. + uunniixx--wwoorrdd--rruubboouutt ((CC--ww)) + Kill the word behind point, using white space as a word boundary, + saving the killed text on the kill-ring. + uunniixx--ffiilleennaammee--rruubboouutt + Kill the word behind point, using white space and the slash charac- + ter as the word boundaries, saving the killed text on the kill-ring. + ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\)) + Delete all spaces and tabs around point. + kkiillll--rreeggiioonn + Kill the text in the current region. + ccooppyy--rreeggiioonn--aass--kkiillll + Copy the text in the region to the kill buffer, so it can be yanked + immediately. + 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 bound- + aries are the same as ffoorrwwaarrdd--wwoorrdd. + yyaannkk ((CC--yy)) + Yank the top of the kill ring into the buffer at point. + yyaannkk--ppoopp ((MM--yy)) + Rotate the kill ring, and yank the new top. Only works following + yyaannkk or yyaannkk--ppoopp. NNuummeerriicc AArrgguummeennttss - ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ...,, MM----)) - Add this digit to the argument already accumulating, or start a - new argument. M-- starts a negative 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 fol- - lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the nu- - meric argument, but is otherwise ignored. As a special case, if - this command is immediately followed by a character that is nei- - ther a digit nor minus sign, the argument count for the next - command is multiplied by four. The argument count is initially - one, so executing this function the first time makes the argu- - ment count four, a second time makes the argument count sixteen, - and so on. + ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ...,, MM----)) + Add this digit to the argument already accumulating, or start a new + argument. M-- starts a negative argument. + uunniivveerrssaall--aarrgguummeenntt + This is another way to specify an argument. If this command is fol- + lowed 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 argu- + ment, but is otherwise ignored. As a special case, if this command + is immediately followed by a character that is neither a digit nor + minus sign, the argument count for the next command is multiplied by + four. The argument count is initially one, so executing this func- + tion 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 by first checking for any programmable com- - pletions for the command word (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn be- - low), otherwise treating the text as a variable (if the text be- - gins with $$), username (if the text begins with ~~), hostname (if - the text begins with @@), or command (including aliases, func- - tions, and builtins) in turn. If none of these produces a - match, it falls back to filename completion. - ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??)) - List the possible completions of the text before point. When - displaying completions, rreeaaddlliinnee sets the number of columns used - for display to the value of ccoommpplleettiioonn--ddiissppllaayy--wwiiddtthh, the value - of the shell variable CCOOLLUUMMNNSS, or the screen width, in that or- - der. - iinnsseerrtt--ccoommpplleettiioonnss ((MM--**)) - Insert all completions of the text before point that would have - been generated by ppoossssiibbllee--ccoommpplleettiioonnss, separated by a space. - mmeennuu--ccoommpplleettee - Similar to ccoommpplleettee, but replaces the word to be completed with - a single match from the list of possible completions. Repeat- - edly executing mmeennuu--ccoommpplleettee steps through the list of possible - completions, inserting each match in turn. At the end of the - list of completions, mmeennuu--ccoommpplleettee rings the bell (subject to - the setting of bbeellll--ssttyyllee) and restores the original text. An - argument of _n moves _n positions forward in the list of matches; - a negative argument moves backward through the list. This com- - mand is intended to be bound to TTAABB, but is unbound by default. - mmeennuu--ccoommpplleettee--bbaacckkwwaarrdd - Identical to mmeennuu--ccoommpplleettee, but moves backward through the list - of possible completions, as if mmeennuu--ccoommpplleettee had been given a - negative argument. This command is unbound by default. - eexxppoorrtt--ccoommpplleettiioonnss - Perform completion on the word before point as described above - and write the list of possible completions to rreeaaddlliinnee's output - stream using the following format, writing information on sepa- - rate lines: + ccoommpplleettee ((TTAABB)) + Attempt to perform completion on the text before point. BBaasshh at- + tempts completion by first checking for any programmable completions + for the command word (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below), otherwise + treating the text as a variable (if the text begins with $$), user- + name (if the text begins with ~~), hostname (if the text begins with + @@), or command (including aliases, functions, and builtins) in turn. + If none of these produces a match, it falls back to filename comple- + tion. + ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??)) + List the possible completions of the text before point. When dis- + playing completions, rreeaaddlliinnee sets the number of columns used for + display to the value of ccoommpplleettiioonn--ddiissppllaayy--wwiiddtthh, the value of the + shell variable CCOOLLUUMMNNSS, or the screen width, in that order. + iinnsseerrtt--ccoommpplleettiioonnss ((MM--**)) + Insert all completions of the text before point that would have been + generated by ppoossssiibbllee--ccoommpplleettiioonnss, separated by a space. + mmeennuu--ccoommpplleettee + Similar to ccoommpplleettee, but replaces the word to be completed with a + single match from the list of possible completions. Repeatedly exe- + cuting mmeennuu--ccoommpplleettee steps through the list of possible completions, + inserting each match in turn. At the end of the list of comple- + tions, mmeennuu--ccoommpplleettee rings the bell (subject to the setting of + bbeellll--ssttyyllee) and restores the original text. An argument of _n moves + _n positions forward in the list of matches; a negative argument + moves backward through the list. This command is intended to be + bound to TTAABB, but is unbound by default. + mmeennuu--ccoommpplleettee--bbaacckkwwaarrdd + Identical to mmeennuu--ccoommpplleettee, but moves backward through the list of + possible completions, as if mmeennuu--ccoommpplleettee had been given a negative + argument. This command is unbound by default. + eexxppoorrtt--ccoommpplleettiioonnss + Perform completion on the word before point as described above and + write the list of possible completions to rreeaaddlliinnee's output stream + using the following format, writing information on separate lines: - +o the number of matches _N; - +o the word being completed; - +o _S:_E, where _S and _E are the start and end offsets of the - word in the rreeaaddlliinnee line buffer; then - +o each match, one per line + * the number of matches _N; + * the word being completed; + * _S:_E, where _S and _E are the start and end offsets of the word + in the rreeaaddlliinnee line buffer; then + * each match, one per line - If there are no matches, the first line will be "0", and this - command does not print any output after the _S:_E. If there is - only a single match, this prints a single line containing it. - If there is more than one match, this prints the common prefix - of the matches, which may be empty, on the first line after the - _S:_E, then the matches on subsequent lines. In this case, _N will - include the first line with the common prefix. + If there are no matches, the first line will be "0", and this com- + mand does not print any output after the _S:_E. If there is only a + single match, this prints a single line containing it. If there is + more than one match, this prints the common prefix of the matches, + which may be empty, on the first line after the _S:_E, then the + matches on subsequent lines. In this case, _N will include the first + line with the common prefix. - The user or application should be able to accommodate the possi- - bility of a blank line. The intent is that the user or applica- - tion reads _N lines after the line containing _S:_E to obtain the - match list. This command is unbound by default. + The user or application should be able to accommodate the possibil- + ity of a blank line. The intent is that the user or application + reads _N lines after the line containing _S:_E to obtain the match + list. This command is unbound by default. - ddeelleettee--cchhaarr--oorr--lliisstt - Deletes the character under the cursor if not at the beginning - or end of the line (like ddeelleettee--cchhaarr). At the end of the line, - it behaves identically to ppoossssiibbllee--ccoommpplleettiioonnss. This command is - unbound by default. + ddeelleettee--cchhaarr--oorr--lliisstt + Deletes the character under the cursor if not at the beginning or + end of the line (like ddeelleettee--cchhaarr). At the end of the line, it be- + haves identically to ppoossssiibbllee--ccoommpplleettiioonnss. This command is unbound + by default. - ccoommpplleettee--ffiilleennaammee ((MM--//)) - Attempt filename completion on the text before point. + 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. + ppoossssiibbllee--ffiilleennaammee--ccoommpplleettiioonnss ((CC--xx //)) + List the possible completions of the text before point, treating it + as a filename. - ccoommpplleettee--uusseerrnnaammee ((MM--~~)) - Attempt completion on the text before point, treating it as a - username. + ccoommpplleettee--uusseerrnnaammee ((MM--~~)) + Attempt completion on the text before point, treating it as a user- + name. - ppoossssiibbllee--uusseerrnnaammee--ccoommpplleettiioonnss ((CC--xx ~~)) - List the possible completions of the text before point, treating - 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, treating it as a - shell variable. + ccoommpplleettee--vvaarriiaabbllee ((MM--$$)) + Attempt completion on the text before point, treating 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. + 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, treating it as a - hostname. + ccoommpplleettee--hhoossttnnaammee ((MM--@@)) + Attempt completion on the text before point, treating it as a host- + name. - ppoossssiibbllee--hhoossttnnaammee--ccoommpplleettiioonnss ((CC--xx @@)) - List the possible completions of the text before point, treating - 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, treating it as a - command name. Command completion attempts to match the text - against aliases, reserved words, shell functions, shell - builtins, and finally executable filenames, in that order. + ccoommpplleettee--ccoommmmaanndd ((MM--!!)) + Attempt completion on the text before point, treating it as a com- + mand name. Command completion attempts to match the text against + aliases, reserved words, shell functions, shell builtins, and fi- + nally 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. + 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, comparing the text - against history list entries for possible completion matches. + ddyynnaammiicc--ccoommpplleettee--hhiissttoorryy ((MM--TTAABB)) + Attempt completion on the text before point, comparing the text + against history list entries for possible completion matches. - ddaabbbbrreevv--eexxppaanndd - Attempt menu completion on the text before point, comparing the - text against lines from the history list for possible completion - matches. + ddaabbbbrreevv--eexxppaanndd + Attempt menu completion on the text before point, comparing the text + against lines from the history list for possible completion matches. - ccoommpplleettee--iinnttoo--bbrraacceess ((MM--{{)) - Perform filename completion and insert the list of possible com- - pletions enclosed within braces so the list is available to the - shell (see BBrraaccee EExxppaannssiioonn above). + ccoommpplleettee--iinnttoo--bbrraacceess ((MM--{{)) + Perform filename completion and insert the list of possible comple- + tions 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 making the char- - acters in the macro appear as if typed at the keyboard. - pprriinntt--llaasstt--kkbbdd--mmaaccrroo (()) - Print the last keyboard macro defined in a format suitable for - the _i_n_p_u_t_r_c file. + 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 making the characters + in the macro appear as if typed at the keyboard. + pprriinntt--llaasstt--kkbbdd--mmaaccrroo (()) + Print the last keyboard macro defined in a format suitable for the + _i_n_p_u_t_r_c file. 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. - aabboorrtt ((CC--gg)) - Abort the current editing command and ring the terminal's bell - (subject to the setting of bbeellll--ssttyyllee). - ddoo--lloowweerrccaassee--vveerrssiioonn ((MM--AA,, MM--BB,, MM--_x,, ...)) - If the metafied character _x is uppercase, run the command that - is bound to the corresponding metafied lowercase character. The - behavior is undefined if _x is already lowercase. - pprreeffiixx--mmeettaa ((EESSCC)) - Metafy the next character typed. EESSCC ff is equivalent 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--<>)) - Set the mark to the point. If a numeric argument is supplied, - set the mark to that position. - eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx)) - Swap the point with the mark. Set the current cursor position - to the saved position, then set the mark to the old cursor posi- - tion. - cchhaarraacctteerr--sseeaarrcchh ((CC--]])) - Read a character and move point to the next occurrence of that - character. A negative argument searches for previous occur- - rences. - cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]])) - Read a character and move point to the previous occurrence of - that character. A negative argument searches for subsequent oc- - currences. - sskkiipp--ccssii--sseeqquueennccee - Read enough characters to consume a multi-key sequence such as - those defined for keys like Home and End. CSI sequences begin - with a Control Sequence Indicator (CSI), usually _E_S_C _[. If this - sequence is bound to "\e[", keys producing CSI sequences have no - effect unless explicitly bound to a rreeaaddlliinnee command, instead of - inserting stray characters into the editing buffer. This is un- - bound by default, but usually bound to _E_S_C _[. - iinnsseerrtt--ccoommmmeenntt ((MM--##)) - Without a numeric argument, insert the value of the rreeaaddlliinnee - ccoommmmeenntt--bbeeggiinn variable at the beginning of the current line. If - a numeric argument is supplied, this command acts as a toggle: - if the characters at the beginning of the line do not match the - value of ccoommmmeenntt--bbeeggiinn, insert the value; otherwise delete the - characters in ccoommmmeenntt--bbeeggiinn from the beginning of the line. In - either case, the line is accepted as if a newline had been - typed. The default value of ccoommmmeenntt--bbeeggiinn causes this command - to make the current line a shell comment. If a numeric argument - causes the comment character to be removed, the line will be ex- - ecuted by the shell. - ssppeellll--ccoorrrreecctt--wwoorrdd ((CC--xx ss)) - Perform spelling correction on the current word, treating it as - a directory or filename, in the same way as the ccddssppeellll shell - option. Word boundaries are the same as those used by - sshheellll--ffoorrwwaarrdd--wwoorrdd. - gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg)) - Treat the word before point as a pattern for pathname expansion, - with an asterisk implicitly appended, then use the pattern to - generate a list of matching file names for possible completions. - gglloobb--eexxppaanndd--wwoorrdd ((CC--xx **)) - Treat the word before point as a pattern for pathname expansion, - and insert the list of matching file names, replacing the word. - If a numeric argument is supplied, append a ** before pathname - expansion. - gglloobb--lliisstt--eexxppaannssiioonnss ((CC--xx gg)) - Display the list of expansions that would have been generated by - gglloobb--eexxppaanndd--wwoorrdd and redisplay the line. If a numeric argument - is supplied, append a ** before pathname expansion. - dduummpp--ffuunnccttiioonnss - Print all of the functions and their key bindings to the rreeaadd-- - lliinnee output stream. If a numeric argument is supplied, the out- - put is formatted in such a way that it can be made part of an - _i_n_p_u_t_r_c file. - dduummpp--vvaarriiaabblleess - Print all of the settable rreeaaddlliinnee variables and their values to - the rreeaaddlliinnee output stream. 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. - dduummpp--mmaaccrrooss - Print all of the rreeaaddlliinnee key sequences bound to macros and the - strings they output to the rreeaaddlliinnee output stream. 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. - eexxeeccuuttee--nnaammeedd--ccoommmmaanndd ((MM--xx)) - Read a bindable rreeaaddlliinnee command name from the input and execute - the function to which it's bound, as if the key sequence to - which it was bound appeared in the input. If this function is - supplied with a numeric argument, it passes that argument to the - function it executes. - ddiissppllaayy--sshheellll--vveerrssiioonn ((CC--xx CC--vv)) - Display version information about the current instance of bbaasshh. + 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 bind- + ings or variable assignments found there. + aabboorrtt ((CC--gg)) + Abort the current editing command and ring the terminal's bell (sub- + ject to the setting of bbeellll--ssttyyllee). + ddoo--lloowweerrccaassee--vveerrssiioonn ((MM--AA,, MM--BB,, MM--_x,, ...)) + If the metafied character _x is uppercase, run the command that is + bound to the corresponding metafied lowercase character. The behav- + ior is undefined if _x is already lowercase. + pprreeffiixx--mmeettaa ((EESSCC)) + Metafy the next character typed. EESSCC ff is equivalent 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--<>)) + Set the mark to the point. If a numeric argument is supplied, set + the mark to that position. + eexxcchhaannggee--ppooiinntt--aanndd--mmaarrkk ((CC--xx CC--xx)) + Swap the point with the mark. Set the current cursor position to + the saved position, then set the mark to the old cursor position. + cchhaarraacctteerr--sseeaarrcchh ((CC--]])) + Read a character and move point to the next occurrence of that char- + acter. A negative argument searches for previous occurrences. + cchhaarraacctteerr--sseeaarrcchh--bbaacckkwwaarrdd ((MM--CC--]])) + Read a character and move point to the previous occurrence of that + character. A negative argument searches for subsequent occurrences. + sskkiipp--ccssii--sseeqquueennccee + Read enough characters to consume a multi-key sequence such as those + defined for keys like Home and End. CSI sequences begin with a Con- + trol Sequence Indicator (CSI), usually _E_S_C _[. If this sequence is + bound to "\e[", keys producing CSI sequences have no effect unless + explicitly bound to a rreeaaddlliinnee command, instead of inserting stray + characters into the editing buffer. This is unbound by default, but + usually bound to _E_S_C _[. + iinnsseerrtt--ccoommmmeenntt ((MM--##)) + Without a numeric argument, insert the value of the rreeaaddlliinnee ccoomm-- + mmeenntt--bbeeggiinn variable at the beginning of the current line. If a nu- + meric argument is supplied, this command acts as a toggle: if the + characters at the beginning of the line do not match the value of + ccoommmmeenntt--bbeeggiinn, insert the value; otherwise delete the characters in + ccoommmmeenntt--bbeeggiinn from the beginning of the line. In either case, the + line is accepted as if a newline had been typed. The default value + of ccoommmmeenntt--bbeeggiinn causes this command to make the current line a + shell comment. If a numeric argument causes the comment character + to be removed, the line will be executed by the shell. + ssppeellll--ccoorrrreecctt--wwoorrdd ((CC--xx ss)) + Perform spelling correction on the current word, treating it as a + directory or filename, in the same way as the ccddssppeellll shell option. + Word boundaries are the same as those used by sshheellll--ffoorrwwaarrdd--wwoorrdd. + gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg)) + Treat the word before point as a pattern for pathname expansion, + with an asterisk implicitly appended, then use the pattern to gener- + ate a list of matching file names for possible completions. + gglloobb--eexxppaanndd--wwoorrdd ((CC--xx **)) + Treat the word before point as a pattern for pathname expansion, and + insert the list of matching file names, replacing the word. If a + numeric argument is supplied, append a ** before pathname expansion. + gglloobb--lliisstt--eexxppaannssiioonnss ((CC--xx gg)) + Display the list of expansions that would have been generated by + gglloobb--eexxppaanndd--wwoorrdd and redisplay the line. If a numeric argument is + supplied, append a ** before pathname expansion. + dduummpp--ffuunnccttiioonnss + Print all of the functions and their key bindings to the rreeaaddlliinnee + output stream. 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. + dduummpp--vvaarriiaabblleess + Print all of the settable rreeaaddlliinnee variables and their values to the + rreeaaddlliinnee output stream. If a numeric argument is supplied, the out- + put is formatted 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 rreeaaddlliinnee key sequences bound to macros and the + strings they output to the rreeaaddlliinnee output stream. If a numeric ar- + gument 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. + eexxeeccuuttee--nnaammeedd--ccoommmmaanndd ((MM--xx)) + Read a bindable rreeaaddlliinnee command name from the input and execute the + function to which it's bound, as if the key sequence to which it was + bound appeared in the input. If this function is supplied with a + numeric argument, it passes that argument to the function it exe- + cutes. + ddiissppllaayy--sshheellll--vveerrssiioonn ((CC--xx CC--vv)) + Display version information about the current instance of bbaasshh. PPrrooggrraammmmaabbllee CCoommpplleettiioonn - When a user attempts word completion for a command or an argument to a - command for which a completion specification (a _c_o_m_p_s_p_e_c) has been de- - fined using the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), - rreeaaddlliinnee invokes the programmable completion facilities. + When a user attempts word completion for a command or an argument to a com- + mand for which a completion specification (a _c_o_m_p_s_p_e_c) has been defined us- + ing the ccoommpplleettee builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), rreeaaddlliinnee in- + vokes the programmable completion facilities. - First, bbaasshh identifies the command name. If a compspec has been de- - fined for that command, the compspec is used to generate the list of - possible completions for the word. If the command word is the empty - string (completion attempted at the beginning of an empty line), bbaasshh - uses any compspec defined with the --EE option to ccoommpplleettee. The --II op- - tion to ccoommpplleettee indicates that the command word is the first non-as- - signment word on the line, or after a command delimiter such as ;; or ||. - This usually indicates command name completion. + First, bbaasshh identifies the command name. If a compspec has been defined + for that command, the compspec is used to generate the list of possible + completions for the word. If the command word is the empty string (comple- + tion attempted at the beginning of an empty line), bbaasshh uses any compspec + defined with the --EE option to ccoommpplleettee. The --II option to ccoommpplleettee indi- + cates that the command word is the first non-assignment word on the line, + or after a command delimiter such as ;; or ||. This usually indicates com- + mand name completion. - If the command word is a full pathname, bbaasshh searches for a compspec - for the full pathname first. If there is no compspec for the full - pathname, bbaasshh attempts to find a compspec for the portion following - the final slash. If those searches do not result in a compspec, or if - there is no compspec for the command word, bbaasshh uses any compspec de- - fined with the --DD option to ccoommpplleettee as the default. If there is no - default compspec, bbaasshh performs alias expansion on the command word as - a final resort, and attempts to find a compspec for the command word - resulting from any successful expansion. + If the command word is a full pathname, bbaasshh searches for a compspec for + the full pathname first. If there is no compspec for the full pathname, + bbaasshh attempts to find a compspec for the portion following the final slash. + If those searches do not result in a compspec, or if there is no compspec + for the command word, bbaasshh uses any compspec defined with the --DD option to + ccoommpplleettee as the default. If there is no default compspec, bbaasshh performs + alias expansion on the command word as a final resort, and attempts to find + a compspec for the command word resulting from any successful expansion. - If a compspec is not found, bbaasshh performs its default completion as de- - scribed above under CCoommpplleettiinngg. Otherwise, once a compspec has been - found, bbaasshh uses it to generate the list of matching words. + If a compspec is not found, bbaasshh performs its default completion as de- + scribed above under CCoommpplleettiinngg. Otherwise, once a compspec has been found, + bbaasshh uses it to generate the list of matching words. - First, bbaasshh performs the _a_c_t_i_o_n_s specified by the compspec. This only - returns matches which are prefixes of the word being completed. When - the --ff or --dd option is used for filename or directory name completion, - bbaasshh uses the shell variable FFIIGGNNOORREE to filter the matches. + First, bbaasshh performs the _a_c_t_i_o_n_s specified by the compspec. This only re- + turns matches which are prefixes of the word being completed. When the --ff + or --dd option is used for filename or directory name completion, bbaasshh uses + the shell variable FFIIGGNNOORREE to filter the matches. - Next, programmable completion generates matches specified by a pathname - expansion pattern supplied as an argument to the --GG option. The words - generated by the pattern need not match the word being completed. BBaasshh - uses the FFIIGGNNOORREE variable to filter the matches, but does not use the - GGLLOOBBIIGGNNOORREE shell variable. + Next, programmable completion generates matches specified by a pathname ex- + pansion pattern supplied as an argument to the --GG option. The words gener- + ated by the pattern need not match the word being completed. BBaasshh uses the + FFIIGGNNOORREE variable to filter the matches, but does not use the GGLLOOBBIIGGNNOORREE + shell variable. - Next, completion considers the string specified as the argument to the - --WW option. The string is first split using the characters in the IIFFSS - special variable as delimiters. This honors shell quoting within the - string, in order to provide a mechanism for the words to contain shell - metacharacters or characters in the value of IIFFSS. Each word is then - expanded using brace expansion, tilde expansion, parameter and variable - expansion, command substitution, and arithmetic expansion, as described - above under EEXXPPAANNSSIIOONN. The results are split using the rules described - above under WWoorrdd SSpplliittttiinngg. The results of the expansion are prefix- - matched against the word being completed, and the matching words become - possible completions. + Next, completion considers the string specified as the argument to the --WW + option. The string is first split using the characters in the IIFFSS special + variable as delimiters. This honors shell quoting within the string, in + order to provide a mechanism for the words to contain shell metacharacters + or characters in the value of IIFFSS. Each word is then expanded using brace + expansion, tilde expansion, parameter and variable expansion, command sub- + stitution, and arithmetic expansion, as described above under EEXXPPAANNSSIIOONN. + The results are split using the rules described above under WWoorrdd SSpplliittttiinngg. + The results of the expansion are prefix-matched against the word being com- + pleted, and the matching words become possible completions. - After these matches have been generated, bbaasshh executes any shell func- - tion or command specified with the --FF and --CC options. When the command - or function is invoked, bbaasshh assigns values to the CCOOMMPP__LLIINNEE, - CCOOMMPP__PPOOIINNTT, CCOOMMPP__KKEEYY, and CCOOMMPP__TTYYPPEE variables as described above under - SShheellll VVaarriiaabblleess. If a shell function is being invoked, bbaasshh also sets - the CCOOMMPP__WWOORRDDSS and CCOOMMPP__CCWWOORRDD variables. When the function or command - is invoked, the first argument ($$11) is the name of the command whose - arguments are being completed, the second argument ($$22) is the word be- - ing completed, and the third argument ($$33) is the word preceding the - word being completed on the current command line. There is no filter- - ing of the generated completions against the word being completed; the - function or command has complete freedom in generating the matches and - they do not need to match a prefix of the word. + After these matches have been generated, bbaasshh executes any shell function + or command specified with the --FF and --CC options. When the command or func- + tion is invoked, bbaasshh assigns values to the CCOOMMPP__LLIINNEE, CCOOMMPP__PPOOIINNTT, + CCOOMMPP__KKEEYY, and CCOOMMPP__TTYYPPEE variables as described above under SShheellll VVaarriiaabblleess. + If a shell function is being invoked, bbaasshh also sets the CCOOMMPP__WWOORRDDSS and + CCOOMMPP__CCWWOORRDD variables. When the function or command is invoked, the first + argument ($$11) is the name of the command whose arguments are being com- + pleted, the second argument ($$22) is the word being completed, and the third + argument ($$33) is the word preceding the word being completed on the current + command line. There is no filtering of the generated completions against + the word being completed; the function or command has complete freedom in + generating the matches and they do not need to match a prefix of the word. - Any function specified with --FF is invoked first. The function may use - any of the shell facilities, including the ccoommppggeenn and ccoommppoopptt builtins - described below, to generate the matches. It must put the possible - completions in the CCOOMMPPRREEPPLLYY array variable, one per array element. + Any function specified with --FF is invoked first. The function may use any + of the shell facilities, including the ccoommppggeenn and ccoommppoopptt builtins de- + scribed below, to generate the matches. It must put the possible comple- + tions in the CCOOMMPPRREEPPLLYY array variable, one per array element. - Next, any command specified with the --CC option is invoked in an envi- - ronment equivalent to command substitution. It should print a list of - completions, one per line, to the standard output. Backslash will es- - cape a newline, if necessary. These are added to the set of possible - completions. + Next, any command specified with the --CC option is invoked in an environment + equivalent to command substitution. It should print a list of completions, + one per line, to the standard output. Backslash will escape a newline, if + necessary. These are added to the set of possible completions. - External commands that are invoked to generate completions ( "external - completers") receive the word preceding the completion word as an argu- - ment, as described above. This provides context that is sometimes use- - ful, but may include information that is considered sensitive or part - of a word expansion that will not appear in the command line after ex- - pansion. That word may be visible in process listings or in audit - logs. This may be a concern to users and completion specification au- - thors if there is sensitive information on the command line before ex- - pansion, since completion takes place before words are expanded. If - this is an issue, completion authors should use functions as wrappers - around external commands and pass context information to the external - command in a different way. External completers can infer context from - the CCOOMMPP__LLIINNEE and CCOOMMPP__PPOOIINNTT environment variables, but they need to - ensure they break words in the same way rreeaaddlliinnee does, using the - CCOOMMPP__WWOORRDDBBRREEAAKKSS variable. + External commands that are invoked to generate completions ( "external com- + pleters") receive the word preceding the completion word as an argument, as + described above. This provides context that is sometimes useful, but may + include information that is considered sensitive or part of a word expan- + sion that will not appear in the command line after expansion. That word + may be visible in process listings or in audit logs. This may be a concern + to users and completion specification authors if there is sensitive infor- + mation on the command line before expansion, since completion takes place + before words are expanded. If this is an issue, completion authors should + use functions as wrappers around external commands and pass context infor- + mation to the external command in a different way. External completers can + infer context from the CCOOMMPP__LLIINNEE and CCOOMMPP__PPOOIINNTT environment variables, but + they need to ensure they break words in the same way rreeaaddlliinnee does, using + the CCOOMMPP__WWOORRDDBBRREEAAKKSS variable. - After generating all of the possible completions, bbaasshh applies any fil- - ter specified with the --XX option to the completions in the list. The - filter is a pattern as used for pathname expansion; a && in the pattern - is replaced with the text of the word being completed. A literal && may - be escaped with a backslash; the backslash is removed before attempting - a match. Any completion that matches the pattern is removed from the - list. A leading !! negates the pattern; in this case bbaasshh removes any - completion that does not match the pattern. If the nnooccaasseemmaattcchh shell - option is enabled, bbaasshh performs the match without regard to the case - of alphabetic characters. + After generating all of the possible completions, bbaasshh applies any filter + specified with the --XX option to the completions in the list. The filter is + a pattern as used for pathname expansion; a && in the pattern is replaced + with the text of the word being completed. A literal && may be escaped with + a backslash; the backslash is removed before attempting a match. Any com- + pletion that matches the pattern is removed from the list. A leading !! + negates the pattern; in this case bbaasshh removes any completion that does not + match the pattern. If the nnooccaasseemmaattcchh shell option is enabled, bbaasshh per- + forms the match without regard to the case of alphabetic characters. - Finally, programmable completion adds any prefix and suffix specified - with the --PP and --SS options, respectively, to each completion, and re- - turns the result to rreeaaddlliinnee as the list of possible completions. + Finally, programmable completion adds any prefix and suffix specified with + the --PP and --SS options, respectively, to each completion, and returns the + result to rreeaaddlliinnee as the list of possible completions. - If the previously-applied actions do not generate any matches, and the - --oo ddiirrnnaammeess option was supplied to ccoommpplleettee when the compspec was de- - fined, bbaasshh attempts directory name completion. + If the previously-applied actions do not generate any matches, and the --oo + ddiirrnnaammeess option was supplied to ccoommpplleettee when the compspec was defined, + bbaasshh attempts directory name completion. - If the --oo pplluussddiirrss option was supplied to ccoommpplleettee when the compspec - was defined, bbaasshh attempts directory name completion and adds any - matches to the set of possible completions. + If the --oo pplluussddiirrss option was supplied to ccoommpplleettee when the compspec was + defined, bbaasshh attempts directory name completion and adds any matches to + the set of possible completions. - By default, if a compspec is found, whatever it generates is returned - to the completion code as the full set of possible completions. The - default bbaasshh completions and the rreeaaddlliinnee default of filename comple- - tion are disabled. If the --oo bbaasshhddeeffaauulltt option was supplied to ccoomm-- - pplleettee when the compspec was defined, and the compspec generates no - matches, bbaasshh attempts its default completions. If the compspec and, - if attempted, the default bbaasshh completions generate no matches, and the - --oo ddeeffaauulltt option was supplied to ccoommpplleettee when the compspec was de- - fined, programmable completion performs rreeaaddlliinnee's default completion. + By default, if a compspec is found, whatever it generates is returned to + the completion code as the full set of possible completions. The default + bbaasshh completions and the rreeaaddlliinnee default of filename completion are dis- + abled. If the --oo bbaasshhddeeffaauulltt option was supplied to ccoommpplleettee when the + compspec was defined, and the compspec generates no matches, bbaasshh attempts + its default completions. If the compspec and, if attempted, the default + bbaasshh completions generate no matches, and the --oo ddeeffaauulltt option was sup- + plied to ccoommpplleettee when the compspec was defined, programmable completion + performs rreeaaddlliinnee's default completion. - The options supplied to ccoommpplleettee and ccoommppoopptt can control how rreeaaddlliinnee - treats the completions. For instance, the --oo ffuullllqquuoottee option tells - rreeaaddlliinnee to quote the matches as if they were filenames. See the de- - scription of ccoommpplleettee below for details. + The options supplied to ccoommpplleettee and ccoommppoopptt can control how rreeaaddlliinnee + treats the completions. For instance, the --oo ffuullllqquuoottee option tells rreeaadd-- + lliinnee to quote the matches as if they were filenames. See the description + of ccoommpplleettee below for details. - When a compspec indicates that it wants directory name completion, the - programmable completion functions force rreeaaddlliinnee to append a slash to - completed names which are symbolic links to directories, subject to the - value of the mmaarrkk--ddiirreeccttoorriieess rreeaaddlliinnee variable, regardless of the set- - ting of the mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess rreeaaddlliinnee variable. + When a compspec indicates that it wants directory name completion, the pro- + grammable completion functions force rreeaaddlliinnee to append a slash to com- + pleted names which are symbolic links to directories, subject to the value + of the mmaarrkk--ddiirreeccttoorriieess rreeaaddlliinnee variable, regardless of the setting of the + mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess rreeaaddlliinnee variable. - There is some support for dynamically modifying completions. This is - most useful when used in combination with a default completion speci- - fied with ccoommpplleettee --DD. It's possible for shell functions executed as - completion functions to indicate that completion should be retried by - returning an exit status of 124. If a shell function returns 124, and - changes the compspec associated with the command on which completion is - being attempted (supplied as the first argument when the function is - executed), programmable completion restarts from the beginning, with an - attempt to find a new compspec for that command. This can be used to - build a set of completions dynamically as completion is attempted, - rather than loading them all at once. + There is some support for dynamically modifying completions. This is most + useful when used in combination with a default completion specified with + ccoommpplleettee --DD. It's possible for shell functions executed as completion + functions to indicate that completion should be retried by returning an + exit status of 124. If a shell function returns 124, and changes the comp- + spec associated with the command on which completion is being attempted + (supplied as the first argument when the function is executed), programma- + ble completion restarts from the beginning, with an attempt to find a new + compspec for that command. This can be used to build a set of completions + dynamically as completion is attempted, rather than loading them all at + once. - For instance, assuming that there is a library of compspecs, each kept - in a file corresponding to the name of the command, the following de- - fault completion function would load completions dynamically: - _completion_loader() - { - . "/etc/bash_completion.d/$1.sh" \ - >/dev/null 2>&1 && return 124 - } - complete -D -F _completion_loader \ - -o bashdefault -o default + For instance, assuming that there is a library of compspecs, each kept in a + file corresponding to the name of the command, the following default com- + pletion function would load completions dynamically: + _completion_loader() + { + . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124 + } + complete -D -F _completion_loader -o bashdefault -o default 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 value of the HHIISSTTSSIIZZEE variable is used as the number of - commands to save in a history list: the shell saves the text of the - last HHIISSTTSSIIZZEE commands (default 500). The shell stores each command in - the history list prior to parameter and variable expansion (see EEXXPPAANN-- - SSIIOONN above) but after history expansion is performed, subject to the - values of the shell variables HHIISSTTIIGGNNOORREE and HHIISSTTCCOONNTTRROOLL. + When the --oo hhiissttoorryy option to the sseett builtin is enabled, the shell pro- + vides access to the _c_o_m_m_a_n_d _h_i_s_t_o_r_y, the list of commands previously typed. + The value of the HHIISSTTSSIIZZEE variable is used as the number of commands to + save in a history list: the shell saves the text of the last HHIISSTTSSIIZZEE com- + mands (default 500). 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 values of the shell vari- + ables HHIISSTTIIGGNNOORREE and HHIISSTTCCOONNTTRROOLL. - On startup, bbaasshh initializes the history list by reading history en- - tries from the file named by the HHIISSTTFFIILLEE variable (default - _~_/_._b_a_s_h___h_i_s_t_o_r_y). That file is referred to as the _h_i_s_t_o_r_y _f_i_l_e. The - history file is truncated, if necessary, to contain no more than the - number of history entries specified by the value of the HHIISSTTFFIILLEESSIIZZEE - variable. If HHIISSTTFFIILLEESSIIZZEE is unset, or set to null, a non-numeric - value, or a numeric value less than zero, the history file is not trun- - cated. + On startup, bbaasshh initializes the history list by reading history entries + from the file named by the HHIISSTTFFIILLEE variable (default _~_/_._b_a_s_h___h_i_s_t_o_r_y). + That file is referred to as the _h_i_s_t_o_r_y _f_i_l_e. The history file is trun- + cated, if necessary, to contain no more than the number of history entries + specified by the value of the HHIISSTTFFIILLEESSIIZZEE variable. If HHIISSTTFFIILLEESSIIZZEE is + unset, or set to null, a non-numeric value, or a numeric value less than + zero, the history file is not truncated. - When the history file is read, lines beginning with the history comment - character followed immediately by a digit are interpreted as timestamps - for the following history line. These timestamps are optionally dis- - played depending on the value of the HHIISSTTTTIIMMEEFFOORRMMAATT variable. When - present, history timestamps delimit history entries, making multi-line - entries possible. + When the history file is read, lines beginning with the history comment + character followed immediately by a digit are interpreted as timestamps for + the following history line. These timestamps are optionally displayed de- + pending on the value of the HHIISSTTTTIIMMEEFFOORRMMAATT variable. When present, history + timestamps delimit history entries, making multi-line entries possible. - When a shell with history enabled exits, bbaasshh copies the last $$HHIISSTTSSIIZZEE - entries from the history list to $$HHIISSTTFFIILLEE. If the hhiissttaappppeenndd shell - option is enabled (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN - CCOOMMMMAANNDDSS below), bbaasshh appends the entries to the history file, other- - wise it overwrites the history file. If HHIISSTTFFIILLEE is unset or null, or - if the history file is unwritable, the history is not saved. After - saving the history, bbaasshh truncates the history file to contain no more - than HHIISSTTFFIILLEESSIIZZEE lines as described above. + When a shell with history enabled exits, bbaasshh copies the last $$HHIISSTTSSIIZZEE en- + tries from the history list to $$HHIISSTTFFIILLEE. If the hhiissttaappppeenndd shell option + is enabled (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS be- + low), bbaasshh appends the entries to the history file, otherwise it overwrites + the history file. If HHIISSTTFFIILLEE is unset or null, or if the history file is + unwritable, the history is not saved. After saving the history, bbaasshh trun- + cates the history file to contain no more than HHIISSTTFFIILLEESSIIZZEE lines as de- + scribed above. - If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the shell writes the timestamp - information associated with each history entry to the history file, - marked with the history comment character, so timestamps are preserved - across shell sessions. This uses the history comment character to dis- - tinguish timestamps from other history lines. As above, when using - HHIISSTTTTIIMMEEFFOORRMMAATT, the timestamps delimit multi-line history entries. + If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the shell writes the timestamp in- + formation associated with each history entry to the history file, marked + with the history comment character, so timestamps are preserved across + shell sessions. This uses the history comment character to distinguish + timestamps from other history lines. As above, when using HHIISSTTTTIIMMEEFFOORRMMAATT, + the timestamps delimit multi-line history entries. - The ffcc builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) will list or - edit and re-execute a portion of the history list. The hhiissttoorryy builtin - can display or modify the history list and manipulate the history file. - When using command-line editing, search commands are available in each - editing mode that provide access to the history list. + The ffcc builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) will list or edit + and re-execute a portion of the history list. The hhiissttoorryy builtin can dis- + play or modify the history list and manipulate the history file. When us- + ing command-line editing, search commands 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 variables are used to save only a - subset of the commands entered. If the ccmmddhhiisstt shell option is en- - abled, the shell attempts to save each line of a multi-line command in - the same history entry, adding semicolons where necessary to preserve - syntactic correctness. The lliitthhiisstt shell option modifies ccmmddhhiisstt by - saving 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. + The shell allows control over which commands are saved on the history list. + The HHIISSTTCCOONNTTRROOLL and HHIISSTTIIGGNNOORREE variables are used to save only a subset of + the commands entered. If the ccmmddhhiisstt shell option is enabled, the shell + attempts to save each line of a multi-line command in the same history en- + try, adding semicolons where necessary to preserve syntactic correctness. + The lliitthhiisstt shell option modifies ccmmddhhiisstt by saving the command with embed- + ded 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. + The shell supports a history expansion feature that is similar to the his- + tory expansion in ccsshh. This section describes what syntax features are + available. - History expansion 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, but it can be enabled with "set -H". + History expansion 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, but it can be enabled with "set -H". - History expansions introduce words from the history list into the input - stream, making it easy to repeat commands, insert the arguments to a - previous command into the current input line, or fix errors in previous - commands quickly. + History expansions introduce words from the history list into the input + stream, making it easy to repeat commands, insert the arguments to a previ- + ous command into the current input line, or fix errors in previous commands + quickly. - History expansion is performed immediately after a complete line is - read, before the shell breaks it into words, and is performed on each - line individually. The shell attempts to inform the history expansion - functions about quoting still in effect from previous lines. + History expansion is performed immediately after a complete line is read, + before the shell breaks it into words, and is performed on each line indi- + vidually. The shell attempts to inform the history expansion functions + about quoting still in effect from previous lines. - It takes place in two parts. The first is to determine which history - list entry to use during substitution. The second is to select por- - tions of that entry to include into the current one. + It takes place in two parts. The first is to determine which history list + entry to use during substitution. The second is to select portions of that + entry to include into the current one. - The entry selected from the history is the _e_v_e_n_t, and the portions of - that entry that are acted upon are _w_o_r_d_s. Various _m_o_d_i_f_i_e_r_s are avail- - able to manipulate the selected words. The entry is split 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 surrounded by quotes are considered one word. The - _e_v_e_n_t _d_e_s_i_g_n_a_t_o_r selects the event, the optional _w_o_r_d _d_e_s_i_g_n_a_t_o_r se- - lects words from the event, and various optional _m_o_d_i_f_i_e_r_s are avail- - able to manipulate the selected words. + The entry selected from the history is the _e_v_e_n_t, and the portions of that + entry 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 entry is split 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 surrounded by quotes are considered one word. The _e_v_e_n_t _d_e_s_i_g_n_a_t_o_r + selects the event, the optional _w_o_r_d _d_e_s_i_g_n_a_t_o_r selects words from the + event, and various optional _m_o_d_i_f_i_e_r_s are available to manipulate the se- + lected words. - History expansions are introduced by the appearance of the history ex- - pansion character, which is !! by default. History expansions may ap- - pear anywhere in the input, but do not nest. + History expansions are introduced by the appearance of the history expan- + sion character, which is !! by default. History expansions may appear any- + where in the input, but do not nest. - Only backslash (\\) and single quotes can quote the history expansion - character, but the history expansion character is also treated as - quoted if it immediately precedes the closing double quote in a double- - quoted string. + Only backslash (\\) and single quotes can quote the history expansion char- + acter, but the history expansion character is also treated as quoted if it + immediately precedes the closing double quote in a double-quoted string. - Several characters inhibit history expansion if found immediately fol- - lowing the history expansion character, even if it is unquoted: space, - tab, newline, carriage return, ==, and the other shell metacharacters - defined above. + Several characters inhibit history expansion if found immediately following + the history expansion character, even if it is unquoted: space, tab, new- + line, carriage return, ==, and the other shell metacharacters defined above. - There is a special abbreviation for substitution, active when the _q_u_i_c_k - _s_u_b_s_t_i_t_u_t_i_o_n character (described above under hhiissttcchhaarrss) is the first - character on the line. It selects the previous history list entry, us- - ing an event designator equivalent to !!!!, and substitutes one string - for another in that entry. It is described below under EEvveenntt DDeessiiggnnaa-- - ttoorrss. This is the only history expansion that does not begin with the - history expansion character. + There is a special abbreviation for substitution, active when the _q_u_i_c_k + _s_u_b_s_t_i_t_u_t_i_o_n character (described above under hhiissttcchhaarrss) is the first char- + acter on the line. It selects the previous history list entry, using an + event designator equivalent to !!!!, and substitutes one string for another + in that entry. It is described below under EEvveenntt DDeessiiggnnaattoorrss. This is the + only history expansion that does not begin with the history expansion char- + acter. - Several shell options settable with the sshhoopptt builtin will modify his- - tory expansion behavior (see the description of the sshhoopptt builtin be- - low).and If the hhiissttvveerriiffyy shell option is enabled, and rreeaaddlliinnee is be- - ing used, history substitutions are not immediately passed to the shell - parser. Instead, the expanded line is reloaded into the rreeaaddlliinnee edit- - ing buffer for further modification. If rreeaaddlliinnee is being used, and - the hhiissttrreeeeddiitt shell option is enabled, a failed history substitution - is reloaded into the rreeaaddlliinnee editing buffer for correction. + Several shell options settable with the sshhoopptt builtin will modify history + expansion behavior (see the description of the sshhoopptt builtin below).and If + the hhiissttvveerriiffyy shell option is enabled, 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 mod- + ification. If rreeaaddlliinnee is being used, and the hhiissttrreeeeddiitt shell option is + enabled, a failed history substitution is reloaded into the rreeaaddlliinnee edit- + ing buffer for correction. - The --pp option to the hhiissttoorryy builtin command shows what a history ex- - pansion will do before using it. The --ss option to the hhiissttoorryy builtin - will add commands to the end of the history list without actually exe- - cuting them, so that they are available for subsequent recall. + The --pp option to the hhiissttoorryy builtin command shows what a history expansion + will do before using it. The --ss option to the hhiissttoorryy builtin will add + commands to the end of the history list without actually executing them, so + that they are available for subsequent recall. - The shell allows control of the various characters used by the history - expansion mechanism (see the description of hhiissttcchhaarrss above under SShheellll - VVaarriiaabblleess). The shell uses the history comment character to mark his- - tory timestamps when writing the history file. + The shell allows control of the various characters used by the history ex- + pansion mechanism (see the description of hhiissttcchhaarrss above under SShheellll VVaarrii-- + aabblleess). The shell uses the history comment character to mark history time- + stamps when writing the history file. EEvveenntt DDeessiiggnnaattoorrss - An event designator is a reference to an entry in the history list. - The event designator consists of the portion of the word beginning with - the history expansion character and ending with the word designator if - present, or the end of the word. Unless the reference is absolute, - events are relative to the current position in the history list. + An event designator is a reference to an entry in the history list. The + event designator consists of the portion of the word beginning with the + history expansion character and ending with the word designator if present, + or the end of the word. Unless the reference is absolute, events are rela- + tive to the current position in the history list. - !! Start a history substitution, except when followed by a bbllaannkk, - newline, carriage return, =, or, when the eexxttgglloobb shell option - is enabled using the sshhoopptt builtin, (. - !!_n Refer to history list entry _n. - !!--_n Refer to the current entry minus _n. - !!!! Refer to the previous entry. This is a synonym for "!-1". - !!_s_t_r_i_n_g - Refer to the most recent command preceding the current position - in the history list starting with _s_t_r_i_n_g. - !!??_s_t_r_i_n_g[[??]] - Refer to the most recent command preceding the current position - in the history list 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. If - _s_t_r_i_n_g is missing, this uses the string from the most recent - search; it is an error if there is no previous search string. - ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^ - Quick substitution. Repeat the previous 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. + !! Start a history substitution, except when followed by a bbllaannkk, new- + line, carriage return, =, or, when the eexxttgglloobb shell option is en- + abled using the sshhoopptt builtin, (. + !!_n Refer to history list entry _n. + !!--_n Refer to the current entry minus _n. + !!!! Refer to the previous entry. This is a synonym for "!-1". + !!_s_t_r_i_n_g + Refer to the most recent command preceding the current position in + the history list starting with _s_t_r_i_n_g. + !!??_s_t_r_i_n_g[[??]] + Refer to the most recent command preceding the current position in + the history list 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. If _s_t_r_i_n_g is miss- + ing, this uses the string from the most recent search; it is an er- + ror if there is no previous search string. + ^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^ + Quick substitution. Repeat the previous 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. They - are optional; if the word designator isn't supplied, the history expan- - sion uses the entire 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 in- - serted into the current line separated by single spaces. + Word designators are used to select desired words from the event. They are + optional; if the word designator isn't supplied, the history expansion uses + the entire event. A :: separates the event specification from the word des- + ignator. 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 command word. - _n The _nth word. - ^^ The first argument: word 1. - $$ The last word. This is usually the last argument, but will ex- - pand to the zeroth word if there is only one word in the line. - %% The first word matched by the most recent "?_s_t_r_i_n_g?" search, if - the search string begins with a character that is part of a - word. By default, searches begin at the end of each line and - proceed to the beginning, so the first word matched is the one - closest to the end of the line. - _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; it expands to the empty string in that case. - xx** Abbreviates _x_-_$. - xx-- Abbreviates _x_-_$ like xx**, but omits the last word. If xx is miss- - ing, it defaults to 0. + 00 ((zzeerroo)) + The zeroth word. For the shell, this is the command word. + _n The _nth word. + ^^ The first argument: word 1. + $$ The last word. This is usually the last argument, but will expand + to the zeroth word if there is only one word in the line. + %% The first word matched by the most recent "?_s_t_r_i_n_g?" search, if the + search string begins with a character that is part of a word. By + default, searches begin at the end of each line and proceed to the + beginning, so the first word matched is the one closest to the end + of the line. + _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; it + expands to the empty string in that case. + xx** Abbreviates _x_-_$. + xx-- Abbreviates _x_-_$ like xx**, but omits the last word. If xx is missing, + it defaults to 0. - If a word designator is supplied without an event specification, the - previous command is used as the event, equivalent to !!!!. + If a word designator is supplied without an event specification, the previ- + ous command is used as the event, equivalent to !!!!. MMooddiiffiieerrss - After the optional word designator, the expansion may include a se- - quence of one or more of the following modifiers, each preceded by a - ":". These modify, or edit, the word or words selected from the his- - tory event. + After the optional word designator, the expansion may include a sequence of + one or more of the following modifiers, each preceded by a ":". These mod- + ify, or edit, the word or words selected from the history event. - hh Remove a trailing pathname component, leaving only the head. - tt Remove all leading pathname 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 substitutions. - xx Quote the substituted words as with qq, but break into words at - bbllaannkkss and newlines. The qq and xx modifiers are mutually exclu- - sive; expansion uses the last one supplied. - ss//_o_l_d//_n_e_w// - Substitute _n_e_w for the first occurrence of _o_l_d in the event - line. Any character may be used as the delimiter in place of /. - The final delimiter is optional if it is the last character of - the event line. A single backslash quotes the delimiter in _o_l_d - and _n_e_w. If & appears in _n_e_w, it is replaced with _o_l_d. A sin- - gle backslash quotes 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. If _n_e_w is - null, each matching _o_l_d is deleted. - && 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. An aa may be used as a synonym for gg. - GG Apply the following "ss" or "&&" modifier once to each word in the - event line. + hh Remove a trailing pathname component, leaving only the head. + tt Remove all leading pathname 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 substitutions. + xx Quote the substituted words as with qq, but break into words at + bbllaannkkss and newlines. The qq and xx modifiers are mutually exclusive; + expansion uses the last one supplied. + ss//_o_l_d//_n_e_w// + Substitute _n_e_w for the first occurrence of _o_l_d in the event line. + Any character may be used as the delimiter in place of /. The final + delimiter is optional if it is the last character of the event line. + A single backslash quotes the delimiter in _o_l_d and _n_e_w. If & ap- + pears in _n_e_w, it is replaced with _o_l_d. A single backslash quotes + 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. If _n_e_w is null, each matching _o_l_d is + deleted. + && 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 fi- + nal delimiter is optional if it is the last character of the event + line. An aa may be used as a synonym for gg. + GG Apply the following "ss" or "&&" modifier once to each word in 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. The ::, ttrruuee, ffaallssee, and tteesstt/[[ builtins do not accept options - and do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonn-- - ttiinnuuee, lleett, and sshhiifftt builtins accept and process arguments beginning - with -- without requiring ----. Other builtins that accept arguments but - are not specified as accepting options interpret arguments beginning - with -- as invalid options and require ---- to prevent this interpreta- - tion. - - All builtins except ::, ttrruuee, ffaallssee, eecchhoo, and tteesstt/[[ accept ----hheellpp as a - special option. If ----hheellpp is supplied, these builtins output a help - message and exit with a status of 0. - - :: [_a_r_g_u_m_e_n_t_s] - No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s - and performing any specified redirections. The return status is - zero. - - .. [--pp _p_a_t_h] _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - ssoouurrccee [--pp _p_a_t_h] _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] - The .. command (ssoouurrccee) reads and execute commands from _f_i_l_e_n_a_m_e - in the current shell environment and returns 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, .. searches for it. If the - --pp option is supplied, .. treats _p_a_t_h as a colon-separated list - of directories in which to find _f_i_l_e_n_a_m_e; otherwise, .. uses the - entries in PPAATTHH to find the directory containing _f_i_l_e_n_a_m_e. - _f_i_l_e_n_a_m_e does not need to be executable. When bbaasshh is not in - posix mode, it searches the current directory if _f_i_l_e_n_a_m_e is not - found in PPAATTHH, but does not search the current directory if --pp - is supplied. If the ssoouurrcceeppaatthh option to the sshhoopptt builtin com- - mand is turned off, .. does not search PPAATTHH. - - If any _a_r_g_u_m_e_n_t_s are supplied, they become the positional para- - meters when _f_i_l_e_n_a_m_e is executed. Otherwise the positional pa- - rameters are unchanged. - - If the --TT option is enabled, .. inherits any trap on DDEEBBUUGG; if it - is not, any DDEEBBUUGG trap string is saved and restored around the - call to .., and .. unsets the DDEEBBUUGG trap while it executes. If --TT - is not set, and the sourced file changes the DDEEBBUUGG trap, the new - value persists after .. completes. The return status is the sta- - tus of the last command executed from _f_i_l_e_n_a_m_e (0 if no commands - are executed), and non-zero 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] ...] - With no arguments or with the --pp option, aalliiaass 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, define an alias 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 - during command parsing. For each _n_a_m_e in the argument list for - which no _v_a_l_u_e is supplied, print the name and value of the - alias _n_a_m_e. aalliiaass returns true unless a _n_a_m_e is given (without - a corresponding =_v_a_l_u_e) for which no alias has been defined. - - bbgg [_j_o_b_s_p_e_c ...] - Resume each 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 - uses its notion of the _c_u_r_r_e_n_t _j_o_b. bbgg _j_o_b_s_p_e_c returns 0 unless - run when job control is disabled or, when run with job control - enabled, any specified _j_o_b_s_p_e_c was not found or was started - without job control. - - bbiinndd [--mm _k_e_y_m_a_p] [--llssvvSSVVXX] - 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] --xx _k_e_y_s_e_q[:] _s_h_e_l_l_-_c_o_m_m_a_n_d - 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 - bbiinndd [--mm _k_e_y_m_a_p] --pp|--PP [_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d] - bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d - bbiinndd _r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d_-_l_i_n_e - Display current rreeaaddlliinnee key and function bindings, bind a key - sequence to a rreeaaddlliinnee function or macro or to a shell command, - or set a rreeaaddlliinnee variable. Each non-option argument is a key - binding or command as it would appear in a rreeaaddlliinnee initializa- - tion file such as _._i_n_p_u_t_r_c, but each binding or command must be - passed as a separate argument; e.g., '"\C-x\C-r": - re-read-init-file'. In the following descriptions, output - available to be re-read is formatted as commands that would ap- - pear in a rreeaaddlliinnee initialization file or that would be supplied - as individual arguments to a bbiinndd command. Options, if sup- - plied, 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_-_m_o_v_e_, _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 (_v_i_-_m_o_v_e - is also a synonym); _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 used as an argument to a subsequent - bbiinndd command or in a rreeaaddlliinnee initialization file. If - arguments remain after option processing, bbiinndd treats - them as rreeaaddlliinnee command names and restricts output to - those names. - --PP List current rreeaaddlliinnee function names and bindings. If - arguments remain after option processing, bbiinndd treats - them as rreeaaddlliinnee command names and restricts output to - those names. - --ss Display rreeaaddlliinnee key sequences bound to macros and the - strings they output in such a way that they can be used - as an argument to a subsequent bbiinndd command or in a rreeaadd-- - lliinnee initialization file. - --SS Display rreeaaddlliinnee key sequences bound to macros and the - strings they output. - --vv Display rreeaaddlliinnee variable names and values in such a way - that they can be used as an argument to a subsequent bbiinndd - command or in a rreeaaddlliinnee initialization file. - --VV List current rreeaaddlliinnee variable names and values. - --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 - Display key sequences that invoke the named rreeaaddlliinnee - _f_u_n_c_t_i_o_n. - --uu _f_u_n_c_t_i_o_n - Unbind all key sequences bound to the named rreeaaddlliinnee - _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. - --xx _k_e_y_s_e_q[[:: ]]_s_h_e_l_l_-_c_o_m_m_a_n_d - Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is en- - tered. The separator between _k_e_y_s_e_q and _s_h_e_l_l_-_c_o_m_m_a_n_d is - either whitespace or a colon optionally followed by - whitespace. If the separator is whitespace, _s_h_e_l_l_-_c_o_m_- - _m_a_n_d must be enclosed in double quotes and rreeaaddlliinnee ex- - pands any of its special backslash-escapes in _s_h_e_l_l_-_c_o_m_- - _m_a_n_d before saving it. If the separator is a colon, any - enclosing double quotes are optional, and rreeaaddlliinnee does - not expand the command string before saving it. Since - the entire key binding expression must be a single argu- - ment, it should be enclosed in single quotes. When - _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets the RREEAADD-- - LLIINNEE__LLIINNEE variable to the contents of the rreeaaddlliinnee line - buffer and the RREEAADDLLIINNEE__PPOOIINNTT and RREEAADDLLIINNEE__MMAARRKK variables - to the current location of the insertion point and the - saved insertion point (the mark), respectively. The - shell assigns any numeric argument the user supplied to - the RREEAADDLLIINNEE__AARRGGUUMMEENNTT variable. If there was no argu- - ment, that variable is not set. If the executed command - changes the value of any of RREEAADDLLIINNEE__LLIINNEE, RREEAADD-- - LLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new values will be - reflected in the editing state. - --XX List all key sequences bound to shell commands and the - associated commands in a format that can be reused as an - argument to a subsequent bbiinndd command. - - The return value is 0 unless an unrecognized option is supplied - or an error occurred. - - bbrreeaakk [_n] - Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is - specified, bbrreeaakk exits _n enclosing loops. _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 _n is not greater - than or equal to 1. - - 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 _s_h_e_l_l_-_b_u_i_l_t_i_n, 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 functionality of the builtin within the function. - The ccdd builtin is commonly redefined this way. The return sta- - tus is false if _s_h_e_l_l_-_b_u_i_l_t_i_n is not a shell builtin command. - - ccaalllleerr [_e_x_p_r] - Returns the context of any active subroutine call (a shell func- - tion or a script executed with the .. or ssoouurrccee builtins). - - Without _e_x_p_r, ccaalllleerr displays the line number and source file- - name of the current subroutine call. If a non-negative integer - is supplied as _e_x_p_r, ccaalllleerr displays the line number, subroutine - name, and source file corresponding to that position in the cur- - rent execution call stack. This extra information may be used, - for example, to print a stack trace. The current frame is frame - 0. - - The return value is 0 unless the shell is not executing a sub- - routine call or _e_x_p_r does not correspond to a valid position in - the call stack. - - ccdd [--LL] [--@@] [_d_i_r] - ccdd --PP [--ee] [--@@] [_d_i_r] - Change the current directory to _d_i_r. if _d_i_r is not supplied, - the value of the HHOOMMEE shell variable is used as _d_i_r. If _d_i_r is - the empty string, ccdd treats it as an error. The variable CCDDPPAATTHH - exists, and _d_i_r does not begin with a slash (/), ccdd uses it as a - search path: the shell searches each directory name in CCDDPPAATTHH - for _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., ".". - - The --PP option causes ccdd to use the physical directory structure - by resolving symbolic links while traversing _d_i_r and before pro- - cessing instances of _._. in _d_i_r (see also the --PP option to the - sseett builtin command). - - The --LL option forces ccdd to follow symbolic links by resolving - the link after processing instances of _._. in _d_i_r. If _._. appears - in _d_i_r, ccdd processes it by removing the immediately previous - pathname component from _d_i_r, back to a slash or the beginning of - _d_i_r, and verifying that the portion of _d_i_r it has processed to - that point is still a valid directory name after removing the - pathname component. If it is not a valid directory name, ccdd re- - turns a non-zero status. If neither --LL nor --PP is supplied, ccdd - behaves as if --LL had been supplied. - - If the --ee option is supplied with --PP, and ccdd cannot successfully - determine the current working directory after a successful di- - rectory change, it returns a non-zero status. - - On systems that support it, the --@@ option presents the extended - attributes associated with a file as a directory. - - An argument of -- is converted to $$OOLLDDPPWWDD before attempting the - directory change. - - If ccdd uses a non-empty directory name from CCDDPPAATTHH, or if -- is - the first argument, and the directory change is successful, ccdd - writes the absolute pathname of the new working directory to the - standard output. - - If the directory change is successful, ccdd sets the value of the - PPWWDD environment variable to the new directory name, and sets the - OOLLDDPPWWDD environment variable to the value of the current working - directory before the change. - - 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 ...] - The ccoommmmaanndd builtin runs _c_o_m_m_a_n_d with _a_r_g_s suppressing the nor- - mal shell function lookup for _c_o_m_m_a_n_d. Only builtin commands or - commands found in the PPAATTHH named _c_o_m_m_a_n_d are executed. If the - --pp option is supplied, 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, ccoommmmaanndd prints a de- - scription of _c_o_m_m_a_n_d. The --vv option displays a single word in- - dicating the command or filename used to invoke _c_o_m_m_a_n_d; the --VV - option produces a more verbose description. - - If the --VV or --vv option is supplied, the exit status is zero if - _c_o_m_m_a_n_d was found, and non-zero 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. - - ccoommppggeenn [--VV _v_a_r_n_a_m_e] [_o_p_t_i_o_n] [_w_o_r_d] - Generate possible completion matches for _w_o_r_d according to the - _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee - builtin with the exceptions of --pp, --rr, --DD, --EE, and --II, and write - the matches to the standard output. - - If the --VV option is supplied, ccoommppggeenn stores the generated com- - pletions into the indexed array variable _v_a_r_n_a_m_e instead of - writing them to the standard output. - - When using the --FF or --CC options, the various shell variables set - by the programmable completion facilities, while available, will - not have useful values. - - The matches will be generated in the same way as if the program- - mable completion code had generated them directly from a comple- - tion specification with the same flags. If _w_o_r_d is specified, - only those completions matching _w_o_r_d will be displayed or - stored. - - The return value is true unless an invalid option is supplied, - or no matches were generated. - - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] - [--GG _g_l_o_b_p_a_t] [--WW _w_o_r_d_l_i_s_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] - [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] _n_a_m_e [_n_a_m_e ...] - ccoommpplleettee --pprr [--DDEEII] [_n_a_m_e ...] - Specify how arguments to each _n_a_m_e should be completed. - - If the --pp option is supplied, or if no options or _n_a_m_es are sup- - plied, print existing completion specifications in a way that - allows them to be reused as input. The --rr option removes a com- - pletion specification for each _n_a_m_e, or, if no _n_a_m_es are sup- - plied, all completion specifications. - - The --DD option indicates that other supplied options and actions - should apply to the "default" command completion; that is, com- - pletion attempted on a command for which no completion has pre- - viously been defined. The --EE option indicates that other sup- - plied options and actions should apply to "empty" command com- - pletion; that is, completion attempted on a blank line. The --II - option indicates that other supplied options and actions should - apply to completion on the initial non-assignment word on the - line, or after a command delimiter such as ;; or ||, which is usu- - ally command name completion. If multiple options are supplied, - the --DD option takes precedence over --EE, and both take precedence - over --II. If any of --DD, --EE, or --II are supplied, any other _n_a_m_e - arguments are ignored; these completions only apply to the case - specified by the option. - - The process of applying these completion specifications when at- - tempting word completion is described above under PPrrooggrraammmmaabbllee - CCoommpplleettiioonn. - - Other options, if specified, have the following meanings. The - arguments to the --GG, --WW, and --XX options (and, if necessary, the - --PP and --SS options) should be quoted to protect them from expan- - sion before the ccoommpplleettee builtin is invoked. - - --oo _c_o_m_p_-_o_p_t_i_o_n - The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- - spec's behavior beyond the simple generation of comple- - tions. _c_o_m_p_-_o_p_t_i_o_n may be one of: - bbaasshhddeeffaauulltt - Perform the rest of the default bbaasshh completions - if the compspec generates no matches. - ddeeffaauulltt Use rreeaaddlliinnee's default filename completion if - the compspec generates no matches. - ddiirrnnaammeess - Perform directory name completion if the comp- - spec generates no matches. - ffiilleennaammeess - Tell rreeaaddlliinnee that the compspec generates file- - names, so it can perform any filename-specific - processing (such as adding a slash to directory - names, quoting special characters, or suppress- - ing trailing spaces). This is intended to be - used with shell functions. - ffuullllqquuoottee - Tell rreeaaddlliinnee to quote all the completed words - even if they are not filenames. - nnooqquuoottee Tell rreeaaddlliinnee not to quote the completed words - if they are filenames (quoting filenames is the - default). - nnoossoorrtt Tell rreeaaddlliinnee not to sort the list of possible - completions alphabetically. - nnoossppaaccee Tell rreeaaddlliinnee not to append a space (the de- - fault) to words completed at the end of the - line. - pplluussddiirrss - After generating any matches defined by the - compspec, attempt directory name completion and - add any matches to the results of the other ac- - tions. - --AA _a_c_t_i_o_n - The _a_c_t_i_o_n may be one of the following to generate a - list of possible completions: - aalliiaass Alias names. May also be specified as --aa. - aarrrraayyvvaarr - Array variable names. - bbiinnddiinngg RReeaaddlliinnee key binding names. - bbuuiillttiinn Names of shell builtin commands. May also be - specified as --bb. - ccoommmmaanndd Command names. May also be specified as --cc. - ddiirreeccttoorryy - Directory names. May also be specified as --dd. - ddiissaabblleedd - Names of disabled shell builtins. - eennaabblleedd Names of enabled shell builtins. - eexxppoorrtt Names of exported shell variables. May also be - specified as --ee. - ffiillee File and directory names, similar to rreeaaddlliinnee's - filename completion. May also be specified as - --ff. - ffuunnccttiioonn - Names of shell functions. - ggrroouupp Group names. May also be specified as --gg. - hheellppttooppiicc - Help topics as accepted by the hheellpp builtin. - hhoossttnnaammee - Hostnames, as taken from the file specified by - the HHOOSSTTFFIILLEE shell variable. - jjoobb Job names, if job control is active. May also - be specified as --jj. - kkeeyywwoorrdd Shell reserved words. May also be specified as - --kk. - rruunnnniinngg Names of running jobs, if job control is active. - sseerrvviiccee Service names. May also be specified as --ss. - sseettoopptt Valid arguments for the --oo option to the sseett - builtin. - sshhoopptt Shell option names as accepted by the sshhoopptt - builtin. - ssiiggnnaall Signal names. - ssttooppppeedd Names of stopped jobs, if job control is active. - uusseerr User names. May also be specified as --uu. - vvaarriiaabbllee - Names of all shell variables. May also be spec- - ified as --vv. - --CC _c_o_m_m_a_n_d - _c_o_m_m_a_n_d is executed in a subshell environment, and its - output is used as the possible completions. Arguments - are passed as with the --FF option. - --FF _f_u_n_c_t_i_o_n - The shell function _f_u_n_c_t_i_o_n is executed in the current - shell environment. When the function is executed, the - first argument ($$11) is the name of the command whose ar- - guments are being completed, the second argument ($$22) is - the word being completed, and the third argument ($$33) is - the word preceding the word being completed on the cur- - rent command line. When _f_u_n_c_t_i_o_n finishes, programmable - completion retrieves the possible completions from the - value of the CCOOMMPPRREEPPLLYY array variable. - --GG _g_l_o_b_p_a_t - Expand the pathname expansion pattern _g_l_o_b_p_a_t to gener- - ate the possible completions. - --PP _p_r_e_f_i_x - Add _p_r_e_f_i_x to the beginning of each possible completion - after all other options have been applied. - --SS _s_u_f_f_i_x - Append _s_u_f_f_i_x to each possible completion after all - other options have been applied. - --WW _w_o_r_d_l_i_s_t - Split the _w_o_r_d_l_i_s_t using the characters in the IIFFSS spe- - cial variable as delimiters, and expand each resulting - word. Shell quoting is honored within _w_o_r_d_l_i_s_t, in or- - der to provide a mechanism for the words to contain - shell metacharacters or characters in the value of IIFFSS. - The possible completions are the members of the resul- - tant list which match a prefix of the word being com- - pleted. - --XX _f_i_l_t_e_r_p_a_t - _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. - It is applied to the list of possible completions gener- - ated by the preceding options and arguments, and each - completion matching _f_i_l_t_e_r_p_a_t is removed from the list. - A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this - case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. - - The return value is true unless an invalid option is supplied, - an option other than --pp, --rr, --DD, --EE, or --II is supplied without a - _n_a_m_e argument, an attempt is made to remove a completion speci- - fication for a _n_a_m_e for which no specification exists, or an er- - ror occurs adding a completion specification. - - ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e] - Modify completion options for each _n_a_m_e according to the _o_p_- - _t_i_o_ns, or for the currently-executing completion if no _n_a_m_es are - supplied. If no _o_p_t_i_o_ns are supplied, display the completion - options for each _n_a_m_e or the current completion. The possible - values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin de- - scribed above. - - The --DD option indicates that other supplied options should apply - to the "default" command completion; the --EE option indicates - that other supplied options should apply to "empty" command com- - pletion; and the --II option indicates that other supplied options - should apply to completion on the initial word on the line. - These are determined in the same way as the ccoommpplleettee builtin. - - If multiple options are supplied, the --DD option takes precedence - over --EE, and both take precedence over --II. - - The return value is true unless an invalid option is supplied, - an attempt is made to modify the options for a _n_a_m_e for which no - completion specification exists, or an output error occurs. - - ccoonnttiinnuuee [_n] - ccoonnttiinnuuee resumes the next iteration of the enclosing ffoorr, wwhhiillee, - uunnttiill, or sseelleecctt loop. If _n is specified, bbaasshh resumes the _nth - enclosing loop. _n must be >= 1. If _n is greater than the num- - ber of enclosing loops, the shell resumes the last enclosing - loop (the "top-level" loop). The return value is 0 unless _n is - not greater than or equal to 1. - - ddeeccllaarree [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] - ttyyppeesseett [--aaAAffFFggiiIIllnnrrttuuxx] [--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 variables or functions. The --pp - option will display the attributes and values of each _n_a_m_e. - When --pp is used with _n_a_m_e arguments, additional options, other - than --ff and --FF, are ignored. - - When --pp is supplied without _n_a_m_e arguments, ddeeccllaarree will display - the attributes and values of all variables having the attributes - specified by the additional options. If no other options are - supplied with --pp, ddeeccllaarree will display the attributes and values - of all shell variables. The --ff option restricts the display to - shell functions. - - The --FF option inhibits the display of function definitions; only - the function name and attributes are printed. If the eexxttddeebbuugg - shell option is enabled using sshhoopptt, the source file name and - line number where each _n_a_m_e is defined are displayed as well. - The --FF option implies --ff. - - The --gg option forces variables to be created or modified at the - global scope, even when ddeeccllaarree is executed in a shell function. - It is ignored when ddeeccllaarree is not executed in a shell function. - - The --II option causes local variables to inherit the attributes - (except the _n_a_m_e_r_e_f attribute) and value of any existing vari- - able with the same _n_a_m_e at a surrounding scope. If there is no - existing variable, the local variable is initially unset. - - The following options can be used to restrict output to vari- - ables with the specified attribute or to give variables attrib- - utes: - --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss - above). - --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss - above). - --ff Each _n_a_m_e refers to a shell function. - --ii The variable is treated as an integer; arithmetic evalua- - tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when - the variable is assigned a value. - --ll When the variable is assigned a value, all upper-case - characters are converted to lower-case. The upper-case - attribute is disabled. - --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name - reference to another variable. That other variable is - defined by the value of _n_a_m_e. All references, assign- - ments, and attribute modifications to _n_a_m_e, except those - using or changing the --nn attribute itself, are performed - on the variable referenced by _n_a_m_e's value. The nameref - attribute cannot be applied to array variables. - --rr Make _n_a_m_es readonly. These names cannot then be assigned - values by subsequent assignment statements or unset. - --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions in- - herit the DDEEBBUUGG and RREETTUURRNN traps from the calling shell. - The trace attribute has no special meaning for variables. - --uu When the variable is assigned a value, all lower-case - characters are converted to upper-case. The lower-case - attribute is disabled. - --xx Mark each _n_a_m_e for export to subsequent commands via the - environment. - - Using "+" instead of "-" turns off the specified attribute in- - stead, with the exceptions that ++aa and ++AA may not be used to de- - stroy array variables and ++rr will not remove the readonly at- - tribute. - - When used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e lo- - cal, as with the llooccaall command, unless the --gg option is sup- - plied. If a variable name is followed by =_v_a_l_u_e, the value of - the variable is set to _v_a_l_u_e. When using --aa or --AA and the com- - pound assignment syntax to create array variables, additional - attributes do not take effect until subsequent assignments. - - 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 at- - tempt is made to assign a value to an array variable without us- - ing 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 variable, or an - attempt is made to display a non-existent function with --ff. - - ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]] - Without options, display the list of currently remembered direc- - tories. 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. The current directory is always the first directory - in the stack. - - Options, if supplied, have the following meanings: - --cc Clears the directory stack by deleting all of the en- - tries. - --ll Produces a listing using full pathnames; the default - listing 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, pre- - fixing each entry with its index in the stack. - ++_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. - - The return value is 0 unless an invalid option is supplied or _n - indexes beyond the end of the directory stack. - - ddiissoowwnn [--aarr] [--hh] [_i_d ...] - Without options, remove each _i_d from the table of active jobs. - Each _i_d may be a job specification _j_o_b_s_p_e_c or a process ID _p_i_d; - if _i_d is a _p_i_d, ddiissoowwnn uses the job containing _p_i_d as _j_o_b_s_p_e_c. - - If the --hh option is supplied, ddiissoowwnn does not remove the jobs - corresponding to each _i_d from the jobs table, but rather marks - them so the shell does not send SSIIGGHHUUPP to the job if the shell - receives a SSIIGGHHUUPP. - - If no _i_d is supplied, the --aa option means to remove or mark all - jobs; the --rr option without an _i_d argument removes or marks run- - ning jobs. If no _i_d is supplied, and neither the --aa nor the --rr - option is supplied, ddiissoowwnn removes or marks the current job. - - The return value is 0 unless an _i_d 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 0 unless a write error occurs. If --nn is - specified, the trailing newline is not printed. - - If the --ee option is given, eecchhoo interprets the following back- - slash-escaped characters. The --EE option disables interpretation - of these escape characters, even on systems where they are in- - terpreted by default. The xxppgg__eecchhoo shell option determines - whether or not eecchhoo interprets any options and expands these es- - cape characters. eecchhoo does not interpret ---- to mean the end of - options. - - eecchhoo interprets the following escape sequences: - \\aa alert (bell) - \\bb backspace - \\cc suppress further output - \\ee - \\EE an escape character - \\ff form feed - \\nn new line - \\rr carriage return - \\tt horizontal tab - \\vv vertical tab - \\\\ backslash - \\00_n_n_n The eight-bit character whose value is the octal value - _n_n_n (zero to three octal digits). - \\xx_H_H The eight-bit character whose value is the hexadecimal - value _H_H (one or two hex digits). - \\uu_H_H_H_H The Unicode (ISO/IEC 10646) character whose value is the - hexadecimal value _H_H_H_H (one to four hex digits). - \\UU_H_H_H_H_H_H_H_H - The Unicode (ISO/IEC 10646) character whose value is the - hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits). - - eecchhoo writes any unrecognized backslash-escaped characters un- - changed. - - eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] - Enable and disable builtin shell commands. Disabling a builtin - allows an executable file which has the same name as a shell - builtin to be executed without specifying a full pathname, even - though the shell normally searches for builtins before files. - - If --nn is supplied, each _n_a_m_e is disabled; otherwise, _n_a_m_es are - enabled. For example, to use the tteesstt binary found using PPAATTHH - instead of the shell builtin version, run "enable -n test". - - If no _n_a_m_e arguments are supplied, or if the --pp option is sup- - plied, print a list of shell builtins. With no other option ar- - guments, the list consists of all enabled shell builtins. If --nn - is supplied, print only disabled builtins. If --aa is supplied, - the list printed includes all builtins, with an indication of - whether or not each is enabled. The --ss option means to restrict - the output to the POSIX _s_p_e_c_i_a_l builtins. - - The --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 support dynamic loading. - If _f_i_l_e_n_a_m_e does not contain a slash, BBaasshh will use the value of - the BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH variable as a colon-separated list of - directories in which to search for _f_i_l_e_n_a_m_e. The default for - BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH is system-dependent, and may include "." to - force a search of the current directory. The --dd option will - delete a builtin previously loaded with --ff. If --ss is used with - --ff, the new builtin becomes a POSIX special builtin. - - If no options are supplied and a _n_a_m_e is not a shell builtin, - eennaabbllee will attempt to load _n_a_m_e from a shared object named - _n_a_m_e, as if the command were "enable -f _n_a_m_e _n_a_m_e". - - The return value is 0 unless a _n_a_m_e is not a shell builtin or - there is an error loading a new builtin from a shared object. - - eevvaall [_a_r_g ...] - Concatenate the _a_r_gs together into a single command, separating - them with spaces. BBaasshh then reads and execute this command, and - returns its exit status as the return status 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 without creating - a new process. _c_o_m_m_a_n_d cannot be a shell builtin or function. - 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 supplied, the shell places a dash at the beginning of the ze- - roth argument 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 envi- - ronment. 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 eexxeeccffaaiill shell option is enabled. In - that case, it returns a non-zero status. An interactive shell - returns a non-zero status if the file cannot be executed. A - subshell exits unconditionally if eexxeecc fails. - - 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 redi- - rection 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. Any trap - on EEXXIITT is executed before the shell terminates. - - eexxppoorrtt [--ffnn] [_n_a_m_e[=_v_a_l_u_e]] ... - eexxppoorrtt --pp [[--ff]] - The supplied _n_a_m_e_s are marked for automatic export to the envi- - ronment of subsequently executed commands. If the --ff option is - given, the _n_a_m_e_s refer to functions. - - The --nn option unexports, or removes the export attribute, from - each _n_a_m_e. If no _n_a_m_e_s are given, or if only the --pp option is - supplied, eexxppoorrtt displays a list of names of all exported vari- - ables on the standard output. Using --pp and --ff together displays - exported functions. The --pp option displays output in a form - that may be reused as input. - - eexxppoorrtt allows the value of a variable to be set when it is ex- - ported or unexported by following the variable name with =_v_a_l_u_e. - This sets the value of the variable to _v_a_l_u_e while modifying the - export attribute. 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. - - ffaallssee Does nothing; returns a non-zero status. - - ffcc [--ee _e_n_a_m_e] [--DD] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] - ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] - The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t - from the history list and displays or edits and re-executes - them. _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 history list, where a negative number is used as - an offset from the current command number). - - When listing, a _f_i_r_s_t or _l_a_s_t of 0 is equivalent to -1 and -0 is - equivalent to the current command (usually the ffcc command); oth- - erwise 0 is equivalent to -1 and -0 is invalid. If _l_a_s_t is not - specified, it is set to the current command for listing (so that - "fc -l -10" 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. - - If the --ll option is supplied, the commands are listed on the - standard output. The --nn option suppresses the command numbers - when listing. The --rr option reverses the order of the commands. - - Otherwise, ffcc invokes the editor named by _e_n_a_m_e on a file con- - taining those commands. If _e_n_a_m_e is not supplied, ffcc uses the - value of the FFCCEEDDIITT variable, and the value of EEDDIITTOORR if FFCCEEDDIITT - is not set. If neither variable is set, ffcc uses _v_i_. When edit- - ing is complete, ffcc reads the file containing the edited com- - mands and echoes and executes them. The --DD option, if supplied, - causes ffcc to remove the selected commands from the history list - before executing the file of edited commands. --DD is only effec- - tive when ffcc is invoked in this way. - - In the second form, ffcc re-executes _c_o_m_m_a_n_d after replacing each - instance of _p_a_t with _r_e_p. _C_o_m_m_a_n_d is interpreted the same as - _f_i_r_s_t above. - - A useful alias to use with ffcc is "r="fc -s"", so that typing "r - cc" runs the last command beginning with "cc" and typing "r" re- - executes the last command. - - If the first form is used, the return value is zero unless an - invalid option is encountered or _f_i_r_s_t or _l_a_s_t specify history - lines out of range. When editing and re-executing a file of - commands, the return value is the value of the last command exe- - cuted or failure if an error occurs with the temporary file. If - the second form is used, the return status is that of the re-ex- - ecuted command, unless _c_m_d does not specify a valid history en- - try, in which case ffcc returns a non-zero status. - - 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, ffgg uses the shell's notion of the - _c_u_r_r_e_n_t _j_o_b. The return value is that of the command placed - into the foreground, or failure if run when job control is dis- - abled 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 control. - - ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g ...] - ggeettooppttss is used by shell scripts and functions to parse posi- - tional parameters and obtain options and their arguments. _o_p_t_- - _s_t_r_i_n_g contains the option characters to be recognized; if a - character is followed by a colon, the option is expected to have - an argument, which should be separated from it by white space. - The colon and question mark characters may not be used as option - characters. - - 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 manu- - ally reset between multiple calls to ggeettooppttss within the same - shell invocation to use a new set of parameters. - - When it reaches the end of options, ggeettooppttss exits with a return - value greater than zero. OOPPTTIINNDD is set to the index of the - first non-option argument, and _n_a_m_e is set to ?. - - ggeettooppttss normally parses the positional parameters, but if more - arguments are supplied as _a_r_g values, ggeettooppttss parses those in- - stead. - - ggeettooppttss can report errors in two ways. If the first character - of _o_p_t_s_t_r_i_n_g is a colon, ggeettooppttss uses _s_i_l_e_n_t error reporting. - In normal operation, ggeettooppttss prints diagnostic messages when it - encounters invalid options or missing option arguments. If the - variable OOPPTTEERRRR is set to 0, ggeettooppttss does not display any error - messages, even if the first character of _o_p_t_s_t_r_i_n_g is not a - colon. - - If ggeettooppttss detects an invalid option, it places ? into _n_a_m_e and, - if not silent, prints an error message and unsets OOPPTTAARRGG. If - ggeettooppttss is silent, it assigns the option character found to OOPP-- - TTAARRGG and does not print a diagnostic message. - - If a required argument is not found, and ggeettooppttss is not silent, - it sets the value of _n_a_m_e to a question mark (??), unsets OOPPTTAARRGG, - and prints a diagnostic message. If ggeettooppttss is silent, it sets - the value of _n_a_m_e to a colon (::) and sets OOPPTTAARRGG 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 [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e] - Each time hhaasshh is invoked, it remembers the full pathname of the - command _n_a_m_e as determined by searching the directories in - $$PPAATTHH. Any previously-remembered pathname associated with _n_a_m_e - is discarded. If the --pp option is supplied, hhaasshh uses _f_i_l_e_n_a_m_e - as the full pathname of the command. - - The --rr option causes the shell to forget all remembered loca- - tions. Assigning to the PPAATTHH variable also clears all hashed - filenames. The --dd option causes the shell to forget the remem- - bered location of each _n_a_m_e. - - If the --tt option is supplied, hhaasshh prints the full pathname cor- - responding to each _n_a_m_e. If multiple _n_a_m_e arguments are sup- - plied with --tt, hhaasshh prints the _n_a_m_e before the corresponding - hashed full pathname. The --ll option displays output in a format - that may be reused as input. - - If no arguments are given, or if only --ll is supplied, hhaasshh - prints information about remembered commands. The --tt, --dd, and - --pp options (the options that act on the _n_a_m_e arguments) are mu- - tually exclusive. Only one will be active. If more than one is - supplied, --tt has higher priority than --pp, and both have higher - priority than --dd. - - The return status is zero unless a _n_a_m_e is not found or an in- - valid option is supplied. - - hheellpp [--ddmmss] [_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 as described below; otherwise it displays a list of all - the builtins and shell compound commands. - - Options, if supplied, have the follow meanings: - - --dd Display a short description of each _p_a_t_t_e_r_n - --mm Display the description of each _p_a_t_t_e_r_n in a manpage-like - format - --ss Display only a short usage synopsis for each _p_a_t_t_e_r_n - - If _p_a_t_t_e_r_n contains pattern matching characters (see PPaatttteerrnn - MMaattcchhiinngg above) it's treated as a shell pattern and hheellpp prints - the description of each help topic matching _p_a_t_t_e_r_n. - - If not, and _p_a_t_t_e_r_n exactly matches the name of a help topic, - hheellpp prints the description associated with that topic. Other- - wise, hheellpp performs prefix matching and prints the descriptions - of all matching help topics. - - The return status is 0 unless no command matches _p_a_t_t_e_r_n. - - hhiissttoorryy [[--HH]] [[_r_a_n_g_e]] - hhiissttoorryy --cc - hhiissttoorryy --dd _r_a_n_g_e - 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, or with the --HH option, display the portion of - the command history list specified by _r_a_n_g_e, as described below. - If _r_a_n_g_e is not specified, display the entire history list. - Without --HH, display the list with command numbers, prefixing en- - tries that have been modified with a "*". - - A _r_a_n_g_e argument is specified in the form of a number _o_f_f_s_e_t or - a range _s_t_a_r_t-_e_n_d. If _o_f_f_s_e_t is supplied, it references the - history entry at position _o_f_f_s_e_t in the history list; when list- - ing this displays the last _o_f_f_s_e_t entries. A negative _o_f_f_s_e_t - counts back from the end of the history list, relative to one - greater than the last history position. When listing, negative - and positive _o_f_f_s_e_t_s have identical results. _s_t_a_r_t and _e_n_d, if - supplied, reference the portion of the history list beginning at - position _s_t_a_r_t through position _e_n_d. If _s_t_a_r_t or _e_n_d are nega- - tive, they count back from the end of the history list. When - listing, if _s_t_a_r_t is greater than _e_n_d, the history entries are - displayed in reverse order from _e_n_d to _s_t_a_r_t. - - If the shell variable HHIISSTTTTIIMMEEFFOORRMMAATT is set and not null, it is - used as a format string for _s_t_r_f_t_i_m_e(3) to display the time - stamp associated with each displayed history entry. If hhiissttoorryy - uses HHIISSTTTTIIMMEEFFOORRMMAATT, it does not print an intervening space be- - tween the formatted time stamp and the history entry. - - If _f_i_l_e_n_a_m_e is supplied, hhiissttoorryy uses it as the name of the his- - tory file; if not, it uses the value of HHIISSTTFFIILLEE. If _f_i_l_e_n_a_m_e - is not supplied and HHIISSTTFFIILLEE is unset or null, the --aa,, --nn,, --rr,, - and --ww options have no effect. - - Options, if supplied, have the following meanings: - --cc Clear the history list by deleting all the entries. This - can be used with the other options to replace the history - list. - --dd _r_a_n_g_e - Delete the history entries specified by _r_a_n_g_e, as de- - scribed above. An index of -1 refers to the current hhiiss-- - ttoorryy --dd command. - --HH Display the selected history entries in the format that - would be written to the history file, including any time - stamp information as described below, without prefixing - the entry with any line number or "*". - --aa Append the "new" history lines to the history file. - These are history lines entered since the beginning of - the current bbaasshh session, but not already appended to the - history file. - --nn Read the history lines not already read from the history - file and add them to the current history list. These are - lines appended to the history file since the beginning of - the current bbaasshh session. - --rr Read the history file and append its contents to the cur- - rent history list. - --ww Write the current history list to the history file, over- - writing the history file. - --pp Perform history substitution on the following _a_r_g_s and - display the result on the standard output, without stor- - ing 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 single entry. - The last command in the history list is removed before - adding the _a_r_g_s. - - If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, hhiissttoorryy writes the time - stamp information associated with each history entry to the his- - tory file, marked with the history comment character as de- - scribed above. When the history file is read, lines beginning - with the history comment character followed immediately by a - digit are interpreted as timestamps for the following history - entry. - - The return value is 0 unless an invalid option is encountered, - an error occurs while reading or writing the history file, an - invalid _o_f_f_s_e_t or range is supplied as an argument to --dd, or the - history expansion supplied as an argument to --pp fails. - - 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 fol- - lowing meanings: - --ll List process IDs in addition to the normal information. - --nn Display information only about jobs that have changed - status since the user was last notified of their status. - --pp List only the process ID of the job's process group - leader. - --rr Display only running jobs. - --ss Display only stopped jobs. - - If _j_o_b_s_p_e_c is supplied, jjoobbss restricts output to information - 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 corresponding process group ID, and ex- - ecutes _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] _i_d [ ... ] - kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] - Send the signal specified by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes - named by each _i_d. Each _i_d may be a job specification _j_o_b_s_p_e_c or - a process ID _p_i_d. _s_i_g_s_p_e_c is either a case-insensitive signal - name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or a sig- - nal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not sup- - plied, then kkiillll sends SSIIGGTTEERRMM. - - The --ll option lists the signal names. If any arguments are sup- - plied when --ll is given, kkiillll lists the names of the signals cor- - responding to the arguments, 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 sig- - nal number or the exit status of a process terminated by a sig- - nal; if it is supplied, kkiillll prints the name of the signal that - caused the process to terminate. kkiillll assumes that process exit - statuses are greater than 128; anything less than that is a sig- - nal number. The --LL option is equivalent to --ll. - - kkiillll returns true if at least one signal was successfully 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 evaluated as an arithmetic expression (see AARRIITTHH-- - MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett - returns 1; otherwise lleett returns 0. - - llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ... | - ] - For each argument, create a local variable named _n_a_m_e and assign - it _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted by ddee-- - ccllaarree. When llooccaall is used within a function, it causes the - variable _n_a_m_e to have a visible scope restricted to that func- - tion and its children. It is an error to use llooccaall when not - within a function. - - If _n_a_m_e is -, it makes the set of shell options local to the - function in which llooccaall is invoked: any shell options changed - using the sseett builtin inside the function after the call to lloo-- - ccaall are restored to their original values when the function re- - turns. The restore is performed as if a series of sseett commands - were executed to restore the values that were in place before - the function. - - With no operands, llooccaall writes a list of local variables to the - standard output. - - The return status is 0 unless llooccaall is used outside a function, - an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly variable. - - llooggoouutt [[_n]] - Exit a login shell, returning a status of _n to the shell's par- - ent. - - mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC - _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] - rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC - _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] - Read lines from the standard input, or from file descriptor _f_d - if the --uu option is supplied, into the indexed array variable - _a_r_r_a_y. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if - supplied, have the following meanings: - --dd Use the first character of _d_e_l_i_m to terminate each input - line, rather than newline. If _d_e_l_i_m is the empty string, - mmaappffiillee will terminate a line when it reads a NUL charac- - ter. - --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, copy all lines. - --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default - index is 0. - --ss Discard the first _c_o_u_n_t lines read. - --tt Remove a trailing _d_e_l_i_m (default newline) from each line - read. - --uu Read lines from file descriptor _f_d instead of the stan- - dard input. - --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The - --cc option specifies _q_u_a_n_t_u_m. - --cc Specify the number of lines read between each call to - _c_a_l_l_b_a_c_k. - - If --CC is specified without --cc, the default quantum is 5000. - When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next - array element to be assigned and the line to be assigned to that - element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after - the line is read but before the array element is assigned. - - If not supplied with an explicit origin, mmaappffiillee will clear _a_r_- - _r_a_y before assigning to it. - - mmaappffiillee returns zero unless an invalid option or option argument - is supplied, _a_r_r_a_y is invalid or unassignable, or if _a_r_r_a_y is - not an indexed array. - - ppooppdd [-nn] [+_n] [-_n] - Remove entries from the directory stack. The elements are num- - bered from 0 starting at the first directory listed by ddiirrss, so - ppooppdd is equivalent to "popd +0." With no arguments, ppooppdd re- - moves the top directory from the stack, and changes to the new - top directory. Arguments, if supplied, have the following mean- - ings: - --nn Suppress the normal change of directory when removing di- - rectories from the stack, only manipulate the stack. - ++_n Remove the _nth entry counting from the left of the list - shown by ddiirrss, starting with zero, from the stack. For - example: "popd +0" removes the first directory, "popd +1" - the second. - --_n Remove 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. - - If the top element of the directory stack is modified, and the - --nn option was not supplied, ppooppdd uses the ccdd builtin to change - to the directory at the top of the stack. If the ccdd fails, ppooppdd - returns a non-zero value. - - Otherwise, ppooppdd returns false if an invalid option is supplied, - the directory stack is empty, or _n specifies a non-existent di- - rectory stack entry. - - If the ppooppdd command is successful, bbaasshh runs ddiirrss to show the - final contents of the directory stack, and the return status is - 0. - - pprriinnttff [--vv _v_a_r] _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 output under the - control of the _f_o_r_m_a_t. The --vv option assigns the output to the - variable _v_a_r rather than printing it to the standard output. - - 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 output, 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(3) format characters ccCCssSS-- - nnddiioouuxxXXeeEEffFFggGGaaAA, pprriinnttff interprets the following additional for- - mat specifiers: - %%bb causes pprriinnttff to expand backslash escape sequences in the - corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. - %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a - format that can be reused as shell input. %%qq and %%QQ use - the $$'''' quoting style if any characters in the argument - string require it, and backslash quoting otherwise. If - the format string uses the _p_r_i_n_t_f alternate form, these - two formats quote the argument string using single - quotes. - %%QQ like %%qq, but applies any supplied precision to the _a_r_g_u_- - _m_e_n_t before quoting it. - %%((_d_a_t_e_f_m_t))TT - causes pprriinnttff to output the date-time string resulting - from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). - The corresponding _a_r_g_u_m_e_n_t is an integer representing the - number of seconds since the epoch. This format specifier - recognizes two special argument values: -1 represents the - current time, and -2 represents the time the shell was - invoked. If no argument is specified, conversion behaves - as if -1 had been supplied. This is an exception to the - usual pprriinnttff behavior. - - The %b, %q, and %T format specifiers all use the field width and - precision arguments from the format specification and write that - many bytes from (or use that wide a field for) the expanded ar- - gument, which usually contains more characters than the origi- - nal. - - The %n format specifier accepts a corresponding argument that is - treated as a shell variable name. - - The %s and %c format specifiers accept an l (long) modifier, - which forces them to convert the argument string to a wide-char- - acter string and apply any supplied field width and precision in - terms of characters, not bytes. The %S and %C format specifiers - are equivalent to %ls and %lc, respectively. - - Arguments to non-string format specifiers are treated as C con- - stants, except that a leading plus or minus sign is allowed, and - if the leading character is a single or double quote, the value - is the numeric value of the following character, using the cur- - rent locale. - - Format specifiers may apply to the _nth argument rather than the - next sequential argument. In this case, the '%' in the format - specifier is replaced by the sequence "%_n$", where _n is a deci- - mal integer greater than 0, giving the argument number to use as - the operand. The format string should not mix numbered and un- - numbered argument specifiers, though this is allowed. Unnum- - bered argument specifiers always refer to the next argument fol- - lowing the last argument consumed by an unnumbered specifier; - numbered argument specifiers refer to absolute positions in the - argument list. - - 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 specifications behave as if a zero value or - null string, as appropriate, had been supplied. If _f_o_r_m_a_t is - reused, a numbered argument specifier "%_n$" refers to the _nth - argument following the highest numbered argument consumed by the - previous use of _f_o_r_m_a_t. - - The return value is zero on success, non-zero if an invalid op- - tion is supplied or a write or assignment error occurs. - - ppuusshhdd [--nn] [+_n] [-_n] - ppuusshhdd [--nn] [_d_i_r] - Add a directory to the top of the directory stack, or rotate the - stack, making the new top of the stack the current working di- - rectory. With no arguments, ppuusshhdd exchanges the top two ele- - ments of the directory stack. Arguments, if supplied, have the - following meanings: - --nn Suppress the normal change of directory when rotating or - adding directories to the stack, only manipulate the - stack. - ++_n Rotate 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. - _d_i_r Adds _d_i_r to the directory stack at the top. - - After the stack has been modified, if the --nn option was not sup- - plied, ppuusshhdd uses the ccdd builtin to change to the directory at - the top of the stack. If the ccdd fails, ppuusshhdd returns a non-zero - value. - - Otherwise, if no arguments are supplied, ppuusshhdd returns zero un- - less the directory stack is empty. When rotating the directory - stack, ppuusshhdd returns zero unless the directory stack is empty or - _n specifies a non-existent directory stack element. - - If the ppuusshhdd command is successful, bbaasshh runs ddiirrss to show the - final contents of the directory stack. - - ppwwdd [--LLPP] - Print the absolute pathname of the current working directory. - The pathname printed contains no symbolic 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, the pathname printed may - contain symbolic links. The return status is 0 unless an error - occurs while reading the name of the current directory or an in- - valid option is supplied. - - rreeaadd [--EEeerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] - [--pp _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] - Read one line from the standard input, or from the file descrip- - tor _f_d supplied as an argument to the --uu option, split it into - words as described above under WWoorrdd SSpplliittttiinngg, and assign the - first word to the first _n_a_m_e, the second word to the second - _n_a_m_e, and so on. If there are more words than names, the re- - maining words and their intervening delimiters are assigned to - the last _n_a_m_e. If there are fewer words read from the input - stream than names, the remaining names are assigned empty val- - ues. The characters in the value of the IIFFSS variable are used - to split the line into words using the same rules the shell uses - for expansion (described above under WWoorrdd SSpplliittttiinngg). The back- - slash character (\\) removes any special meaning for the next - character read and is used for line continuation. - - Options, if supplied, have the following meanings: - --aa _a_n_a_m_e - 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 ig- - nored. - --dd _d_e_l_i_m - The first character of _d_e_l_i_m terminates the input line, - rather than newline. If _d_e_l_i_m is the empty string, rreeaadd - will terminate a line when it reads a NUL character. - --ee If the standard input is coming from a terminal, rreeaadd - uses rreeaaddlliinnee (see RREEAADDLLIINNEE above) to obtain the line. - RReeaaddlliinnee uses the current (or default, if line editing - was not previously active) editing settings, but uses - rreeaaddlliinnee's default filename completion. - --EE If the standard input is coming from a terminal, rreeaadd - uses rreeaaddlliinnee (see RREEAADDLLIINNEE above) to obtain the line. - RReeaaddlliinnee uses the current (or default, if line editing - was not previously active) editing settings, but uses - bash's default completion, including programmable comple- - tion. - --ii _t_e_x_t - If rreeaaddlliinnee is being used to read the line, rreeaadd places - _t_e_x_t into the editing buffer before editing begins. - --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than - waiting for a complete line of input, unless it encoun- - ters EOF or rreeaadd times out, but honors a delimiter if it - reads fewer than _n_c_h_a_r_s characters before the delimiter. - --NN _n_c_h_a_r_s - rreeaadd returns after reading exactly _n_c_h_a_r_s characters - rather than waiting for a complete line of input, unless - it encounters EOF or rreeaadd times out. Any delimiter char- - acters in the input are not treated specially and do not - cause rreeaadd to return until it has read _n_c_h_a_r_s characters. - The result is not split on the characters in IIFFSS; the in- - tent is that the variable is assigned exactly the charac- - ters read (with the exception of backslash; see the --rr - option below). - --pp _p_r_o_m_p_t - Display _p_r_o_m_p_t on standard error, without a trailing new- - line, before attempting to read any input, but only if - input is coming from a terminal. - --rr Backslash does not act as an escape character. The back- - slash is considered to be part of the line. In particu- - lar, a backslash-newline pair may not then be used as a - line continuation. - --ss Silent mode. If input is coming from a terminal, charac- - ters are not echoed. - --tt _t_i_m_e_o_u_t - Cause rreeaadd to time out and return failure if it does not - read a complete line of input (or a specified number of - characters) within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a - decimal number with a fractional portion following the - decimal point. This option is only effective if rreeaadd is - reading input from a terminal, pipe, or other special - file; it has no effect when reading from regular files. - If rreeaadd times out, it saves any partial input read into - the specified variable _n_a_m_e, and the exit status is - greater than 128. If _t_i_m_e_o_u_t is 0, rreeaadd returns immedi- - ately, without trying to read any data. In this case, - the exit status is 0 if input is available on the speci- - fied file descriptor, or the read will return EOF, non- - zero otherwise. - --uu _f_d Read input from file descriptor _f_d instead of the stan- - dard input. - - Other than the case where _d_e_l_i_m is the empty string, rreeaadd ig- - nores any NUL characters in the input. - - If no _n_a_m_e_s are supplied, rreeaadd assigns the line read, without - the ending delimiter but otherwise unmodified, to the variable - RREEPPLLYY. - - The exit status is zero, unless end-of-file is encountered, rreeaadd - times out (in which case the status is greater than 128), a - variable assignment error (such as assigning to a readonly vari- - able) occurs, or an invalid file descriptor is supplied as the - argument to --uu. - - rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] - 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 or unset. If the --ff - option is supplied, each _n_a_m_e refers to a shell function. The - --aa option restricts the variables to indexed arrays; the --AA op- - tion restricts the variables to associative arrays. If both op- - tions are supplied, --AA takes precedence. If no _n_a_m_e arguments - are supplied, or if the --pp option is supplied, print a list of - all readonly names. The other options may be used to restrict - the output to a subset of the set of readonly names. The --pp op- - tion displays output in a format that may be reused as input. - - rreeaaddoonnllyy allows the value of a variable to be set at the same - time the readonly attribute is changed by following the variable - name with =_v_a_l_u_e. This sets the value of the variable is to - _v_a_l_u_e while modifying the readonly attribute. - - 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] - Stop executing a shell function or sourced file and return the - value specified by _n to its caller. If _n is omitted, the return - status is that of the last command executed. If rreettuurrnn is exe- - cuted by a trap handler, the last command used to determine the - status is the last command executed before the trap handler. If - rreettuurrnn is executed during a DDEEBBUUGG trap, the last command used to - determine the status is the last command executed by the trap - handler before rreettuurrnn was invoked. - - When rreettuurrnn is used to terminate execution of a script being ex- - ecuted 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 status - of the script. If _n is supplied, the return value is its least - significant 8 bits. - - Any command associated with the RREETTUURRNN trap is executed before - execution resumes after the function or script. - - The return status is non-zero if rreettuurrnn is supplied a non-nu- - meric argument, or is used outside a function and not during ex- - ecution of a script by .. or ssoouurrccee. - - sseett [--aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [----] [--] [_a_r_g ...] - sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [----] [--] [_a_r_g ...] - sseett --oo - sseett ++oo Without options, display the name and value of each shell vari- - able in a format that can be reused as input for setting or re- - setting the currently-set variables. Read-only variables cannot - be reset. In posix mode, only shell variables are listed. The - output is sorted according to the current locale. When options - are specified, they set or unset shell attributes. Any argu- - ments remaining after option processing are treated as values - for the positional parameters and are assigned, in order, to $$11, - $$22, ..., $$_n. Options, if specified, have the following mean- - ings: - --aa Each variable or function that is created or modified is - given the export attribute and marked for export to the - environment of subsequent commands. - --bb Report the status of terminated background jobs immedi- - ately, rather than before the next primary prompt or af- - ter a foreground command terminates. This is effective - only when job control is enabled. - --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a - single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _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 the command list immediately following a wwhhiillee - or uunnttiill reserved word, part of the test following the - iiff or eelliiff reserved words, part of any command executed - in a &&&& or |||| list except the command following the fi- - nal &&&& or ||||, any command in a pipeline but the last - (subject to the state of the ppiippeeffaaiill shell option), or - if the command's return value is being inverted with !!. - If a compound command other than a subshell returns a - non-zero status because a command failed while --ee was - being ignored, the shell does not exit. A trap on EERRRR, - if set, is executed before the shell exits. This option - applies to the shell environment and each subshell envi- - ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT - above), and may cause subshells to exit before executing - all the commands in the subshell. - - If a compound command or shell function executes in a - context where --ee is being ignored, none of the commands - executed within the compound command or function body - will be affected by the --ee setting, even if --ee is set - and a command returns a failure status. If a compound - command or shell function sets --ee while executing in a - context where --ee is ignored, that setting will not have - any effect until the compound command or the command - containing the function call completes. - --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 interactive shells on systems that - support it (see JJOOBB CCOONNTTRROOLL above). All processes run - in a separate process group. When a background job com- - pletes, the shell prints a line containing its exit sta- - tus. - --nn Read commands but do not execute them. This may be used - to check a shell script for syntax errors. This is ig- - nored 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 following: - aalllleexxppoorrtt - Same as --aa. - bbrraacceeeexxppaanndd - Same as --BB. - eemmaaccss Use an emacs-style command line editing inter- - face. This is enabled by default when the shell - is interactive, unless the shell is started with - the ----nnooeeddiittiinngg option. This also affects the - editing interface used for rreeaadd --ee. - eerrrreexxiitt Same as --ee. - eerrrrttrraaccee - Same as --EE. - ffuunnccttrraaccee - Same as --TT. - hhaasshhaallll Same as --hh. - hhiisstteexxppaanndd - Same as --HH. - hhiissttoorryy Enable command history, as described above under - HHIISSTTOORRYY. This option is on by default in inter- - active shells. - iiggnnoorreeeeooff - The effect is as if the shell command - "IGNOREEOF=10" had been executed (see SShheellll - VVaarriiaabblleess above). - kkeeyywwoorrdd Same as --kk. - mmoonniittoorr Same as --mm. - nnoocclloobbbbeerr - Same as --CC. - nnooeexxeecc Same as --nn. - nnoogglloobb Same as --ff. - nnoolloogg Currently ignored. - nnoottiiffyy Same as --bb. - nnoouunnsseett Same as --uu. - oonneeccmmdd Same as --tt. - pphhyyssiiccaall - Same as --PP. - ppiippeeffaaiill - If set, the return value of a pipeline is the - value of the last (rightmost) command to exit - with a non-zero status, or zero if all commands - in the pipeline exit successfully. This option - is disabled by default. - ppoossiixx Enable posix mode; change the behavior of bbaasshh - where the default operation differs from the - POSIX standard to match the standard. See SSEEEE - AALLSSOO below for a reference to a document that - details how posix mode affects bash's behavior. - pprriivviilleeggeedd - Same as --pp. - vveerrbboossee Same as --vv. - vvii Use a vi-style command line editing interface. - This also affects the editing interface used for - rreeaadd --ee. - xxttrraaccee Same as --xx. - If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, sseett prints the - current shell option settings. If ++oo is supplied with - no _o_p_t_i_o_n_-_n_a_m_e, sseett prints a series of sseett commands to - recreate the current option settings on the standard - output. - --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the shell does - not read the $$EENNVV and $$BBAASSHH__EENNVV files, does not inherit - shell functions from the environment, and ignores the - SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, - if they appear in the environment. If the shell is - started with the effective user (group) id not equal to - the real user (group) id, and the --pp option is not sup- - plied, these actions are taken and the effective user id - is set to the real user id (see IINNVVOOCCAATTIIOONN above for - more details). If the --pp option is supplied at startup, - the effective user id is not reset. Turning this option - off causes the effective user and group ids to be set to - the real user and group ids. - --rr Enable restricted shell mode. This option cannot be un- - set once it has been set. - --tt Exit after reading and executing one command. - --uu Treat unset variables and parameters other than the spe- - cial parameters "@" and "*", or array variables sub- - scripted with "@" or "*", as an error when performing - parameter expansion. If expansion is attempted on an - unset variable or parameter, 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. - --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee - command, sseelleecctt command, or arithmetic ffoorr command, dis- - play the expanded value of PPSS44, followed by the command - and its expanded arguments or associated word list, to - the standard error. - --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. Using the - redirection operator >>|| instead of >> will override this - and force the creation of an output file. - --EE If set, any trap on EERRRR is inherited by shell functions, - command substitutions, and commands executed in a sub- - shell environment. The EERRRR trap is normally not inher- - ited in such cases. - --HH Enable !! style history substitution. This option is on - by default when the shell is interactive. - --PP If set, the shell does not resolve 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 logical - chain of directories when performing commands which - change the current directory. - --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by - shell functions, command substitutions, and commands ex- - ecuted in a subshell environment. The DDEEBBUUGG and RREETTUURRNN - traps are normally not inherited in such cases. - ---- If no arguments follow this option, unset the positional - parameters. Otherwise, set the positional parameters to - the _a_r_gs, even if some of them begin with a --. - -- Signal the end of options, and assign all remaining _a_r_gs - to the positional parameters. The --xx and --vv options are - turned off. If there are no _a_r_gs, the positional para- - meters remain unchanged. - - The options are off by default unless otherwise noted. Using + - rather than - causes these options to be turned off. The op- - tions can also be specified as arguments to an invocation of the - shell. The current set of options may be found in $$--. The re- - turn status is always zero unless an invalid option is encoun- - tered. - - sshhiifftt [_n] - Rename positional parameters from _n+1 ... to $$11 ........ Parameters - represented by the numbers $$## down to $$##-_n+1 are unset. _n must - be a non-negative 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 settings controlling optional shell behav- - ior. The settings can be either those listed below, or, if the - --oo option is used, those available with the --oo option to the sseett - builtin command. - - With no options, or with the --pp option, display a list of all - settable options, with an indication of whether or not each is - set; if any _o_p_t_n_a_m_e_s are supplied, the output is restricted to - those options. The --pp option displays output 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 multi- - ple _o_p_t_n_a_m_e arguments are supplied with --qq, the return - status is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero oth- - erwise. - --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 arguments, sshhoopptt - shows only those options which are set or unset, respectively. - Unless otherwise 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 op- - tions, 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: - - aarrrraayy__eexxppaanndd__oonnccee - If set, the shell suppresses multiple evaluation of as- - sociative and indexed array subscripts during arithmetic - expression evaluation, while executing builtins that can - perform variable assignments, and while executing - builtins that perform array dereferencing. - aassssoocc__eexxppaanndd__oonnccee - Deprecated; a synonym for aarrrraayy__eexxppaanndd__oonnccee. - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- - mand. This option is only used by interactive shells. - bbaasshh__ssoouurrccee__ffuullllppaatthh - If set, filenames added to the BBAASSHH__SSOOUURRCCEE array vari- - able are converted to full pathnames (see SShheellll VVaarrii-- - aabblleess above). - ccddaabbllee__vvaarrss - If set, an argument to the ccdd builtin command 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, the ccdd command attempts to correct minor errors - in the spelling of a directory component. Minor errors - include transposed characters, a missing character, and - one extra character. If ccdd corrects the directory name, - it prints the corrected filename, and the command pro- - ceeds. This option is only used by interactive shells. - cchheecckkhhaasshh - If set, bbaasshh checks that a command found in the hash ta- - ble exists before trying to execute it. If a hashed - command no longer exists, bbaasshh performs a normal path - search. - cchheecckkjjoobbss - If set, bbaasshh lists the status of any stopped and running - jobs before exiting an interactive shell. If any jobs - are running, bbaasshh defers the exit until a second exit is - attempted without an intervening command (see JJOOBB CCOONN-- - TTRROOLL above). The shell always postpones exiting if any - jobs are stopped. - cchheecckkwwiinnssiizzee - If set, bbaasshh checks the window size after each external - (non-builtin) command and, if necessary, updates the - values of LLIINNEESS and CCOOLLUUMMNNSS, using the file descriptor - associated with the standard error if it is a terminal. - This option is enabled by default. - ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple- - line command in the same history entry. This allows - easy re-editing of multi-line commands. This option is - enabled by default, but only has an effect if command - history is enabled, as described above under HHIISSTTOORRYY. - ccoommppaatt3311 - ccoommppaatt3322 - ccoommppaatt4400 - ccoommppaatt4411 - ccoommppaatt4422 - ccoommppaatt4433 - ccoommppaatt4444 - These control aspects of the shell's compatibility mode - (see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below). - ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. - If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that ex- - pand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in - versions through 4.2. - ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the rreeaaddlliinnee editing - buffer. If not set, bbaasshh attempts to preserve what the - user typed. - ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- - tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a "." in - the results of pathname expansion. The filenames _. and - _._. must always be matched explicitly, even if ddoottgglloobb is - set. - eexxeeccffaaiill - If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin. 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 interac- - tive shells. - eexxttddeebbuugg - If set at shell invocation, or in a shell startup file, - arrange to execute the debugger profile before the shell - starts, identical to the ----ddeebbuuggggeerr option. If set af- - ter invocation, behavior intended for use by debuggers - is enabled: - 11.. The --FF option to the ddeeccllaarree builtin displays the - source file name and line number corresponding to - each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and - not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), the shell - simulates a call to rreettuurrnn. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described - in their descriptions above). - 55.. Function tracing is enabled: command substitu- - tion, shell functions, and subshells invoked with - (( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps. - 66.. Error tracing is enabled: command substitution, - shell functions, and subshells invoked with (( - _c_o_m_m_a_n_d )) inherit the EERRRR trap. - eexxttgglloobb If set, enable the extended pattern matching features - described above under PPaatthhnnaammee EExxppaannssiioonn. - eexxttqquuoottee - If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed - within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double - quotes. This option is enabled by default. - ffaaiillgglloobb - If set, patterns which fail to match filenames during - pathname expansion result in an expansion error. - ffoorrccee__ffiiggnnoorree - If set, the suffixes specified by the FFIIGGNNOORREE shell - variable cause words to be ignored when performing word - completion even if the ignored words are the only possi- - ble completions. See SShheellll VVaarriiaabblleess above for a de- - scription of FFIIGGNNOORREE. This option is enabled by de- - fault. - gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- - parisons. That is, pattern matching does not take the - current locale's collating sequence into account, so bb - will not collate between AA and BB, and upper-case and - lower-case ASCII characters will collate together. - gglloobbsskkiippddoottss - If set, pathname expansion will never match the file- - names _. and _._., even if the pattern begins with a ".". - This option is enabled by default. - gglloobbssttaarr - If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, - only directories and subdirectories match. - ggnnuu__eerrrrffmmtt - If set, shell error messages are written in the standard - GNU error message format. - hhiissttaappppeenndd - If set, the history list is appended to the file named - by the value of the HHIISSTTFFIILLEE variable when the shell ex- - its, rather than overwriting the file. - hhiissttrreeeeddiitt - If set, and rreeaaddlliinnee is being used, the user is given - the opportunity to re-edit a failed history substitu- - tion. - hhiissttvveerriiffyy - If set, and rreeaaddlliinnee is being used, the results of his- - tory substitution are not immediately passed to the - shell parser. Instead, the resulting line is loaded - into the rreeaaddlliinnee editing buffer, allowing further modi- - fication. - hhoossttccoommpplleettee - If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE - above). This is enabled by default. - hhuuppoonneexxiitt - If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- - active login shell exits. - iinnhheerriitt__eerrrreexxiitt - If set, command substitution inherits the value of the - eerrrreexxiitt option, instead of unsetting it in the subshell - environment. This option is enabled when posix mode is - enabled. - iinntteerraaccttiivvee__ccoommmmeennttss - In an interactive shell, a word beginning with ## causes - that word and all remaining characters on that line to - be ignored, as in a non-interactive shell (see CCOOMMMMEENNTTSS - above). This option is enabled by default. - llaassttppiippee - If set, and job control is not active, the shell runs - the last command of a pipeline not executed in the back- - ground in the current shell environment. - lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line - commands are saved to the history with embedded newlines - rather than using semicolon separators where possible. - llooccaallvvaarr__iinnhheerriitt - If set, local variables inherit the value and attributes - of a variable of the same name that exists at a previous - scope before any new value is assigned. The nameref at- - tribute is not inherited. - llooccaallvvaarr__uunnsseett - If set, calling uunnsseett on local variables in previous - function scopes marks them so subsequent lookups find - them unset until that function returns. This is identi- - cal to the behavior of unsetting local variables at the - current function scope. - llooggiinn__sshheellll - The shell sets this option if it is started as a login - shell (see IINNVVOOCCAATTIIOONN above). The value may not be - changed. - mmaaiillwwaarrnn - If set, and a file that bbaasshh is checking for mail has - been accessed since the last time it was checked, bbaasshh - displays the message "The mail in _m_a_i_l_f_i_l_e has been - read". - nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn - If set, and rreeaaddlliinnee is being used, bbaasshh does not search - PPAATTHH for possible completions when completion is at- - tempted on an empty line. - nnooccaasseegglloobb - If set, bbaasshh matches filenames in a case-insensitive - fashion when performing pathname expansion (see PPaatthhnnaammee - EExxppaannssiioonn above). - nnooccaasseemmaattcchh - If set, bbaasshh matches patterns in a case-insensitive - fashion when performing matching while executing ccaassee or - [[[[ conditional commands, when performing pattern substi- - tution word expansions, or when filtering possible com- - pletions as part of programmable completion. - nnooeexxppaanndd__ttrraannssllaattiioonn - If set, bbaasshh encloses the translated results of $$""..."" - quoting in single quotes instead of double quotes. If - the string is not translated, this has no effect. - nnuullllgglloobb - If set, pathname expansion patterns which match no files - (see PPaatthhnnaammee EExxppaannssiioonn above) expand to nothing and are - removed, rather than expanding to themselves. - ppaattssuubb__rreeppllaacceemmeenntt - If set, bbaasshh expands occurrences of && in the replacement - string of pattern substitution to the text matched by - the pattern, as described under PPaarraammeetteerr EExxppaannssiioonn - above. This option is enabled by default. - pprrooggccoommpp - If set, enable the programmable completion facilities - (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn above). This option is en- - abled by default. - pprrooggccoommpp__aalliiaass - If set, and programmable completion is enabled, bbaasshh - treats a command name that doesn't have any completions - as a possible alias and attempts alias expansion. If it - has an alias, bbaasshh attempts programmable completion us- - ing the command word resulting from the expanded alias. - pprroommppttvvaarrss - If set, prompt strings undergo parameter expansion, com- - mand substitution, arithmetic expansion, and quote re- - moval after being expanded as described in PPRROOMMPPTTIINNGG - above. This option is enabled by default. - rreessttrriicctteedd__sshheellll - The shell sets this option if it is started in re- - stricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). The value - may not be changed. This is not reset when the startup - files are executed, allowing the startup files to dis- - cover whether or not a shell is restricted. - sshhiifftt__vveerrbboossee - If set, the sshhiifftt builtin prints an error message when - the shift count exceeds the number of positional parame- - ters. - ssoouurrcceeppaatthh - If set, the .. (ssoouurrccee) builtin uses the value of PPAATTHH to - find the directory containing the file supplied as an - argument when the --pp option is not supplied. This op- - tion is enabled by default. - vvaarrrreeddiirr__cclloossee - If set, the shell automatically closes file descriptors - assigned using the _{_v_a_r_n_a_m_e_} redirection syntax (see - RREEDDIIRREECCTTIIOONN above) instead of leaving them open when the - command completes. - xxppgg__eecchhoo - If set, the eecchhoo builtin expands backslash-escape se- - quences by default. If the ppoossiixx shell option is also - enabled, eecchhoo does not interpret any options. - - ssuussppeenndd [--ff] - Suspend the execution of this shell until it receives a SSIIGGCCOONNTT - signal. A login shell, or a shell without job control enabled, - cannot be suspended; the --ff option will override this and force - the suspension. The return status is 0 unless the shell is a - login shell or job control is not enabled and --ff is not sup- - plied. - - tteesstt _e_x_p_r - [[ _e_x_p_r ]] - Return a status of 0 (true) or 1 (false) depending on the evalu- - ation 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. - tteesstt does not accept any options, nor does it accept and ignore - an argument of ---- as signifying the end of options. - - Expressions may be combined using the following operators, - listed in decreasing order of precedence. The evaluation de- - pends on the number of arguments; see below. tteesstt uses operator - precedence when there are five or more arguments. - !! _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 - normal operator precedence. - _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. - _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 argu- - ment is one of the unary conditional operators listed - above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is - true if the unary test is true. If the first argument is - not a valid unary conditional operator, the expression is - false. - 3 arguments - The following conditions are applied in the order listed. - 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. The --aa - and --oo operators are considered binary operators when - there are three arguments. If the first argument is !!, - the value is the negation of the two-argument test using - the second and third arguments. If the first argument is - exactly (( and the third argument is exactly )), the result - is the one-argument test of the second argument. Other- - wise, the expression is false. - 4 arguments - The following conditions are applied in the order listed. - If the first argument is !!, the result is the negation of - the three-argument expression composed of the remaining - arguments. If the first argument is exactly (( and the - fourth argument is exactly )), the result is the two-argu- - ment test of the second and third 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. - - When the shell is in posix mode, or if the expression is part of - the [[[[ command, the << and >> operators sort using the current lo- - cale. If the shell is not in posix mode, the tteesstt and [[ com- - mands sort lexicographically using ASCII ordering. - - The historical operator-precedence parsing with 4 or more argu- - ments can lead to ambiguities when it encounters strings that - look like primaries. The POSIX standard has deprecated the --aa - and --oo primaries and enclosing expressions within parentheses. - Scripts should no longer use them. It's much more reliable to - restrict test invocations to a single primary, and to replace - uses of --aa and --oo with the shell's &&&& and |||| list operators. - - ttiimmeess Print the accumulated user and system times for the shell and - for processes run from the shell. The return status is 0. - - ttrraapp [--llppPP] [[_a_c_t_i_o_n] _s_i_g_s_p_e_c ...] - The _a_c_t_i_o_n is a command that is read and executed when the shell - receives any of the signals _s_i_g_s_p_e_c. If _a_c_t_i_o_n is absent (and - there is a single _s_i_g_s_p_e_c) or --, each specified _s_i_g_s_p_e_c is reset - to the value it had when the shell was started. If _a_c_t_i_o_n is - the null string the signal specified by each _s_i_g_s_p_e_c is ignored - by the shell and by the commands it invokes. - - If no arguments are supplied, ttrraapp displays the actions associ- - ated with each trapped signal as a set of ttrraapp commands that can - be reused as shell input to restore the current signal disposi- - tions. If --pp is given, and _a_c_t_i_o_n is not present, then ttrraapp - displays the actions associated with each _s_i_g_s_p_e_c or, if none - are supplied, for all trapped signals, as a set of ttrraapp commands - that can be reused as shell input to restore the current signal - dispositions. The --PP option behaves similarly, but displays - only the actions associated with each _s_i_g_s_p_e_c argument. --PP re- - quires at least one _s_i_g_s_p_e_c argument. The --PP or --pp options may - be used in a subshell environment (e.g., command substitution) - and, as long as they are used before ttrraapp is used to change a - signal's handling, will display the state of its parent's traps. - - The --ll option prints a list of signal names and their corre- - sponding numbers. 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. Signal names are case insen- - sitive and the SSIIGG prefix is optional. If --ll is supplied with - no _s_i_g_s_p_e_c arguments, it prints a list of valid signal names. - - If a _s_i_g_s_p_e_c is EEXXIITT (0), _a_c_t_i_o_n is executed on exit from the - shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, _a_c_t_i_o_n is executed before every - _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, _s_e_l_e_c_t command, (( - arithmetic command, [[ conditional command, arithmetic _f_o_r com- - mand, and before the first command executes in a shell function - (see SSHHEELLLL GGRRAAMMMMAARR above). Refer to the description of the - eexxttddeebbuugg shell option (see sshhoopptt above) for details of its ef- - fect on the DDEEBBUUGG trap. If a _s_i_g_s_p_e_c is RREETTUURRNN, _a_c_t_i_o_n is exe- - cuted each time a shell function or a script executed with the .. - or ssoouurrccee builtins finishes executing. - - If a _s_i_g_s_p_e_c is EERRRR, _a_c_t_i_o_n is executed whenever a pipeline - (which may consist of a single simple command), a list, or a - compound command returns a non-zero exit status, subject to the - following conditions. The EERRRR trap is not executed if the - failed command is part of the command list immediately following - a wwhhiillee or uunnttiill reserved word, part of the test in an _i_f state- - ment, part of a command executed in a &&&& or |||| list except the - command following the final &&&& or ||||, any command in a pipeline - but the last (subject to the state of the ppiippeeffaaiill shell op- - tion), or if the command's return value is being inverted using - !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) op- - tion. - - When the shell is not interactive, signals ignored upon entry to - the shell cannot be trapped or reset. Interactive shells permit - trapping signals ignored on entry. Trapped signals that are not - being ignored are reset to their original values in a subshell - or subshell environment when one is created. The return status - is false if any _s_i_g_s_p_e_c is invalid; otherwise ttrraapp returns true. - - ttrruuee Does nothing, returns a 0 status. - - ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...] - 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 executable file, re- - spectively. If the _n_a_m_e is not found, ttyyppee prints nothing and - returns a non-zero exit status. - - If the --pp option is used, ttyyppee either returns the pathname of - the executable file that would be found by searching $$PPAATTHH for - _n_a_m_e or nothing if "type -t name" would not return _f_i_l_e. The --PP - option forces a PPAATTHH search for each _n_a_m_e, even if "type -t - name" would not return _f_i_l_e. If _n_a_m_e is present in the table of - hashed commands, --pp and --PP print the hashed value, which is not - necessarily the file that appears first in PPAATTHH. - - If the --aa option is used, ttyyppee prints all of the places that - contain a command named _n_a_m_e. This includes aliases, reserved - words, functions, and builtins, but the path search options (--pp - and --PP) can be supplied to restrict the output to executable - files. ttyyppee does not consult the table of hashed commands when - using --aa with --pp, and only performs a PPAATTHH search for _n_a_m_e. - - The --ff option suppresses shell function lookup, as with the ccoomm-- - mmaanndd builtin. ttyyppee returns true if all of the arguments are - found, false if any are not found. - - uulliimmiitt [--HHSS] --aa - uulliimmiitt [--HHSS] [--bbccddeeffiikkllmmnnppqqrrssttuuvvxxPPRRTT [_l_i_m_i_t]] - Provides control over the resources available to the shell and - to processes it starts, on systems that allow such control. - - The --HH and --SS options specify whether the hard or soft limit is - set for the given resource. A hard limit cannot be increased by - a non-root user once it is set; a soft limit may be increased up - to the value of the hard limit. If neither --HH nor --SS is speci- - fied, uulliimmiitt sets both the soft and hard limits. - - The value of _l_i_m_i_t can be a number in the unit specified for the - resource or one of the special values hhaarrdd, ssoofftt, or uunnlliimmiitteedd, - which stand for the current hard limit, the current soft limit, - and no limit, respectively. If _l_i_m_i_t is omitted, uulliimmiitt prints - the current value of the soft limit of the resource, unless the - --HH option is given. When more than one resource is specified, - the limit name and unit, if appropriate, are printed before the - value. Other options are interpreted as follows: - --aa Report all current limits; no limits are set. - --bb The maximum socket buffer size. - --cc The maximum size of core files created. - --dd The maximum size of a process's data segment. - --ee The maximum scheduling priority ("nice"). - --ff The maximum size of files written by the shell and its - children. - --ii The maximum number of pending signals. - --kk The maximum number of kqueues that may be allocated. - --ll The maximum size that may be locked into memory. - --mm The maximum resident set size (many systems do not honor - this limit). - --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). - --qq The maximum number of bytes in POSIX message queues. - --rr The maximum real-time scheduling priority. - --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 available to the - shell and, on some systems, to its children. - --xx The maximum number of file locks. - --PP The maximum number of pseudoterminals. - --RR The maximum time a real-time process can run before - blocking, in microseconds. - --TT The maximum number of threads. - - If _l_i_m_i_t is supplied, and the --aa option is not used, _l_i_m_i_t is - the new value of the specified resource. If no option is sup- - plied, then --ff is assumed. - - Values are in 1024-byte increments, except for --tt, which is in - seconds; --RR, which is in microseconds; --pp, which is in units of - 512-byte blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled - values; and, when in posix mode, --cc and --ff, which are in - 512-byte increments. The return status is 0 unless an invalid - option or argument is supplied, or an error occurs while setting - a new limit. - - uummaasskk [--pp] [--SS] [_m_o_d_e] - Set the user file-creation mask to _m_o_d_e. If _m_o_d_e begins with a - digit, it is interpreted as an octal number; otherwise it is in- - terpreted as a symbolic mode mask similar to that accepted by - _c_h_m_o_d(1). If _m_o_d_e is omitted, uummaasskk prints the current value of - the mask. The --SS option without a _m_o_d_e argument prints the mask - in a symbolic format; 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 zero - if the mode was successfully changed or if no _m_o_d_e argument was - supplied, and non-zero otherwise. - - uunnaalliiaass [-aa] [_n_a_m_e ...] - Remove each _n_a_m_e from the list of defined aliases. If --aa is - supplied, remove all alias definitions. The return value is - true unless a supplied _n_a_m_e is not a defined alias. - - uunnsseett [-ffvv] [-nn] [_n_a_m_e ...] - For each _n_a_m_e, remove the corresponding variable or function. - If the --vv option is given, each _n_a_m_e refers to a shell variable, - and that variable is removed. If --ff is specified, each _n_a_m_e - refers to a shell function, and the function definition is re- - moved. If the --nn option is supplied, and _n_a_m_e is a variable - with the _n_a_m_e_r_e_f attribute, _n_a_m_e will be unset rather than the - variable it references. --nn has no effect if the --ff option is - supplied. Read-only variables and functions may not be unset. - When variables or functions are removed, they are also removed - from the environment passed to subsequent commands. If no op- - tions are supplied, each _n_a_m_e refers to a variable; if there is - no variable by that name, a function with that name, if any, is - unset. Some shell variables may not be unset. If any of - BBAASSHH__AALLIIAASSEESS, BBAASSHH__AARRGGVV00, BBAASSHH__CCMMDDSS, BBAASSHH__CCOOMMMMAANNDD, BBAASSHH__SSUUBB-- - SSHHEELLLL, BBAASSHHPPIIDD, CCOOMMPP__WWOORRDDBBRREEAAKKSS, DDIIRRSSTTAACCKK, EEPPOOCCHHRREEAALLTTIIMMEE, - EEPPOOCCHHSSEECCOONNDDSS, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECC-- - OONNDDSS, or SSRRAANNDDOOMM are unset, they lose their special properties, - even if they are subsequently reset. The exit status is true - unless a _n_a_m_e is readonly or may not be unset. - - wwaaiitt [--ffnn] [--pp _v_a_r_n_a_m_e] [_i_d ...] - Wait for each specified child process _i_d and return the termina- - tion status of the last _i_d. Each _i_d may be a process ID _p_i_d or - a job specification _j_o_b_s_p_e_c; if a jobspec is supplied, wwaaiitt - waits for all processes in the job. - - If no options or _i_ds are supplied, wwaaiitt waits for all running - background jobs and the last-executed process substitution, if - its process id is the same as $$!!, and the return status is zero. - - If the --nn option is supplied, wwaaiitt waits for any one of the - given _i_ds or, if no _i_ds are supplied, any job or process substi- - tution, to complete and returns its exit status. If none of the - supplied _i_ds is a child of the shell, or if no _i_ds are supplied - and the shell has no unwaited-for children, the exit status is - 127. - - If the --pp option is supplied, wwaaiitt assigns the process or job - identifier of the job for which the exit status is returned to - the variable _v_a_r_n_a_m_e named by the option argument. The vari- - able, which cannot be readonly, will be unset initially, before - any assignment. This is useful only when used with the --nn op- - tion. - - Supplying the --ff option, when job control is enabled, forces - wwaaiitt to wait for each _i_d to terminate before returning its sta- - tus, instead of returning when it changes status. If there are - no _i_d arguments, wwaaiitt waits until all background processes have - terminated. - - If none of the _i_ds specify one of the shell's active child - processes, the return status is 127. If wwaaiitt is interrupted by - a signal, any _v_a_r_n_a_m_e will remain unset, and the return status - will be greater than 128, as described under SSIIGGNNAALLSS above. - Otherwise, the return status is the exit status of the last _i_d. + Unless otherwise noted, each builtin command documented in this section as + accepting options preceded by -- accepts ---- to signify the end of the op- + tions. The ::, ttrruuee, ffaallssee, and tteesstt/[[ builtins do not accept options and + do not treat ---- specially. The eexxiitt, llooggoouutt, rreettuurrnn, bbrreeaakk, ccoonnttiinnuuee, lleett, + and sshhiifftt builtins accept and process arguments beginning with -- without + requiring ----. Other builtins that accept arguments but are not specified + as accepting options interpret arguments beginning with -- as invalid op- + tions and require ---- to prevent this interpretation. + + All builtins except ::, ttrruuee, ffaallssee, eecchhoo, and tteesstt/[[ accept ----hheellpp as a + special option. If ----hheellpp is supplied, these builtins output a help mes- + sage and exit with a status of 0. + + :: [_a_r_g_u_m_e_n_t_s] + No effect; the command does nothing beyond expanding _a_r_g_u_m_e_n_t_s and + performing any specified redirections. The return status is zero. + + .. [--pp _p_a_t_h] _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] + ssoouurrccee [--pp _p_a_t_h] _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s] + The .. command (ssoouurrccee) reads and execute commands from _f_i_l_e_n_a_m_e in + the current shell environment and returns 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, .. searches for it. If the --pp + option is supplied, .. treats _p_a_t_h as a colon-separated list of di- + rectories in which to find _f_i_l_e_n_a_m_e; otherwise, .. uses the entries + in PPAATTHH to find the directory containing _f_i_l_e_n_a_m_e. _f_i_l_e_n_a_m_e does + not need to be executable. When bbaasshh is not in posix mode, it + searches the current directory if _f_i_l_e_n_a_m_e is not found in PPAATTHH, but + does not search the current directory if --pp is supplied. If the + ssoouurrcceeppaatthh option to the sshhoopptt builtin command is turned off, .. does + not search PPAATTHH. + + 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 positional parameters are + unchanged. + + If the --TT option is enabled, .. inherits any trap on DDEEBBUUGG; if it is + not, any DDEEBBUUGG trap string is saved and restored around the call to + .., and .. unsets the DDEEBBUUGG trap while it executes. If --TT is not set, + and the sourced file changes the DDEEBBUUGG trap, the new value persists + after .. completes. The return status is the status of the last com- + mand executed from _f_i_l_e_n_a_m_e (0 if no commands are executed), and + non-zero 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] ...] + With no arguments or with the --pp option, aalliiaass prints the list of + aliases in the form aalliiaass _n_a_m_e=_v_a_l_u_e on standard output. When argu- + ments are supplied, define an alias 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 during command + parsing. For each _n_a_m_e in the argument list for which no _v_a_l_u_e is + supplied, print the name and value of the alias _n_a_m_e. aalliiaass returns + true unless a _n_a_m_e is given (without a corresponding =_v_a_l_u_e) for + which no alias has been defined. + + bbgg [_j_o_b_s_p_e_c ...] + Resume each 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 uses its + notion of the _c_u_r_r_e_n_t _j_o_b. bbgg _j_o_b_s_p_e_c returns 0 unless run when job + control is disabled or, when run with job control enabled, any spec- + ified _j_o_b_s_p_e_c was not found or was started without job control. + + bbiinndd [--mm _k_e_y_m_a_p] [--llssvvSSVVXX] + 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] --xx _k_e_y_s_e_q[:] _s_h_e_l_l_-_c_o_m_m_a_n_d + 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 + bbiinndd [--mm _k_e_y_m_a_p] --pp|--PP [_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d] + bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d + bbiinndd _r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d_-_l_i_n_e + Display current rreeaaddlliinnee key and function bindings, bind a key se- + quence to a rreeaaddlliinnee function or macro or to a shell command, or set + a rreeaaddlliinnee variable. Each non-option argument is a key binding or + command as it would appear in a rreeaaddlliinnee initialization file such as + _._i_n_p_u_t_r_c, but each binding or command must be passed as a separate + argument; e.g., '"\C-x\C-r": re-read-init-file'. In the following + descriptions, output available to be re-read is formatted as com- + mands that would appear in a rreeaaddlliinnee initialization file or that + would be supplied as individual arguments to a bbiinndd command. Op- + tions, 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_-_m_o_v_e_, _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 (_v_i_-_m_o_v_e is also a syn- + onym); _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 used as an argument to a subsequent bbiinndd + command or in a rreeaaddlliinnee initialization file. If arguments + remain after option processing, bbiinndd treats them as rreeaaddlliinnee + command names and restricts output to those names. + --PP List current rreeaaddlliinnee function names and bindings. If argu- + ments remain after option processing, bbiinndd treats them as + rreeaaddlliinnee command names and restricts output to those names. + --ss Display rreeaaddlliinnee key sequences bound to macros and the + strings they output in such a way that they can be used as an + argument to a subsequent bbiinndd command or in a rreeaaddlliinnee ini- + tialization file. + --SS Display rreeaaddlliinnee key sequences bound to macros and the + strings they output. + --vv Display rreeaaddlliinnee variable names and values in such a way that + they can be used as an argument to a subsequent bbiinndd command + or in a rreeaaddlliinnee initialization file. + --VV List current rreeaaddlliinnee variable names and values. + --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 + Display key sequences that invoke the named rreeaaddlliinnee _f_u_n_c_- + _t_i_o_n. + --uu _f_u_n_c_t_i_o_n + Unbind all key sequences bound to the named rreeaaddlliinnee _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. + --xx _k_e_y_s_e_q[[:: ]]_s_h_e_l_l_-_c_o_m_m_a_n_d + Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is en- + tered. The separator between _k_e_y_s_e_q and _s_h_e_l_l_-_c_o_m_m_a_n_d is ei- + ther whitespace or a colon optionally followed by whitespace. + If the separator is whitespace, _s_h_e_l_l_-_c_o_m_m_a_n_d must be en- + closed in double quotes and rreeaaddlliinnee expands any of its spe- + cial backslash-escapes in _s_h_e_l_l_-_c_o_m_m_a_n_d before saving it. If + the separator is a colon, any enclosing double quotes are op- + tional, and rreeaaddlliinnee does not expand the command string be- + fore saving it. Since the entire key binding expression must + be a single argument, it should be enclosed in single quotes. + When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets the RREEAADD-- + LLIINNEE__LLIINNEE variable to the contents of the rreeaaddlliinnee line + buffer and the RREEAADDLLIINNEE__PPOOIINNTT and RREEAADDLLIINNEE__MMAARRKK variables to + the current location of the insertion point and the saved in- + sertion point (the mark), respectively. The shell assigns + any numeric argument the user supplied to the RREEAADDLLIINNEE__AARRGGUU-- + MMEENNTT variable. If there was no argument, that variable is + not set. If the executed command changes the value of any of + RREEAADDLLIINNEE__LLIINNEE, RREEAADDLLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new + values will be reflected in the editing state. + --XX List all key sequences bound to shell commands and the asso- + ciated commands in a format that can be reused as an argument + to a subsequent bbiinndd command. + + The return value is 0 unless an unrecognized option is supplied or + an error occurred. + + bbrreeaakk [_n] + Exit from within a ffoorr, wwhhiillee, uunnttiill, or sseelleecctt loop. If _n is spec- + ified, bbrreeaakk exits _n enclosing loops. _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 _n is not greater than or equal + to 1. + + 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 _s_h_e_l_l_-_b_u_i_l_t_i_n, 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 + functionality 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. + + ccaalllleerr [_e_x_p_r] + Returns the context of any active subroutine call (a shell function + or a script executed with the .. or ssoouurrccee builtins). + + Without _e_x_p_r, ccaalllleerr displays the line number and source filename of + the current subroutine call. If a non-negative integer is supplied + as _e_x_p_r, ccaalllleerr displays the line number, subroutine name, and + source file corresponding to that position in the current execution + call stack. This extra information may be used, for example, to + print a stack trace. The current frame is frame 0. + + The return value is 0 unless the shell is not executing a subroutine + call or _e_x_p_r does not correspond to a valid position in the call + stack. + + ccdd [--LL] [--@@] [_d_i_r] + ccdd --PP [--ee] [--@@] [_d_i_r] + Change the current directory to _d_i_r. if _d_i_r is not supplied, the + value of the HHOOMMEE shell variable is used as _d_i_r. If _d_i_r is the + empty string, ccdd treats it as an error. The variable CCDDPPAATTHH exists, + and _d_i_r does not begin with a slash (/), ccdd uses it as a search + path: the shell searches each directory name in CCDDPPAATTHH for _d_i_r. Al- + ternative directory names in CCDDPPAATTHH are separated by a colon (:). A + null directory name in CCDDPPAATTHH is the same as the current directory, + i.e., ".". + + The --PP option causes ccdd to use the physical directory structure by + resolving symbolic links while traversing _d_i_r and before processing + instances of _._. in _d_i_r (see also the --PP option to the sseett builtin + command). + + The --LL option forces ccdd to follow symbolic links by resolving the + link after processing instances of _._. in _d_i_r. If _._. appears in _d_i_r, + ccdd processes it by removing the immediately previous pathname compo- + nent from _d_i_r, back to a slash or the beginning of _d_i_r, and verify- + ing that the portion of _d_i_r it has processed to that point is still + a valid directory name after removing the pathname component. If it + is not a valid directory name, ccdd returns a non-zero status. If + neither --LL nor --PP is supplied, ccdd behaves as if --LL had been sup- + plied. + + If the --ee option is supplied with --PP, and ccdd cannot successfully de- + termine the current working directory after a successful directory + change, it returns a non-zero status. + + On systems that support it, the --@@ option presents the extended at- + tributes associated with a file as a directory. + + An argument of -- is converted to $$OOLLDDPPWWDD before attempting the di- + rectory change. + + If ccdd uses a non-empty directory name from CCDDPPAATTHH, or if -- is the + first argument, and the directory change is successful, ccdd writes + the absolute pathname of the new working directory to the standard + output. + + If the directory change is successful, ccdd sets the value of the PPWWDD + environment variable to the new directory name, and sets the OOLLDDPPWWDD + environment variable to the value of the current working directory + before the change. + + 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 ...] + The ccoommmmaanndd builtin runs _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal + shell function lookup for _c_o_m_m_a_n_d. Only builtin commands or com- + mands found in the PPAATTHH named _c_o_m_m_a_n_d are executed. If the --pp op- + tion is supplied, the search for _c_o_m_m_a_n_d is performed using a de- + fault value for PPAATTHH that is guaranteed to find all of the standard + utilities. + + If either the --VV or --vv option is supplied, ccoommmmaanndd prints a descrip- + tion of _c_o_m_m_a_n_d. The --vv option displays a single word indicating + the command or filename used to invoke _c_o_m_m_a_n_d; the --VV option pro- + duces a more verbose description. + + If the --VV or --vv option is supplied, the exit status is zero if _c_o_m_- + _m_a_n_d was found, and non-zero 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. + + ccoommppggeenn [--VV _v_a_r_n_a_m_e] [_o_p_t_i_o_n] [_w_o_r_d] + Generate possible completion matches for _w_o_r_d according to the _o_p_- + _t_i_o_ns, which may be any option accepted by the ccoommpplleettee builtin with + the exceptions of --pp, --rr, --DD, --EE, and --II, and write the matches to + the standard output. + + If the --VV option is supplied, ccoommppggeenn stores the generated comple- + tions into the indexed array variable _v_a_r_n_a_m_e instead of writing + them to the standard output. + + When using the --FF or --CC options, the various shell variables set by + the programmable completion facilities, while available, will not + have useful values. + + The matches will be generated in the same way as if the programmable + completion code had generated them directly from a completion speci- + fication with the same flags. If _w_o_r_d is specified, only those com- + pletions matching _w_o_r_d will be displayed or stored. + + The return value is true unless an invalid option is supplied, or no + matches were generated. + + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] + [--GG _g_l_o_b_p_a_t] [--WW _w_o_r_d_l_i_s_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] + [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] _n_a_m_e [_n_a_m_e ...] + ccoommpplleettee --pprr [--DDEEII] [_n_a_m_e ...] + Specify how arguments to each _n_a_m_e should be completed. + + If the --pp option is supplied, or if no options or _n_a_m_es are sup- + plied, print existing completion specifications in a way that allows + them to be reused as input. The --rr option removes a completion + specification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com- + pletion specifications. + + The --DD option indicates that other supplied options and actions + should apply to the "default" command completion; that is, comple- + tion attempted on a command for which no completion has previously + been defined. The --EE option indicates that other supplied options + and actions should apply to "empty" command completion; that is, + completion attempted on a blank line. The --II option indicates that + other supplied options and actions should apply to completion on the + initial non-assignment word on the line, or after a command delim- + iter such as ;; or ||, which is usually command name completion. If + multiple options are supplied, the --DD option takes precedence over + --EE, and both take precedence over --II. If any of --DD, --EE, or --II are + supplied, any other _n_a_m_e arguments are ignored; these completions + only apply to the case specified by the option. + + The process of applying these completion specifications when at- + tempting word completion is described above under PPrrooggrraammmmaabbllee CCoomm-- + pplleettiioonn. + + Other options, if specified, have the following meanings. The argu- + ments to the --GG, --WW, and --XX options (and, if necessary, the --PP and + --SS options) should be quoted to protect them from expansion before + the ccoommpplleettee builtin is invoked. + + --oo _c_o_m_p_-_o_p_t_i_o_n + The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the compspec's + behavior beyond the simple generation of completions. _c_o_m_p_- + _o_p_t_i_o_n may be one of: + bbaasshhddeeffaauulltt + Perform the rest of the default bbaasshh completions if + the compspec generates no matches. + ddeeffaauulltt + Use rreeaaddlliinnee's default filename completion if the + compspec generates no matches. + ddiirrnnaammeess + Perform directory name completion if the compspec + generates no matches. + ffiilleennaammeess + Tell rreeaaddlliinnee that the compspec generates filenames, + so it can perform any filename-specific processing + (such as adding a slash to directory names, quoting + special characters, or suppressing trailing spaces). + This is intended to be used with shell functions. + ffuullllqquuoottee + Tell rreeaaddlliinnee to quote all the completed words even + if they are not filenames. + nnooqquuoottee + Tell rreeaaddlliinnee not to quote the completed words if + they are filenames (quoting filenames is the de- + fault). + nnoossoorrtt Tell rreeaaddlliinnee not to sort the list of possible com- + pletions alphabetically. + nnoossppaaccee + Tell rreeaaddlliinnee not to append a space (the default) to + words completed at the end of the line. + pplluussddiirrss + After generating any matches defined by the comp- + spec, attempt directory name completion and add any + matches to the results of the other actions. + --AA _a_c_t_i_o_n + The _a_c_t_i_o_n may be one of the following to generate a list of + possible completions: + aalliiaass Alias names. May also be specified as --aa. + aarrrraayyvvaarr + Array variable names. + bbiinnddiinngg + RReeaaddlliinnee key binding names. + bbuuiillttiinn + Names of shell builtin commands. May also be speci- + fied as --bb. + ccoommmmaanndd + Command names. May also be specified as --cc. + ddiirreeccttoorryy + Directory names. May also be specified as --dd. + ddiissaabblleedd + Names of disabled shell builtins. + eennaabblleedd + Names of enabled shell builtins. + eexxppoorrtt Names of exported shell variables. May also be + specified as --ee. + ffiillee File and directory names, similar to rreeaaddlliinnee's + filename completion. May also be specified as --ff. + ffuunnccttiioonn + Names of shell functions. + ggrroouupp Group names. May also be specified as --gg. + hheellppttooppiicc + Help topics as accepted by the hheellpp builtin. + hhoossttnnaammee + Hostnames, as taken from the file specified by the + HHOOSSTTFFIILLEE shell variable. + jjoobb Job names, if job control is active. May also be + specified as --jj. + kkeeyywwoorrdd + Shell reserved words. May also be specified as --kk. + rruunnnniinngg + Names of running jobs, if job control is active. + sseerrvviiccee + Service names. May also be specified as --ss. + sseettoopptt Valid arguments for the --oo option to the sseett + builtin. + sshhoopptt Shell option names as accepted by the sshhoopptt builtin. + ssiiggnnaall Signal names. + ssttooppppeedd + Names of stopped jobs, if job control is active. + uusseerr User names. May also be specified as --uu. + vvaarriiaabbllee + Names of all shell variables. May also be specified + as --vv. + --CC _c_o_m_m_a_n_d + _c_o_m_m_a_n_d is executed in a subshell environment, and its out- + put is used as the possible completions. Arguments are + passed as with the --FF option. + --FF _f_u_n_c_t_i_o_n + The shell function _f_u_n_c_t_i_o_n is executed in the current shell + environment. When the function is executed, the first argu- + ment ($$11) is the name of the command whose arguments are be- + ing completed, the second argument ($$22) is the word being + completed, and the third argument ($$33) is the word preceding + the word being completed on the current command line. When + _f_u_n_c_t_i_o_n finishes, programmable completion retrieves the + possible completions from the value of the CCOOMMPPRREEPPLLYY array + variable. + --GG _g_l_o_b_p_a_t + Expand the pathname expansion pattern _g_l_o_b_p_a_t to generate + the possible completions. + --PP _p_r_e_f_i_x + Add _p_r_e_f_i_x to the beginning of each possible completion af- + ter all other options have been applied. + --SS _s_u_f_f_i_x + Append _s_u_f_f_i_x to each possible completion after all other + options have been applied. + --WW _w_o_r_d_l_i_s_t + Split the _w_o_r_d_l_i_s_t using the characters in the IIFFSS special + variable as delimiters, and expand each resulting word. + Shell quoting is honored within _w_o_r_d_l_i_s_t, in order to pro- + vide a mechanism for the words to contain shell metacharac- + ters or characters in the value of IIFFSS. The possible com- + pletions are the members of the resultant list which match a + prefix of the word being completed. + --XX _f_i_l_t_e_r_p_a_t + _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. It + is applied to the list of possible completions generated by + the preceding options and arguments, and each completion + matching _f_i_l_t_e_r_p_a_t is removed from the list. A leading !! in + _f_i_l_t_e_r_p_a_t negates the pattern; in this case, any completion + not matching _f_i_l_t_e_r_p_a_t is removed. + + The return value is true unless an invalid option is supplied, an + option other than --pp, --rr, --DD, --EE, or --II is supplied without a _n_a_m_e + argument, an attempt is made to remove a completion specification + for a _n_a_m_e for which no specification exists, or an error occurs + adding a completion specification. + + ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e] + Modify completion options for each _n_a_m_e according to the _o_p_t_i_o_ns, or + for the currently-executing completion if no _n_a_m_es are supplied. If + no _o_p_t_i_o_ns are supplied, display the completion options for each + _n_a_m_e or the current completion. The possible values of _o_p_t_i_o_n are + those valid for the ccoommpplleettee builtin described above. + + The --DD option indicates that other supplied options should apply to + the "default" command completion; the --EE option indicates that other + supplied options should apply to "empty" command completion; and the + --II option indicates that other supplied options should apply to com- + pletion on the initial word on the line. These are determined in + the same way as the ccoommpplleettee builtin. + + If multiple options are supplied, the --DD option takes precedence + over --EE, and both take precedence over --II. + + The return value is true unless an invalid option is supplied, an + attempt is made to modify the options for a _n_a_m_e for which no com- + pletion specification exists, or an output error occurs. + + ccoonnttiinnuuee [_n] + ccoonnttiinnuuee resumes the next iteration of the enclosing ffoorr, wwhhiillee, uunn-- + ttiill, or sseelleecctt loop. If _n is specified, bbaasshh resumes the _nth en- + closing loop. _n must be >= 1. If _n is greater than the number of + enclosing loops, the shell resumes the last enclosing loop (the + "top-level" loop). The return value is 0 unless _n is not greater + than or equal to 1. + + ddeeccllaarree [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] + ttyyppeesseett [--aaAAffFFggiiIIllnnrrttuuxx] [--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 variables or functions. The --pp op- + tion will display the attributes and values of each _n_a_m_e. When --pp + is used with _n_a_m_e arguments, additional options, other than --ff and + --FF, are ignored. + + When --pp is supplied without _n_a_m_e arguments, ddeeccllaarree will display the + attributes and values of all variables having the attributes speci- + fied by the additional options. If no other options are supplied + with --pp, ddeeccllaarree will display the attributes and values of all shell + variables. The --ff option restricts the display to shell functions. + + The --FF option inhibits the display of function definitions; only the + function name and attributes are printed. If the eexxttddeebbuugg shell op- + tion is enabled using sshhoopptt, the source file name and line number + where each _n_a_m_e is defined are displayed as well. The --FF option im- + plies --ff. + + The --gg option forces variables to be created or modified at the + global scope, even when ddeeccllaarree is executed in a shell function. It + is ignored when ddeeccllaarree is not executed in a shell function. + + The --II option causes local variables to inherit the attributes (ex- + cept the _n_a_m_e_r_e_f attribute) and value of any existing variable with + the same _n_a_m_e at a surrounding scope. If there is no existing vari- + able, the local variable is initially unset. + + The following options can be used to restrict output to variables + with the specified attribute or to give variables attributes: + --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss above). + --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss + above). + --ff Each _n_a_m_e refers to a shell function. + --ii The variable is treated as an integer; arithmetic evaluation + (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when the vari- + able is assigned a value. + --ll When the variable is assigned a value, all upper-case charac- + ters are converted to lower-case. The upper-case attribute + is disabled. + --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name refer- + ence to another variable. That other variable is defined by + the value of _n_a_m_e. All references, assignments, and at- + tribute modifications to _n_a_m_e, except those using or changing + the --nn attribute itself, are performed on the variable refer- + enced by _n_a_m_e's value. The nameref attribute cannot be ap- + plied to array variables. + --rr Make _n_a_m_es readonly. These names cannot then be assigned + values by subsequent assignment statements or unset. + --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions inherit + the DDEEBBUUGG and RREETTUURRNN traps from the calling shell. The trace + attribute has no special meaning for variables. + --uu When the variable is assigned a value, all lower-case charac- + ters are converted to upper-case. The lower-case attribute + is disabled. + --xx Mark each _n_a_m_e for export to subsequent commands via the en- + vironment. + + Using "+" instead of "-" turns off the specified attribute instead, + with the exceptions that ++aa and ++AA may not be used to destroy array + variables and ++rr will not remove the readonly attribute. + + When used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, + as with the llooccaall command, unless the --gg option is supplied. If a + variable name is followed by =_v_a_l_u_e, the value of the variable is + set to _v_a_l_u_e. When using --aa or --AA and the compound assignment syn- + tax to create array variables, additional attributes do not take ef- + fect until subsequent assignments. + + 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 variable 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 variable, or an attempt is made to display a + non-existent function with --ff. + + ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]] + Without options, display the list of currently remembered directo- + ries. 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. The + current directory is always the first directory in the stack. + + Options, if supplied, have the following meanings: + --cc Clears the directory stack by deleting all of the entries. + --ll Produces a listing using full pathnames; the default listing + 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. + ++_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. + + The return value is 0 unless an invalid option is supplied or _n in- + dexes beyond the end of the directory stack. + + ddiissoowwnn [--aarr] [--hh] [_i_d ...] + Without options, remove each _i_d from the table of active jobs. Each + _i_d may be a job specification _j_o_b_s_p_e_c or a process ID _p_i_d; if _i_d is + a _p_i_d, ddiissoowwnn uses the job containing _p_i_d as _j_o_b_s_p_e_c. + + If the --hh option is supplied, ddiissoowwnn does not remove the jobs corre- + sponding to each _i_d from the jobs table, but rather marks them so + the shell does not send SSIIGGHHUUPP to the job if the shell receives a + SSIIGGHHUUPP. + + If no _i_d is supplied, the --aa option means to remove or mark all + jobs; the --rr option without an _i_d argument removes or marks running + jobs. If no _i_d is supplied, and neither the --aa nor the --rr option is + supplied, ddiissoowwnn removes or marks the current job. + + The return value is 0 unless an _i_d 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 0 unless a write error occurs. If --nn is specified, + the trailing newline is not printed. + + If the --ee option is given, eecchhoo interprets the following backslash- + escaped characters. The --EE option disables interpretation of these + escape characters, even on systems where they are interpreted by de- + fault. The xxppgg__eecchhoo shell option determines whether or not eecchhoo in- + terprets any options and expands these escape characters. eecchhoo does + not interpret ---- to mean the end of options. + + eecchhoo interprets the following escape sequences: + \\aa alert (bell) + \\bb backspace + \\cc suppress further output + \\ee + \\EE an escape character + \\ff form feed + \\nn new line + \\rr carriage return + \\tt horizontal tab + \\vv vertical tab + \\\\ backslash + \\00_n_n_n The eight-bit character whose value is the octal value _n_n_n + (zero to three octal digits). + \\xx_H_H The eight-bit character whose value is the hexadecimal value + _H_H (one or two hex digits). + \\uu_H_H_H_H + The Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value _H_H_H_H (one to four hex digits). + \\UU_H_H_H_H_H_H_H_H + The Unicode (ISO/IEC 10646) character whose value is the + hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits). + + eecchhoo writes any unrecognized backslash-escaped characters unchanged. + + eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] + Enable and disable builtin shell commands. Disabling a builtin al- + lows an executable file which has the same name as a shell builtin + to be executed without specifying a full pathname, even though the + shell normally searches for builtins before files. + + If --nn is supplied, each _n_a_m_e is disabled; otherwise, _n_a_m_es are en- + abled. For example, to use the tteesstt binary found using PPAATTHH instead + of the shell builtin version, run "enable -n test". + + If no _n_a_m_e arguments are supplied, or if the --pp option is supplied, + print a list of shell builtins. With no other option arguments, the + list consists of all enabled shell builtins. If --nn is supplied, + print only disabled builtins. If --aa is supplied, the list printed + includes all builtins, with an indication of whether or not each is + enabled. The --ss option means to restrict the output to the POSIX + _s_p_e_c_i_a_l builtins. + + The --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 support dynamic loading. If _f_i_l_e_- + _n_a_m_e does not contain a slash, BBaasshh will use the value of the + BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH variable as a colon-separated list of directo- + ries in which to search for _f_i_l_e_n_a_m_e. The default for BBAASSHH__LLOOAADD-- + AABBLLEESS__PPAATTHH is system-dependent, and may include "." to force a + search of the current directory. The --dd option will delete a + builtin previously loaded with --ff. If --ss is used with --ff, the new + builtin becomes a POSIX special builtin. + + If no options are supplied and a _n_a_m_e is not a shell builtin, eennaabbllee + will attempt to load _n_a_m_e from a shared object named _n_a_m_e, as if the + command were "enable -f _n_a_m_e _n_a_m_e". + + The return value is 0 unless a _n_a_m_e is not a shell builtin or there + is an error loading a new builtin from a shared object. + + eevvaall [_a_r_g ...] + Concatenate the _a_r_gs together into a single command, separating them + with spaces. BBaasshh then reads and execute this command, and returns + its exit status as the return status 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 without creating a + new process. _c_o_m_m_a_n_d cannot be a shell builtin or function. 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 at the beginning of the zeroth argu- + ment 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 exe- + cuted command. + + If _c_o_m_m_a_n_d cannot be executed for some reason, a non-interactive + shell exits, unless the eexxeeccffaaiill shell option is enabled. In that + case, it returns a non-zero status. An interactive shell returns a + non-zero status if the file cannot be executed. A subshell exits + unconditionally if eexxeecc fails. + + 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 redirec- + tion 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. Any trap on EEXXIITT + is executed before the shell terminates. + + eexxppoorrtt [--ffnn] [_n_a_m_e[=_v_a_l_u_e]] ... + eexxppoorrtt --pp [[--ff]] + The supplied _n_a_m_e_s are marked for automatic export to the environ- + ment of subsequently executed commands. If the --ff option is given, + the _n_a_m_e_s refer to functions. + + The --nn option unexports, or removes the export attribute, from each + _n_a_m_e. If no _n_a_m_e_s are given, or if only the --pp option is supplied, + eexxppoorrtt displays a list of names of all exported variables on the + standard output. Using --pp and --ff together displays exported func- + tions. The --pp option displays output in a form that may be reused + as input. + + eexxppoorrtt allows the value of a variable to be set when it is exported + or unexported by following the variable name with =_v_a_l_u_e. This sets + the value of the variable to _v_a_l_u_e while modifying the export at- + tribute. eexxppoorrtt returns an exit status of 0 unless an invalid op- + tion 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. + + ffaallssee Does nothing; returns a non-zero status. + + ffcc [--ee _e_n_a_m_e] [--DD] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] + ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t from + the history list and displays or edits and re-executes them. _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). + + When listing, a _f_i_r_s_t or _l_a_s_t of 0 is equivalent to -1 and -0 is + equivalent to the current command (usually the ffcc command); other- + wise 0 is equivalent to -1 and -0 is invalid. If _l_a_s_t is not speci- + fied, it is set to the current command for listing (so that "fc -l + -10" 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. + + If the --ll option is supplied, the commands are listed on the stan- + dard output. The --nn option suppresses the command numbers when + listing. The --rr option reverses the order of the commands. + + Otherwise, ffcc invokes the editor named by _e_n_a_m_e on a file containing + those commands. If _e_n_a_m_e is not supplied, ffcc uses the value of the + FFCCEEDDIITT variable, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. If + neither variable is set, ffcc uses _v_i_. When editing is complete, ffcc + reads the file containing the edited commands and echoes and exe- + cutes them. The --DD option, if supplied, causes ffcc to remove the se- + lected commands from the history list before executing the file of + edited commands. --DD is only effective when ffcc is invoked in this + way. + + In the second form, ffcc re-executes _c_o_m_m_a_n_d after replacing each in- + stance of _p_a_t with _r_e_p. _C_o_m_m_a_n_d is interpreted the same as _f_i_r_s_t + above. + + A useful alias to use with ffcc is "r="fc -s"", so that typing "r cc" + runs the last command beginning with "cc" and typing "r" re-executes + the last command. + + If the first form is used, the return value is zero unless an in- + valid option is encountered or _f_i_r_s_t or _l_a_s_t specify history lines + out of range. When editing and re-executing a file of commands, the + return value is the value of the last command executed or failure if + an error occurs with the temporary file. If the second form is + used, the return status is that of the re-executed command, unless + _c_m_d does not specify a valid history entry, in which case ffcc returns + a non-zero status. + + 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, ffgg uses the shell's notion of the _c_u_r_r_e_n_t + _j_o_b. The return value is that of the command placed into the fore- + ground, 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 control. + + ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g ...] + ggeettooppttss is used by shell scripts and functions to parse positional + parameters and obtain options and their arguments. _o_p_t_s_t_r_i_n_g con- + tains the option characters to be recognized; if a character is fol- + lowed by a colon, the option is expected to have an argument, which + should be separated from it by white space. The colon and question + mark characters may not be used as option characters. + + 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 invo- + cation to use a new set of parameters. + + When it reaches the end of options, ggeettooppttss exits with a return + value greater than zero. OOPPTTIINNDD is set to the index of the first + non-option argument, and _n_a_m_e is set to ?. + + ggeettooppttss normally parses the positional parameters, but if more argu- + ments are supplied as _a_r_g values, 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, ggeettooppttss uses _s_i_l_e_n_t error reporting. In nor- + mal operation, ggeettooppttss prints diagnostic messages when it encounters + invalid options or missing option arguments. If the variable OOPPTTEERRRR + is set to 0, ggeettooppttss does not display any error messages, even if + the first character of _o_p_t_s_t_r_i_n_g is not a colon. + + If ggeettooppttss detects an invalid option, it places ? into _n_a_m_e and, if + not silent, prints an error message and unsets OOPPTTAARRGG. If ggeettooppttss + is silent, it assigns the option character found to OOPPTTAARRGG and does + not print a diagnostic message. + + If a required argument is not found, and ggeettooppttss is not silent, it + sets the value of _n_a_m_e to a question mark (??), unsets OOPPTTAARRGG, and + prints a diagnostic message. If ggeettooppttss is silent, it sets the + value of _n_a_m_e to a colon (::) and sets OOPPTTAARRGG 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 [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e] + Each time hhaasshh is invoked, it remembers the full pathname of the + command _n_a_m_e as determined by searching the directories in $$PPAATTHH. + Any previously-remembered pathname associated with _n_a_m_e is dis- + carded. If the --pp option is supplied, hhaasshh uses _f_i_l_e_n_a_m_e as the + full pathname of the command. + + The --rr option causes the shell to forget all remembered locations. + Assigning to the PPAATTHH variable also clears all hashed filenames. + The --dd option causes the shell to forget the remembered location of + each _n_a_m_e. + + If the --tt option is supplied, hhaasshh prints the full pathname corre- + sponding to each _n_a_m_e. If multiple _n_a_m_e arguments are supplied with + --tt, hhaasshh prints the _n_a_m_e before the corresponding hashed full path- + name. The --ll option displays output in a format that may be reused + as input. + + If no arguments are given, or if only --ll is supplied, hhaasshh prints + information about remembered commands. The --tt, --dd, and --pp options + (the options that act on the _n_a_m_e arguments) are mutually exclusive. + Only one will be active. If more than one is supplied, --tt has + higher priority than --pp, and both have higher priority than --dd. + + The return status is zero unless a _n_a_m_e is not found or an invalid + option is supplied. + + hheellpp [--ddmmss] [_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 + as described below; otherwise it displays a list of all the builtins + and shell compound commands. + + Options, if supplied, have the follow meanings: + + --dd Display a short description of each _p_a_t_t_e_r_n + --mm Display the description of each _p_a_t_t_e_r_n in a manpage-like + format + --ss Display only a short usage synopsis for each _p_a_t_t_e_r_n + + If _p_a_t_t_e_r_n contains pattern matching characters (see PPaatttteerrnn MMaattcchh-- + iinngg above) it's treated as a shell pattern and hheellpp prints the de- + scription of each help topic matching _p_a_t_t_e_r_n. + + If not, and _p_a_t_t_e_r_n exactly matches the name of a help topic, hheellpp + prints the description associated with that topic. Otherwise, hheellpp + performs prefix matching and prints the descriptions of all matching + help topics. + + The return status is 0 unless no command matches _p_a_t_t_e_r_n. + + hhiissttoorryy [[--HH]] [[_r_a_n_g_e]] + hhiissttoorryy --cc + hhiissttoorryy --dd _r_a_n_g_e + 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, or with the --HH option, display the portion of the + command history list specified by _r_a_n_g_e, as described below. If + _r_a_n_g_e is not specified, display the entire history list. Without + --HH, display the list with command numbers, prefixing entries that + have been modified with a "*". + + A _r_a_n_g_e argument is specified in the form of a number _o_f_f_s_e_t or a + range _s_t_a_r_t-_e_n_d. If _o_f_f_s_e_t is supplied, it references the history + entry at position _o_f_f_s_e_t in the history list; when listing this dis- + plays the last _o_f_f_s_e_t entries. A negative _o_f_f_s_e_t counts back from + the end of the history list, relative to one greater than the last + history position. When listing, negative and positive _o_f_f_s_e_t_s have + identical results. _s_t_a_r_t and _e_n_d, if supplied, reference the por- + tion of the history list beginning at position _s_t_a_r_t through posi- + tion _e_n_d. If _s_t_a_r_t or _e_n_d are negative, they count back from the + end of the history list. When listing, if _s_t_a_r_t is greater than + _e_n_d, the history entries are displayed in reverse order from _e_n_d to + _s_t_a_r_t. + + If the shell variable HHIISSTTTTIIMMEEFFOORRMMAATT is set and not null, it is used + as a format string for _s_t_r_f_t_i_m_e(3) to display the time stamp associ- + ated with each displayed history entry. If hhiissttoorryy uses HHIISSTTTTIIMMEE-- + FFOORRMMAATT, it does not print an intervening space between the formatted + time stamp and the history entry. + + If _f_i_l_e_n_a_m_e is supplied, hhiissttoorryy uses it as the name of the history + file; if not, it uses the value of HHIISSTTFFIILLEE. If _f_i_l_e_n_a_m_e is not + supplied and HHIISSTTFFIILLEE is unset or null, the --aa,, --nn,, --rr,, and --ww op- + tions have no effect. + + Options, if supplied, have the following meanings: + --cc Clear the history list by deleting all the entries. This can + be used with the other options to replace the history list. + --dd _r_a_n_g_e + Delete the history entries specified by _r_a_n_g_e, as described + above. An index of -1 refers to the current hhiissttoorryy --dd com- + mand. + --HH Display the selected history entries in the format that would + be written to the history file, including any time stamp in- + formation as described below, without prefixing the entry + with any line number or "*". + --aa Append the "new" history lines to the history file. These + are history lines entered since the beginning of the current + bbaasshh session, but not already appended to the history file. + --nn Read the history lines not already read from the history file + and add them to the current history list. These are lines + appended to the history file since the beginning of the cur- + rent bbaasshh session. + --rr Read the history file and append its contents to the current + history list. + --ww Write the current history list to the history file, overwrit- + ing the history file. + --pp Perform history substitution on the following _a_r_g_s and dis- + play the result on the standard output, without storing the + results in the history list. Each _a_r_g must be quoted to dis- + able normal history expansion. + --ss Store the _a_r_g_s in the history list as a single entry. The + last command in the history list is removed before adding the + _a_r_g_s. + + If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, hhiissttoorryy writes the time stamp + information associated with each history entry to the history file, + marked with the history comment character as described above. When + the history file is read, lines beginning with the history comment + character followed immediately by a digit are interpreted as time- + stamps for the following history entry. + + The return value is 0 unless an invalid option is encountered, an + error occurs while reading or writing the history file, an invalid + _o_f_f_s_e_t or range is supplied as an argument to --dd, or the history ex- + pansion supplied as an argument to --pp fails. + + 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 follow- + ing meanings: + --ll List process IDs in addition to the normal information. + --nn Display information only about jobs that have changed status + since the user was last notified of their status. + --pp List only the process ID of the job's process group leader. + --rr Display only running jobs. + --ss Display only stopped jobs. + + If _j_o_b_s_p_e_c is supplied, jjoobbss restricts output to information about + that job. The return status is 0 unless an invalid option is en- + countered 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 corresponding process group ID, and exe- + cutes _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] _i_d [ ... ] + kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] + Send the signal specified by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes + named by each _i_d. Each _i_d may be a job specification _j_o_b_s_p_e_c or a + process ID _p_i_d. _s_i_g_s_p_e_c is either a case-insensitive signal name + such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or a signal number; + _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not supplied, then kkiillll + sends SSIIGGTTEERRMM. + + The --ll option lists the signal names. If any arguments are supplied + when --ll is given, kkiillll lists the names of the signals corresponding + to the arguments, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argu- + ment to --ll is a number specifying either a signal number or the exit + status of a process terminated by a signal; if it is supplied, kkiillll + prints the name of the signal that caused the process to terminate. + kkiillll assumes that process exit statuses are greater than 128; any- + thing less than that is a signal number. The --LL option is equiva- + lent to --ll. + + kkiillll returns true if at least one signal was successfully 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 evaluated as an arithmetic expression (see AARRIITTHHMMEETTIICC + EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett returns 1; + otherwise lleett returns 0. + + llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ... | - ] + For each argument, create a local variable named _n_a_m_e and assign it + _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted by ddeeccllaarree. + 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. + It is an error to use llooccaall when not within a function. + + If _n_a_m_e is -, it makes the set of shell options local to the func- + tion in which llooccaall is invoked: any shell options changed using the + sseett builtin inside the function after the call to llooccaall are restored + to their original values when the function returns. The restore is + performed as if a series of sseett commands were executed to restore + the values that were in place before the function. + + With no operands, llooccaall writes a list of local variables to the + standard output. + + The return status is 0 unless llooccaall is used outside a function, an + invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly variable. + + llooggoouutt [[_n]] + Exit a login shell, returning a status of _n to the shell's parent. + + mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_- + _b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] + rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] + Read lines from the standard input, or from file descriptor _f_d if + the --uu option is supplied, into the indexed array variable _a_r_r_a_y. + The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if supplied, + have the following meanings: + --dd Use the first character of _d_e_l_i_m to terminate each input + line, rather than newline. If _d_e_l_i_m is the empty string, + mmaappffiillee will terminate a line when it reads a NUL character. + --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, copy all lines. + --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default index + is 0. + --ss Discard the first _c_o_u_n_t lines read. + --tt Remove a trailing _d_e_l_i_m (default newline) from each line + read. + --uu Read lines from file descriptor _f_d instead of the standard + input. + --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The --cc + option specifies _q_u_a_n_t_u_m. + --cc Specify the number of lines read between each call to _c_a_l_l_- + _b_a_c_k. + + If --CC is specified without --cc, the default quantum is 5000. When + _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next array + element to be assigned and the line to be assigned to that element + as additional arguments. _c_a_l_l_b_a_c_k is evaluated after the line is + read but before the array element is assigned. + + If not supplied with an explicit origin, mmaappffiillee will clear _a_r_r_a_y + before assigning to it. + + mmaappffiillee returns zero unless an invalid option or option argument is + supplied, _a_r_r_a_y is invalid or unassignable, or if _a_r_r_a_y is not an + indexed array. + + ppooppdd [-nn] [+_n] [-_n] + Remove entries from the directory stack. The elements are numbered + from 0 starting at the first directory listed by ddiirrss, so ppooppdd is + equivalent to "popd +0." With no arguments, ppooppdd removes the top + directory from the stack, and changes to the new top directory. Ar- + guments, if supplied, have the following meanings: + --nn Suppress the normal change of directory when removing direc- + tories from the stack, only manipulate the stack. + ++_n Remove the _nth entry counting from the left of the list shown + by ddiirrss, starting with zero, from the stack. For example: + "popd +0" removes the first directory, "popd +1" the second. + --_n Remove 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. + + If the top element of the directory stack is modified, and the --nn + option was not supplied, ppooppdd uses the ccdd builtin to change to the + directory at the top of the stack. If the ccdd fails, ppooppdd returns a + non-zero value. + + Otherwise, ppooppdd returns false if an invalid option is supplied, the + directory stack is empty, or _n specifies a non-existent directory + stack entry. + + If the ppooppdd command is successful, bbaasshh runs ddiirrss to show the final + contents of the directory stack, and the return status is 0. + + pprriinnttff [--vv _v_a_r] _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 output under the con- + trol of the _f_o_r_m_a_t. The --vv option assigns the output to the vari- + able _v_a_r rather than printing it to the standard output. + + The _f_o_r_m_a_t is a character string which contains three types of ob- + jects: plain characters, which are simply copied to standard output, + character escape sequences, which are converted and copied to the + standard output, and format specifications, each of which causes + printing of the next successive _a_r_g_u_m_e_n_t. In addition to the stan- + dard _p_r_i_n_t_f(3) format characters ccCCssSSnnddiioouuxxXXeeEEffFFggGGaaAA, pprriinnttff inter- + prets the following additional format specifiers: + %%bb causes pprriinnttff to expand backslash escape sequences in the + corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. + %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a for- + mat that can be reused as shell input. %%qq and %%QQ use the $$'''' + quoting style if any characters in the argument string re- + quire it, and backslash quoting otherwise. If the format + string uses the _p_r_i_n_t_f alternate form, these two formats + quote the argument string using single quotes. + %%QQ like %%qq, but applies any supplied precision to the _a_r_g_u_m_e_n_t + before quoting it. + %%((_d_a_t_e_f_m_t))TT + causes pprriinnttff to output the date-time string resulting from + using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). The corre- + sponding _a_r_g_u_m_e_n_t is an integer representing the number of + seconds since the epoch. This format specifier recognizes + two special argument values: -1 represents the current time, + and -2 represents the time the shell was invoked. If no ar- + gument is specified, conversion behaves as if -1 had been + supplied. This is an exception to the usual pprriinnttff behavior. + + The %b, %q, and %T format specifiers all use the field width and + precision arguments from the format specification and write that + many bytes from (or use that wide a field for) the expanded argu- + ment, which usually contains more characters than the original. + + The %n format specifier accepts a corresponding argument that is + treated as a shell variable name. + + The %s and %c format specifiers accept an l (long) modifier, which + forces them to convert the argument string to a wide-character + string and apply any supplied field width and precision in terms of + characters, not bytes. The %S and %C format specifiers are equiva- + lent to %ls and %lc, respectively. + + Arguments to non-string format specifiers are treated as C con- + stants, except that a leading plus or minus sign is allowed, and if + the leading character is a single or double quote, the value is the + numeric value of the following character, using the current locale. + + Format specifiers may apply to the _nth argument rather than the next + sequential argument. In this case, the '%' in the format specifier + is replaced by the sequence "%_n$", where _n is a decimal integer + greater than 0, giving the argument number to use as the operand. + The format string should not mix numbered and unnumbered argument + specifiers, though this is allowed. Unnumbered argument specifiers + always refer to the next argument following the last argument con- + sumed by an unnumbered specifier; numbered argument specifiers refer + to absolute positions in the argument list. + + 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 specifications behave as if a zero value or null string, as + appropriate, had been supplied. If _f_o_r_m_a_t is reused, a numbered ar- + gument specifier "%_n$" refers to the _nth argument following the + highest numbered argument consumed by the previous use of _f_o_r_m_a_t. + + The return value is zero on success, non-zero if an invalid option + is supplied or a write or assignment error occurs. + + ppuusshhdd [--nn] [+_n] [-_n] + ppuusshhdd [--nn] [_d_i_r] + Add a directory to the top of the directory stack, or rotate the + stack, making the new top of the stack the current working direc- + tory. With no arguments, ppuusshhdd exchanges the top two elements of + the directory stack. Arguments, if supplied, have the following + meanings: + --nn Suppress the normal change of directory when rotating or + adding directories to the stack, only manipulate the stack. + ++_n Rotate 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. + _d_i_r Adds _d_i_r to the directory stack at the top. + + After the stack has been modified, if the --nn option was not sup- + plied, ppuusshhdd uses the ccdd builtin to change to the directory at the + top of the stack. If the ccdd fails, ppuusshhdd returns a non-zero value. + + Otherwise, if no arguments are supplied, ppuusshhdd returns zero unless + the directory stack is empty. When rotating the directory stack, + ppuusshhdd returns zero unless the directory stack is empty or _n speci- + fies a non-existent directory stack element. + + If the ppuusshhdd command is successful, bbaasshh runs ddiirrss to show the final + contents of the directory stack. + + ppwwdd [--LLPP] + Print the absolute pathname of the current working directory. The + pathname printed contains no symbolic links if the --PP option is sup- + plied or the --oo pphhyyssiiccaall option to the sseett builtin command is en- + abled. If the --LL option is used, the pathname printed may contain + symbolic links. The return status is 0 unless an error occurs while + reading the name of the current directory or an invalid option is + supplied. + + rreeaadd [--EEeerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp + _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] + Read one line from the standard input, or from the file descriptor + _f_d supplied as an argument to the --uu option, split it into words as + described above under WWoorrdd SSpplliittttiinngg, and assign the first word to + the first _n_a_m_e, the second word to the second _n_a_m_e, and so on. If + there are more words than names, the remaining words and their in- + tervening delimiters are assigned to the last _n_a_m_e. If there are + fewer words read from the input stream than names, the remaining + names are assigned empty values. The characters in the value of the + IIFFSS variable are used to split the line into words using the same + rules the shell uses for expansion (described above under WWoorrdd + SSpplliittttiinngg). The backslash character (\\) removes any special meaning + for the next character read and is used for line continuation. + + Options, if supplied, have the following meanings: + --aa _a_n_a_m_e + 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. + --dd _d_e_l_i_m + The first character of _d_e_l_i_m terminates the input line, + rather than newline. If _d_e_l_i_m is the empty string, rreeaadd will + terminate a line when it reads a NUL character. + --ee If the standard input is coming from a terminal, rreeaadd uses + rreeaaddlliinnee (see RREEAADDLLIINNEE above) to obtain the line. RReeaaddlliinnee + uses the current (or default, if line editing was not previ- + ously active) editing settings, but uses rreeaaddlliinnee's default + filename completion. + --EE If the standard input is coming from a terminal, rreeaadd uses + rreeaaddlliinnee (see RREEAADDLLIINNEE above) to obtain the line. RReeaaddlliinnee + uses the current (or default, if line editing was not previ- + ously active) editing settings, but uses bash's default com- + pletion, including programmable completion. + --ii _t_e_x_t + If rreeaaddlliinnee is being used to read the line, rreeaadd places _t_e_x_t + into the editing buffer before editing begins. + --nn _n_c_h_a_r_s + rreeaadd returns after reading _n_c_h_a_r_s characters rather than + waiting for a complete line of input, unless it encounters + EOF or rreeaadd times out, but honors a delimiter if it reads + fewer than _n_c_h_a_r_s characters before the delimiter. + --NN _n_c_h_a_r_s + rreeaadd returns after reading exactly _n_c_h_a_r_s characters rather + than waiting for a complete line of input, unless it encoun- + ters EOF or rreeaadd times out. Any delimiter characters in the + input are not treated specially and do not cause rreeaadd to re- + turn until it has read _n_c_h_a_r_s characters. The result is not + split on the characters in IIFFSS; the intent is that the vari- + able is assigned exactly the characters read (with the excep- + tion of backslash; see the --rr option below). + --pp _p_r_o_m_p_t + Display _p_r_o_m_p_t on standard error, without a trailing newline, + before attempting to read any input, but only if input is + coming from a terminal. + --rr Backslash does not act as an escape character. The backslash + is considered to be part of the line. In particular, a back- + slash-newline pair may not then be used as a line continua- + tion. + --ss Silent mode. If input is coming from a terminal, characters + are not echoed. + --tt _t_i_m_e_o_u_t + Cause rreeaadd to time out and return failure if it does not read + a complete line of input (or a specified number of charac- + ters) within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a decimal num- + ber with a fractional portion following the decimal point. + This option is only effective if rreeaadd is reading input from a + terminal, pipe, or other special file; it has no effect when + reading from regular files. If rreeaadd times out, it saves any + partial input read into the specified variable _n_a_m_e, and the + exit status is greater than 128. If _t_i_m_e_o_u_t is 0, rreeaadd re- + turns immediately, without trying to read any data. In this + case, the exit status is 0 if input is available on the spec- + ified file descriptor, or the read will return EOF, non-zero + otherwise. + --uu _f_d Read input from file descriptor _f_d instead of the standard + input. + + Other than the case where _d_e_l_i_m is the empty string, rreeaadd ignores + any NUL characters in the input. + + If no _n_a_m_e_s are supplied, rreeaadd assigns the line read, without the + ending delimiter but otherwise unmodified, to the variable RREEPPLLYY. + + The exit status is zero, unless end-of-file is encountered, rreeaadd + times out (in which case the status is greater than 128), a variable + assignment error (such as assigning to a readonly variable) occurs, + or an invalid file descriptor is supplied as the argument to --uu. + + rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] + 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 or unset. If the --ff option + is supplied, each _n_a_m_e refers to a shell function. The --aa option + restricts the variables to indexed arrays; the --AA option restricts + the variables to associative arrays. If both options are supplied, + --AA takes precedence. If no _n_a_m_e arguments are supplied, or if the + --pp option is supplied, print a list of all readonly names. The + other options may be used to restrict the output to a subset of the + set of readonly names. The --pp option displays output in a format + that may be reused as input. + + rreeaaddoonnllyy allows the value of a variable to be set at the same time + the readonly attribute is changed by following the variable name + with =_v_a_l_u_e. This sets the value of the variable is to _v_a_l_u_e while + modifying the readonly attribute. + + 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] + Stop executing a shell function or sourced file and return the value + specified by _n to its caller. If _n is omitted, the return status is + that of the last command executed. If rreettuurrnn is executed by a trap + handler, the last command used to determine the status is the last + command executed before the trap handler. If rreettuurrnn is executed + during a DDEEBBUUGG trap, the last command used to determine the status + is the last command executed by the trap handler before rreettuurrnn was + invoked. + + When rreettuurrnn is used to terminate execution of a script being exe- + cuted by the .. (ssoouurrccee) command, it causes the shell to stop exe- + cuting that script and return either _n or the exit status of the + last command executed within the script as the exit status of the + script. If _n is supplied, the return value is its least significant + 8 bits. + + Any command associated with the RREETTUURRNN trap is executed before exe- + cution resumes after the function or script. + + The return status is non-zero if rreettuurrnn is supplied a non-numeric + argument, or is used outside a function and not during execution of + a script by .. or ssoouurrccee. + + sseett [--aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [----] [--] [_a_r_g ...] + sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [----] [--] [_a_r_g ...] + sseett --oo + sseett ++oo + Without options, display the name and value of each shell variable + in a format that can be reused as input for setting or resetting the + currently-set variables. Read-only variables cannot be reset. In + posix mode, only shell variables are listed. The output is sorted + according to the current locale. When options are specified, they + set or unset shell attributes. Any arguments remaining after option + processing 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 Each variable or function that is created or modified is + given the export attribute and marked for export to the en- + vironment of subsequent commands. + --bb Report the status of terminated background jobs immediately, + rather than before the next primary prompt or after a fore- + ground command terminates. This is effective only when job + control is enabled. + --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a sin- + gle _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _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 the + command list immediately following a wwhhiillee or uunnttiill reserved + word, part of the test following the iiff or eelliiff reserved + words, part of any command executed in a &&&& or |||| list ex- + cept the command following the final &&&& or ||||, any command + in a pipeline but the last (subject to the state of the + ppiippeeffaaiill shell option), or if the command's return value is + being inverted with !!. If a compound command other than a + subshell returns a non-zero status because a command failed + while --ee was being ignored, the shell does not exit. A trap + on EERRRR, if set, is executed before the shell exits. This + option applies to the shell environment and each subshell + environment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT + above), and may cause subshells to exit before executing all + the commands in the subshell. + + If a compound command or shell function executes in a con- + text where --ee is being ignored, none of the commands exe- + cuted within the compound command or function body will be + affected by the --ee setting, even if --ee is set and a command + returns a failure status. If a compound command or shell + function sets --ee while executing in a context where --ee is + ignored, that setting will not have any effect until the + compound command or the command containing the function call + completes. + --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 interactive shells on systems that support it + (see JJOOBB CCOONNTTRROOLL above). All processes run in a separate + process group. When a background job completes, the shell + prints a line containing its exit status. + --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 following: + 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. This also affects the editing + interface used for rreeaadd --ee. + eerrrreexxiitt + Same as --ee. + eerrrrttrraaccee + Same as --EE. + ffuunnccttrraaccee + Same as --TT. + hhaasshhaallll + Same as --hh. + hhiisstteexxppaanndd + Same as --HH. + hhiissttoorryy + Enable command history, as described above under + HHIISSTTOORRYY. This option is on by default in interac- + tive shells. + iiggnnoorreeeeooff + The effect is as if the shell command "IGNOREEOF=10" + had been executed (see SShheellll VVaarriiaabblleess above). + kkeeyywwoorrdd + Same as --kk. + mmoonniittoorr + Same as --mm. + nnoocclloobbbbeerr + Same as --CC. + nnooeexxeecc Same as --nn. + nnoogglloobb Same as --ff. + nnoolloogg Currently ignored. + nnoottiiffyy Same as --bb. + nnoouunnsseett + Same as --uu. + oonneeccmmdd Same as --tt. + pphhyyssiiccaall + Same as --PP. + ppiippeeffaaiill + If set, the return value of a pipeline is the value + of the last (rightmost) command to exit with a non- + zero status, or zero if all commands in the pipeline + exit successfully. This option is disabled by de- + fault. + ppoossiixx Enable posix mode; change the behavior of bbaasshh where + the default operation differs from the POSIX stan- + dard to match the standard. See SSEEEE AALLSSOO below for + a reference to a document that details how posix + mode affects bash's behavior. + pprriivviilleeggeedd + Same as --pp. + vveerrbboossee + Same as --vv. + vvii Use a vi-style command line editing interface. This + also affects the editing interface used for rreeaadd --ee. + xxttrraaccee Same as --xx. + If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, sseett prints the cur- + rent shell option settings. If ++oo is supplied with no _o_p_- + _t_i_o_n_-_n_a_m_e, sseett prints a series of sseett commands to recreate + the current option settings on the standard output. + --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the shell does not + read the $$EENNVV and $$BBAASSHH__EENNVV files, does not inherit shell + functions from the environment, and ignores the SSHHEELLLLOOPPTTSS, + BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they appear + in the environment. If the shell is started with the effec- + tive user (group) id not equal to the real user (group) id, + and the --pp option is not supplied, these actions are taken + and the effective user id is set to the real user id (see + IINNVVOOCCAATTIIOONN above for more details). If the --pp option is + supplied at startup, the effective user id is not reset. + Turning this option off causes the effective user and group + ids to be set to the real user and group ids. + --rr Enable restricted shell mode. This option cannot be unset + once it has been set. + --tt Exit after reading and executing one command. + --uu Treat unset variables and parameters other than the special + parameters "@" and "*", or array variables subscripted with + "@" or "*", as an error when performing parameter expansion. + If expansion is attempted on an unset variable or parameter, + 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. + --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee com- + mand, sseelleecctt command, or arithmetic ffoorr command, display the + expanded value of PPSS44, followed by the command and its ex- + panded arguments or associated word list, to the standard + error. + --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. Using the redirection op- + erator >>|| instead of >> will override this and force the cre- + ation of an output file. + --EE If set, any trap on EERRRR is inherited by shell functions, + command substitutions, and commands executed in a subshell + environment. The EERRRR trap is normally not inherited in such + cases. + --HH Enable !! style history substitution. This option is on by + default when the shell is interactive. + --PP If set, the shell does not resolve symbolic links when exe- + cuting commands such as ccdd that change the current working + directory. It uses the physical directory structure in- + stead. By default, bbaasshh follows the logical chain of direc- + tories when performing commands which change the current di- + rectory. + --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by shell + functions, command substitutions, and commands executed in a + subshell environment. The DDEEBBUUGG and RREETTUURRNN traps are nor- + mally not inherited in such cases. + ---- If no arguments follow this option, unset the positional pa- + rameters. Otherwise, set the positional parameters to the + _a_r_gs, even if some of them begin with a --. + -- Signal the end of options, and assign all remaining _a_r_gs to + the positional 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 specified as arguments to an invocation of the shell. + The current set of options may be found in $$--. The return status is + always zero unless an invalid option is encountered. + + sshhiifftt [_n] + Rename positional parameters from _n+1 ... to $$11 ........ Parameters + represented by the numbers $$## down to $$##-_n+1 are unset. _n must be a + non-negative number less than or equal to $$##. If _n is 0, no parame- + ters 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 settings controlling optional shell behavior. + The settings can be either those listed below, or, if the --oo option + is used, those available with the --oo option to the sseett builtin com- + mand. + + With no options, or with the --pp option, display a list of all set- + table options, with an indication of whether or not each is set; if + any _o_p_t_n_a_m_e_s are supplied, the output is restricted to those op- + tions. The --pp option displays output 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 in- + dicates whether the _o_p_t_n_a_m_e is set or unset. If multiple + _o_p_t_n_a_m_e arguments are supplied 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 arguments, sshhoopptt shows + only those options which are set or unset, respectively. Unless + otherwise 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: + + aarrrraayy__eexxppaanndd__oonnccee + If set, the shell suppresses multiple evaluation of associa- + tive and indexed array subscripts during arithmetic expres- + sion evaluation, while executing builtins that can perform + variable assignments, and while executing builtins that per- + form array dereferencing. + aassssoocc__eexxppaanndd__oonnccee + Deprecated; a synonym for aarrrraayy__eexxppaanndd__oonnccee. + aauuttooccdd If set, a command name that is the name of a directory is + executed as if it were the argument to the ccdd command. This + option is only used by interactive shells. + bbaasshh__ssoouurrccee__ffuullllppaatthh + If set, filenames added to the BBAASSHH__SSOOUURRCCEE array variable + are converted to full pathnames (see SShheellll VVaarriiaabblleess above). + ccddaabbllee__vvaarrss + If set, an argument to the ccdd builtin command 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, the ccdd command attempts to correct minor errors in + the spelling of a directory component. Minor errors include + transposed characters, a missing character, and one extra + character. If ccdd corrects the directory name, it prints the + corrected filename, 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 execute it. If a hashed command no + longer exists, bbaasshh performs a normal path search. + cchheecckkjjoobbss + If set, bbaasshh lists the status of any stopped and running + jobs before exiting an interactive shell. If any jobs are + running, bbaasshh defers the exit until a second exit is at- + tempted without an intervening command (see JJOOBB CCOONNTTRROOLL + above). The shell always postpones exiting if any jobs are + stopped. + cchheecckkwwiinnssiizzee + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the values + of LLIINNEESS and CCOOLLUUMMNNSS, using the file descriptor associated + with the standard error if it is a terminal. This option is + enabled by default. + ccmmddhhiisstt + If set, bbaasshh attempts to save all lines of a multiple-line + command in the same history entry. This allows easy re- + editing of multi-line commands. This option is enabled by + default, but only has an effect if command history is en- + abled, as described above under HHIISSTTOORRYY. + ccoommppaatt3311 + ccoommppaatt3322 + ccoommppaatt4400 + ccoommppaatt4411 + ccoommppaatt4422 + ccoommppaatt4433 + ccoommppaatt4444 + These control aspects of the shell's compatibility mode (see + SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below). + ccoommpplleettee__ffuullllqquuoottee + If set, bbaasshh quotes all shell metacharacters in filenames + and directory names when performing completion. If not set, + bbaasshh removes metacharacters such as the dollar sign from the + set of characters that will be quoted in completed filenames + when these metacharacters appear in shell variable refer- + ences in words to be completed. This means that dollar + signs in variable names that expand to directories will not + be quoted; however, any dollar signs appearing in filenames + will not be quoted, either. This is active only when bash + is using backslashes to quote completed filenames. This + variable is set by default, which is the default bash behav- + ior in versions through 4.2. + ddiirreexxppaanndd + If set, bbaasshh replaces directory names with the results of + word expansion when performing filename completion. This + changes the contents of the rreeaaddlliinnee editing buffer. If not + set, bbaasshh attempts to preserve what the user typed. + ddiirrssppeellll + If set, bbaasshh attempts spelling correction on directory names + during word completion if the directory name initially sup- + plied does not exist. + ddoottgglloobb + If set, bbaasshh includes filenames beginning with a "." in the + results of pathname expansion. The filenames _. and _._. must + always be matched explicitly, even if ddoottgglloobb is set. + eexxeeccffaaiill + If set, a non-interactive shell will not exit if it cannot + execute the file specified as an argument to the eexxeecc + builtin. 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. + eexxttddeebbuugg + If set at shell invocation, or in a shell startup file, + arrange to execute the debugger profile before the shell + starts, identical to the ----ddeebbuuggggeerr option. If set after + invocation, behavior intended for use by debuggers is en- + abled: + 11.. The --FF option to the ddeeccllaarree builtin displays the + source file name and line number corresponding to + each function name supplied as an argument. + 22.. If the command run by the DDEEBBUUGG trap returns a non- + zero value, the next command is skipped and not exe- + cuted. + 33.. If the command run by the DDEEBBUUGG trap returns a value + of 2, and the shell is executing in a subroutine (a + shell function or a shell script executed by the .. or + ssoouurrccee builtins), the shell simulates a call to rree-- + ttuurrnn. + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described in + their descriptions above). + 55.. Function tracing is enabled: command substitution, + shell functions, and subshells invoked with (( _c_o_m_m_a_n_d + )) inherit the DDEEBBUUGG and RREETTUURRNN traps. + 66.. Error tracing is enabled: command substitution, shell + functions, and subshells invoked with (( _c_o_m_m_a_n_d )) in- + herit the EERRRR trap. + eexxttgglloobb + If set, enable the extended pattern matching features de- + scribed above under PPaatthhnnaammee EExxppaannssiioonn. + eexxttqquuoottee + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed within + $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double quotes. This op- + tion is enabled by default. + ffaaiillgglloobb + If set, patterns which fail to match filenames during path- + name expansion result in an expansion error. + ffoorrccee__ffiiggnnoorree + If set, the suffixes specified by the FFIIGGNNOORREE shell variable + cause words to be ignored when performing word completion + even if the ignored words are the only possible completions. + See SShheellll VVaarriiaabblleess above for a description of FFIIGGNNOORREE. + This option is enabled by default. + gglloobbaasscciiiirraannggeess + If set, range expressions used in pattern matching bracket + expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave as if in the + traditional C locale when performing comparisons. That is, + pattern matching does not take the current locale's collat- + ing sequence into account, so bb will not collate between AA + and BB, and upper-case and lower-case ASCII characters will + collate together. + gglloobbsskkiippddoottss + If set, pathname expansion will never match the filenames _. + and _._., even if the pattern begins with a ".". This option + is enabled by default. + gglloobbssttaarr + If set, the pattern **** used in a pathname expansion context + will match all files and zero or more directories and subdi- + rectories. If the pattern is followed by a //, only directo- + ries and subdirectories match. + ggnnuu__eerrrrffmmtt + If set, shell error messages are written in the standard GNU + error message format. + 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, the 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 further modification. + hhoossttccoommpplleettee + If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to + perform hostname completion when a word containing a @@ is + being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE above). This + is enabled by default. + hhuuppoonneexxiitt + If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an interac- + tive login shell exits. + iinnhheerriitt__eerrrreexxiitt + If set, command substitution inherits the value of the eerr-- + rreexxiitt option, instead of unsetting it in the subshell envi- + ronment. This option is enabled when posix mode is enabled. + iinntteerraaccttiivvee__ccoommmmeennttss + In an interactive shell, a word beginning with ## causes that + word and all remaining characters on that line to be ig- + nored, as in a non-interactive shell (see CCOOMMMMEENNTTSS above). + This option is enabled by default. + llaassttppiippee + If set, and job control is not active, the shell runs the + last command of a pipeline not executed in the background in + the current shell environment. + lliitthhiisstt + If set, and the ccmmddhhiisstt option is enabled, multi-line com- + mands are saved to the history with embedded newlines rather + than using semicolon separators where possible. + llooccaallvvaarr__iinnhheerriitt + If set, local variables inherit the value and attributes of + a variable of the same name that exists at a previous scope + before any new value is assigned. The nameref attribute is + not inherited. + llooccaallvvaarr__uunnsseett + If set, calling uunnsseett on local variables in previous func- + tion scopes marks them so subsequent lookups find them unset + until that function returns. This is identical to the be- + havior of unsetting local variables at the current function + scope. + llooggiinn__sshheellll + The shell sets this option if it is started as a login shell + (see IINNVVOOCCAATTIIOONN above). The value may not be changed. + mmaaiillwwaarrnn + If set, and a file that bbaasshh is checking for mail has been + accessed since the last time it was checked, bbaasshh displays + the message "The mail in _m_a_i_l_f_i_l_e has been read". + nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn + If set, and rreeaaddlliinnee is being used, bbaasshh does not search + PPAATTHH for possible completions when completion is attempted + on an empty line. + nnooccaasseegglloobb + If set, bbaasshh matches filenames in a case-insensitive fashion + when performing pathname expansion (see PPaatthhnnaammee EExxppaannssiioonn + above). + nnooccaasseemmaattcchh + If set, bbaasshh matches patterns in a case-insensitive fashion + when performing matching while executing ccaassee or [[[[ condi- + tional commands, when performing pattern substitution word + expansions, or when filtering possible completions as part + of programmable completion. + nnooeexxppaanndd__ttrraannssllaattiioonn + If set, bbaasshh encloses the translated results of $$""..."" quot- + ing in single quotes instead of double quotes. If the + string is not translated, this has no effect. + nnuullllgglloobb + If set, pathname expansion patterns which match no files + (see PPaatthhnnaammee EExxppaannssiioonn above) expand to nothing and are re- + moved, rather than expanding to themselves. + ppaattssuubb__rreeppllaacceemmeenntt + If set, bbaasshh expands occurrences of && in the replacement + string of pattern substitution to the text matched by the + pattern, as described under PPaarraammeetteerr EExxppaannssiioonn above. This + option is enabled by default. + pprrooggccoommpp + If set, enable the programmable completion facilities (see + PPrrooggrraammmmaabbllee CCoommpplleettiioonn above). This option is enabled by + default. + pprrooggccoommpp__aalliiaass + If set, and programmable completion is enabled, bbaasshh treats + a command name that doesn't have any completions as a possi- + ble alias and attempts alias expansion. If it has an alias, + bbaasshh attempts programmable completion using the command word + resulting from the expanded alias. + pprroommppttvvaarrss + If set, prompt strings undergo parameter expansion, command + substitution, arithmetic expansion, and quote removal after + being expanded as described in PPRROOMMPPTTIINNGG above. This option + is enabled by default. + rreessttrriicctteedd__sshheellll + The shell sets this option if it is started in restricted + mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). The value may not be + changed. This is not reset when the startup files are exe- + cuted, allowing the startup files to discover whether or not + a shell is restricted. + 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 containing the file supplied as an argu- + ment when the --pp option is not supplied. This option is en- + abled by default. + vvaarrrreeddiirr__cclloossee + If set, the shell automatically closes file descriptors as- + signed using the _{_v_a_r_n_a_m_e_} redirection syntax (see RREEDDIIRREECC-- + TTIIOONN above) instead of leaving them open when the command + completes. + xxppgg__eecchhoo + If set, the eecchhoo builtin expands backslash-escape sequences + by default. If the ppoossiixx shell option is also enabled, eecchhoo + does not interpret any options. + + ssuussppeenndd [--ff] + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT sig- + nal. A login shell, or a shell without job control enabled, cannot + be suspended; the --ff option will override this and force the suspen- + sion. The return status is 0 unless the shell is a login shell or + job control is not enabled and --ff is not supplied. + + tteesstt _e_x_p_r + [[ _e_x_p_r ]] + Return a status of 0 (true) or 1 (false) depending on the evaluation + 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. tteesstt does not accept + any options, nor does it accept and ignore an argument of ---- as sig- + nifying the end of options. + + Expressions may be combined using the following operators, listed in + decreasing order of precedence. The evaluation depends on the num- + ber of arguments; see below. tteesstt uses operator precedence when + there are five or more arguments. + !! _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 nor- + mal operator precedence. + _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. + _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 expression is true if the unary + test is true. If the first argument is not a valid unary + conditional operator, the expression is false. + 3 arguments + The following conditions are applied in the order listed. If + the second argument is one of the binary conditional opera- + tors 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. The --aa and --oo opera- + tors are considered binary operators when there are three ar- + guments. If the first argument is !!, the value is the nega- + tion of the two-argument test using the second and third ar- + guments. If the first argument is exactly (( and the third + argument is exactly )), the result is the one-argument test of + the second argument. Otherwise, the expression is false. + 4 arguments + The following conditions are applied in the order listed. If + the first argument is !!, the result is the negation of the + three-argument expression composed of the remaining argu- + ments. If the first argument is exactly (( and the fourth ar- + gument is exactly )), the result is the two-argument test of + the second and third 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 prece- + dence using the rules listed above. + + When the shell is in posix mode, or if the expression is part of the + [[[[ command, the << and >> operators sort using the current locale. If + the shell is not in posix mode, the tteesstt and [[ commands sort lexico- + graphically using ASCII ordering. + + The historical operator-precedence parsing with 4 or more arguments + can lead to ambiguities when it encounters strings that look like + primaries. The POSIX standard has deprecated the --aa and --oo pri- + maries and enclosing expressions within parentheses. Scripts should + no longer use them. It's much more reliable to restrict test invo- + cations to a single primary, and to replace uses of --aa and --oo with + the shell's &&&& and |||| list operators. + + ttiimmeess Print the accumulated user and system times for the shell and for + processes run from the shell. The return status is 0. + + ttrraapp [--llppPP] [[_a_c_t_i_o_n] _s_i_g_s_p_e_c ...] + The _a_c_t_i_o_n is a command that is read and executed when the shell re- + ceives any of the signals _s_i_g_s_p_e_c. If _a_c_t_i_o_n is absent (and there + is a single _s_i_g_s_p_e_c) or --, each specified _s_i_g_s_p_e_c is reset to the + value it had when the shell was started. If _a_c_t_i_o_n is the null + string the signal specified by each _s_i_g_s_p_e_c is ignored by the shell + and by the commands it invokes. + + If no arguments are supplied, ttrraapp displays the actions associated + with each trapped signal as a set of ttrraapp commands that can be + reused as shell input to restore the current signal dispositions. + If --pp is given, and _a_c_t_i_o_n is not present, then ttrraapp displays the + actions associated with each _s_i_g_s_p_e_c or, if none are supplied, for + all trapped signals, as a set of ttrraapp commands that can be reused as + shell input to restore the current signal dispositions. The --PP op- + tion behaves similarly, but displays only the actions associated + with each _s_i_g_s_p_e_c argument. --PP requires at least one _s_i_g_s_p_e_c argu- + ment. The --PP or --pp options may be used in a subshell environment + (e.g., command substitution) and, as long as they are used before + ttrraapp is used to change a signal's handling, will display the state + of its parent's traps. + + The --ll option prints a list of signal names and their corresponding + numbers. 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. Signal names are case insensitive and + the SSIIGG prefix is optional. If --ll is supplied with no _s_i_g_s_p_e_c argu- + ments, it prints a list of valid signal names. + + If a _s_i_g_s_p_e_c is EEXXIITT (0), _a_c_t_i_o_n is executed on exit from the shell. + If a _s_i_g_s_p_e_c is DDEEBBUUGG, _a_c_t_i_o_n is executed before every _s_i_m_p_l_e _c_o_m_- + _m_a_n_d, _f_o_r command, _c_a_s_e command, _s_e_l_e_c_t command, (( arithmetic com- + mand, [[ conditional command, arithmetic _f_o_r command, and before the + first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR + above). Refer to the description of the eexxttddeebbuugg shell option (see + sshhoopptt above) for details of its effect on the DDEEBBUUGG trap. If a + _s_i_g_s_p_e_c is RREETTUURRNN, _a_c_t_i_o_n is executed each time a shell function or + a script executed with the .. or ssoouurrccee builtins finishes executing. + + If a _s_i_g_s_p_e_c is EERRRR, _a_c_t_i_o_n is executed whenever a pipeline (which + may consist of a single simple command), a list, or a compound com- + mand returns a non-zero exit status, subject to the following condi- + tions. The EERRRR trap is not executed if the failed command is part + of the command list immediately following a wwhhiillee or uunnttiill reserved + word, part of the test in an _i_f statement, part of a command exe- + cuted in a &&&& or |||| list except the command following the final &&&& + or ||||, any command in a pipeline but the last (subject to the state + of the ppiippeeffaaiill shell option), or if the command's return value is + being inverted using !!. These are the same conditions obeyed by the + eerrrreexxiitt (--ee) option. + + When the shell is not interactive, signals ignored upon entry to the + shell cannot be trapped or reset. Interactive shells permit trap- + ping signals ignored on entry. Trapped signals that are not being + ignored are reset to their original values in a subshell or subshell + environment when one is created. The return status is false if any + _s_i_g_s_p_e_c is invalid; otherwise ttrraapp returns true. + + ttrruuee Does nothing, returns a 0 status. + + ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...] + 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 executable file, respec- + tively. If the _n_a_m_e is not found, ttyyppee prints nothing and returns a + non-zero exit status. + + If the --pp option is used, ttyyppee either returns the pathname of the + executable file that would be found by searching $$PPAATTHH for _n_a_m_e or + nothing if "type -t name" would not return _f_i_l_e. The --PP option + forces a PPAATTHH search for each _n_a_m_e, even if "type -t name" would not + return _f_i_l_e. If _n_a_m_e is present in the table of hashed commands, --pp + and --PP print the hashed value, which is not necessarily the file + that appears first in PPAATTHH. + + If the --aa option is used, ttyyppee prints all of the places that contain + a command named _n_a_m_e. This includes aliases, reserved words, func- + tions, and builtins, but the path search options (--pp and --PP) can be + supplied to restrict the output to executable files. ttyyppee does not + consult the table of hashed commands when using --aa with --pp, and only + performs a PPAATTHH search for _n_a_m_e. + + The --ff option suppresses shell function lookup, as with the ccoommmmaanndd + builtin. ttyyppee returns true if all of the arguments are found, false + if any are not found. + + uulliimmiitt [--HHSS] --aa + uulliimmiitt [--HHSS] [--bbccddeeffiikkllmmnnppqqrrssttuuvvxxPPRRTT [_l_i_m_i_t]] + Provides control over the resources available to the shell and to + processes it starts, on systems that allow such control. + + The --HH and --SS options specify whether the hard or soft limit is set + for the given resource. A hard limit cannot be increased by a non- + root user once it is set; a soft limit may be increased up to the + value of the hard limit. If neither --HH nor --SS is specified, uulliimmiitt + sets both the soft and hard limits. + + The value of _l_i_m_i_t can be a number in the unit specified for the re- + source or one of the special values hhaarrdd, ssoofftt, or uunnlliimmiitteedd, which + stand for the current hard limit, the current soft limit, and no + limit, respectively. If _l_i_m_i_t is omitted, uulliimmiitt prints the current + value of the soft limit of the resource, unless the --HH option is + given. When more than one resource is specified, the limit name and + unit, if appropriate, are printed before the value. Other options + are interpreted as follows: + --aa Report all current limits; no limits are set. + --bb The maximum socket buffer size. + --cc The maximum size of core files created. + --dd The maximum size of a process's data segment. + --ee The maximum scheduling priority ("nice"). + --ff The maximum size of files written by the shell and its chil- + dren. + --ii The maximum number of pending signals. + --kk The maximum number of kqueues that may be allocated. + --ll The maximum size that may be locked into memory. + --mm The maximum resident set size (many systems do not honor this + limit). + --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). + --qq The maximum number of bytes in POSIX message queues. + --rr The maximum real-time scheduling priority. + --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 available to the shell + and, on some systems, to its children. + --xx The maximum number of file locks. + --PP The maximum number of pseudoterminals. + --RR The maximum time a real-time process can run before blocking, + in microseconds. + --TT The maximum number of threads. + + If _l_i_m_i_t is supplied, and the --aa option is not used, _l_i_m_i_t is the + new value of the specified resource. If no option is supplied, then + --ff is assumed. + + Values are in 1024-byte increments, except for --tt, which is in sec- + onds; --RR, which is in microseconds; --pp, which is in units of + 512-byte blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled val- + ues; and, when in posix mode, --cc and --ff, which are in 512-byte in- + crements. The return status is 0 unless an invalid option or argu- + ment is supplied, or an error occurs while setting a new limit. + + uummaasskk [--pp] [--SS] [_m_o_d_e] + Set the user file-creation mask to _m_o_d_e. If _m_o_d_e begins with a + digit, it is interpreted as an octal number; otherwise it is inter- + preted as a symbolic mode mask similar to that accepted by _c_h_m_o_d(1). + If _m_o_d_e is omitted, uummaasskk prints the current value of the mask. The + --SS option without a _m_o_d_e argument prints the mask in a symbolic for- + mat; 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 zero if the mode was success- + fully changed or if no _m_o_d_e argument was supplied, and non-zero oth- + erwise. + + uunnaalliiaass [-aa] [_n_a_m_e ...] + Remove each _n_a_m_e from the list of defined aliases. If --aa is sup- + plied, remove all alias definitions. The return value is true un- + less a supplied _n_a_m_e is not a defined alias. + + uunnsseett [-ffvv] [-nn] [_n_a_m_e ...] + For each _n_a_m_e, remove the corresponding variable or function. If + the --vv option is given, each _n_a_m_e refers to a shell variable, and + that variable is removed. If --ff is specified, each _n_a_m_e refers to a + shell function, and the function definition is removed. If the --nn + option is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f at- + tribute, _n_a_m_e will be unset rather than the variable it references. + --nn has no effect if the --ff option is supplied. Read-only variables + and functions may not be unset. When variables or functions are re- + moved, they are also removed from the environment passed to subse- + quent commands. If no options are supplied, each _n_a_m_e refers to a + variable; if there is no variable by that name, a function with that + name, if any, is unset. Some shell variables may not be unset. If + any of BBAASSHH__AALLIIAASSEESS, BBAASSHH__AARRGGVV00, BBAASSHH__CCMMDDSS, BBAASSHH__CCOOMMMMAANNDD, BBAASSHH__SSUUBB-- + SSHHEELLLL, BBAASSHHPPIIDD, CCOOMMPP__WWOORRDDBBRREEAAKKSS, DDIIRRSSTTAACCKK, EEPPOOCCHHRREEAALLTTIIMMEE, EEPPOOCCHHSSEECC-- + OONNDDSS, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM + are unset, they lose their special properties, even if they are sub- + sequently reset. The exit status is true unless a _n_a_m_e is readonly + or may not be unset. + + wwaaiitt [--ffnn] [--pp _v_a_r_n_a_m_e] [_i_d ...] + Wait for each specified child process _i_d and return the termination + status of the last _i_d. Each _i_d may be a process ID _p_i_d or a job + specification _j_o_b_s_p_e_c; if a jobspec is supplied, wwaaiitt waits for all + processes in the job. + + If no options or _i_ds are supplied, wwaaiitt waits for all running back- + ground jobs and the last-executed process substitution, if its + process id is the same as $$!!, and the return status is zero. + + If the --nn option is supplied, wwaaiitt waits for any one of the given + _i_ds or, if no _i_ds are supplied, any job or process substitution, to + complete and returns its exit status. If none of the supplied _i_ds + is a child of the shell, or if no _i_ds are supplied and the shell has + no unwaited-for children, the exit status is 127. + + If the --pp option is supplied, wwaaiitt assigns the process or job iden- + tifier of the job for which the exit status is returned to the vari- + able _v_a_r_n_a_m_e named by the option argument. The variable, which can- + not be readonly, will be unset initially, before any assignment. + This is useful only when used with the --nn option. + + Supplying the --ff option, when job control is enabled, forces wwaaiitt to + wait for each _i_d to terminate before returning its status, instead + of returning when it changes status. If there are no _i_d arguments, + wwaaiitt waits until all background processes have terminated. + + If none of the _i_ds specify one of the shell's active child + processes, the return status is 127. If wwaaiitt is interrupted by a + signal, any _v_a_r_n_a_m_e will remain unset, and the return status will be + greater than 128, as described under SSIIGGNNAALLSS above. Otherwise, the + return status is the exit status of the last _i_d. SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE - Bash-4.0 introduced the concept of a _s_h_e_l_l _c_o_m_p_a_t_i_b_i_l_i_t_y _l_e_v_e_l, speci- - fied as a set of options to the shopt builtin (ccoommppaatt3311, ccoommppaatt3322, ccoomm-- - ppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibility - level -- each option is mutually exclusive. The compatibility level is - intended to allow users to select behavior from previous versions that - is incompatible with newer versions while they migrate scripts to use - current features and behavior. It's intended to be a temporary solu- - tion. + Bash-4.0 introduced the concept of a _s_h_e_l_l _c_o_m_p_a_t_i_b_i_l_i_t_y _l_e_v_e_l, specified + as a set of options to the shopt builtin (ccoommppaatt3311, ccoommppaatt3322, ccoommppaatt4400, + ccoommppaatt4411, and so on). There is only one current compatibility level -- + each option is mutually exclusive. The compatibility level is intended to + allow users to select behavior from previous versions that is incompatible + with newer versions while they migrate scripts to use current features and + behavior. It's intended to be a temporary solution. - This section does not mention behavior that is standard for a particu- - lar version (e.g., setting ccoommppaatt3322 means that quoting the right hand - side of the regexp matching operator quotes special regexp characters - in the word, which is default behavior in bash-3.2 and subsequent ver- - sions). + This section does not mention behavior that is standard for a particular + version (e.g., setting ccoommppaatt3322 means that quoting the right hand side of + the regexp matching operator quotes special regexp characters in the word, + which is default behavior in bash-3.2 and subsequent versions). - If a user enables, say, ccoommppaatt3322, it may affect the behavior of other - compatibility levels up to and including the current compatibility - level. The idea is that each compatibility level controls behavior - that changed in that version of bbaasshh, but that behavior may have been - present in earlier versions. For instance, the change to use locale- - based comparisons with the [[[[ command came in bash-4.1, and earlier - versions used ASCII-based comparisons, so enabling ccoommppaatt3322 will enable - ASCII-based comparisons as well. That granularity may not be suffi- - cient for all uses, and as a result users should employ compatibility - levels carefully. Read the documentation for a particular feature to - find out the current behavior. + If a user enables, say, ccoommppaatt3322, it may affect the behavior of other com- + patibility levels up to and including the current compatibility level. The + idea is that each compatibility level controls behavior that changed in + that version of bbaasshh, but that behavior may have been present in earlier + versions. For instance, the change to use locale-based comparisons with + the [[[[ command came in bash-4.1, and earlier versions used ASCII-based com- + parisons, so enabling ccoommppaatt3322 will enable ASCII-based comparisons as well. + That granularity may not be sufficient for all uses, and as a result users + should employ compatibility levels carefully. Read the documentation for a + particular feature to find out the current behavior. - Bash-4.3 introduced a new shell variable: BBAASSHH__CCOOMMPPAATT. The value as- - signed to this variable (a decimal version number like 4.2, or an inte- - ger corresponding to the ccoommppaatt_N_N option, like 42) determines the com- - patibility level. + Bash-4.3 introduced a new shell variable: BBAASSHH__CCOOMMPPAATT. The value assigned + to this variable (a decimal version number like 4.2, or an integer corre- + sponding to the ccoommppaatt_N_N option, like 42) determines the compatibility + level. - Starting with bash-4.4, bbaasshh began deprecating older compatibility lev- - els. Eventually, the options will be removed in favor of BBAASSHH__CCOOMMPPAATT. + Starting with bash-4.4, bbaasshh began deprecating older compatibility levels. + Eventually, the options will be removed in favor of BBAASSHH__CCOOMMPPAATT. - Bash-5.0 was the final version for which there was an individual shopt - option for the previous version. BBAASSHH__CCOOMMPPAATT is the only mechanism to - control the compatibility level in versions newer than bash-5.0. + Bash-5.0 was the final version for which there was an individual shopt op- + tion for the previous version. BBAASSHH__CCOOMMPPAATT is the only mechanism to con- + trol the compatibility level in versions newer than bash-5.0. - The following table describes the behavior changes controlled by each - compatibility level setting. The ccoommppaatt_N_N tag is used as shorthand for - setting the compatibility level to _N_N using one of the following mecha- - nisms. For versions prior to bash-5.0, the compatibility level may be - set using the corresponding ccoommppaatt_N_N shopt option. For bash-4.3 and - later versions, the BBAASSHH__CCOOMMPPAATT variable is preferred, and it is re- - quired for bash-5.1 and later versions. + The following table describes the behavior changes controlled by each com- + patibility level setting. The ccoommppaatt_N_N tag is used as shorthand for set- + ting the compatibility level to _N_N using one of the following mechanisms. + For versions prior to bash-5.0, the compatibility level may be set using + the corresponding ccoommppaatt_N_N shopt option. For bash-4.3 and later versions, + the BBAASSHH__CCOOMMPPAATT variable is preferred, and it is required for bash-5.1 and + later versions. - ccoommppaatt3311 - +o Quoting the rhs of the [[[[ command's regexp matching oper- - ator (=~) has no special effect. + ccoommppaatt3311 + * Quoting the rhs of the [[[[ command's regexp matching operator + (=~) has no special effect. - ccoommppaatt3322 - +o The << and >> operators to the [[[[ command do not consider - the current locale when comparing strings; they use ASCII - ordering. + ccoommppaatt3322 + * The << and >> operators to the [[[[ command do not consider the + current locale when comparing strings; they use ASCII order- + ing. - ccoommppaatt4400 - +o The << and >> operators to the [[[[ command do not consider - the current locale when comparing strings; they use ASCII - ordering. BBaasshh versions prior to bash-4.1 use ASCII col- - lation and _s_t_r_c_m_p(3); bash-4.1 and later use the current - locale's collation sequence and _s_t_r_c_o_l_l(3). + ccoommppaatt4400 + * The << and >> operators to the [[[[ command do not consider the + current locale when comparing strings; they use ASCII order- + ing. BBaasshh versions prior to bash-4.1 use ASCII collation and + _s_t_r_c_m_p(3); bash-4.1 and later use the current locale's colla- + tion sequence and _s_t_r_c_o_l_l(3). - ccoommppaatt4411 - +o In posix mode, ttiimmee may be followed by options and still - be recognized as a reserved word (this is POSIX interpre- - tation 267). - +o In _p_o_s_i_x mode, the parser requires that an even number of - single quotes occur in the _w_o_r_d portion of a double- - quoted parameter expansion and treats them specially, so - that characters within the single quotes are considered - quoted (this is POSIX interpretation 221). + ccoommppaatt4411 + * In posix mode, ttiimmee may be followed by options and still be + recognized as a reserved word (this is POSIX interpretation + 267). + * In _p_o_s_i_x mode, the parser requires that an even number of + single quotes occur in the _w_o_r_d portion of a double-quoted + parameter expansion and treats them specially, so that char- + acters within the single quotes are considered quoted (this + is POSIX interpretation 221). - ccoommppaatt4422 - +o The replacement string in double-quoted pattern substitu- - tion does not undergo quote removal, as it does in ver- - sions after bash-4.2. - +o In posix mode, single quotes are considered special when - expanding the _w_o_r_d portion of a double-quoted parameter - expansion and can be used to quote a closing brace or - other special character (this is part of POSIX interpre- - tation 221); in later versions, single quotes are not - special within double-quoted word expansions. + ccoommppaatt4422 + * The replacement string in double-quoted pattern substitution + does not undergo quote removal, as it does in versions after + bash-4.2. + * In posix mode, single quotes are considered special when ex- + panding the _w_o_r_d portion of a double-quoted parameter expan- + sion and can be used to quote a closing brace or other spe- + cial character (this is part of POSIX interpretation 221); in + later versions, single quotes are not special within double- + quoted word expansions. - ccoommppaatt4433 - +o Word expansion errors are considered non-fatal errors - that cause the current command to fail, even in posix - mode (the default behavior is to make them fatal errors - that cause the shell to exit). - +o When executing a shell function, the loop state - (while/until/etc.) is not reset, so bbrreeaakk or ccoonnttiinnuuee in - that function will break or continue loops in the calling - context. Bash-4.4 and later reset the loop state to pre- - vent this. + ccoommppaatt4433 + * Word expansion errors are considered non-fatal errors that + cause the current command to fail, even in posix mode (the + default behavior is to make them fatal errors that cause the + shell to exit). + * When executing a shell function, the loop state (while/un- + til/etc.) is not reset, so bbrreeaakk or ccoonnttiinnuuee in that func- + tion will break or continue loops in the calling context. + Bash-4.4 and later reset the loop state to prevent this. - ccoommppaatt4444 - +o The shell sets up the values used by BBAASSHH__AARRGGVV and - BBAASSHH__AARRGGCC so they can expand to the shell's positional - parameters even if extended debugging mode is not en- - abled. - +o A subshell inherits loops from its parent context, so - bbrreeaakk or ccoonnttiinnuuee will cause the subshell to exit. - Bash-5.0 and later reset the loop state to prevent the - exit - +o Variable assignments preceding builtins like eexxppoorrtt and - rreeaaddoonnllyy that set attributes continue to affect variables - with the same name in the calling environment even if the - shell is not in posix mode. + ccoommppaatt4444 + * The shell sets up the values used by BBAASSHH__AARRGGVV and BBAASSHH__AARRGGCC + so they can expand to the shell's positional parameters even + if extended debugging mode is not enabled. + * A subshell inherits loops from its parent context, so bbrreeaakk + or ccoonnttiinnuuee will cause the subshell to exit. Bash-5.0 and + later reset the loop state to prevent the exit + * Variable assignments preceding builtins like eexxppoorrtt and rreeaadd-- + oonnllyy that set attributes continue to affect variables with + the same name in the calling environment even if the shell is + not in posix mode. - ccoommppaatt5500 - +o Bash-5.1 changed the way $$RRAANNDDOOMM is generated to intro- - duce slightly more randomness. If the shell compatibil- - ity level is set to 50 or lower, it reverts to the method - from bash-5.0 and previous versions, so seeding the ran- - dom number generator by assigning a value to RRAANNDDOOMM will - produce the same sequence as in bash-5.0. - +o If the command hash table is empty, bash versions prior - to bash-5.1 printed an informational message to that ef- - fect, even when producing output that can be reused as - input. Bash-5.1 suppresses that message when the --ll op- - tion is supplied. + ccoommppaatt5500 + * Bash-5.1 changed the way $$RRAANNDDOOMM is generated to introduce + slightly more randomness. If the shell compatibility level + is set to 50 or lower, it reverts to the method from bash-5.0 + and previous versions, so seeding the random number generator + by assigning a value to RRAANNDDOOMM will produce the same sequence + as in bash-5.0. + * If the command hash table is empty, bash versions prior to + bash-5.1 printed an informational message to that effect, + even when producing output that can be reused as input. + Bash-5.1 suppresses that message when the --ll option is sup- + plied. - ccoommppaatt5511 - +o The uunnsseett builtin treats attempts to unset array sub- - scripts @@ and ** differently depending on whether the ar- - ray is indexed or associative, and differently than in - previous versions. - +o Arithmetic commands ( ((((...)))) ) and the expressions in an - arithmetic for statement can be expanded more than once. - +o Expressions used as arguments to arithmetic operators in - the [[[[ conditional command can be expanded more than - once. - +o The expressions in substring parameter brace expansion - can be expanded more than once. - +o The expressions in the $$((((...)))) word expansion can be ex- - panded more than once. - +o Arithmetic expressions used as indexed array subscripts - can be expanded more than once. - +o tteesstt --vv, when given an argument of AA[[@@]], where AA is an - existing associative array, will return true if the array - has any set elements. Bash-5.2 will look for and report - on a key named @@. - +o The ${_p_a_r_a_m_e_t_e_r[[::]]==_v_a_l_u_e} word expansion will return - _v_a_l_u_e, before any variable-specific transformations have - been performed (e.g., converting to lowercase). Bash-5.2 - will return the final value assigned to the variable. - +o Parsing command substitutions will behave as if extended - globbing (see the description of the sshhoopptt builtin above) - is enabled, so that parsing a command substitution con- - taining an extglob pattern (say, as part of a shell func- - tion) will not fail. This assumes the intent is to en- - able extglob before the command is executed and word ex- - pansions are performed. It will fail at word expansion - time if extglob hasn't been enabled by the time the com- - mand is executed. + ccoommppaatt5511 + * The uunnsseett builtin treats attempts to unset array subscripts @@ + and ** differently depending on whether the array is indexed + or associative, and differently than in previous versions. + * Arithmetic commands ( ((((...)))) ) and the expressions in an + arithmetic for statement can be expanded more than once. + * Expressions used as arguments to arithmetic operators in the + [[[[ conditional command can be expanded more than once. + * The expressions in substring parameter brace expansion can be + expanded more than once. + * The expressions in the $$((((...)))) word expansion can be ex- + panded more than once. + * Arithmetic expressions used as indexed array subscripts can + be expanded more than once. + * tteesstt --vv, when given an argument of AA[[@@]], where AA is an exist- + ing associative array, will return true if the array has any + set elements. Bash-5.2 will look for and report on a key + named @@. + * The ${_p_a_r_a_m_e_t_e_r[[::]]==_v_a_l_u_e} word expansion will return _v_a_l_u_e, + before any variable-specific transformations have been per- + formed (e.g., converting to lowercase). Bash-5.2 will return + the final value assigned to the variable. + * Parsing command substitutions will behave as if extended + globbing (see the description of the sshhoopptt builtin above) is + enabled, so that parsing a command substitution containing an + extglob pattern (say, as part of a shell function) will not + fail. This assumes the intent is to enable extglob before + the command is executed and word expansions are performed. + It will fail at word expansion time if extglob hasn't been + enabled by the time the command is executed. - ccoommppaatt5522 - +o The tteesstt builtin uses its historical algorithm to parse - parenthesized subexpressions when given five or more ar- - guments. - +o If the --pp or --PP option is supplied to the bbiinndd builtin, - bbiinndd treats any arguments remaining after option process- - ing as bindable command names, and displays any key se- - quences bound to those commands, instead of treating the - arguments as key sequences to bind. + ccoommppaatt5522 + * The tteesstt builtin uses its historical algorithm to parse + parenthesized subexpressions when given five or more argu- + ments. + * If the --pp or --PP option is supplied to the bbiinndd builtin, bbiinndd + treats any arguments remaining after option processing as + bindable command names, and displays any key sequences bound + to those commands, instead of treating the arguments as key + sequences to bind. RREESSTTRRIICCTTEEDD SSHHEELLLL - If bbaasshh is started with the name rrbbaasshh, or the --rr option is supplied at - invocation, the shell becomes _r_e_s_t_r_i_c_t_e_d. A restricted shell is used - to set up an environment more controlled than the standard shell. It - behaves identically to bbaasshh with the exception that the following are - disallowed or not performed: + If bbaasshh is started with the name rrbbaasshh, or the --rr option is supplied at in- + vocation, the shell becomes _r_e_s_t_r_i_c_t_e_d. A restricted shell is used to set + up an environment more controlled than the standard shell. It behaves + identically to bbaasshh with the exception that the following are disallowed or + not performed: - +o Changing directories with ccdd. + * Changing directories with ccdd. - +o Setting or unsetting the values of SSHHEELLLL, PPAATTHH, HHIISSTTFFIILLEE, EENNVV, - or BBAASSHH__EENNVV. + * Setting or unsetting the values of SSHHEELLLL, PPAATTHH, HHIISSTTFFIILLEE, EENNVV, or + BBAASSHH__EENNVV. - +o Specifying command names containing //. + * Specifying command names containing //. - +o Specifying a filename containing a // as an argument to the .. - builtin command. + * Specifying a filename containing a // as an argument to the .. + builtin command. - +o Using the --pp option to the .. builtin command to specify a - search path. + * Using the --pp option to the .. builtin command to specify a search + path. - +o Specifying a filename containing a slash as an argument to the - hhiissttoorryy builtin command. + * Specifying a filename containing a slash as an argument to the hhiiss-- + ttoorryy builtin command. - +o Specifying a filename containing a slash as an argument to the - --pp option to the hhaasshh builtin command. + * Specifying a filename containing a slash as an argument to the --pp + option to the hhaasshh builtin command. - +o Importing function definitions from the shell environment at - startup. + * Importing function definitions from the shell environment at + startup. - +o Parsing the values of BBAASSHHOOPPTTSS and SSHHEELLLLOOPPTTSS from the shell en- - vironment at startup. + * Parsing the values of BBAASSHHOOPPTTSS and SSHHEELLLLOOPPTTSS from the shell environ- + ment at startup. - +o Redirecting output using the >, >|, <>, >&, &>, and >> redirec- - tion operators. + * Redirecting output using the >, >|, <>, >&, &>, and >> redirection + operators. - +o Using the eexxeecc builtin command to replace the shell with another - command. + * 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. + * Adding or deleting builtin commands with the --ff and --dd options to + the eennaabbllee builtin command. - +o Using the eennaabbllee builtin command to enable disabled shell - builtins. + * Using the eennaabbllee builtin command to enable disabled shell builtins. - +o Specifying the --pp option to the ccoommmmaanndd builtin command. + * Specifying the --pp option to the ccoommmmaanndd builtin command. - +o Turning off restricted mode with sseett ++rr or sshhoopptt --uu rree-- - ssttrriicctteedd__sshheellll. + * Turning off restricted mode with sseett ++rr or sshhoopptt --uu rree-- + ssttrriicctteedd__sshheellll. - These restrictions are enforced after any startup files are read. + These restrictions are enforced after any startup files are read. - When a command that is found to be a shell script is executed (see CCOOMM-- - MMAANNDD EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any restrictions in the shell - spawned to execute the script. + When a command that is found to be a shell script is executed (see CCOOMMMMAANNDD + EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any restrictions in the shell spawned to + execute the script. SSEEEE AALLSSOO - _B_a_s_h _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, 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 - POSIX.1-2024, The IEEE and The Open Group - - a description of posix mode - - _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) + _B_a_s_h _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, 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 + POSIX.1-2024, The IEEE and The Open Group + https://pubs.opengroup.org/onlinepubs/9799919799/ + a description of posix mode + http://tiswww.case.edu/~chet/bash/POSIX + _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 - _~_/_._b_a_s_h___l_o_g_o_u_t - The individual login shell cleanup file, executed when a login - shell exits - _~_/_._b_a_s_h___h_i_s_t_o_r_y - The default value of HHIISSTTFFIILLEE, the file in which bash saves the - command history - _~_/_._i_n_p_u_t_r_c - Individual _r_e_a_d_l_i_n_e initialization file + _/_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 + _~_/_._b_a_s_h___l_o_g_o_u_t + The individual login shell cleanup file, executed when a login shell + exits + _~_/_._b_a_s_h___h_i_s_t_o_r_y + The default value of HHIISSTTFFIILLEE, the file in which bash saves the com- + mand history + _~_/_._i_n_p_u_t_r_c + Individual _r_e_a_d_l_i_n_e initialization file AAUUTTHHOORRSS - Brian Fox, Free Software Foundation + Brian Fox, Free Software Foundation - Chet Ramey, Case Western Reserve University + Chet Ramey, Case Western Reserve University 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. The latest version is always available from - and . + 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 ver- + sion of bbaasshh. The latest version is always available from + ftp://ftp.gnu.org/pub/gnu/bash/ and http://git.savannah.gnu.org/cgit/bash + .git/snapshot/bash-master.tar.gz. - 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! You may send suggestions and "philosophical" bug - reports, as well as comments and bug reports concerning this manual - page, to to . + Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g com- + mand to submit a bug report. If you have a fix, you are encouraged to mail + that as well! You may send suggestions and "philosophical" bug reports, as + well as comments and bug reports concerning this manual page, to to + bug-bash@gnu.org. - _A_l_l bug reports should include: + _A_l_l bug reports should include: - +o the version number of bbaasshh ("echo $BASH_VERSION"), - +o the host platform and operating system ("uname -a"), - +o either - (a) if you or an administrator built and installed bbaasshh from - source, the name and version of the compiler used to build it, - as reported by bbaasshh's "configure" script; or - (b) if your site uses a distributor's bbaasshh package, the version of - that package (for example, "dpkg -i bash" or "rpm -qi bash"), - +o a description of the behavior bbaasshh exhibited, - +o a description of the behavior you expected from bbaasshh, and - +o a short shell script or "recipe" exercising the unexpected behavior. + * the version number of bbaasshh ("echo $BASH_VERSION"), + * the host platform and operating system ("uname -a"), + * either + (a) if you or an administrator built and installed bbaasshh from source, + the name and version of the compiler used to build it, as reported + by bbaasshh's "configure" script; or + (b) if your site uses a distributor's bbaasshh package, the version of that + package (for example, "dpkg -i bash" or "rpm -qi bash"), + * a description of the behavior bbaasshh exhibited, + * a description of the behavior you expected from bbaasshh, and + * a short shell script or "recipe" exercising the unexpected behavior. - _b_a_s_h_b_u_g inserts the first three items automatically into the template - it provides for filing a bug report. + _b_a_s_h_b_u_g inserts the first three items automatically into the template it + provides for filing a bug report. BBUUGGSS - It's too big and too slow. + It's too big and too slow. - There are some subtle differences between bbaasshh and historical versions - of sshh, due mostly to bbaasshh's independent implementation and the evolu- - tion of the POSIX specification. + There are some subtle differences between bbaasshh and historical versions of + sshh, due mostly to bbaasshh's independent implementation and the evolution of + the POSIX specification. - Aliases are confusing in some uses. + Aliases are confusing in some uses. - Shell builtin commands and functions are not stoppable/restartable. + Shell builtin commands and functions are not stoppable/restartable. - Compound commands and command lists of the form "a ; b ; c" are not - handled gracefully when combined with process suspension. When a - process is stopped, the shell immediately executes the next command in - the list or breaks out of any existing loops. It suffices to enclose - the command in parentheses to force it into a subshell, which may be - stopped as a unit, or to start the command in the background and imme- - diately bring it into the foreground. + Compound commands and command lists of the form "a ; b ; c" are not handled + gracefully when combined with process suspension. When a process is + stopped, the shell immediately executes the next command in the list or + breaks out of any existing loops. It suffices to enclose the command in + parentheses to force it into a subshell, which may be stopped as a unit, or + to start the command in the background and immediately bring it into the + foreground. - Array variables may not (yet) be exported. + Array variables may not (yet) be exported. -GNU Bash 5.3 2026 July 1 _B_A_S_H(1) +GNU Bash 5.3 2026 July 1 _B_A_S_H(1) diff --git a/doc/bash.html b/doc/bash.html index 3924d2a0..f3759258 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -1,11 +1,11 @@ - - + + - + - + @@ -70,17 +67,15 @@ ul.toc-numbered-mark {list-style: none}
- +

Bash Features

This text is a brief description of the features that are present in -the Bash shell (version 5.3, 29 April 2026). +the Bash shell (version 5.3, 9 July 2026). The Bash home page is http://www.gnu.org/software/bash/.

-

This is Edition 5.3, last updated 29 April 2026, +

This is Edition 5.3, last updated 9 July 2026, of The GNU Bash Reference Manual, for Bash, Version 5.3.

@@ -309,22 +304,18 @@ reference on shell behavior.

- +

1 Introduction


- +

1.1 What is Bash?

Bash is the shell, or command language interpreter, @@ -352,10 +343,8 @@ independently-supported ports exist for Windows and other platforms.


- +

1.2 What is a shell?

At its base, a shell is simply a macro processor that executes commands. @@ -414,10 +403,8 @@ This manual describes how Bash provides all of these features.

- +

2 Definitions

These definitions are used throughout the remainder of this manual.

@@ -540,10 +527,8 @@ Words may not include unquoted metacharacters.
- +

3 Basic Shell Features

@@ -562,21 +547,19 @@ and to named files, and how the shell executes commands.


- +

3.1 Shell Syntax

When the shell reads input, it proceeds through a @@ -595,16 +578,14 @@ command, waits for the command’s exit status, and makes that exit status available for further inspection or processing.


- +

3.1.1 Shell Operation

The following is a brief description of the shell’s operation when it @@ -641,10 +622,8 @@ status (see Exit Status).


- +

3.1.2 Quoting

@@ -671,18 +650,16 @@ expansion. and dollar-single quotes.


- +

3.1.2.1 Escape Character

A non-quoted backslash ‘\’ is the Bash escape character. It preserves the literal value of the next character that follows, @@ -695,10 +672,8 @@ removed from the input stream and effectively ignored).


- +

3.1.2.2 Single Quotes

Enclosing characters in single quotes (‘'’) preserves the literal value @@ -709,10 +684,8 @@ between single quotes, even when preceded by a backslash.


- +

3.1.2.3 Double Quotes

Enclosing characters in double quotes (‘"’) preserves the literal value @@ -746,10 +719,8 @@ when in double quotes (see Sh


- +

3.1.2.4 ANSI-C Quoting

@@ -825,10 +796,8 @@ been present.
- +

3.1.2.5 Locale-Specific Translation

@@ -857,10 +826,8 @@ create translations for strings in a shell script named scriptn There are more details in the gettext documentation.


- +

Creating Internationalized Scripts

@@ -970,10 +937,8 @@ in any of the supported languages by setting the LANG o
- +

3.1.3 Comments

@@ -996,10 +961,8 @@ a shell interactive.
- +

3.2 Shell Commands

@@ -1013,20 +976,18 @@ some other grouping.


- +

3.2.1 Reserved Words

@@ -1062,10 +1023,8 @@ specifically requires the reserved word as the only correct token.
- +

3.2.2 Simple Commands

@@ -1083,10 +1042,8 @@ the command was terminated by signal n.
- +

3.2.3 Pipelines

@@ -1169,10 +1126,8 @@ The return status of an asynchronous pipeline is 0.
- +

3.2.4 Lists of Commands

@@ -1236,10 +1191,8 @@ command to terminate in turn.
- +

3.2.5 Compound Commands

@@ -1258,16 +1211,14 @@ followed by a newline in place of a semicolon. to group commands and execute them as a unit.


- +

3.2.5.1 Looping Constructs

@@ -1350,10 +1301,8 @@ to control loop execution.
- +

3.2.5.2 Conditional Constructs

@@ -1699,8 +1648,8 @@ special pattern characters where that’s necessary.

The array variable BASH_REMATCH records which parts of the string matched the pattern. -Bash unsets BASH_REMATCH -before attempting the match, so if there is no match, it remains unset. +Bash unsets each element of BASH_REMATCH +before attempting the match, so if there is no match, it remains empty. The element of BASH_REMATCH with index 0 contains the portion of the string matching the entire regular expression. Substrings matched by parenthesized subexpressions within the regular @@ -1746,10 +1695,8 @@ value of the entire conditional expression.


- +

3.2.5.3 Grouping Commands

@@ -1799,10 +1746,8 @@ from the list by whitespace.
- +

3.2.6 Coprocesses

@@ -1878,10 +1823,8 @@ The return status of a coprocess is the exit status of command<
- +

3.2.7 GNU Parallel

There are ways to run commands in parallel that are not built into Bash. @@ -1903,10 +1846,8 @@ is available at

- +

3.3 Shell Functions

@@ -2124,10 +2065,8 @@ By default, Bash places no limit on the number of recursive calls.
- +

3.4 Shell Parameters

@@ -2237,15 +2176,13 @@ variable from each environment variable that has a valid name, as described below (see Environment).


- +

3.4.1 Positional Parameters

@@ -2272,10 +2209,8 @@ special parameter $0 (see below).
- +

3.4.2 Special Parameters

@@ -2378,10 +2313,8 @@ argument zero.
- +

3.5 Shell Expansions

@@ -2430,22 +2363,20 @@ The only exceptions to this are the expansions of (see Arrays).


- +

3.5.1 Brace Expansion

@@ -2557,10 +2488,8 @@ compatibility.
- +

3.5.2 Tilde Expansion

@@ -2652,10 +2581,8 @@ above, when in POSIX mode.
- +

3.5.3 Shell Parameter Expansion

@@ -3268,10 +3195,8 @@ expansion as described below.
- +

3.5.4 Command Substitution

@@ -3382,10 +3307,8 @@ word splitting and filename expansion on the results.
- +

3.5.5 Arithmetic Expansion

@@ -3417,15 +3340,14 @@ Arithmetic expansions may be nested. If the expression is invalid, Bash prints a message indicating failure to the standard error, does not perform the substitution, -and does not execute the command associated with the expansion. +and does not +continue to execute the command in which the error occurs.


- +

3.5.6 Process Substitution

@@ -3439,7 +3361,9 @@ It takes the form of

>(list)
 
-

The process list is run asynchronously, and its input or output +

The process list, +as long as it is not a null command without redirections, +is run asynchronously, and its input or output appears as a filename. This filename is passed as an argument to the current command as the result of the @@ -3465,10 +3389,8 @@ expansion.


- +

3.5.7 Word Splitting

@@ -3526,10 +3448,8 @@ null argument removal.
- +

3.5.8 Filename Expansion

@@ -3610,14 +3530,12 @@ shell variable controls how the results of pathname expansion are sorted, as described below (see Bash Variables).


- +

3.5.8.1 Pattern Matching

@@ -3778,10 +3696,8 @@ strings instead of a single long string, may be faster.
- +

3.5.9 Quote Removal

After the preceding expansions, all unquoted occurrences of the @@ -3792,10 +3708,8 @@ result from one of the above expansions are removed.

- +

3.6 Redirections

@@ -3911,15 +3825,15 @@ care, as they may conflict with file descriptors the shell uses internally.

@@ -4056,7 +3970,7 @@ If word is unquoted, and the here-document text is treated similarly to a double-quoted string: all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion, -the character sequence \newline is treated literally, +the character sequence \newline is treated as a line continuation, and ‘\’ must be used to quote the characters ‘\’, ‘$’, and ‘`’; however, double quote characters have no special meaning. @@ -4157,27 +4071,23 @@ If the file does not exist, it is created.
- +

3.7 Executing Commands


- +

3.7.1 Simple Command Expansion

@@ -4229,10 +4139,8 @@ the command exits with a zero status.
- +

3.7.2 Command Search and Execution

@@ -4289,10 +4197,8 @@ the command to complete and collects its exit status.
- +

3.7.3 Command Execution Environment

@@ -4386,10 +4292,8 @@ shell as modified by redirections.
- +

3.7.4 Environment

@@ -4436,10 +4340,8 @@ command in its environment.
- +

3.7.5 Exit Status

@@ -4491,10 +4393,8 @@ See also the exit builtin command (see - +

3.7.6 Signals

@@ -4604,10 +4504,8 @@ itself (scenario 1 above), for compatibility.
- +

3.8 Shell Scripts

@@ -4687,10 +4585,8 @@ in $PATH.
- +

4 Shell Builtin Commands

@@ -4734,17 +4630,15 @@ If ‘--help’ is supplied, these builtins ou a help message and exit with a status of 0.


- +

4.1 Bourne Shell Builtins

The following shell builtin commands are inherited from the Bourne Shell. @@ -5459,10 +5353,8 @@ The return status is zero unless a name is readonly or ma


- +

4.2 Bash Builtin Commands

This section describes builtin commands which are unique to @@ -6563,23 +6455,19 @@ Aliases are described in Aliases.


- +

4.3 Modifying Shell Behavior


- +

4.3.1 The Set Builtin

This builtin is so complicated that it deserves its own section. set @@ -6818,13 +6706,16 @@ This also affects the editing interface used for read -e

-p

Turn on privileged mode. -In this mode, the $BASH_ENV and $ENV files are not -processed, shell functions are not inherited from the environment, -and the SHELLOPTS, BASHOPTS, CDPATH and GLOBIGNORE -variables, if they appear in the environment, are ignored. +In this mode, Bash does not process the $BASH_ENV and $ENV files, +does not inherit shell functions from the environment, +and ignores the +SHELLOPTS, BASHOPTS, CDPATH and GLOBIGNORE +variables, if they appear in the environment. If the shell is started with the effective user (group) id not equal to the -real user (group) id, and the -p option is not supplied, these actions -are taken and the effective user id is set to the real user id. +real user (group) id, +and the -p option is not supplied, +these actions are taken and the effective user id is set to the real user id +(see Bash Startup Files for details). If the -p option is supplied at startup, the effective user id is not reset. Turning this option off causes the effective user @@ -6949,10 +6840,8 @@ The special parameter # is set to N.


- +

4.3.2 The Shopt Builtin

This builtin allows you to change additional optional shell behavior. @@ -7420,10 +7309,8 @@ If the posix shell option (see -

+

4.4 Special Builtins

@@ -7455,10 +7342,8 @@ shift times trap unset
- +

5 Shell Variables

@@ -7466,15 +7351,13 @@ Next: , Previ Bash automatically assigns default values to a number of variables.


- +

5.1 Bourne Shell Variables

Bash uses certain shell variables in the same way as the Bourne shell. @@ -7557,10 +7440,8 @@ displayed.


- +

5.2 Bash Variables

These variables are set or used by Bash, but other shells @@ -8658,35 +8539,31 @@ Bash creates temporary files for the shell’s use.

- +

6 Bash Features

This chapter describes features unique to Bash.


- +

6.1 Invoking Bash

@@ -8928,10 +8805,8 @@ read from the standard input:
- +

6.2 Bash Startup Files

@@ -9063,37 +8938,38 @@ options or allow them to be specified.

Invoked with unequal effective and real UID/GIDs

If Bash is started with the effective user (group) id not equal to the -real user (group) id, and the -p option is not supplied, no startup -files are read, shell functions are not inherited from the environment, -the SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE -variables, if they appear in the environment, are ignored, and the effective -user id is set to the real user id. +real user (group) id, +and the -p option is not supplied, +Bash does not attempt to read any startup files or +~/.bash_logout, +does not inherit shell functions from the environment, +ignores the +SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE +variables, +if they appear in the environment, +and sets the effective user id to the real user id. If the -p option is supplied at invocation, the startup behavior is the same, but Bash does not reset the effective user id.


- +

6.3 Interactive Shells


- +

6.3.1 What is an Interactive Shell?

An interactive shell @@ -9113,10 +8989,8 @@ when an interactive shell starts.


- +

6.3.2 Is this Shell Interactive?

To determine within a startup script whether or not Bash is @@ -9148,10 +9022,8 @@ fi


- +

6.3.3 Interactive Shell Behavior

When the shell is running interactively, it changes its behavior in @@ -9244,10 +9116,8 @@ printing $PS1 (see -

+

6.4 Bash Conditional Expressions

@@ -9459,10 +9329,8 @@ those as expressions that evaluate to 0.
- +

6.5 Shell Arithmetic

@@ -9608,10 +9476,8 @@ and may override the precedence rules above.
- +

6.6 Aliases

@@ -9689,10 +9555,8 @@ in compound commands.
- +

6.7 Arrays

@@ -9899,10 +9763,8 @@ The shell provides a number of builtin array variables.
- +

6.8 The Directory Stack

@@ -9919,14 +9781,12 @@ of the directory stack. as the value of the DIRSTACK shell variable.


- +

6.8.1 Directory Stack Builtins

@@ -10070,10 +9930,8 @@ Bash runs dirs to show the final contents of the direc
- +

6.9 Controlling the Prompt

@@ -10167,9 +10025,15 @@ with $HOME abbreviated with a tilde

Begin a sequence of non-printing characters. This could be used to embed a terminal control sequence into the prompt. -

+This escape is only useful when the prompt will be supplied to +Readline, +and is ignored and removed otherwise, +so it shouldn’t be used in PS0 or PS4, +or when line editing is not enabled. +

+
\]
-

End a sequence of non-printing characters. +

End a sequence of non-printing characters begun with ‘\[

@@ -10191,10 +10055,8 @@ word expansion.
- +

6.10 The Restricted Shell

@@ -10259,15 +10121,13 @@ such as jails, zones, or
- +

6.11 Bash and POSIX

6.11.1 What is POSIX?

@@ -10567,6 +10427,9 @@ constructed from $PWD and the directory name supplied exceeds PATH_MAX when canonicalized, cd will attempt to use the supplied directory name. +
  • The command builtin prints command name arguments containing a +slash as full pathnames when the -v option is supplied. +
  • When the xpg_echo option is enabled, Bash does not attempt to interpret any arguments to echo as options. echo displays each argument after converting escape sequences. @@ -10707,10 +10570,8 @@ the --enable-strict-posix-default to - +

    6.12 Shell Compatibility Mode

    @@ -10923,10 +10784,8 @@ Newer versions defer notification until script execution completes.
  • - +

    7 Job Control

    This chapter discusses what job control is, how it works, and how @@ -10934,16 +10793,14 @@ Bash allows you to access its facilities.


    - +

    7.1 Job Control Basics

    @@ -11106,10 +10963,8 @@ until the job or process terminates before returning.
    - +

    7.2 Job Control Builtins

    @@ -11324,10 +11179,8 @@ They must be supplied process IDs.
    - +

    7.3 Job Control Variables

    @@ -11365,10 +11218,8 @@ this provides functionality analogous to the ‘%string
    - +

    8 Command Line Editing

    This chapter describes the basic features of the GNU @@ -11388,21 +11239,19 @@ Line editing can be enabled at any time using the -o emacs<


    - +

    8.1 Introduction to Line Editing

    The following paragraphs use Emacs style to @@ -11459,10 +11308,8 @@ some keyboards.


    - +

    8.2 Readline Interaction

    @@ -11481,18 +11328,16 @@ regardless of the location of the cursor within the line.


    - +

    8.2.1 Readline Bare Essentials

    @@ -11550,10 +11395,8 @@ than the character to the left of the cursor.
    - +

    8.2.2 Readline Movement Commands

    The above table describes the most basic keystrokes that you need @@ -11588,10 +11431,8 @@ operate on characters while meta keystrokes operate on words.


    - +

    8.2.3 Readline Killing Commands

    @@ -11659,10 +11500,8 @@ You can only do this if the prior command is C-y or
    - +

    8.2.4 Readline Arguments

    You can pass numeric arguments to Readline commands. @@ -11689,10 +11528,8 @@ which will delete the next ten characters on the input line.


    - +

    8.2.5 Searching for Commands in the History

    Readline provides commands for searching through the command history @@ -11741,10 +11578,8 @@ the current line.

    - +

    8.3 Readline Init File

    @@ -11770,16 +11605,14 @@ incorporating any changes that you might have made to it.


    - +

    8.3.1 Readline Init File Syntax

    There are only a few basic constructs allowed in the @@ -12466,10 +12299,8 @@ insert a single ‘\’ into the line:


    - +

    8.3.2 Conditional Init Constructs

    Readline implements a facility similar in spirit to the conditional @@ -12594,10 +12425,8 @@ For example, the following directive reads from /etc/inputrc<


    - +

    8.3.3 Sample Init File

    Here is an example of an inputrc file. This illustrates key @@ -12709,10 +12538,8 @@ $endif

    - +

    8.4 Bindable Readline Commands

    @@ -12738,21 +12565,19 @@ The enable-active-region variable turns this on and of Several commands set the region to active; those are noted below.


    - +

    8.4.1 Commands For Moving

    beginning-of-line (C-a)
    @@ -12835,10 +12660,8 @@ without clearing the screen.
    - +

    8.4.2 Commands For Manipulating The History

    @@ -12944,7 +12767,7 @@ the previous command. Once the argument n is computed, this uses the history expansion facilities to extract the nth word, as if the -‘!n’ history expansion had been specified. +‘!!:n’ history expansion had been specified.

    yank-last-arg (M-. or M-_)
    @@ -12983,10 +12806,8 @@ Without an argument, move back to the first entry in the history list.
    - +

    8.4.3 Commands For Changing Text

    @@ -13110,10 +12931,8 @@ key on some keyboards.
    - +

    8.4.4 Killing And Yanking

    @@ -13213,10 +13032,8 @@ the prior command is yank or yank-p
    - +

    8.4.5 Specifying Numeric Arguments

    digit-argument (M-0, M-1, … M--)
    @@ -13244,10 +13061,8 @@ By default, this is not bound to a key.
    - +

    8.4.6 Letting Readline Type For You

    @@ -13411,10 +13226,8 @@ enclosed within braces so the list is available to the shell
    - +

    8.4.7 Keyboard Macros

    start-kbd-macro (C-x ()
    @@ -13441,10 +13254,8 @@ in the macro appear as if typed at the keyboard.
    - +

    8.4.8 Some Miscellaneous Commands

    re-read-init-file (C-x C-r)
    @@ -13665,10 +13476,8 @@ as the editor, in that order.
    - +

    8.5 Readline vi Mode

    While the Readline library does not have a full set of vi @@ -13693,10 +13502,8 @@ so forth.


    - +

    8.6 Programmable Completion

    @@ -13921,10 +13728,8 @@ complete -D -F _completion_loader -o bashdefault -o default
    - +

    8.7 Programmable Completion Builtins

    @@ -14288,10 +14093,8 @@ specification exists, or an output error occurs.
    - +

    8.8 A Programmable Completion Example

    The most common way to obtain additional completion functionality beyond @@ -14420,10 +14223,8 @@ in the examples/complete subdirectory.

    - +

    9 Using History Interactively

    @@ -14435,16 +14236,14 @@ see the GNU Readline Library Manual.


    - +

    9.1 Bash History Facilities

    @@ -14528,10 +14327,8 @@ See The Shopt Builtin, for a descr
    - +

    9.2 Bash History Builtins

    @@ -14727,10 +14524,8 @@ history expansion supplied as an argument to -p fail
    - +

    9.3 History Expansion

    @@ -14836,16 +14631,14 @@ timestamps when writing the history file.


    - +

    9.3.1 Event Designators

    @@ -14911,10 +14704,8 @@ Equivalent to !!:s^string1^
    - +

    9.3.2 Word Designators

    Word designators are used to select desired words from the event. @@ -15006,10 +14797,8 @@ previous command is used as the event, equivalent to !!

    - +

    9.3.3 Modifiers

    After the optional word designator, you can add a sequence of one or more @@ -15091,10 +14880,8 @@ in the event.

    - +

    10 Installing Bash

    This chapter provides basic instructions for installing Bash on @@ -15106,21 +14893,19 @@ Other independent ports exist for Windows platforms.


    - +

    10.1 Basic Installation

    @@ -15224,10 +15009,8 @@ a different kind of computer), type ‘make distclean
    - +

    10.2 Compilers and Options

    Some systems require unusual options for compilation or linking @@ -15253,10 +15036,8 @@ is available.


    - +

    10.3 Compiling For Multiple Architectures

    You can compile Bash for more than one kind of computer at the @@ -15299,10 +15080,8 @@ directories for other architectures.


    - +

    10.4 Installation Names

    By default, ‘make install’ will install into @@ -15353,10 +15132,8 @@ variables and their effects.


    - +

    10.5 Specifying the System Type

    There may be some features configure can not figure out @@ -15376,10 +15153,8 @@ values of each field.


    - +

    10.6 Sharing Defaults

    If you want to set default values for configure scripts to @@ -15398,10 +15173,8 @@ but not all configure scripts do.


    - +

    10.7 Operation Controls

    configure recognizes the following options to control how it @@ -15443,10 +15216,8 @@ options.


    - +

    10.8 Optional Features

    The Bash configure has a number of --enable-feature @@ -15817,10 +15588,8 @@ information about its effect.

    - +

    Appendix A Reporting Bugs

    Please report all bugs you find in Bash. @@ -15857,10 +15626,8 @@ the template it provides for filing a bug report.


    - +

    Appendix B Major Differences From The Bourne Shell

    Bash implements essentially the same grammar, parameter and @@ -16279,7 +16046,7 @@ child process in a shell variable.

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

    B.1 Implementation Differences From The SVR4.2 Shell

    @@ -16338,10 +16105,8 @@ environment.
    - +

    Appendix C GNU Free Documentation License

    Version 1.3, 3 November 2008 @@ -16816,29 +16581,25 @@ to permit their use in free software.
    - +

    Appendix D Indexes


    - +

    D.1 Index of Shell Builtin Commands

    -
    Jump to:   : +
    Jump to:   :   .   @@ -16882,114 +16643,113 @@ Next: W  
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
    Index EntrySection

    :
    :Bourne Shell Builtins

    .
    .Bourne Shell Builtins

    [
    [Bourne Shell Builtins

    A
    aliasBash Builtins

    B
    bgJob Control Builtins
    bindBash Builtins
    breakBourne Shell Builtins
    builtinBash Builtins

    C
    callerBash Builtins
    cdBourne Shell Builtins
    commandBash Builtins
    compgenProgrammable Completion Builtins
    completeProgrammable Completion Builtins
    compoptProgrammable Completion Builtins
    continueBourne Shell Builtins

    D
    declareBash Builtins
    dirsDirectory Stack Builtins
    disownJob Control Builtins

    E
    echoBash Builtins
    enableBash Builtins
    evalBourne Shell Builtins
    execBourne Shell Builtins
    exitBourne Shell Builtins
    exportBourne Shell Builtins

    F
    falseBourne Shell Builtins
    fcBash History Builtins
    fgJob Control Builtins

    G
    getoptsBourne Shell Builtins

    H
    hashBourne Shell Builtins
    helpBash Builtins
    historyBash History Builtins

    J
    jobsJob Control Builtins

    K
    killJob Control Builtins

    L
    letBash Builtins
    localBash Builtins
    logoutBash Builtins

    M
    mapfileBash Builtins

    P
    popdDirectory Stack Builtins
    printfBash Builtins
    pushdDirectory Stack Builtins
    pwdBourne Shell Builtins

    R
    readBash Builtins
    readarrayBash Builtins
    readonlyBourne Shell Builtins
    returnBourne Shell Builtins

    S
    setThe Set Builtin
    shiftBourne Shell Builtins
    shoptThe Shopt Builtin
    sourceBash Builtins
    suspendJob Control Builtins

    T
    testBourne Shell Builtins
    timesBourne Shell Builtins
    trapBourne Shell Builtins
    trueBourne Shell Builtins
    typeBash Builtins
    typesetBash Builtins

    U
    ulimitBash Builtins
    umaskBourne Shell Builtins
    unaliasBash Builtins
    unsetBourne Shell Builtins

    W
    waitJob Control Builtins

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    :
    :Bourne Shell Builtins

    .
    .Bourne Shell Builtins

    [
    [Bourne Shell Builtins

    A
    aliasBash Builtins

    B
    bgJob Control Builtins
    bindBash Builtins
    breakBourne Shell Builtins
    builtinBash Builtins

    C
    callerBash Builtins
    cdBourne Shell Builtins
    commandBash Builtins
    compgenProgrammable Completion Builtins
    completeProgrammable Completion Builtins
    compoptProgrammable Completion Builtins
    continueBourne Shell Builtins

    D
    declareBash Builtins
    dirsDirectory Stack Builtins
    disownJob Control Builtins

    E
    echoBash Builtins
    enableBash Builtins
    evalBourne Shell Builtins
    execBourne Shell Builtins
    exitBourne Shell Builtins
    exportBourne Shell Builtins

    F
    falseBourne Shell Builtins
    fcBash History Builtins
    fgJob Control Builtins

    G
    getoptsBourne Shell Builtins

    H
    hashBourne Shell Builtins
    helpBash Builtins
    historyBash History Builtins

    J
    jobsJob Control Builtins

    K
    killJob Control Builtins

    L
    letBash Builtins
    localBash Builtins
    logoutBash Builtins

    M
    mapfileBash Builtins

    P
    popdDirectory Stack Builtins
    printfBash Builtins
    pushdDirectory Stack Builtins
    pwdBourne Shell Builtins

    R
    readBash Builtins
    readarrayBash Builtins
    readonlyBourne Shell Builtins
    returnBourne Shell Builtins

    S
    setThe Set Builtin
    shiftBourne Shell Builtins
    shoptThe Shopt Builtin
    sourceBash Builtins
    suspendJob Control Builtins

    T
    testBourne Shell Builtins
    timesBourne Shell Builtins
    trapBourne Shell Builtins
    trueBourne Shell Builtins
    typeBash Builtins
    typesetBash Builtins

    U
    ulimitBash Builtins
    umaskBourne Shell Builtins
    unaliasBash Builtins
    unsetBourne Shell Builtins

    W
    waitJob Control Builtins

    -