commit bash-20151204 snapshot

This commit is contained in:
Chet Ramey
2015-12-21 10:38:53 -05:00
parent e6f5e0c858
commit 967625cd5b
45 changed files with 36434 additions and 28026 deletions
+92
View File
@@ -10026,3 +10026,95 @@ lib/readline/display.c
vs. physical screen position). These fix bug with prompts with
multibyte characters and invisible characters that are longer than
the screen width reported by Ryo Furue <ryofurue@gmail.com>
12/1
----
parse.y,make_cmd.c
- here_doc_first_line: new variable, set to non-zero to indicate the
first line of possibly multiple here documents associated with the
current command. Set in parse.y:gather_here_documents() before
reading any here documents, set to 0 after reading the first line
of any here document in make_cmd.c:make_here_document().
parse.y
- history_delimiting_chars: if parser_state indicates we are reading
a here document, don't use current_command_line_count to see whether
or not we're on the first line of a here document -- it can be fooled
by multi-line commands (or even backslash-escaped newlines). Use
here_doc_first_line to check that directly. Fixes bug reported by
Geoffrey Allott <geoffrey@allott.email>
shell.h,parse.y
- save and restore here_doc_first_line as part of the shell's parser
state
lib/sh/tmpfile.c
- use ANSI-C rand() interface if random() not available. Fixes problem
with linking on (ancient) Solaris 2.4 reported by Klaus Ziegler
<klausz@haus-gisela.de>
12/2
----
aclocal.m4
- RL_LIB_READLINE_VERSION: if cross-compiling, assume current version
of readline if cross-compiling bash while using an external readline
library. Fix from Barry Davis <barry_davis@stormagic.com>
execute_cmd.c
- execute_builtin: save and restore value of builtin_ignoring_errexit
instead of assuming we can set it back to 0 -- the ignore-errexit
cases might be nested
- execute_builtin: after a builtin executes and eval_unwind is set,
set exit_immediately_on_error to 0 if builtin_ignoring_errexit is
set, and back to the value of errexit otherwise, just like the
code that sets -e does. Fixes short-circuiting bug reported by
Marcin Swigon <swigon.mar@gmail.com>
12/5
----
builtins/setattr.def
- set_or_show_attributes: instead of using a fixed string for the
options argument to `declare', which results in export adding the
readonly attribute, build the option string dynamically like in
subst.c:shell_expand_word_list()
- set_or_show_attributes: don't add the -r option to declare if the
attribute passed as an argument doesn't include att_readonly; add
-x if the attribute includes att_exported
- set_or_show_attributes: add the -g option to declare so readonly
and export in functions that go through this code path don't create
local variables. Part of fix for bug reported by ziyunfei
<446240525@qq.com>
execute_cmd.c
- make_internal_declare: if we have an assignment builtin that isn't
supposed to create local variables (export/readonly), make sure to
add the W_ASSNGLOBAL flag to each assignment statement word.
Part of fix for bug reported by ziyunfei <446240525@qq.com> where
readonly can create local variables when invoked with a compound
array assignment as an argument within a shell function
subst.c
- make_internal_declare: added third argument: command name. Not used
in any useful way yet
- do_compound_assignment: handle attempted assignments to readonly
variables and print error messages, like bind_variable does and the
callers expect. This means that assignments to readonly array
variables can't go through a code path that allows them to fail
silently
doc/Makefile.in
- uninstall: run install-info --delete after removing the installed
info file to update the directory file
execute_cmd.c
- execute_disk_command: since we still (and have always) perform
redirections in child processes, we need to mark that state so
we know that we're in a child process. subshell_performing_redirections
is the new variable; non-zero when executing do_redirections()
subst.c
- process_substitute: if we are executing process substitution in a
redirection expansion context (expanding_redir == 1), the child
process should not have access to any temporary environment the
parent has. Call flush_tempenv() in the child process to get rid
of it. Fix for bug reported by Clint Hepner <clint.hepner@gmail.com>
+5
View File
@@ -856,6 +856,10 @@ tests/assoc5.sub f
tests/assoc6.sub f
tests/assoc7.sub f
tests/assoc8.sub f
tests/attr.tests f
tests/attr.right f
tests/attr1.sub f
tests/attr2.sub f
tests/braces.tests f
tests/braces.right f
tests/builtins.tests f
@@ -1160,6 +1164,7 @@ tests/run-arith f
tests/run-array f
tests/run-array2 f
tests/run-assoc f
tests/run-attr f
tests/run-braces f
tests/run-builtins f
tests/run-case f
+4 -1
View File
@@ -567,7 +567,7 @@ LOADABLES_DIR = ${top_builddir}/examples/loadables
# Keep GNU Make from exporting the entire environment for small machines.
.NOEXPORT:
.made: $(Program) bashbug
.made: $(Program) bashbug $(SDIR)/man2html$(EXEEXT)
@echo "$(Program) last made for a $(Machine) running $(OS)" >.made
$(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP)
@@ -719,6 +719,9 @@ ${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR)/bashgetopt.c
${DEFDIR}/builtext.h: $(BUILTIN_DEFS)
@(cd $(DEFDIR) && $(MAKE) $(MFLAGS) builtext.h ) || exit 1
$(SDIR)/man2html$(EXEEXT): ${SUPPORT_SRC}/man2html.c
@(cd $(SDIR) && $(MAKE) $(MFLAGS) all ) || exit 1
# For the justification of the following Makefile rules, see node
# `Automatic Remaking' in GNU Autoconf documentation.
Vendored
+1 -1
View File
@@ -1856,7 +1856,7 @@ main()
],
ac_cv_rl_version=`cat conftest.rlv`,
ac_cv_rl_version='0.0',
ac_cv_rl_version='4.2')])
ac_cv_rl_version='6.3')])
CFLAGS="$_save_CFLAGS"
LDFLAGS="$_save_LDFLAGS"
+1 -1
View File
@@ -1,6 +1,6 @@
/* bashhist.c -- bash interface to the GNU history library. */
/* Copyright (C) 1993-2012 Free Software Foundation, Inc.
/* Copyright (C) 1993-2015 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
+1
View File
@@ -41,6 +41,7 @@
#define SPECIAL_BUILTIN 0x08 /* This is a Posix `special' builtin. */
#define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */
#define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */
#define LOCALVAR_BUILTIN 0x40 /* This builtin creates local variables */
#define BASE_INDENT 4
+19 -2
View File
@@ -71,7 +71,8 @@ extern char *strcpy ();
/* Flag values that builtins can have. */
#define BUILTIN_FLAG_SPECIAL 0x01
#define BUILTIN_FLAG_ASSIGNMENT 0x02
#define BUILTIN_FLAG_POSIX_BUILTIN 0x04
#define BUILTIN_FLAG_LOCALVAR 0x04
#define BUILTIN_FLAG_POSIX_BUILTIN 0x08
#define BASE_INDENT 4
@@ -159,6 +160,11 @@ char *assignment_builtins[] =
(char *)NULL
};
char *localvar_builtins[] =
{
"declare", "local", "typeset", (char *)NULL
};
/* The builtin commands that are special to the POSIX search order. */
char *posix_builtins[] =
{
@@ -170,6 +176,7 @@ char *posix_builtins[] =
/* Forward declarations. */
static int is_special_builtin ();
static int is_assignment_builtin ();
static int is_localvar_builtin ();
static int is_posix_builtin ();
#if !defined (HAVE_RENAME)
@@ -820,6 +827,8 @@ builtin_handler (self, defs, arg)
new->flags |= BUILTIN_FLAG_SPECIAL;
if (is_assignment_builtin (name))
new->flags |= BUILTIN_FLAG_ASSIGNMENT;
if (is_localvar_builtin (name))
new->flags |= BUILTIN_FLAG_LOCALVAR;
if (is_posix_builtin (name))
new->flags |= BUILTIN_FLAG_POSIX_BUILTIN;
@@ -1241,10 +1250,11 @@ write_builtins (defs, structfile, externfile)
else
fprintf (structfile, "(sh_builtin_func_t *)0x0, ");
fprintf (structfile, "%s%s%s%s, %s_doc,\n",
fprintf (structfile, "%s%s%s%s%s, %s_doc,\n",
"BUILTIN_ENABLED | STATIC_BUILTIN",
(builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "",
(builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "",
(builtin->flags & BUILTIN_FLAG_LOCALVAR) ? " | LOCALVAR_BUILTIN" : "",
(builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "",
document_name (builtin));
@@ -1609,6 +1619,13 @@ is_assignment_builtin (name)
return (_find_in_table (name, assignment_builtins));
}
static int
is_localvar_builtin (name)
char *name;
{
return (_find_in_table (name, localvar_builtins));
}
static int
is_posix_builtin (name)
char *name;
+20 -2
View File
@@ -1,7 +1,7 @@
This file is setattr.def, from which is created setattr.c.
It implements the builtins "export" and "readonly", in Bash.
Copyright (C) 1987-2014 Free Software Foundation, Inc.
Copyright (C) 1987-2015 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -134,6 +134,8 @@ set_or_show_attributes (list, attribute, nodefs)
#if defined (ARRAY_VARS)
WORD_LIST *nlist, *tlist;
WORD_DESC *w;
char optw[8];
int opti;
#endif
functions_only = arrays_only = assoc_only = 0;
@@ -238,8 +240,24 @@ set_or_show_attributes (list, attribute, nodefs)
{
tlist = list->next;
list->next = (WORD_LIST *)NULL;
w = arrays_only ? make_word ("-ra") : make_word ("-rA");
/* Add -g to avoid readonly/export creating local variables:
only local/declare/typeset create local variables */
opti = 0;
optw[opti++] = '-';
optw[opti++] = 'g';
if (attribute & att_readonly)
optw[opti++] = 'r';
if (attribute & att_exported)
optw[opti++] = 'x';
if (arrays_only)
optw[opti++] = 'a';
else
optw[opti++] = 'A';
optw[opti] = '\0';
w = make_word (optw);
nlist = make_word_list (w, list);
opt = declare_builtin (nlist);
if (opt != EXECUTION_SUCCESS)
assign_error++;
Vendored
+1 -1
View File
@@ -5299,7 +5299,7 @@ if ${ac_cv_rl_version+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
ac_cv_rl_version='4.2'
ac_cv_rl_version='6.3'
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+17 -7
View File
@@ -1,6 +1,6 @@
# This Makefile is for the Bash/documentation directory -*- text -*-.
#
# Copyright (C) 2003-2013 Free Software Foundation, Inc.
# Copyright (C) 2003-2015 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -154,13 +154,13 @@ BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/fdl.texi $(srcdir)/version.texi
# $(RM) $@
# -${TEXI2PDF} $<
all: ps info dvi text html
all: ps info dvi text html $(MAN2HTML)
nodvi: ps info text html
everything: all pdf
PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps
DVIFILES = bashref.dvi bashref.ps
INFOFILES = bashref.info
INFOFILES = bashref.info bash.info
MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0
HTMLFILES = bashref.html bash.html
PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf
@@ -184,16 +184,16 @@ bashref.pdf: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
# can also use:
# $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi
# $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi
bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER)
$(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi
$(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi
bash.info: bashref.info
${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \
bash.txt: bash.1
bash.ps: bash.1
bash.html: bash.1 $(MAN2HTML)
bash.html: bash.1
bashbug.ps: bashbug.1
builtins.ps: builtins.1 bash.1
rbash.ps: rbash.1 bash.1
@@ -247,7 +247,7 @@ installdirs:
$(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(htmldir) ; \
fi
install: info installdirs bash.info
install: info installdirs
-$(INSTALL_DATA) $(srcdir)/bash.1 $(DESTDIR)$(man1dir)/bash${man1ext}
-$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext}
-$(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir)
@@ -274,10 +274,20 @@ install_builtins: installdirs
install_everything: install install_builtins
install-html: html
-if test -n "${htmldir}" ; then \
$(INSTALL_DATA) $(srcdir)/bash.html $(DESTDIR)$(htmldir) ; \
$(INSTALL_DATA) $(srcdir)/bashref.html $(DESTDIR)$(htmldir) ; \
fi
uninstall:
-$(RM) $(DESTDIR)$(man1dir)/bash${man1ext} $(DESTDIR)$(man1dir)/bashbug${man1ext}
-$(RM) $(DESTDIR)$(man1dir)/bash_builtins${man1ext}
$(RM) $(DESTDIR)$(infodir)/bash.info
# run install-info if it is present to update the info directory
if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
install-info --delete --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/bash.info; \
else true; fi
-( cd $(DESTDIR)$(docdir) && $(RM) $(OTHER_INSTALLED_DOCS) )
-if test -n "$(htmldir)" ; then \
$(RM) $(DESTDIR)$(htmldir)/bash.html ; \
+477 -454
View File
File diff suppressed because it is too large Load Diff
+72 -22
View File
@@ -3,7 +3,7 @@
</HEAD>
<BODY><TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2015 October 11<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2015 November 16<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<BR><A HREF="#index">Index</A>
@@ -1354,6 +1354,8 @@ of all characters within the quotes, with the exception of
and, when history expansion is enabled,
<B>!</B>.
When the shell is in <I>posix mode</I>, the <B>!</B> has no special meaning
within double quotes, even when history expansion is enabled.
The characters
<B>$</B>
@@ -1870,8 +1872,14 @@ that do not require <B>bash</B> to be re-initialized.
<DD>
An associative array variable whose members correspond to the internal
list of aliases as maintained by the <B>alias</B> builtin.
Elements added to this array appear in the alias list; unsetting array
elements cause aliases to be removed from the alias list.
Elements added to this array appear in the alias list; however,
unsetting array elements currently does not cause aliases to be removed
from the alias list.
If
<B>BASH_ALIASES</B>
is unset, it loses its special properties, even if it is
subsequently reset.
<DT><B>BASH_ARGC</B>
<DD>
@@ -1923,8 +1931,14 @@ builtin below)
<DD>
An associative array variable whose members correspond to the internal
hash table of commands as maintained by the <B>hash</B> builtin.
Elements added to this array appear in the hash table; unsetting array
elements cause commands to be removed from the hash table.
Elements added to this array appear in the hash table; however,
unsetting array elements currently does not cause command names to be removed
from the hash table.
If
<B>BASH_CMDS</B>
is unset, it loses its special properties, even if it is
subsequently reset.
<DT><B>BASH_COMMAND</B>
<DD>
@@ -2551,7 +2565,7 @@ used when the shell is invoked in POSIX mode.
<DT><B>EXECIGNORE</B>
<DD>
A colon-separated list of extended glob patterns (see <B>Pattern Matching</B>)
A colon-separated list of shell patterns (see <B>Pattern Matching</B>)
defining the list of filenames to be ignored by command search.
Files whose full pathnames match one of these patterns are not considered
executable files for the purposes of completion and command execution.
@@ -2559,6 +2573,8 @@ This does not affect the behavior of the <B>[</B>, <B>test</B>, and <B>[[</B>
commands.
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 <B>extglob</B> shell
option.
<DT><B>FCEDIT</B>
<DD>
@@ -2683,6 +2699,8 @@ not tested, and are added to the history regardless of the value of
<FONT SIZE=-1><B>HISTIGNORE</B>.
</FONT>
The pattern matching honors the setting of the <B>extglob</B> shell
option.
<DT><B>HISTSIZE</B>
<DD>
@@ -2960,6 +2978,15 @@ trailing directory components to retain when expanding the <B>\w</B> and
</FONT>
below). Characters removed are replaced with an ellipsis.
<DT><B>PS0</B>
<DD>
The value of this parameter is expanded (see
<FONT SIZE=-1><B>PROMPTING</B>
</FONT>
below) and displayed by interactive shells after reading a command
and before the command is executed.
<DT><B>PS1</B>
<DD>
@@ -4049,8 +4076,8 @@ or
<B>Bash</B>
performs the expansion by executing <I>command</I> and
replacing the command substitution with the standard output of the
performs the expansion by executing <I>command</I> in a subshell environment
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.
@@ -4121,19 +4148,23 @@ prints a message indicating failure and no substitution occurs.
<P>
<I>Process substitution</I> is supported on systems that support named
pipes (<I>FIFOs</I>) or the <B>/dev/fd</B> method of naming open files.
<I>Process substitution</I> allows a process's input or output to be
referred to using a filename.
It takes the form of
<B>&lt;(</B><I>list</I><B>)</B>
or
<B>&gt;(</B><I>list</I><B>)</B>.
The process <I>list</I> is run with its input or output connected to a
<I>FIFO</I> or some file in <B>/dev/fd</B>. The name of this file is
The process <I>list</I> 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. If the <B>&gt;(</B><I>list</I><B>)</B> form is used, writing to
expansion.
If the <B>&gt;(</B><I>list</I><B>)</B> form is used, writing to
the file will provide input for <I>list</I>. If the
<B>&lt;(</B><I>list</I><B>)</B> form is used, the file passed as an
argument should be read to obtain the output of <I>list</I>.
Process substitution is supported on systems that support named
pipes (<I>FIFOs</I>) or the <B>/dev/fd</B> method of naming open files.
<P>
When available, process substitution is performed
@@ -4191,10 +4222,12 @@ If
</FONT>
has a value other than the default, then sequences of
the whitespace characters
<B>space</B>
<B>space</B>,
<B>tab</B>,
and
<B>tab</B>
<B>newline</B>
are ignored at the beginning and end of the
word, as long as the whitespace character is in the
@@ -4387,6 +4420,8 @@ option is disabled when
</FONT>
is unset.
The pattern matching honors the setting of the <B>extglob</B> shell
option.
<P>
<B>Pattern Matching</B>
@@ -4980,12 +5015,12 @@ The <I>word</I> undergoes
brace expansion, tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote removal.
Pathname expansion and word splitting are not performed.
The result is supplied as a single string to the command on its
The result is supplied as a single string, with a newline appended,
to the command on its
standard input (or file descriptor <I>n</I> if <I>n</I> is specified).
<A NAME="lbBQ">&nbsp;</A>
<H4>Duplicating File Descriptors</H4>
<P>
<P>
The redirection operator
@@ -6381,6 +6416,12 @@ when it is ready to read a command, and the secondary prompt
when it needs more input to complete a command.
<B>Bash</B>
displays
<B>PS0</B>
after it reads a command but before executing it.
<B>Bash</B>
allows these prompt strings to be customized by inserting a number of
backslash-escaped special characters that are decoded as follows:
<DL COMPACT><DT><DD>
@@ -9881,7 +9922,7 @@ invalid option is supplied or <I>n</I> indexes beyond the end
of the directory stack.
</DL>
<DT><B>disown</B> [<B>-ar</B>] [<B>-h</B>] [<I>jobspec</I> ...]<DD>
<DT><B>disown</B> [<B>-ar</B>] [<B>-h</B>] [<I>jobspec</I> ... | <I>pid</I> ... ]<DD>
Without options, remove each
<I>jobspec</I>
@@ -12023,7 +12064,10 @@ If set,
changes its behavior to that of version 3.2 with respect to
locale-specific string comparison when using the <B>[[</B>
conditional command's <B>&lt;</B> and <B>&gt;</B> operators (see previous item).
conditional command's <B>&lt;</B> and <B>&gt;</B> operators (see previous item)
and the effect of interrupting a command list.
Bash versions 3.2 and earlier continue with the next command in the list
after one terminates due to an interrupt.
<DT><B>compat40</B>
<DD>
@@ -12303,6 +12347,12 @@ If set, <B>bash</B> will send
</FONT>
to all jobs when an interactive login shell exits.
<DT><B>inherit_errexit</B>
<DD>
If set, command substitution inherits the value of the <B>errexit</B> option,
instead of unsetting it in the subshell environment.
This option is enabled when <I>posix mode</I> is enabled.
<DT><B>interactive_comments</B>
<DD>
@@ -12690,7 +12740,7 @@ is
the command
<I>arg</I>
is executed whenever a
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,
@@ -13416,7 +13466,7 @@ There may be only one active coprocess at a time.
<HR>
<TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>GNU Bash 4.4<TH ALIGN=CENTER width=33%>2015 October 11<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>GNU Bash 4.4<TH ALIGN=CENTER width=33%>2015 November 16<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<HR>
@@ -13522,6 +13572,6 @@ There may be only one active coprocess at a time.
</DL>
<HR>
This document was created by man2html from bash.1.<BR>
Time: 15 October 2015 10:10:58 EDT
Time: 03 December 2015 13:58:28 EST
</BODY>
</HTML>
+4693 -4578
View File
File diff suppressed because it is too large Load Diff
+5119 -5053
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -162,7 +162,7 @@
@xrdef{The Shopt Builtin-pg}{63}
@xrdef{Special Builtins-title}{Special Builtins}
@xrdef{Special Builtins-snt}{Section@tie 4.4}
@xrdef{Special Builtins-pg}{68}
@xrdef{Special Builtins-pg}{69}
@xrdef{Shell Variables-title}{Shell Variables}
@xrdef{Shell Variables-snt}{Chapter@tie 5}
@xrdef{Bourne Shell Variables-title}{Bourne Shell Variables}
+1 -1
View File
@@ -71,7 +71,7 @@
\entry{exit status}{39}{exit status}
\entry{signal handling}{39}{signal handling}
\entry{shell script}{40}{shell script}
\entry{special builtin}{68}{special builtin}
\entry{special builtin}{69}{special builtin}
\entry{login shell}{83}{login shell}
\entry{interactive shell}{83}{interactive shell}
\entry{startup files}{83}{startup files}
+1 -1
View File
@@ -119,7 +119,7 @@
\entry {shell, interactive}{84}
\entry {signal}{4}
\entry {signal handling}{39}
\entry {special builtin}{4, 68}
\entry {special builtin}{4, 69}
\entry {startup files}{83}
\entry {suspending jobs}{99}
\initial {T}
BIN
View File
Binary file not shown.
+11580 -14016
View File
File diff suppressed because it is too large Load Diff
+367 -335
View File
File diff suppressed because it is too large Load Diff
+28 -53
View File
@@ -1,10 +1,12 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/MacPorts 2015_3) (preloaded format=pdftex 2015.7.15) 15 OCT 2015 10:11
This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/MacPorts 2015_7) (preloaded format=etex 2015.7.15) 3 DEC 2015 13:54
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
%&-line parsing enabled.
**/usr/homes/chet/src/bash/src/doc/bashref.texi
(/usr/homes/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
Loading texinfo [version 2013-09-11.11]:
**\input /usr/homes/chet/src/bash/src/doc/bashref.texi
(/usr/homes/chet/src/bash/src/doc/bashref.texi
(/opt/local/share/texmf/tex/texinfo/texinfo.tex
Loading texinfo [version 2015-06-24.23]:
\bindingoffset=\dimen16
\normaloffset=\dimen17
\pagewidth=\dimen18
@@ -179,14 +181,12 @@ texinfo.tex: doing @include of version.texi
\openout9 = `bashref.rw'.
{/opt/local/var/db/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] (./bashref.to
c [-1] [-2] [-3]) [-4] (./bashref.toc)
(./bashref.toc) Chapter 1
] [2] (./bashref.toc [-1] [-2] [-3])
[-4] Chapter 1
\openout0 = `bashref.toc'.
Chapter 2 [1] [2] [3] Chapter 3 [4] [5] [6] [7]
[8] [9] [10]
Overfull \hbox (38.26587pt too wide) in paragraph at lines 868--868
Chapter 2 [1] [2] [3] Chapter 3 [4] [5] [6] [7] [8] [9] [10]
Overfull \hbox (38.26587pt too wide) in paragraph at lines 872--872
[]@texttt case @textttsl word @texttt in [ [(] @textttsl pat-tern @texttt [| @
textttsl pattern@texttt ][]) @textttsl command-list @texttt ;;][] esac[]
@@ -199,7 +199,7 @@ textttsl pattern@texttt ][]) @textttsl command-list @texttt ;;][] esac[]
.etc.
[11] [12] [13] [14] [15]
Overfull \hbox (89.6747pt too wide) in paragraph at lines 1270--1270
Overfull \hbox (89.6747pt too wide) in paragraph at lines 1274--1274
[]@texttt cat list | parallel "do-something1 {} config-{} ; do-something2 < {}
" | process-output[]
@@ -212,7 +212,7 @@ Overfull \hbox (89.6747pt too wide) in paragraph at lines 1270--1270
.etc.
Overfull \hbox (89.6747pt too wide) in paragraph at lines 1293--1293
Overfull \hbox (89.6747pt too wide) in paragraph at lines 1297--1297
[]@texttt { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | p
arallel traceroute[]
@@ -225,7 +225,7 @@ arallel traceroute[]
.etc.
Overfull \hbox (106.92076pt too wide) in paragraph at lines 1299--1299
Overfull \hbox (106.92076pt too wide) in paragraph at lines 1303--1303
[]@texttt { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | p
arallel -k traceroute[]
@@ -240,7 +240,7 @@ arallel -k traceroute[]
[16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30]
[31] [32] [33] [34] [35] [36] [37] [38] [39] Chapter 4 [40] [41] [42] [43]
[44] [45] [46] [47] [48] [49] [50] [51] [52] [53]
Overfull \hbox (26.76846pt too wide) in paragraph at lines 4244--4244
Overfull \hbox (26.76846pt too wide) in paragraph at lines 4254--4254
[]@texttt mapfile [-d @textttsl de-lim@texttt ] [-n @textttsl count@texttt ] [
-O @textttsl ori-gin@texttt ] [-s @textttsl count@texttt ] [-t] [-u @textttsl f
d@texttt ][]
@@ -254,7 +254,7 @@ d@texttt ][]
.etc.
[54] [55]
Overfull \hbox (38.26584pt too wide) in paragraph at lines 4444--4444
Overfull \hbox (38.26584pt too wide) in paragraph at lines 4454--4454
[]@texttt readarray [-d @textttsl de-lim@texttt ] [-n @textttsl count@texttt ]
[-O @textttsl ori-gin@texttt ] [-s @textttsl count@texttt ] [-t] [-u @textttsl
fd@texttt ][]
@@ -269,7 +269,7 @@ Overfull \hbox (38.26584pt too wide) in paragraph at lines 4444--4444
[56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] Chapter 5
[69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] Chapter 6 [80]
Overfull \hbox (49.43388pt too wide) in paragraph at lines 6124--6124
Overfull \hbox (49.43388pt too wide) in paragraph at lines 6160--6160
[]@texttt bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@t
exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
@@ -282,7 +282,7 @@ exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
.etc.
Overfull \hbox (72.42863pt too wide) in paragraph at lines 6125--6125
Overfull \hbox (72.42863pt too wide) in paragraph at lines 6161--6161
[]@texttt bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@texttt
] [-O @textttsl shopt_option@texttt ] -c @textttsl string @texttt [@textttsl ar
-
@@ -296,7 +296,7 @@ Overfull \hbox (72.42863pt too wide) in paragraph at lines 6125--6125
.etc.
Overfull \hbox (32.18782pt too wide) in paragraph at lines 6126--6126
Overfull \hbox (32.18782pt too wide) in paragraph at lines 6162--6162
[]@texttt bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@text
tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
@@ -379,8 +379,8 @@ texinfo.tex: doing @include of fdl.texi
(./fdl.texi [155] [156] [157] [158] [159] [160] [161])
Appendix D [162] (./bashref.bts) [163] (./bashref.rws) (./bashref.vrs [164]
[165]) (./bashref.fns
Overfull \vbox (14.52478pt too high) has occurred while \output is active
\vbox(35.44023+2.0)x207.80492
Overfull \vbox (17.77478pt too high) has occurred while \output is active
\vbox(32.19023+2.0)x207.80492
.\glue(\topskip) 26.12001
.\hbox(9.87999+0.0)x207.80492, glue set 195.57158fil
..\secrm A
@@ -391,8 +391,8 @@ Overfull \vbox (14.52478pt too high) has occurred while \output is active
.etc.
Overfull \vbox (0.55977pt too high) has occurred while \output is active
\vbox(35.44023+2.0)x207.80492
Overfull \vbox (3.80977pt too high) has occurred while \output is active
\vbox(32.19023+2.0)x207.80492
.\glue(\splittopskip) 29.75
.\hbox(6.25+2.0)x207.80492, glue set 40.04836fill
..\smalltt a
@@ -401,41 +401,16 @@ Overfull \vbox (0.55977pt too high) has occurred while \output is active
..\smalltt e
..\smalltt p
..etc.
.\mark{\gdef \thischaptername {Indexes}\gdef \thischapternum {D}\gdef \thischap
ter \ETC.}
.\mark{\gdef \thischaptername {Indexes}\gdef \thischapternum {D}\gdef \thischap
ter \ETC.}
[166] [167]) (./bashref.cps [168] [169]) [170] )
Here is how much of TeX's memory you used:
2747 strings out of 497110
37302 string characters out of 6206875
156623 words of memory out of 5000000
3523 multiletter control sequences out of 15000+600000
3039 strings out of 497120
36111 string characters out of 6207257
88244 words of memory out of 5000000
4187 multiletter control sequences out of 15000+600000
32896 words of font info for 113 fonts, out of 8000000 for 9000
51 hyphenation exceptions out of 8191
16i,6n,16p,319b,967s stack positions out of 5000i,500n,10000p,200000b,80000s
{/opt/local/share/texmf-texlive
/fonts/enc/dvips/cm-super/cm-super-t1.enc}</opt/local/share/texmf-texlive/fonts
/type1/public/amsfonts/cm/cmbx12.pfb></opt/local/share/texmf-texlive/fonts/type
1/public/amsfonts/cm/cmcsc10.pfb></opt/local/share/texmf-texlive/fonts/type1/pu
blic/amsfonts/cm/cmmi10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/
amsfonts/cm/cmmi12.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfo
nts/cm/cmmi9.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm
/cmr10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmr9.
pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsl10.pfb><
/opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsltt10.pfb></op
t/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsy10.pfb></opt/loc
al/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmti10.pfb></opt/local/sh
are/texmf-texlive/fonts/type1/public/amsfonts/cm/cmtt10.pfb></opt/local/share/t
exmf-texlive/fonts/type1/public/amsfonts/cm/cmtt12.pfb></opt/local/share/texmf-
texlive/fonts/type1/public/amsfonts/cm/cmtt9.pfb></opt/local/share/texmf-texliv
e/fonts/type1/public/cm-super/sfrm1095.pfb>
Output written on bashref.pdf (176 pages, 730163 bytes).
PDF statistics:
2560 PDF objects out of 2984 (max. 8388607)
2340 compressed objects within 24 object streams
302 named destinations out of 1000 (max. 500000)
1125 words of extra memory for PDF output out of 10000 (max. 10000000)
16i,6n,16p,326b,871s stack positions out of 5000i,500n,10000p,200000b,80000s
Output written on bashref.dvi (176 pages, 739900 bytes).
+2991 -2949
View File
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -1,4 +1,4 @@
input texinfo.tex @c -*- texinfo -*-
\input texinfo.tex @c -*- texinfo -*-
@c %**start of header
@setfilename bashref.info
@settitle Bash Reference Manual
@@ -454,7 +454,6 @@ When the shell is in
@sc{posix} mode (@pxref{Bash POSIX Mode}),
the @samp{!} has no special meaning
within double quotes, even when history expansion is enabled.
The characters
The characters @samp{$} and @samp{`}
retain their special meaning within double quotes (@pxref{Shell Expansions}).
The backslash retains its special meaning only when followed by one of
+1 -1
View File
@@ -62,7 +62,7 @@
@numsecentry{Modifying Shell Behavior}{4.3}{Modifying Shell Behavior}{59}
@numsubsecentry{The Set Builtin}{4.3.1}{The Set Builtin}{59}
@numsubsecentry{The Shopt Builtin}{4.3.2}{The Shopt Builtin}{63}
@numsecentry{Special Builtins}{4.4}{Special Builtins}{68}
@numsecentry{Special Builtins}{4.4}{Special Builtins}{69}
@numchapentry{Shell Variables}{5}{Shell Variables}{70}
@numsecentry{Bourne Shell Variables}{5.1}{Bourne Shell Variables}{70}
@numsecentry{Bash Variables}{5.2}{Bash Variables}{70}
+16 -15
View File
@@ -37,7 +37,7 @@
\entry{BASH_ARGV}{71}{\code {BASH_ARGV}}
\entry{BASH_CMDS}{71}{\code {BASH_CMDS}}
\entry{BASH_COMMAND}{71}{\code {BASH_COMMAND}}
\entry{BASH_COMPAT}{71}{\code {BASH_COMPAT}}
\entry{BASH_COMPAT}{72}{\code {BASH_COMPAT}}
\entry{BASH_ENV}{72}{\code {BASH_ENV}}
\entry{BASH_EXECUTION_STRING}{72}{\code {BASH_EXECUTION_STRING}}
\entry{BASH_LINENO}{72}{\code {BASH_LINENO}}
@@ -52,7 +52,7 @@
\entry{COLUMNS}{73}{\code {COLUMNS}}
\entry{COMP_CWORD}{73}{\code {COMP_CWORD}}
\entry{COMP_LINE}{73}{\code {COMP_LINE}}
\entry{COMP_POINT}{73}{\code {COMP_POINT}}
\entry{COMP_POINT}{74}{\code {COMP_POINT}}
\entry{COMP_TYPE}{74}{\code {COMP_TYPE}}
\entry{COMP_KEY}{74}{\code {COMP_KEY}}
\entry{COMP_WORDBREAKS}{74}{\code {COMP_WORDBREAKS}}
@@ -61,9 +61,9 @@
\entry{COPROC}{74}{\code {COPROC}}
\entry{DIRSTACK}{74}{\code {DIRSTACK}}
\entry{EMACS}{74}{\code {EMACS}}
\entry{ENV}{74}{\code {ENV}}
\entry{EUID}{74}{\code {EUID}}
\entry{EXECIGNORE}{74}{\code {EXECIGNORE}}
\entry{ENV}{75}{\code {ENV}}
\entry{EUID}{75}{\code {EUID}}
\entry{EXECIGNORE}{75}{\code {EXECIGNORE}}
\entry{FCEDIT}{75}{\code {FCEDIT}}
\entry{FIGNORE}{75}{\code {FIGNORE}}
\entry{FUNCNAME}{75}{\code {FUNCNAME}}
@@ -71,13 +71,13 @@
\entry{GLOBIGNORE}{75}{\code {GLOBIGNORE}}
\entry{GROUPS}{75}{\code {GROUPS}}
\entry{histchars}{75}{\code {histchars}}
\entry{HISTCMD}{75}{\code {HISTCMD}}
\entry{HISTCMD}{76}{\code {HISTCMD}}
\entry{HISTCONTROL}{76}{\code {HISTCONTROL}}
\entry{HISTFILE}{76}{\code {HISTFILE}}
\entry{HISTFILESIZE}{76}{\code {HISTFILESIZE}}
\entry{HISTIGNORE}{76}{\code {HISTIGNORE}}
\entry{HISTSIZE}{76}{\code {HISTSIZE}}
\entry{HISTTIMEFORMAT}{76}{\code {HISTTIMEFORMAT}}
\entry{HISTSIZE}{77}{\code {HISTSIZE}}
\entry{HISTTIMEFORMAT}{77}{\code {HISTTIMEFORMAT}}
\entry{HOSTFILE}{77}{\code {HOSTFILE}}
\entry{HOSTNAME}{77}{\code {HOSTNAME}}
\entry{HOSTTYPE}{77}{\code {HOSTTYPE}}
@@ -87,10 +87,10 @@
\entry{LC_ALL}{77}{\code {LC_ALL}}
\entry{LC_COLLATE}{77}{\code {LC_COLLATE}}
\entry{LC_CTYPE}{77}{\code {LC_CTYPE}}
\entry{LC_MESSAGES}{77}{\code {LC_MESSAGES}}
\entry{LC_NUMERIC}{77}{\code {LC_NUMERIC}}
\entry{LC_TIME}{77}{\code {LC_TIME}}
\entry{LINENO}{77}{\code {LINENO}}
\entry{LC_MESSAGES}{78}{\code {LC_MESSAGES}}
\entry{LC_NUMERIC}{78}{\code {LC_NUMERIC}}
\entry{LC_TIME}{78}{\code {LC_TIME}}
\entry{LINENO}{78}{\code {LINENO}}
\entry{LINES}{78}{\code {LINES}}
\entry{MACHTYPE}{78}{\code {MACHTYPE}}
\entry{MAILCHECK}{78}{\code {MAILCHECK}}
@@ -102,8 +102,9 @@
\entry{POSIXLY_CORRECT}{78}{\code {POSIXLY_CORRECT}}
\entry{PPID}{78}{\code {PPID}}
\entry{PROMPT_COMMAND}{78}{\code {PROMPT_COMMAND}}
\entry{PROMPT_DIRTRIM}{78}{\code {PROMPT_DIRTRIM}}
\entry{PS3}{78}{\code {PS3}}
\entry{PROMPT_DIRTRIM}{79}{\code {PROMPT_DIRTRIM}}
\entry{PS0}{79}{\code {PS0}}
\entry{PS3}{79}{\code {PS3}}
\entry{PS4}{79}{\code {PS4}}
\entry{PWD}{79}{\code {PWD}}
\entry{RANDOM}{79}{\code {RANDOM}}
@@ -114,7 +115,7 @@
\entry{SHELL}{79}{\code {SHELL}}
\entry{SHELLOPTS}{79}{\code {SHELLOPTS}}
\entry{SHLVL}{79}{\code {SHLVL}}
\entry{TIMEFORMAT}{79}{\code {TIMEFORMAT}}
\entry{TIMEFORMAT}{80}{\code {TIMEFORMAT}}
\entry{TMOUT}{80}{\code {TMOUT}}
\entry{TMPDIR}{80}{\code {TMPDIR}}
\entry{UID}{80}{\code {UID}}
+16 -15
View File
@@ -34,7 +34,7 @@
\entry {\code {BASH_ARGV}}{71}
\entry {\code {BASH_CMDS}}{71}
\entry {\code {BASH_COMMAND}}{71}
\entry {\code {BASH_COMPAT}}{71}
\entry {\code {BASH_COMPAT}}{72}
\entry {\code {BASH_ENV}}{72}
\entry {\code {BASH_EXECUTION_STRING}}{72}
\entry {\code {BASH_LINENO}}{72}
@@ -60,7 +60,7 @@
\entry {\code {COMP_CWORD}}{73}
\entry {\code {COMP_KEY}}{74}
\entry {\code {COMP_LINE}}{73}
\entry {\code {COMP_POINT}}{73}
\entry {\code {COMP_POINT}}{74}
\entry {\code {COMP_TYPE}}{74}
\entry {\code {COMP_WORDBREAKS}}{74}
\entry {\code {COMP_WORDS}}{74}
@@ -82,9 +82,9 @@
\entry {\code {EMACS}}{74}
\entry {\code {enable-bracketed-paste}}{109}
\entry {\code {enable-keypad}}{109}
\entry {\code {ENV}}{74}
\entry {\code {EUID}}{74}
\entry {\code {EXECIGNORE}}{74}
\entry {\code {ENV}}{75}
\entry {\code {EUID}}{75}
\entry {\code {EXECIGNORE}}{75}
\entry {\code {expand-tilde}}{109}
\initial {F}
\entry {\code {FCEDIT}}{75}
@@ -96,15 +96,15 @@
\entry {\code {GROUPS}}{75}
\initial {H}
\entry {\code {histchars}}{75}
\entry {\code {HISTCMD}}{75}
\entry {\code {HISTCMD}}{76}
\entry {\code {HISTCONTROL}}{76}
\entry {\code {HISTFILE}}{76}
\entry {\code {HISTFILESIZE}}{76}
\entry {\code {HISTIGNORE}}{76}
\entry {\code {history-preserve-point}}{109}
\entry {\code {history-size}}{109}
\entry {\code {HISTSIZE}}{76}
\entry {\code {HISTTIMEFORMAT}}{76}
\entry {\code {HISTSIZE}}{77}
\entry {\code {HISTTIMEFORMAT}}{77}
\entry {\code {HOME}}{70}
\entry {\code {horizontal-scroll-mode}}{109}
\entry {\code {HOSTFILE}}{77}
@@ -123,10 +123,10 @@
\entry {\code {LC_ALL}}{77}
\entry {\code {LC_COLLATE}}{77}
\entry {\code {LC_CTYPE}}{77}
\entry {\code {LC_MESSAGES}}{7, 77}
\entry {\code {LC_NUMERIC}}{77}
\entry {\code {LC_TIME}}{77}
\entry {\code {LINENO}}{77}
\entry {\code {LC_MESSAGES}}{7, 78}
\entry {\code {LC_NUMERIC}}{78}
\entry {\code {LC_TIME}}{78}
\entry {\code {LINENO}}{78}
\entry {\code {LINES}}{78}
\initial {M}
\entry {\code {MACHTYPE}}{78}
@@ -153,10 +153,11 @@
\entry {\code {POSIXLY_CORRECT}}{78}
\entry {\code {PPID}}{78}
\entry {\code {PROMPT_COMMAND}}{78}
\entry {\code {PROMPT_DIRTRIM}}{78}
\entry {\code {PROMPT_DIRTRIM}}{79}
\entry {\code {PS0}}{79}
\entry {\code {PS1}}{70}
\entry {\code {PS2}}{70}
\entry {\code {PS3}}{78}
\entry {\code {PS3}}{79}
\entry {\code {PS4}}{79}
\entry {\code {PWD}}{79}
\initial {R}
@@ -177,7 +178,7 @@
\initial {T}
\entry {\code {TEXTDOMAIN}}{7}
\entry {\code {TEXTDOMAINDIR}}{7}
\entry {\code {TIMEFORMAT}}{79}
\entry {\code {TIMEFORMAT}}{80}
\entry {\code {TMOUT}}{80}
\entry {\code {TMPDIR}}{80}
\initial {U}
+85 -77
View File
@@ -469,7 +469,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
The return value is 0 unless an invalid option is supplied or _n
indexes beyond the end of the directory stack.
ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ...]
ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ]
Without options, remove each _j_o_b_s_p_e_c from the table of active
jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr
option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option
@@ -1319,148 +1319,156 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
If set, bbaasshh changes its behavior to that of version 3.2
with respect to locale-specific string comparison when
using the [[[[ conditional command's << and >> operators
(see previous item).
(see previous item) and the effect of interrupting a
command list. Bash versions 3.2 and earlier continue
with the next command in the list after one terminates
due to an interrupt.
ccoommppaatt4400
If set, bbaasshh changes its behavior to that of version 4.0
with respect to locale-specific string comparison when
using the [[[[ conditional command's << and >> operators
(see description of ccoommppaatt3311) and the effect of inter-
rupting a command list. Bash versions 4.0 and later
interrupt the list as if the shell received the inter-
rupt; previous versions continue with the next command
with respect to locale-specific string comparison when
using the [[[[ conditional command's << and >> operators
(see description of ccoommppaatt3311) and the effect of inter-
rupting a command list. Bash versions 4.0 and later
interrupt the list as if the shell received the inter-
rupt; previous versions continue with the next command
in the list.
ccoommppaatt4411
If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote
in a double-quoted parameter expansion as a special
character. The single quotes must match (an even num-
ber) and the characters between the single quotes are
considered quoted. This is the behavior of posix mode
through version 4.1. The default bash behavior remains
If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote
in a double-quoted parameter expansion as a special
character. The single quotes must match (an even num-
ber) and the characters between the single quotes are
considered quoted. This is the behavior of posix mode
through version 4.1. The default bash behavior remains
as in previous versions.
ccoommppaatt4422
If set, bbaasshh does not process the replacement string in
the pattern substitution word expansion using quote
If set, bbaasshh does not process the replacement string in
the pattern substitution word expansion using quote
removal.
ccoommppaatt4433
If set, bbaasshh does not print a warning message if an
attempt is made to use a quoted compound array assign-
ment as an argument to ddeeccllaarree, makes word expansion
errors non-fatal errors that cause the current command
to fail (the default behavior is to make them fatal
If set, bbaasshh does not print a warning message if an
attempt is made to use a quoted compound array assign-
ment as an argument to ddeeccllaarree, makes word expansion
errors non-fatal errors that cause the current command
to fail (the default behavior is to make them fatal
errors that cause the shell to exit), and does not reset
the loop state when a shell function is executed (this
allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect
the loop state when a shell function is executed (this
allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect
loops in the caller's context).
ccoommpplleettee__ffuullllqquuoottee
If set, bbaasshh quotes all shell metacharacters in file-
names and directory names when performing completion.
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
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 back-
slashes to quote completed filenames. This variable is
set by default, which is the default bash behavior in
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
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 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 readline editing buf-
fer. If not set, bbaasshh attempts to preserve what the
If set, bbaasshh replaces directory names with the results
of word expansion when performing filename completion.
This changes the contents of the readline editing buf-
fer. 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-
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
ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in
the results of pathname expansion.
eexxeeccffaaiill
If set, a non-interactive shell will not exit if it can-
not execute the file specified as an argument to the
eexxeecc builtin command. An interactive shell does not
not execute the file specified as an argument to the
eexxeecc builtin command. An interactive shell does not
exit if eexxeecc fails.
eexxppaanndd__aalliiaasseess
If set, aliases are expanded as described above under
If set, aliases are expanded as described above under
AALLIIAASSEESS. This option is enabled by default for interac-
tive shells.
eexxttddeebbuugg
If set, behavior intended for use by debuggers is
If set, 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
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
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
44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described
in their descriptions above.
55.. Function tracing is enabled: command substitu-
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 ((
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, the extended pattern matching features described
above under PPaatthhnnaammee EExxppaannssiioonn are enabled.
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
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
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
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
description of FFIIGGNNOORREE. This option is enabled by
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 com-
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, the current locale's collating
sequence is not taken into account, so bb will not col-
late between AA and BB, and upper-case and lower-case
sequence is not taken into account, so bb will not col-
late between AA and BB, and upper-case and lower-case
ASCII characters will collate together.
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 //,
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
If set, the history list is appended to the file named
by the value of the HHIISSTTFFIILLEE variable when the shell
exits, rather than overwriting the file.
hhiissttrreeeeddiitt
If set, and rreeaaddlliinnee is being used, a user is given the
If set, and rreeaaddlliinnee is being used, a user is given the
opportunity to re-edit a failed history substitution.
hhiissttvveerriiffyy
If set, and rreeaaddlliinnee is being used, the results of his-
tory substitution are not immediately passed to the
shell parser. Instead, the resulting line is loaded
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
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 _p_o_s_i_x _m_o_d_e is
enabled.
iinntteerraaccttiivvee__ccoommmmeennttss
If set, allow a word beginning with ## to cause that word
and all remaining characters on that line to be ignored
@@ -1628,7 +1636,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
function or a script executed with the .. or ssoouurrccee builtins fin-
ishes executing.
If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a a
If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g 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
+420 -415
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.3
%%CreationDate: Wed Oct 14 11:38:11 2015
%%CreationDate: Thu Dec 3 11:00:54 2015
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%DocumentSuppliedResources: procset grops 1.22 3
File diff suppressed because it is too large Load Diff
+18 -13
View File
@@ -3869,19 +3869,20 @@ fix_assignment_words (words)
for (wcmd = words; wcmd; wcmd = wcmd->next)
if ((wcmd->word->flags & W_ASSIGNMENT) == 0)
break;
/* Posix (post-2008) says that `command' doesn't change whether
or not the builtin it shadows is a `declaration command', even
though it removes other special builtin properties. In Posix
mode, we skip over one or more instances of `command' and
deal with the next word as the assignment builtin. */
while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command"))
wcmd = wcmd->next;
for (w = wcmd; w; w = w->next)
if (w->word->flags & W_ASSIGNMENT)
{
/* Lazy builtin lookup, only do it if we find an assignment */
if (b == 0)
{
/* Posix (post-2008) says that `command' doesn't change whether
or not the builtin it shadows is a `declaration command', even
though it removes other special builtin properties. In Posix
mode, we skip over one or more instances of `command' and
deal with the next word as the assignment builtin. */
while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command"))
wcmd = wcmd->next;
b = builtin_address_internal (wcmd->word->word, 0);
if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0)
return;
@@ -3897,6 +3898,12 @@ fix_assignment_words (words)
#endif
if (global)
w->word->flags |= W_ASSNGLOBAL;
/* If we have an assignment builtin that does not create local variables,
make sure we create global variables even if we internally call
`declare' */
if (b && ((b->flags & (ASSIGNMENT_BUILTIN|LOCALVAR_BUILTIN)) == ASSIGNMENT_BUILTIN))
w->word->flags |= W_ASSNGLOBAL;
}
#if defined (ARRAY_VARS)
/* Note that we saw an associative array option to a builtin that takes
@@ -3908,8 +3915,6 @@ fix_assignment_words (words)
{
if (b == 0)
{
while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command"))
wcmd = wcmd->next;
b = builtin_address_internal (wcmd->word->word, 0);
if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0)
return;
@@ -4364,12 +4369,11 @@ execute_builtin (builtin, words, flags, subshell)
WORD_LIST *words;
int flags, subshell;
{
int old_e_flag, result, eval_unwind;
int result, eval_unwind, ignexit_flag, old_e_flag;
int isbltinenv;
char *error_trap;
error_trap = 0;
old_e_flag = exit_immediately_on_error;
/* The eval builtin calls parse_and_execute, which does not know about
the setting of flags, and always calls the execution functions with
@@ -4393,6 +4397,7 @@ execute_builtin (builtin, words, flags, subshell)
restore_default_signal (ERROR_TRAP);
}
exit_immediately_on_error = 0;
ignexit_flag = builtin_ignoring_errexit;
builtin_ignoring_errexit = 1;
eval_unwind = 1;
}
@@ -4469,8 +4474,8 @@ execute_builtin (builtin, words, flags, subshell)
if (eval_unwind)
{
exit_immediately_on_error = errexit_flag;
builtin_ignoring_errexit = 0;
builtin_ignoring_errexit = ignexit_flag;
exit_immediately_on_error = builtin_ignoring_errexit ? 0 : errexit_flag;
if (error_trap)
{
set_error_trap (error_trap);
+5
View File
@@ -47,6 +47,11 @@ extern int errno;
#define DEFAULT_TMPDIR "." /* bogus default, should be changed */
#define DEFAULT_NAMEROOT "shtmp"
/* Use ANSI-C rand() interface if random(3) is not available */
#if !HAVE_RANDOM
#define random() rand()
#endif
extern pid_t dollar_dollar_pid;
static char *get_sys_tmpdir __P((void));
+4
View File
@@ -58,6 +58,8 @@ extern int line_number, current_command_line_count, parser_state;
extern int last_command_exit_value;
extern int shell_initialized;
int here_doc_first_line = 0;
/* Object caching */
sh_obj_cache_t wdcache = {0, 0, 0};
sh_obj_cache_t wlcache = {0, 0, 0};
@@ -623,6 +625,7 @@ make_here_document (temp, lineno)
register char *line;
int len;
here_doc_first_line = 0;
line = full_line;
line_number++;
@@ -674,6 +677,7 @@ document_done:
document[0] = '\0';
}
temp->redirectee.filename->word = document;
here_doc_first_line = 0;
}
/* Generate a REDIRECT from SOURCE, DEST, and INSTRUCTION.
+9 -2
View File
@@ -125,6 +125,7 @@ extern char *dist_version;
extern int patch_level;
extern int dump_translatable_strings, dump_po_strings;
extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin;
extern int here_doc_first_line;
#if defined (BUFFERED_INPUT)
extern int bash_input_fd_changed;
#endif
@@ -2698,6 +2699,7 @@ gather_here_documents ()
int r;
r = 0;
here_doc_first_line = 1;
while (need_here_doc > 0)
{
parser_state |= PST_HEREDOC;
@@ -2706,6 +2708,7 @@ gather_here_documents ()
need_here_doc--;
redir_stack[r - 1] = 0; /* XXX */
}
here_doc_first_line = 0; /* just in case */
}
/* When non-zero, an open-brace used to create a group is awaiting a close
@@ -3021,6 +3024,7 @@ reset_parser ()
#endif
parser_state = 0;
here_doc_first_line = 0;
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
if (pushed_string_list)
@@ -5156,7 +5160,7 @@ history_delimiting_chars (line)
last_was_heredoc = 0;
return "\n";
}
return (current_command_line_count == 2 ? "\n" : "");
return (here_doc_first_line ? "\n" : "");
}
if (parser_state & PST_COMPASSIGN)
@@ -5191,7 +5195,8 @@ history_delimiting_chars (line)
last_was_heredoc = 1;
return "\n";
}
else if ((parser_state & PST_HEREDOC) == 0 && current_command_line_count > 1 && need_here_doc > 0)
return "\n";
else if (token_before_that == WORD && two_tokens_ago == FOR)
{
/* Tricky. `for i\nin ...' should not have a semicolon, but
@@ -6187,6 +6192,7 @@ save_parser_state (ps)
ps->expand_aliases = expand_aliases;
ps->echo_input_at_read = echo_input_at_read;
ps->need_here_doc = need_here_doc;
ps->here_doc_first_line = here_doc_first_line;
#if 0
for (i = 0; i < HEREDOC_MAX; i++)
@@ -6248,6 +6254,7 @@ restore_parser_state (ps)
expand_aliases = ps->expand_aliases;
echo_input_at_read = ps->echo_input_at_read;
need_here_doc = ps->need_here_doc;
here_doc_first_line = ps->here_doc_first_line;
#if 0
for (i = 0; i < HEREDOC_MAX; i++)
+1
View File
@@ -172,6 +172,7 @@ typedef struct _sh_parser_state_t {
int expand_aliases;
int echo_input_at_read;
int need_here_doc;
int here_doc_first_line;
/* structures affecting the parser */
REDIRECT *redir_stack[HEREDOC_MAX];
+41 -7
View File
@@ -4,7 +4,7 @@
/* ``Have a little faith, there's magic in the night. You ain't a
beauty, but, hey, you're alright.'' */
/* Copyright (C) 1987-2014 Free Software Foundation, Inc.
/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -344,7 +344,7 @@ static WORD_LIST *glob_expand_word_list __P((WORD_LIST *, int));
static WORD_LIST *brace_expand_word_list __P((WORD_LIST *, int));
#endif
#if defined (ARRAY_VARS)
static int make_internal_declare __P((char *, char *));
static int make_internal_declare __P((char *, char *, char *));
#endif
static WORD_LIST *shell_expand_word_list __P((WORD_LIST *, int));
static WORD_LIST *expand_word_list_internal __P((WORD_LIST *, int));
@@ -2855,6 +2855,12 @@ do_compound_assignment (name, value, flags)
if (mklocal && variable_context)
{
v = find_variable (name);
if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v)))
{
if (v && readonly_p (v))
err_readonly (name);
return (v); /* XXX */
}
list = expand_compound_array_assignment (v, value, flags);
if (mkassoc)
v = make_local_assoc_variable (name);
@@ -2869,6 +2875,12 @@ do_compound_assignment (name, value, flags)
else if (mkglobal && variable_context)
{
v = find_global_variable (name);
if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v)))
{
if (v && readonly_p (v))
err_readonly (name);
return (v); /* XXX */
}
list = expand_compound_array_assignment (v, value, flags);
if (v == 0 && mkassoc)
v = make_new_assoc_variable (name);
@@ -2884,7 +2896,15 @@ do_compound_assignment (name, value, flags)
dispose_words (list);
}
else
v = assign_array_from_string (name, value, flags);
{
v = assign_array_from_string (name, value, flags);
if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v)))
{
if (v && readonly_p (v))
err_readonly (name);
return (v); /* XXX */
}
}
return (v);
}
@@ -5553,6 +5573,12 @@ process_substitute (string, open_for_read_in_child)
QUIT; /* catch any interrupts we got post-fork */
setup_async_signals ();
subshell_environment |= SUBSHELL_COMSUB|SUBSHELL_PROCSUB;
/* if we're expanding a redirection, we shouldn't have access to the
temporary environment, but commands in the subshell should have
access to their own temporary environment. */
if (expanding_redir)
flush_temporary_env ();
}
#if defined (JOB_CONTROL)
@@ -5659,7 +5685,10 @@ process_substitute (string, open_for_read_in_child)
#endif /* HAVE_DEV_FD */
/* subshells shouldn't have this flag, which controls using the temporary
environment for variable lookups. */
environment for variable lookups. We have already flushed the temporary
environment above in the case we're expanding a redirection, so processes
executed by this command need to be able to set it independently of their
parent. */
expanding_redir = 0;
subshell_level++;
@@ -10094,9 +10123,10 @@ brace_expand_word_list (tlist, eflags)
/* Take WORD, a compound associative array assignment, and internally run
'declare -A w', where W is the variable name portion of WORD. */
static int
make_internal_declare (word, option)
make_internal_declare (word, option, cmd)
char *word;
char *option;
char *cmd;
{
int t, r;
WORD_LIST *wl;
@@ -10122,12 +10152,16 @@ shell_expand_word_list (tlist, eflags)
WORD_LIST *tlist;
int eflags;
{
WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list;
WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list, *wcmd;
int expanded_something, has_dollar_at;
char *temp_string;
/* We do tilde expansion all the time. This is what 1003.2 says. */
new_list = (WORD_LIST *)NULL;
for (wcmd = tlist; wcmd; wcmd = wcmd->next)
if (wcmd->word->flags & W_ASSNBLTIN)
break;
for (orig_list = tlist; tlist; tlist = next)
{
temp_string = tlist->word->word;
@@ -10208,7 +10242,7 @@ shell_expand_word_list (tlist, eflags)
opts[opti] = '\0';
if (opti > 0)
{
t = make_internal_declare (tlist->word->word, opts);
t = make_internal_declare (tlist->word->word, opts, wcmd ? wcmd->word->word : (char *)0);
if (t != EXECUTION_SUCCESS)
{
last_command_exit_value = t;
+37
View File
@@ -0,0 +1,37 @@
after f1:declare -ar a=([0]="1")
./attr.tests: line 4: a: readonly variable
after f2:declare -ar a=([0]="1")
./attr.tests: line 5: a: readonly variable
after f3:declare -ar a=([0]="1")
./attr.tests: line 6: readonly: a: readonly variable
after f4:declare -ar a=([0]="1")
after f2:declare -ar b=([0]="2")
after f3:declare -ar c=([0]="(3)")
after f4:declare -ar d=([0]="4")
declare -r m="4"
in func:declare -r n="4"
declare -r n="4"
./attr1.sub: line 13: p: readonly variable
declare -r p="1"
./attr1.sub: line 19: r: readonly variable
declare -ar r=([0]="1")
./attr1.sub: line 23: r: readonly variable
declare -ar r=([0]="1")
./attr1.sub: line 27: r: readonly variable
declare -ar r=([0]="1")
./attr1.sub: line 31: readonly: r: readonly variable
declare -ar r=([0]="1")
declare -ar x=([0]="4")
in func:declare -ar y=([0]="4")
declare -ar y=([0]="4")
in func:declare -ar z=([0]="4")
declare -ar z=([0]="4")
in func:declare -ar y1=([0]="4")
declare -ar y1=([0]="4")
in func:declare -ar z1=([0]="4")
declare -ar z1=([0]="4")
declare -x p="4"
declare -ax r=([0]="4")
declare -ax r=([0]="(5)")
declare -ax r=([0]="6")
declare -ax r=([0]="7")
+41
View File
@@ -0,0 +1,41 @@
a=(outside)
f1() { readonly a=(1) ; }
f2() { readonly -a a=(2) ; }
f3() { readonly 'a=(3)' ; }
f4() { readonly -a 'a=(4)' ; }
f1
echo -n after f1:
declare -p a
f2
echo -n after f2:
declare -p a
f3
echo -n after f3:
declare -p a
f4
echo -n after f4:
declare -p a
b=(outside)
c=(outside)
d=(outside)
f2() { readonly -a b=(2) ; }
f3() { readonly 'c=(3)' ; }
f4() { readonly -a 'd=(4)' ; }
f2
echo -n after f2:
declare -p b
f3
echo -n after f3:
declare -p c
f4
echo -n after f4:
declare -p d
${THIS_SH} ./attr1.sub
${THIS_SH} ./attr2.sub
+55
View File
@@ -0,0 +1,55 @@
m=1
readonly m=4
declare -p m
n=1
f() { readonly n=4; echo -n in func: ; declare -p n ; }
f
declare -p n
p=1
readonly p
readonly p=4
declare -p p
r=(1)
readonly r
f() { readonly r=(4) ; }
f
declare -p r
f() { readonly r='(5)' ; }
f
declare -p r
f() { readonly -a r=(6) ; }
f
declare -p r
f() { readonly -a r='(7)' ; }
f
declare -p r
x=(1)
readonly x=(4)
declare -p x
y=(1)
f() { readonly y=(4); echo -n in func: ; declare -p y; }
f
declare -p y
z=(1)
f() { readonly -a z=(4); echo -n in func: ; declare -p z; }
f
declare -p z
f() { readonly y1=(4); echo -n in func: ; declare -p y1; }
f
declare -p y1
f() { readonly -a z1=(4); echo -n in func: ; declare -p z1; }
f
declare -p z1
+24
View File
@@ -0,0 +1,24 @@
p=1
export p
export p=4
declare -p p
r=(1)
export r
f() { export r=(4) ; }
f
declare -p r
f() { export r='(5)' ; }
f
declare -p r
f() { export -a r=(6) ; }
f
declare -p r
f() { export -a r='(7)' ; }
f
declare -p r
+5
View File
@@ -41,6 +41,11 @@ found 2
libc
ok 42
ok 43
ok 1
ok 2
ok 3
ok 4
ok 5
match 1
match 2
match 3
+11
View File
@@ -180,6 +180,17 @@ echo ${BASH_REMATCH[@]}
if [[ "123abc" == *?(a)bc ]]; then echo ok 42; else echo bad 42; fi
if [[ "123abc" == *?(a)bc ]]; then echo ok 43; else echo bad 43; fi
foo=""
[[ bar == *"${foo,,}"* ]] && echo ok 1
[[ bar == *${foo,,}* ]] && echo ok 2
shopt -s extquote
bs='\'
del=$'\177'
[[ bar == *$bs"$del"* ]] || echo ok 3
[[ "" == "$foo" ]] && echo ok 4
[[ "$del" == "${foo,,}" ]] || echo ok 5
${THIS_SH} ./cond-regexp1.sub
${THIS_SH} ./cond-regexp2.sub
+2
View File
@@ -148,3 +148,5 @@ b
c
echo "#!/bin/bash" set -o posix
#!/bin/bash set -o posix
!!
!!
+3
View File
@@ -9,3 +9,6 @@ set -o histexpand
set -o posix
echo "#!/bin/bash" !!
echo '!!'
echo "!!"
+2
View File
@@ -0,0 +1,2 @@
${THIS_SH} ./attr.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT}
diff ${BASH_TSTOUT} attr.right && rm -f ${BASH_TSTOUT}