commit bash-20100701 snapshot

This commit is contained in:
Chet Ramey
2011-12-12 22:01:40 -05:00
parent 3d35553ad4
commit 7d92f73f39
56 changed files with 8704 additions and 5916 deletions
+52
View File
@@ -10148,3 +10148,55 @@ parse.y
- add `TIMEIGN' token to handle `time -p -- ...'. Pointed out by
Laszlo Ersek <lacos@caesar.elte.hu> on austin-group list
6/28
----
jobs.c
- treat a shell with (subshell_environment&SUBSHELL_PIPE) != 0 like
a command substitution in wait_for and act like we received a
SIGINT if a job we're waiting for dies of SIGINT. Fixes bug
reported by Ilya Basin <basinilya@gmail.com>
7/2
---
jobs.c
- if fork() fails in make_child, try to reap some dead children before
retrying
execute_cmd.c
- change execute_pipeline to run the last command of a non-asynchronous
pipeline in the current shell environment if the `lastpipe' shell
option is enabled and job control is not active. Code from
Werner Fink <werner@suse.de>
parse.y
- Posix says (issue 267) that time is not recognized as a keyword
if the next token begins with a `-'
doc/{bash.1,bashref.texi}
- changed the descriptions of BASH_SOURCE, BASH_LINENO, and FUNCNAME
as proposed in Ubuntu bug 591677.
- document new `lastpipe' shell option that runs last command of a
pipeline in the current shell environment
- document new posix-mode behavior with `time -p'
7/5
---
aclocal.m4
- new autoconf test WEXITSTATUS_OFFSET, bit offset in status word
returned by wait() of the process's exit status
jobs.[ch]
- change stop_pipeline to return the actual index of the job just
created and added to the jobs table, instead of the current job
- job_exit_status and job_exit_signal are now global functions, with
extern declarations in jobs.h
- append_process: new utility function for use by the lastpipe code,
takes info, creates a PROCESS from them, and adds it to the end of
the passed job id's pipeline. lastpipe code uses it to add a dummy
process for the last command in the pipeline
- freeze_jobs_list: new utility function so rest of shell can freeze
the jobs list. Used by the lastpipe code
execute_cmd.c
- changes to lastpipe code to make `pipefail' option, $PIPESTATUS, and
$? work correctly. Uses append_process and job_exit_status
+57
View File
@@ -10141,3 +10141,60 @@ subst.c
execute_cmd.c
- add missing initializers for sh_coproc to eliminate a compiler
warning. Patch from Werner Fink <werner@suse.de>
6/27
----
parse.y
- add `TIMEIGN' token to handle `time -p -- ...'. Pointed out by
Laszlo Ersek <lacos@caesar.elte.hu> on austin-group list
6/28
----
jobs.c
- treat a shell with (subshell_environment&SUBSHELL_PIPE) != 0 like
a command substitution in wait_for and act like we received a
SIGINT if a job we're waiting for dies of SIGINT. Fixes bug
reported by Ilya Basin <basinilya@gmail.com>
7/2
---
jobs.c
- if fork() fails in make_child, try to reap some dead children before
retrying
execute_cmd.c
- change execute_pipeline to run the last command of a non-asynchronous
pipeline in the current shell environment if the `lastpipe' shell
option is enabled and job control is not active. Code from
Werner Fink <werner@suse.de>
parse.y
- Posix says (issue 267) that time is not recognized as a keyword
if the next token begins with a `-'
doc/{bash.1,bashref.texi}
- changed the descriptions of BASH_SOURCE, BASH_LINENO, and FUNCNAME
as proposed in Ubuntu bug 591677.
- document new `lastpipe' shell option that runs last command of a
pipeline in the current shell environment
- document new posix-mode behavior with `time -p'
7/5
---
aclocal.m4
- new autoconf test WEXITSTATUS_OFFSET, bit offset in status word
returned by wait() of the process's exit status
jobs.[ch]
- change stop_pipeline to return the actual index of the job just
created and added to the jobs table, instead of the current job
- job_exit_status and job_exit_signal are now global functions, with
extern declarations in jobs.h
- append_process: new utility function for use by the lastpipe code,
takes info, creates a PROCESS from them, and adds it to the end of
the passed job id's pipeline. lastpipe code uses it to add a dummy
process for the last command in the pipeline
execute_cmd.c
- changes to lastpipe code to make `pipefail' option, $PIPESTATUS, and
$? work correctly. Uses append_process and job_exit_status
+4
View File
@@ -908,6 +908,9 @@ tests/jobs2.sub f
tests/jobs3.sub f
tests/jobs4.sub f
tests/jobs.right f
tests/lastpipe.right f
tests/lastpipe.tests f
tests/lastpipe1.sub f
tests/mapfile.data f
tests/mapfile.right f
tests/mapfile.tests f
@@ -1023,6 +1026,7 @@ tests/run-intl f
tests/run-iquote f
tests/run-invert f
tests/run-jobs f
tests/run-lastpipe f
tests/run-mapfile f
tests/run-more-exp f
tests/run-new-exp f
+1
View File
@@ -778,6 +778,7 @@ tests/builtins.tests f
tests/builtins.right f
tests/builtins1.sub f
tests/builtins2.sub f
tests/builtins3.sub f
tests/source1.sub f
tests/source2.sub f
tests/source3.sub f
Vendored
+48
View File
@@ -4119,3 +4119,51 @@ main()
[Define if you have a standard-conformant vsnprintf function.])
fi
])
AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET,
[AC_MSG_CHECKING(for offset of exit status in return status from wait)
AC_CACHE_VAL(bash_cv_wexitstatus_offset,
[AC_RUN_IFELSE([
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
main(c, v)
int c;
char **v;
{
pid_t pid, p;
int s, i, n;
s = 0;
pid = fork();
if (pid == 0)
exit (42);
/* wait for the process */
p = wait(&s);
if (p != pid)
exit (255);
/* crack s */
for (i = 0; i < (sizeof(s) - 8); i++)
{
n = (s >> i) & 0xff;
if (n == 42)
exit (i);
}
exit (254);
}
], bash_cv_wexitstatus_offset=0, bash_cv_wexitstatus_offset=$?,
[AC_MSG_WARN(cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0)
bash_cv_wexitstatus_offset=0]
)])
if test "$bash_cv_wexitstatus_offset" -gt 32 ; then
AC_MSG_WARN(bad exit status from test program -- defaulting to 0)
bash_cv_wexitstatus_offset=0
fi
AC_MSG_RESULT($bash_cv_wexitstatus_offset)
AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset of exit status in wait status word])
])
Vendored
+44 -1
View File
@@ -1704,7 +1704,6 @@ AC_REPLACE_FUNCS(mbschr)
AC_CHECK_FUNC(wcrtomb, AC_DEFINE(HAVE_WCRTOMB))
AC_CHECK_FUNC(wcscoll, AC_DEFINE(HAVE_WCSCOLL))
AC_CHECK_FUNC(wcsdup, AC_DEFINE(HAVE_WCSDUP))
AC_CHECK_FUNC(wcswidth, AC_DEFINE(HAVE_WCSWIDTH))
AC_CHECK_FUNC(wcwidth, AC_DEFINE(HAVE_WCWIDTH))
AC_CHECK_FUNC(wctype, AC_DEFINE(HAVE_WCTYPE))
@@ -4120,3 +4119,47 @@ main()
[Define if you have a standard-conformant vsnprintf function.])
fi
])
AC_DEFUN(BASH_STRUCT_WEXITSTATUS_OFFSET,
[AC_MSG_CHECKING(for offset of exit status in return status from wait)
AC_CACHE_VAL(bash_cv_wexitstatus_offset,
[AC_RUN_IFELSE([
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
main(c, v)
int c;
char **v;
{
pid_t pid, p;
int s, i, n;
s = 0;
pid = fork();
if (pid == 0)
exit (42);
/* wait for the process */
p = wait(&s);
if (p != pid)
exit (255);
/* crack s */
for (i = 0; i < (sizeof(s) - 8); i++)
{
n = (s >> i) & 0xff;
if (n == 42)
exit (i);
}
exit (254);
}
], bash_cv_wexitstatus_offset=0, bash_cv_wexitstatus_offset=$?,
[AC_MSG_WARN(cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0)
bash_cv_wexitstatus_offset=0]
)])
AC_MSG_RESULT($bash_cv_wexitstatus_offset)
AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset of exit status in wait status word])
])
+100 -1
View File
@@ -1,5 +1,5 @@
@%:@! /bin/sh
@%:@ From configure.in for Bash 4.2, version 4.031.
@%:@ From configure.in for Bash 4.2, version 4.032.
@%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.63 for bash 4.2-devel.
@%:@
@@ -28279,6 +28279,105 @@ _ACEOF
fi
{ $as_echo "$as_me:$LINENO: checking for offset of exit status in return status from wait" >&5
$as_echo_n "checking for offset of exit status in return status from wait... " >&6; }
if test "${bash_cv_wexitstatus_offset+set}" = set; then
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then
{ $as_echo "$as_me:$LINENO: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&5
$as_echo "$as_me: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&2;}
bash_cv_wexitstatus_offset=0
else
cat >conftest.$ac_ext <<_ACEOF
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
main(c, v)
int c;
char **v;
{
pid_t pid, p;
int s, i, n;
s = 0;
pid = fork();
if (pid == 0)
exit (42);
/* wait for the process */
p = wait(&s);
if (p != pid)
exit (255);
/* crack s */
for (i = 0; i < (sizeof(s) - 8); i++)
{
n = (s >> i) & 0xff;
if (n == 42)
exit (i);
}
exit (254);
}
_ACEOF
rm -f conftest$ac_exeext
if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>&5
ac_status=$?
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
{ (case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_try") 2>&5
ac_status=$?
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
bash_cv_wexitstatus_offset=0
else
$as_echo "$as_me: program exited with status $ac_status" >&5
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
bash_cv_wexitstatus_offset=$?
fi
rm -rf conftest.dSYM
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
if test "$bash_cv_wexitstatus_offset" -gt 32 ; then
{ $as_echo "$as_me:$LINENO: WARNING: bad exit status from test program -- defaulting to 0" >&5
$as_echo "$as_me: WARNING: bad exit status from test program -- defaulting to 0" >&2;}
bash_cv_wexitstatus_offset=0
fi
{ $as_echo "$as_me:$LINENO: result: $bash_cv_wexitstatus_offset" >&5
$as_echo "$bash_cv_wexitstatus_offset" >&6; }
cat >>confdefs.h <<_ACEOF
@%:@define WEXITSTATUS_OFFSET $bash_cv_wexitstatus_offset
_ACEOF
{ $as_echo "$as_me:$LINENO: checking for the existence of strsignal" >&5
$as_echo_n "checking for the existence of strsignal... " >&6; }
if test "${bash_cv_have_strsignal+set}" = set; then
+11 -11
View File
@@ -15,25 +15,25 @@
'configure.in'
],
{
'_LT_AC_TAGCONFIG' => 1,
'AM_PROG_F77_C_O' => 1,
'AC_INIT' => 1,
'_LT_AC_TAGCONFIG' => 1,
'm4_pattern_forbid' => 1,
'_AM_COND_IF' => 1,
'AC_INIT' => 1,
'AC_CANONICAL_TARGET' => 1,
'AC_SUBST' => 1,
'_AM_COND_IF' => 1,
'AC_CONFIG_LIBOBJ_DIR' => 1,
'AC_FC_SRCEXT' => 1,
'AC_SUBST' => 1,
'AC_CANONICAL_HOST' => 1,
'AC_FC_SRCEXT' => 1,
'AC_PROG_LIBTOOL' => 1,
'AM_INIT_AUTOMAKE' => 1,
'AC_CONFIG_SUBDIRS' => 1,
'AM_AUTOMAKE_VERSION' => 1,
'LT_CONFIG_LTDL_DIR' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'AC_CONFIG_LINKS' => 1,
'm4_sinclude' => 1,
'AC_REQUIRE_AUX_FILE' => 1,
'LT_SUPPORTED_TAG' => 1,
'm4_sinclude' => 1,
'AM_MAINTAINER_MODE' => 1,
'AM_GNU_GETTEXT_INTL_SUBDIR' => 1,
'_m4_warn' => 1,
@@ -49,13 +49,13 @@
'AC_CANONICAL_BUILD' => 1,
'AC_FC_FREEFORM' => 1,
'AH_OUTPUT' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AC_CONFIG_AUX_DIR' => 1,
'sinclude' => 1,
'm4_pattern_allow' => 1,
'_AM_SUBST_NOTMAKE' => 1,
'AM_PROG_CC_C_O' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'm4_pattern_allow' => 1,
'sinclude' => 1,
'AM_CONDITIONAL' => 1,
'AC_CANONICAL_SYSTEM' => 1,
'AC_CONFIG_HEADERS' => 1,
'AC_DEFINE_TRACE_LITERAL' => 1,
'm4_include' => 1,
+254 -250
View File
@@ -2229,213 +2229,217 @@ m4trace:configure.in:918: -1- AH_OUTPUT([HAVE_TZNAME], [/* Define to 1 if you do
#undef HAVE_TZNAME])
m4trace:configure.in:919: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRUCT_TIMEZONE])
m4trace:configure.in:919: -1- m4_pattern_allow([^HAVE_STRUCT_TIMEZONE$])
m4trace:configure.in:922: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
m4trace:configure.in:921: -1- AC_DEFINE_TRACE_LITERAL([WEXITSTATUS_OFFSET])
m4trace:configure.in:921: -1- m4_pattern_allow([^WEXITSTATUS_OFFSET$])
m4trace:configure.in:921: -1- AH_OUTPUT([WEXITSTATUS_OFFSET], [/* Offset of exit status in wait status word */
#undef WEXITSTATUS_OFFSET])
m4trace:configure.in:924: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:299: BASH_FUNC_STRSIGNAL is expanded from...
configure.in:922: the top level])
m4trace:configure.in:922: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL])
m4trace:configure.in:922: -1- m4_pattern_allow([^HAVE_STRSIGNAL$])
m4trace:configure.in:923: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
configure.in:924: the top level])
m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STRSIGNAL])
m4trace:configure.in:924: -1- m4_pattern_allow([^HAVE_STRSIGNAL$])
m4trace:configure.in:925: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:313: BASH_FUNC_OPENDIR_CHECK is expanded from...
configure.in:923: the top level])
m4trace:configure.in:923: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST])
m4trace:configure.in:923: -1- m4_pattern_allow([^OPENDIR_NOT_ROBUST$])
m4trace:configure.in:924: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:683: BASH_FUNC_ULIMIT_MAXFDS is expanded from...
configure.in:924: the top level])
m4trace:configure.in:924: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS])
m4trace:configure.in:924: -1- m4_pattern_allow([^ULIMIT_MAXFDS$])
m4trace:configure.in:925: -1- AH_OUTPUT([HAVE_FPURGE], [/* Define to 1 if you have the `fpurge\' function. */
#undef HAVE_FPURGE])
m4trace:configure.in:925: -1- AH_OUTPUT([HAVE___FPURGE], [/* Define to 1 if you have the `__fpurge\' function. */
#undef HAVE___FPURGE])
m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FPURGE])
m4trace:configure.in:925: -1- m4_pattern_allow([^HAVE_DECL_FPURGE$])
m4trace:configure.in:925: -1- AH_OUTPUT([HAVE_DECL_FPURGE], [/* Define to 1 if you have the declaration of `fpurge\', and to 0 if you don\'t.
*/
#undef HAVE_DECL_FPURGE])
m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FPURGE])
m4trace:configure.in:925: -1- m4_pattern_allow([^HAVE_DECL_FPURGE$])
configure.in:925: the top level])
m4trace:configure.in:925: -1- AC_DEFINE_TRACE_LITERAL([OPENDIR_NOT_ROBUST])
m4trace:configure.in:925: -1- m4_pattern_allow([^OPENDIR_NOT_ROBUST$])
m4trace:configure.in:926: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:579: BASH_FUNC_GETENV is expanded from...
aclocal.m4:683: BASH_FUNC_ULIMIT_MAXFDS is expanded from...
configure.in:926: the top level])
m4trace:configure.in:926: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV])
m4trace:configure.in:926: -1- m4_pattern_allow([^CAN_REDEFINE_GETENV$])
m4trace:configure.in:926: -1- AC_DEFINE_TRACE_LITERAL([ULIMIT_MAXFDS])
m4trace:configure.in:926: -1- m4_pattern_allow([^ULIMIT_MAXFDS$])
m4trace:configure.in:927: -1- AH_OUTPUT([HAVE_FPURGE], [/* Define to 1 if you have the `fpurge\' function. */
#undef HAVE_FPURGE])
m4trace:configure.in:927: -1- AH_OUTPUT([HAVE___FPURGE], [/* Define to 1 if you have the `__fpurge\' function. */
#undef HAVE___FPURGE])
m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FPURGE])
m4trace:configure.in:927: -1- m4_pattern_allow([^HAVE_DECL_FPURGE$])
m4trace:configure.in:927: -1- AH_OUTPUT([HAVE_DECL_FPURGE], [/* Define to 1 if you have the declaration of `fpurge\', and to 0 if you don\'t.
*/
#undef HAVE_DECL_FPURGE])
m4trace:configure.in:927: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DECL_FPURGE])
m4trace:configure.in:927: -1- m4_pattern_allow([^HAVE_DECL_FPURGE$])
m4trace:configure.in:928: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:702: BASH_FUNC_GETCWD is expanded from...
aclocal.m4:579: BASH_FUNC_GETENV is expanded from...
configure.in:928: the top level])
m4trace:configure.in:928: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN])
m4trace:configure.in:928: -1- m4_pattern_allow([^GETCWD_BROKEN$])
m4trace:configure.in:928: -1- AC_LIBSOURCE([getcwd.c])
m4trace:configure.in:928: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"])
m4trace:configure.in:928: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.in:928: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.in:928: -1- AC_DEFINE_TRACE_LITERAL([CAN_REDEFINE_GETENV])
m4trace:configure.in:928: -1- m4_pattern_allow([^CAN_REDEFINE_GETENV$])
m4trace:configure.in:930: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:778: BASH_FUNC_POSIX_SETJMP is expanded from...
aclocal.m4:702: BASH_FUNC_GETCWD is expanded from...
configure.in:930: the top level])
m4trace:configure.in:930: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP])
m4trace:configure.in:930: -1- m4_pattern_allow([^HAVE_POSIX_SIGSETJMP$])
m4trace:configure.in:931: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
m4trace:configure.in:930: -1- AC_DEFINE_TRACE_LITERAL([GETCWD_BROKEN])
m4trace:configure.in:930: -1- m4_pattern_allow([^GETCWD_BROKEN$])
m4trace:configure.in:930: -1- AC_LIBSOURCE([getcwd.c])
m4trace:configure.in:930: -1- AC_SUBST([LIB@&t@OBJS], ["$LIB@&t@OBJS getcwd.$ac_objext"])
m4trace:configure.in:930: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.in:930: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.in:932: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:778: BASH_FUNC_POSIX_SETJMP is expanded from...
configure.in:932: the top level])
m4trace:configure.in:932: -1- AC_DEFINE_TRACE_LITERAL([HAVE_POSIX_SIGSETJMP])
m4trace:configure.in:932: -1- m4_pattern_allow([^HAVE_POSIX_SIGSETJMP$])
m4trace:configure.in:933: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:829: BASH_FUNC_STRCOLL is expanded from...
configure.in:931: the top level])
m4trace:configure.in:931: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN])
m4trace:configure.in:931: -1- m4_pattern_allow([^STRCOLL_BROKEN$])
m4trace:configure.in:932: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */
configure.in:933: the top level])
m4trace:configure.in:933: -1- AC_DEFINE_TRACE_LITERAL([STRCOLL_BROKEN])
m4trace:configure.in:933: -1- m4_pattern_allow([^STRCOLL_BROKEN$])
m4trace:configure.in:934: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define to 1 if you have the `snprintf\' function. */
#undef HAVE_SNPRINTF])
m4trace:configure.in:932: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
m4trace:configure.in:934: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:4039: BASH_FUNC_SNPRINTF is expanded from...
configure.in:932: the top level])
m4trace:configure.in:932: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SNPRINTF])
m4trace:configure.in:932: -1- m4_pattern_allow([^HAVE_SNPRINTF$])
m4trace:configure.in:932: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define if you have a standard-conformant snprintf function. */
configure.in:934: the top level])
m4trace:configure.in:934: -1- AC_DEFINE_TRACE_LITERAL([HAVE_SNPRINTF])
m4trace:configure.in:934: -1- m4_pattern_allow([^HAVE_SNPRINTF$])
m4trace:configure.in:934: -1- AH_OUTPUT([HAVE_SNPRINTF], [/* Define if you have a standard-conformant snprintf function. */
#undef HAVE_SNPRINTF])
m4trace:configure.in:933: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */
m4trace:configure.in:935: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define to 1 if you have the `vsnprintf\' function. */
#undef HAVE_VSNPRINTF])
m4trace:configure.in:933: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
m4trace:configure.in:935: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:4067: BASH_FUNC_VSNPRINTF is expanded from...
configure.in:933: the top level])
m4trace:configure.in:933: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF])
m4trace:configure.in:933: -1- m4_pattern_allow([^HAVE_VSNPRINTF$])
m4trace:configure.in:933: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define if you have a standard-conformant vsnprintf function. */
configure.in:935: the top level])
m4trace:configure.in:935: -1- AC_DEFINE_TRACE_LITERAL([HAVE_VSNPRINTF])
m4trace:configure.in:935: -1- m4_pattern_allow([^HAVE_VSNPRINTF$])
m4trace:configure.in:935: -1- AH_OUTPUT([HAVE_VSNPRINTF], [/* Define if you have a standard-conformant vsnprintf function. */
#undef HAVE_VSNPRINTF])
m4trace:configure.in:939: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
m4trace:configure.in:941: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:624: BASH_FUNC_STD_PUTENV is expanded from...
configure.in:939: the top level])
m4trace:configure.in:939: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
m4trace:configure.in:939: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
configure.in:941: the top level])
m4trace:configure.in:941: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
m4trace:configure.in:941: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
m4trace:configure.in:944: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
m4trace:configure.in:943: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_PUTENV])
m4trace:configure.in:943: -1- m4_pattern_allow([^HAVE_STD_PUTENV$])
m4trace:configure.in:946: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from...
aclocal.m4:654: BASH_FUNC_STD_UNSETENV is expanded from...
configure.in:944: the top level])
m4trace:configure.in:944: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
m4trace:configure.in:944: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
configure.in:946: the top level])
m4trace:configure.in:946: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
m4trace:configure.in:946: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
m4trace:configure.in:949: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
m4trace:configure.in:948: -1- AC_DEFINE_TRACE_LITERAL([HAVE_STD_UNSETENV])
m4trace:configure.in:948: -1- m4_pattern_allow([^HAVE_STD_UNSETENV$])
m4trace:configure.in:951: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:878: BASH_FUNC_PRINTF_A_FORMAT is expanded from...
configure.in:949: the top level])
m4trace:configure.in:949: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT])
m4trace:configure.in:949: -1- m4_pattern_allow([^HAVE_PRINTF_A_FORMAT$])
m4trace:configure.in:952: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1297: BASH_SYS_REINSTALL_SIGHANDLERS is expanded from...
configure.in:952: the top level])
m4trace:configure.in:952: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS])
m4trace:configure.in:952: -1- m4_pattern_allow([^MUST_REINSTALL_SIGHANDLERS$])
m4trace:configure.in:953: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1356: BASH_SYS_JOB_CONTROL_MISSING is expanded from...
configure.in:953: the top level])
m4trace:configure.in:953: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING])
m4trace:configure.in:953: -1- m4_pattern_allow([^JOB_CONTROL_MISSING$])
configure.in:951: the top level])
m4trace:configure.in:951: -1- AC_DEFINE_TRACE_LITERAL([HAVE_PRINTF_A_FORMAT])
m4trace:configure.in:951: -1- m4_pattern_allow([^HAVE_PRINTF_A_FORMAT$])
m4trace:configure.in:954: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1415: BASH_SYS_NAMED_PIPES is expanded from...
aclocal.m4:1297: BASH_SYS_REINSTALL_SIGHANDLERS is expanded from...
configure.in:954: the top level])
m4trace:configure.in:954: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING])
m4trace:configure.in:954: -1- m4_pattern_allow([^NAMED_PIPES_MISSING$])
m4trace:configure.in:957: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL])
m4trace:configure.in:957: -1- m4_pattern_allow([^GWINSZ_IN_SYS_IOCTL$])
m4trace:configure.in:957: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires <sys/ioctl.h>. */
m4trace:configure.in:954: -1- AC_DEFINE_TRACE_LITERAL([MUST_REINSTALL_SIGHANDLERS])
m4trace:configure.in:954: -1- m4_pattern_allow([^MUST_REINSTALL_SIGHANDLERS$])
m4trace:configure.in:955: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1356: BASH_SYS_JOB_CONTROL_MISSING is expanded from...
configure.in:955: the top level])
m4trace:configure.in:955: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL_MISSING])
m4trace:configure.in:955: -1- m4_pattern_allow([^JOB_CONTROL_MISSING$])
m4trace:configure.in:956: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1415: BASH_SYS_NAMED_PIPES is expanded from...
configure.in:956: the top level])
m4trace:configure.in:956: -1- AC_DEFINE_TRACE_LITERAL([NAMED_PIPES_MISSING])
m4trace:configure.in:956: -1- m4_pattern_allow([^NAMED_PIPES_MISSING$])
m4trace:configure.in:959: -1- AC_DEFINE_TRACE_LITERAL([GWINSZ_IN_SYS_IOCTL])
m4trace:configure.in:959: -1- m4_pattern_allow([^GWINSZ_IN_SYS_IOCTL$])
m4trace:configure.in:959: -1- AH_OUTPUT([GWINSZ_IN_SYS_IOCTL], [/* Define to 1 if `TIOCGWINSZ\' requires <sys/ioctl.h>. */
#undef GWINSZ_IN_SYS_IOCTL])
m4trace:configure.in:958: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
m4trace:configure.in:960: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2470: AC_TRY_COMPILE is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1496: BASH_HAVE_TIOCSTAT is expanded from...
configure.in:958: the top level])
m4trace:configure.in:958: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL])
m4trace:configure.in:958: -1- m4_pattern_allow([^TIOCSTAT_IN_SYS_IOCTL$])
m4trace:configure.in:959: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
configure.in:960: the top level])
m4trace:configure.in:960: -1- AC_DEFINE_TRACE_LITERAL([TIOCSTAT_IN_SYS_IOCTL])
m4trace:configure.in:960: -1- m4_pattern_allow([^TIOCSTAT_IN_SYS_IOCTL$])
m4trace:configure.in:961: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2470: AC_TRY_COMPILE is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1508: BASH_HAVE_FIONREAD is expanded from...
configure.in:959: the top level])
m4trace:configure.in:959: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL])
m4trace:configure.in:959: -1- m4_pattern_allow([^FIONREAD_IN_SYS_IOCTL$])
m4trace:configure.in:961: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
configure.in:961: the top level])
m4trace:configure.in:961: -1- AC_DEFINE_TRACE_LITERAL([FIONREAD_IN_SYS_IOCTL])
m4trace:configure.in:961: -1- m4_pattern_allow([^FIONREAD_IN_SYS_IOCTL$])
m4trace:configure.in:963: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1938: BASH_CHECK_WCONTINUED is expanded from...
configure.in:961: the top level])
m4trace:configure.in:961: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN])
m4trace:configure.in:961: -1- m4_pattern_allow([^WCONTINUED_BROKEN$])
m4trace:configure.in:964: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
configure.in:963: the top level])
m4trace:configure.in:963: -1- AC_DEFINE_TRACE_LITERAL([WCONTINUED_BROKEN])
m4trace:configure.in:963: -1- m4_pattern_allow([^WCONTINUED_BROKEN$])
m4trace:configure.in:966: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2470: AC_TRY_COMPILE is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1526: BASH_CHECK_SPEED_T is expanded from...
configure.in:964: the top level])
m4trace:configure.in:964: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES])
m4trace:configure.in:964: -1- m4_pattern_allow([^SPEED_T_IN_SYS_TYPES$])
m4trace:configure.in:965: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS])
m4trace:configure.in:965: -1- m4_pattern_allow([^HAVE_GETPW_DECLS$])
m4trace:configure.in:966: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
configure.in:966: the top level])
m4trace:configure.in:966: -1- AC_DEFINE_TRACE_LITERAL([SPEED_T_IN_SYS_TYPES])
m4trace:configure.in:966: -1- m4_pattern_allow([^SPEED_T_IN_SYS_TYPES$])
m4trace:configure.in:967: -1- AC_DEFINE_TRACE_LITERAL([HAVE_GETPW_DECLS])
m4trace:configure.in:967: -1- m4_pattern_allow([^HAVE_GETPW_DECLS$])
m4trace:configure.in:968: -1- _m4_warn([obsolete], [The macro `AC_TRY_RUN' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2592: AC_TRY_RUN is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1653: BASH_CHECK_RTSIGS is expanded from...
configure.in:966: the top level])
m4trace:configure.in:966: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS])
m4trace:configure.in:966: -1- m4_pattern_allow([^UNUSABLE_RT_SIGNALS$])
m4trace:configure.in:967: -1- AC_SUBST([SIGLIST_O])
m4trace:configure.in:967: -1- AC_SUBST_TRACE([SIGLIST_O])
m4trace:configure.in:967: -1- m4_pattern_allow([^SIGLIST_O$])
m4trace:configure.in:971: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
configure.in:968: the top level])
m4trace:configure.in:968: -1- AC_DEFINE_TRACE_LITERAL([UNUSABLE_RT_SIGNALS])
m4trace:configure.in:968: -1- m4_pattern_allow([^UNUSABLE_RT_SIGNALS$])
m4trace:configure.in:969: -1- AC_SUBST([SIGLIST_O])
m4trace:configure.in:969: -1- AC_SUBST_TRACE([SIGLIST_O])
m4trace:configure.in:969: -1- m4_pattern_allow([^SIGLIST_O$])
m4trace:configure.in:973: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2470: AC_TRY_COMPILE is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1605: BASH_CHECK_KERNEL_RLIMIT is expanded from...
configure.in:971: the top level])
m4trace:configure.in:971: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
configure.in:973: the top level])
m4trace:configure.in:973: -1- _m4_warn([obsolete], [The macro `AC_TRY_COMPILE' is obsolete.
You should run autoupdate.], [../../lib/autoconf/general.m4:2470: AC_TRY_COMPILE is expanded from...
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:2462: AC_COMPILE_IFELSE is expanded from...
@@ -2443,140 +2447,140 @@ You should run autoupdate.], [../../lib/autoconf/general.m4:2470: AC_TRY_COMPILE
../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from...
../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from...
aclocal.m4:1605: BASH_CHECK_KERNEL_RLIMIT is expanded from...
configure.in:971: the top level])
m4trace:configure.in:971: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL])
m4trace:configure.in:971: -1- m4_pattern_allow([^RLIMIT_NEEDS_KERNEL$])
m4trace:configure.in:981: -1- AC_SUBST([TERMCAP_LIB])
m4trace:configure.in:981: -1- AC_SUBST_TRACE([TERMCAP_LIB])
m4trace:configure.in:981: -1- m4_pattern_allow([^TERMCAP_LIB$])
m4trace:configure.in:982: -1- AC_SUBST([TERMCAP_DEP])
m4trace:configure.in:982: -1- AC_SUBST_TRACE([TERMCAP_DEP])
m4trace:configure.in:982: -1- m4_pattern_allow([^TERMCAP_DEP$])
m4trace:configure.in:984: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
m4trace:configure.in:984: -1- m4_pattern_allow([^HAVE_DEV_FD$])
m4trace:configure.in:984: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
m4trace:configure.in:984: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
m4trace:configure.in:984: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
m4trace:configure.in:984: -1- m4_pattern_allow([^HAVE_DEV_FD$])
m4trace:configure.in:984: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
m4trace:configure.in:984: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
m4trace:configure.in:985: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN])
m4trace:configure.in:985: -1- m4_pattern_allow([^HAVE_DEV_STDIN$])
m4trace:configure.in:986: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY])
m4trace:configure.in:986: -1- m4_pattern_allow([^DEFAULT_MAIL_DIRECTORY$])
m4trace:configure.in:993: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL])
m4trace:configure.in:993: -1- m4_pattern_allow([^JOB_CONTROL$])
m4trace:configure.in:999: -1- AC_SUBST([JOBS_O])
m4trace:configure.in:999: -1- AC_SUBST_TRACE([JOBS_O])
m4trace:configure.in:999: -1- m4_pattern_allow([^JOBS_O$])
m4trace:configure.in:1012: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2])
m4trace:configure.in:1012: -1- m4_pattern_allow([^SVR4_2$])
m4trace:configure.in:1013: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
m4trace:configure.in:1013: -1- m4_pattern_allow([^SVR4$])
m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
m4trace:configure.in:1014: -1- m4_pattern_allow([^SVR4$])
m4trace:configure.in:1015: -1- AC_DEFINE_TRACE_LITERAL([SVR5])
m4trace:configure.in:1015: -1- m4_pattern_allow([^SVR5$])
m4trace:configure.in:1034: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
m4trace:configure.in:1034: -1- m4_pattern_allow([^PGRP_PIPE$])
m4trace:configure.in:1081: -1- AC_SUBST([SHOBJ_CC])
m4trace:configure.in:1081: -1- AC_SUBST_TRACE([SHOBJ_CC])
m4trace:configure.in:1081: -1- m4_pattern_allow([^SHOBJ_CC$])
m4trace:configure.in:1082: -1- AC_SUBST([SHOBJ_CFLAGS])
m4trace:configure.in:1082: -1- AC_SUBST_TRACE([SHOBJ_CFLAGS])
m4trace:configure.in:1082: -1- m4_pattern_allow([^SHOBJ_CFLAGS$])
m4trace:configure.in:1083: -1- AC_SUBST([SHOBJ_LD])
m4trace:configure.in:1083: -1- AC_SUBST_TRACE([SHOBJ_LD])
m4trace:configure.in:1083: -1- m4_pattern_allow([^SHOBJ_LD$])
m4trace:configure.in:1084: -1- AC_SUBST([SHOBJ_LDFLAGS])
m4trace:configure.in:1084: -1- AC_SUBST_TRACE([SHOBJ_LDFLAGS])
m4trace:configure.in:1084: -1- m4_pattern_allow([^SHOBJ_LDFLAGS$])
m4trace:configure.in:1085: -1- AC_SUBST([SHOBJ_XLDFLAGS])
m4trace:configure.in:1085: -1- AC_SUBST_TRACE([SHOBJ_XLDFLAGS])
m4trace:configure.in:1085: -1- m4_pattern_allow([^SHOBJ_XLDFLAGS$])
m4trace:configure.in:1086: -1- AC_SUBST([SHOBJ_LIBS])
m4trace:configure.in:1086: -1- AC_SUBST_TRACE([SHOBJ_LIBS])
m4trace:configure.in:1086: -1- m4_pattern_allow([^SHOBJ_LIBS$])
m4trace:configure.in:1087: -1- AC_SUBST([SHOBJ_STATUS])
m4trace:configure.in:1087: -1- AC_SUBST_TRACE([SHOBJ_STATUS])
m4trace:configure.in:1087: -1- m4_pattern_allow([^SHOBJ_STATUS$])
m4trace:configure.in:1119: -1- AC_SUBST([PROFILE_FLAGS])
m4trace:configure.in:1119: -1- AC_SUBST_TRACE([PROFILE_FLAGS])
m4trace:configure.in:1119: -1- m4_pattern_allow([^PROFILE_FLAGS$])
m4trace:configure.in:1121: -1- AC_SUBST([incdir])
m4trace:configure.in:1121: -1- AC_SUBST_TRACE([incdir])
m4trace:configure.in:1121: -1- m4_pattern_allow([^incdir$])
m4trace:configure.in:1122: -1- AC_SUBST([BUILD_DIR])
m4trace:configure.in:1122: -1- AC_SUBST_TRACE([BUILD_DIR])
m4trace:configure.in:1122: -1- m4_pattern_allow([^BUILD_DIR$])
m4trace:configure.in:1125: -1- AC_SUBST([datarootdir])
m4trace:configure.in:1125: -1- AC_SUBST_TRACE([datarootdir])
m4trace:configure.in:1125: -1- m4_pattern_allow([^datarootdir$])
m4trace:configure.in:1126: -1- AC_SUBST([localedir])
m4trace:configure.in:1126: -1- AC_SUBST_TRACE([localedir])
m4trace:configure.in:1126: -1- m4_pattern_allow([^localedir$])
m4trace:configure.in:1128: -1- AC_SUBST([YACC])
m4trace:configure.in:1128: -1- AC_SUBST_TRACE([YACC])
m4trace:configure.in:1128: -1- m4_pattern_allow([^YACC$])
m4trace:configure.in:1129: -1- AC_SUBST([AR])
m4trace:configure.in:1129: -1- AC_SUBST_TRACE([AR])
m4trace:configure.in:1129: -1- m4_pattern_allow([^AR$])
m4trace:configure.in:1130: -1- AC_SUBST([ARFLAGS])
m4trace:configure.in:1130: -1- AC_SUBST_TRACE([ARFLAGS])
m4trace:configure.in:1130: -1- m4_pattern_allow([^ARFLAGS$])
m4trace:configure.in:1132: -1- AC_SUBST([BASHVERS])
m4trace:configure.in:1132: -1- AC_SUBST_TRACE([BASHVERS])
m4trace:configure.in:1132: -1- m4_pattern_allow([^BASHVERS$])
m4trace:configure.in:1133: -1- AC_SUBST([RELSTATUS])
m4trace:configure.in:1133: -1- AC_SUBST_TRACE([RELSTATUS])
m4trace:configure.in:1133: -1- m4_pattern_allow([^RELSTATUS$])
m4trace:configure.in:1134: -1- AC_SUBST([DEBUG])
m4trace:configure.in:1134: -1- AC_SUBST_TRACE([DEBUG])
m4trace:configure.in:1134: -1- m4_pattern_allow([^DEBUG$])
m4trace:configure.in:1135: -1- AC_SUBST([MALLOC_DEBUG])
m4trace:configure.in:1135: -1- AC_SUBST_TRACE([MALLOC_DEBUG])
m4trace:configure.in:1135: -1- m4_pattern_allow([^MALLOC_DEBUG$])
m4trace:configure.in:1137: -1- AC_SUBST([host_cpu])
m4trace:configure.in:1137: -1- AC_SUBST_TRACE([host_cpu])
m4trace:configure.in:1137: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.in:1138: -1- AC_SUBST([host_vendor])
m4trace:configure.in:1138: -1- AC_SUBST_TRACE([host_vendor])
m4trace:configure.in:1138: -1- m4_pattern_allow([^host_vendor$])
m4trace:configure.in:1139: -1- AC_SUBST([host_os])
m4trace:configure.in:1139: -1- AC_SUBST_TRACE([host_os])
m4trace:configure.in:1139: -1- m4_pattern_allow([^host_os$])
m4trace:configure.in:1141: -1- AC_SUBST([LOCAL_LIBS])
m4trace:configure.in:1141: -1- AC_SUBST_TRACE([LOCAL_LIBS])
m4trace:configure.in:1141: -1- m4_pattern_allow([^LOCAL_LIBS$])
m4trace:configure.in:1142: -1- AC_SUBST([LOCAL_CFLAGS])
m4trace:configure.in:1142: -1- AC_SUBST_TRACE([LOCAL_CFLAGS])
m4trace:configure.in:1142: -1- m4_pattern_allow([^LOCAL_CFLAGS$])
m4trace:configure.in:1143: -1- AC_SUBST([LOCAL_LDFLAGS])
m4trace:configure.in:1143: -1- AC_SUBST_TRACE([LOCAL_LDFLAGS])
m4trace:configure.in:1143: -1- m4_pattern_allow([^LOCAL_LDFLAGS$])
m4trace:configure.in:1144: -1- AC_SUBST([LOCAL_DEFS])
m4trace:configure.in:1144: -1- AC_SUBST_TRACE([LOCAL_DEFS])
m4trace:configure.in:1144: -1- m4_pattern_allow([^LOCAL_DEFS$])
m4trace:configure.in:1149: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
configure.in:973: the top level])
m4trace:configure.in:973: -1- AC_DEFINE_TRACE_LITERAL([RLIMIT_NEEDS_KERNEL])
m4trace:configure.in:973: -1- m4_pattern_allow([^RLIMIT_NEEDS_KERNEL$])
m4trace:configure.in:983: -1- AC_SUBST([TERMCAP_LIB])
m4trace:configure.in:983: -1- AC_SUBST_TRACE([TERMCAP_LIB])
m4trace:configure.in:983: -1- m4_pattern_allow([^TERMCAP_LIB$])
m4trace:configure.in:984: -1- AC_SUBST([TERMCAP_DEP])
m4trace:configure.in:984: -1- AC_SUBST_TRACE([TERMCAP_DEP])
m4trace:configure.in:984: -1- m4_pattern_allow([^TERMCAP_DEP$])
m4trace:configure.in:986: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
m4trace:configure.in:986: -1- m4_pattern_allow([^HAVE_DEV_FD$])
m4trace:configure.in:986: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
m4trace:configure.in:986: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
m4trace:configure.in:986: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_FD])
m4trace:configure.in:986: -1- m4_pattern_allow([^HAVE_DEV_FD$])
m4trace:configure.in:986: -1- AC_DEFINE_TRACE_LITERAL([DEV_FD_PREFIX])
m4trace:configure.in:986: -1- m4_pattern_allow([^DEV_FD_PREFIX$])
m4trace:configure.in:987: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DEV_STDIN])
m4trace:configure.in:987: -1- m4_pattern_allow([^HAVE_DEV_STDIN$])
m4trace:configure.in:988: -1- AC_DEFINE_TRACE_LITERAL([DEFAULT_MAIL_DIRECTORY])
m4trace:configure.in:988: -1- m4_pattern_allow([^DEFAULT_MAIL_DIRECTORY$])
m4trace:configure.in:995: -1- AC_DEFINE_TRACE_LITERAL([JOB_CONTROL])
m4trace:configure.in:995: -1- m4_pattern_allow([^JOB_CONTROL$])
m4trace:configure.in:1001: -1- AC_SUBST([JOBS_O])
m4trace:configure.in:1001: -1- AC_SUBST_TRACE([JOBS_O])
m4trace:configure.in:1001: -1- m4_pattern_allow([^JOBS_O$])
m4trace:configure.in:1014: -1- AC_DEFINE_TRACE_LITERAL([SVR4_2])
m4trace:configure.in:1014: -1- m4_pattern_allow([^SVR4_2$])
m4trace:configure.in:1015: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
m4trace:configure.in:1015: -1- m4_pattern_allow([^SVR4$])
m4trace:configure.in:1016: -1- AC_DEFINE_TRACE_LITERAL([SVR4])
m4trace:configure.in:1016: -1- m4_pattern_allow([^SVR4$])
m4trace:configure.in:1017: -1- AC_DEFINE_TRACE_LITERAL([SVR5])
m4trace:configure.in:1017: -1- m4_pattern_allow([^SVR5$])
m4trace:configure.in:1036: -1- AC_DEFINE_TRACE_LITERAL([PGRP_PIPE])
m4trace:configure.in:1036: -1- m4_pattern_allow([^PGRP_PIPE$])
m4trace:configure.in:1083: -1- AC_SUBST([SHOBJ_CC])
m4trace:configure.in:1083: -1- AC_SUBST_TRACE([SHOBJ_CC])
m4trace:configure.in:1083: -1- m4_pattern_allow([^SHOBJ_CC$])
m4trace:configure.in:1084: -1- AC_SUBST([SHOBJ_CFLAGS])
m4trace:configure.in:1084: -1- AC_SUBST_TRACE([SHOBJ_CFLAGS])
m4trace:configure.in:1084: -1- m4_pattern_allow([^SHOBJ_CFLAGS$])
m4trace:configure.in:1085: -1- AC_SUBST([SHOBJ_LD])
m4trace:configure.in:1085: -1- AC_SUBST_TRACE([SHOBJ_LD])
m4trace:configure.in:1085: -1- m4_pattern_allow([^SHOBJ_LD$])
m4trace:configure.in:1086: -1- AC_SUBST([SHOBJ_LDFLAGS])
m4trace:configure.in:1086: -1- AC_SUBST_TRACE([SHOBJ_LDFLAGS])
m4trace:configure.in:1086: -1- m4_pattern_allow([^SHOBJ_LDFLAGS$])
m4trace:configure.in:1087: -1- AC_SUBST([SHOBJ_XLDFLAGS])
m4trace:configure.in:1087: -1- AC_SUBST_TRACE([SHOBJ_XLDFLAGS])
m4trace:configure.in:1087: -1- m4_pattern_allow([^SHOBJ_XLDFLAGS$])
m4trace:configure.in:1088: -1- AC_SUBST([SHOBJ_LIBS])
m4trace:configure.in:1088: -1- AC_SUBST_TRACE([SHOBJ_LIBS])
m4trace:configure.in:1088: -1- m4_pattern_allow([^SHOBJ_LIBS$])
m4trace:configure.in:1089: -1- AC_SUBST([SHOBJ_STATUS])
m4trace:configure.in:1089: -1- AC_SUBST_TRACE([SHOBJ_STATUS])
m4trace:configure.in:1089: -1- m4_pattern_allow([^SHOBJ_STATUS$])
m4trace:configure.in:1121: -1- AC_SUBST([PROFILE_FLAGS])
m4trace:configure.in:1121: -1- AC_SUBST_TRACE([PROFILE_FLAGS])
m4trace:configure.in:1121: -1- m4_pattern_allow([^PROFILE_FLAGS$])
m4trace:configure.in:1123: -1- AC_SUBST([incdir])
m4trace:configure.in:1123: -1- AC_SUBST_TRACE([incdir])
m4trace:configure.in:1123: -1- m4_pattern_allow([^incdir$])
m4trace:configure.in:1124: -1- AC_SUBST([BUILD_DIR])
m4trace:configure.in:1124: -1- AC_SUBST_TRACE([BUILD_DIR])
m4trace:configure.in:1124: -1- m4_pattern_allow([^BUILD_DIR$])
m4trace:configure.in:1127: -1- AC_SUBST([datarootdir])
m4trace:configure.in:1127: -1- AC_SUBST_TRACE([datarootdir])
m4trace:configure.in:1127: -1- m4_pattern_allow([^datarootdir$])
m4trace:configure.in:1128: -1- AC_SUBST([localedir])
m4trace:configure.in:1128: -1- AC_SUBST_TRACE([localedir])
m4trace:configure.in:1128: -1- m4_pattern_allow([^localedir$])
m4trace:configure.in:1130: -1- AC_SUBST([YACC])
m4trace:configure.in:1130: -1- AC_SUBST_TRACE([YACC])
m4trace:configure.in:1130: -1- m4_pattern_allow([^YACC$])
m4trace:configure.in:1131: -1- AC_SUBST([AR])
m4trace:configure.in:1131: -1- AC_SUBST_TRACE([AR])
m4trace:configure.in:1131: -1- m4_pattern_allow([^AR$])
m4trace:configure.in:1132: -1- AC_SUBST([ARFLAGS])
m4trace:configure.in:1132: -1- AC_SUBST_TRACE([ARFLAGS])
m4trace:configure.in:1132: -1- m4_pattern_allow([^ARFLAGS$])
m4trace:configure.in:1134: -1- AC_SUBST([BASHVERS])
m4trace:configure.in:1134: -1- AC_SUBST_TRACE([BASHVERS])
m4trace:configure.in:1134: -1- m4_pattern_allow([^BASHVERS$])
m4trace:configure.in:1135: -1- AC_SUBST([RELSTATUS])
m4trace:configure.in:1135: -1- AC_SUBST_TRACE([RELSTATUS])
m4trace:configure.in:1135: -1- m4_pattern_allow([^RELSTATUS$])
m4trace:configure.in:1136: -1- AC_SUBST([DEBUG])
m4trace:configure.in:1136: -1- AC_SUBST_TRACE([DEBUG])
m4trace:configure.in:1136: -1- m4_pattern_allow([^DEBUG$])
m4trace:configure.in:1137: -1- AC_SUBST([MALLOC_DEBUG])
m4trace:configure.in:1137: -1- AC_SUBST_TRACE([MALLOC_DEBUG])
m4trace:configure.in:1137: -1- m4_pattern_allow([^MALLOC_DEBUG$])
m4trace:configure.in:1139: -1- AC_SUBST([host_cpu])
m4trace:configure.in:1139: -1- AC_SUBST_TRACE([host_cpu])
m4trace:configure.in:1139: -1- m4_pattern_allow([^host_cpu$])
m4trace:configure.in:1140: -1- AC_SUBST([host_vendor])
m4trace:configure.in:1140: -1- AC_SUBST_TRACE([host_vendor])
m4trace:configure.in:1140: -1- m4_pattern_allow([^host_vendor$])
m4trace:configure.in:1141: -1- AC_SUBST([host_os])
m4trace:configure.in:1141: -1- AC_SUBST_TRACE([host_os])
m4trace:configure.in:1141: -1- m4_pattern_allow([^host_os$])
m4trace:configure.in:1143: -1- AC_SUBST([LOCAL_LIBS])
m4trace:configure.in:1143: -1- AC_SUBST_TRACE([LOCAL_LIBS])
m4trace:configure.in:1143: -1- m4_pattern_allow([^LOCAL_LIBS$])
m4trace:configure.in:1144: -1- AC_SUBST([LOCAL_CFLAGS])
m4trace:configure.in:1144: -1- AC_SUBST_TRACE([LOCAL_CFLAGS])
m4trace:configure.in:1144: -1- m4_pattern_allow([^LOCAL_CFLAGS$])
m4trace:configure.in:1145: -1- AC_SUBST([LOCAL_LDFLAGS])
m4trace:configure.in:1145: -1- AC_SUBST_TRACE([LOCAL_LDFLAGS])
m4trace:configure.in:1145: -1- m4_pattern_allow([^LOCAL_LDFLAGS$])
m4trace:configure.in:1146: -1- AC_SUBST([LOCAL_DEFS])
m4trace:configure.in:1146: -1- AC_SUBST_TRACE([LOCAL_DEFS])
m4trace:configure.in:1146: -1- m4_pattern_allow([^LOCAL_DEFS$])
m4trace:configure.in:1151: -1- AC_CONFIG_FILES([Makefile builtins/Makefile lib/readline/Makefile lib/glob/Makefile \
lib/intl/Makefile \
lib/malloc/Makefile lib/sh/Makefile lib/termcap/Makefile \
lib/tilde/Makefile doc/Makefile support/Makefile po/Makefile.in \
examples/loadables/Makefile examples/loadables/perl/Makefile])
m4trace:configure.in:1149: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
m4trace:configure.in:1151: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments.
You should run autoupdate.], [])
m4trace:configure.in:1149: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.in:1149: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.in:1149: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([LTLIBOBJS])
m4trace:configure.in:1149: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([top_builddir])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([top_build_prefix])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([srcdir])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([abs_srcdir])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([top_srcdir])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([abs_top_srcdir])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([builddir])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([abs_builddir])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([abs_top_builddir])
m4trace:configure.in:1149: -1- AC_SUBST_TRACE([INSTALL])
m4trace:configure.in:1151: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([LIB@&t@OBJS])
m4trace:configure.in:1151: -1- m4_pattern_allow([^LIB@&t@OBJS$])
m4trace:configure.in:1151: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([LTLIBOBJS])
m4trace:configure.in:1151: -1- m4_pattern_allow([^LTLIBOBJS$])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([top_builddir])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([top_build_prefix])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([srcdir])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([abs_srcdir])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([top_srcdir])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([abs_top_srcdir])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([builddir])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([abs_builddir])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([abs_top_builddir])
m4trace:configure.in:1151: -1- AC_SUBST_TRACE([INSTALL])
+2
View File
@@ -84,6 +84,7 @@ extern int gnu_error_format;
extern int check_jobs_at_exit;
extern int autocd;
extern int glob_star;
extern int lastpipe_opt;
#if defined (EXTENDED_GLOB)
extern int extended_glob;
@@ -177,6 +178,7 @@ static struct {
#endif
{ "huponexit", &hup_on_exit, (shopt_set_func_t *)NULL },
{ "interactive_comments", &interactive_comments, set_shellopts_after_change },
{ "lastpipe", &lastpipe_opt, (shopt_set_func_t *)NULL },
#if defined (HISTORY)
{ "lithist", &literal_history, (shopt_set_func_t *)NULL },
#endif
+1 -1
View File
@@ -1,7 +1,7 @@
This file is shopt.def, from which is created shopt.c.
It implements the Bash `shopt' builtin.
Copyright (C) 1994-2009 Free Software Foundation, Inc.
Copyright (C) 1994-2010 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
+1
View File
@@ -169,6 +169,7 @@ typedef struct element {
#define CMD_STDIN_REDIR 0x400 /* async command needs implicit </dev/null */
#define CMD_COMMAND_BUILTIN 0x0800 /* command executed by `command' builtin */
#define CMD_COPROC_SUBSHELL 0x1000
#define CMD_LASTPIPE 0x2000
/* What a command looks like. */
typedef struct command {
+2 -1
View File
@@ -1,7 +1,7 @@
/* command.h -- The structures used internally to represent commands, and
the extern declarations of the functions used to create them. */
/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
/* Copyright (C) 1993-2010 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -169,6 +169,7 @@ typedef struct element {
#define CMD_STDIN_REDIR 0x400 /* async command needs implicit </dev/null */
#define CMD_COMMAND_BUILTIN 0x0800 /* command executed by `command' builtin */
#define CMD_COPROC_SUBSHELL 0x1000
#defien CMD_LASTPIPE 0x2000
/* What a command looks like. */
typedef struct command {
+2
View File
@@ -415,6 +415,8 @@
#undef HAVE_STRUCT_TIMEZONE
#undef WEXITSTATUS_OFFSET
/* Characteristics of definitions in the system header files. */
#undef HAVE_GETPW_DECLS
+3
View File
@@ -876,6 +876,9 @@
/* Define if you have the wctype function. */
#undef HAVE_WCTYPE
/* Define if you have the wcswidth function. */
#undef HAVE_WCSWIDTH
/* Define if you have the wcwidth function. */
#undef HAVE_WCWIDTH
Vendored
+100 -1
View File
@@ -1,5 +1,5 @@
#! /bin/sh
# From configure.in for Bash 4.2, version 4.031.
# From configure.in for Bash 4.2, version 4.032.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.63 for bash 4.2-devel.
#
@@ -28279,6 +28279,105 @@ _ACEOF
fi
{ $as_echo "$as_me:$LINENO: checking for offset of exit status in return status from wait" >&5
$as_echo_n "checking for offset of exit status in return status from wait... " >&6; }
if test "${bash_cv_wexitstatus_offset+set}" = set; then
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then
{ $as_echo "$as_me:$LINENO: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&5
$as_echo "$as_me: WARNING: cannot check WEXITSTATUS offset if cross compiling -- defaulting to 0" >&2;}
bash_cv_wexitstatus_offset=0
else
cat >conftest.$ac_ext <<_ACEOF
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
main(c, v)
int c;
char **v;
{
pid_t pid, p;
int s, i, n;
s = 0;
pid = fork();
if (pid == 0)
exit (42);
/* wait for the process */
p = wait(&s);
if (p != pid)
exit (255);
/* crack s */
for (i = 0; i < (sizeof(s) - 8); i++)
{
n = (s >> i) & 0xff;
if (n == 42)
exit (i);
}
exit (254);
}
_ACEOF
rm -f conftest$ac_exeext
if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>&5
ac_status=$?
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && { ac_try='./conftest$ac_exeext'
{ (case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_try") 2>&5
ac_status=$?
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
bash_cv_wexitstatus_offset=0
else
$as_echo "$as_me: program exited with status $ac_status" >&5
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
( exit $ac_status )
bash_cv_wexitstatus_offset=$?
fi
rm -rf conftest.dSYM
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
fi
if test "$bash_cv_wexitstatus_offset" -gt 32 ; then
{ $as_echo "$as_me:$LINENO: WARNING: bad exit status from test program -- defaulting to 0" >&5
$as_echo "$as_me: WARNING: bad exit status from test program -- defaulting to 0" >&2;}
bash_cv_wexitstatus_offset=0
fi
{ $as_echo "$as_me:$LINENO: result: $bash_cv_wexitstatus_offset" >&5
$as_echo "$bash_cv_wexitstatus_offset" >&6; }
cat >>confdefs.h <<_ACEOF
#define WEXITSTATUS_OFFSET $bash_cv_wexitstatus_offset
_ACEOF
{ $as_echo "$as_me:$LINENO: checking for the existence of strsignal" >&5
$as_echo_n "checking for the existence of strsignal... " >&6; }
if test "${bash_cv_have_strsignal+set}" = set; then
+3 -1
View File
@@ -21,7 +21,7 @@ dnl Process this file with autoconf to produce a configure script.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AC_REVISION([for Bash 4.2, version 4.031])dnl
AC_REVISION([for Bash 4.2, version 4.032])dnl
define(bashvers, 4.2)
define(relstatus, devel)
@@ -918,6 +918,8 @@ AC_STRUCT_TM
AC_STRUCT_TIMEZONE
BASH_STRUCT_TIMEZONE
BASH_STRUCT_WEXITSTATUS_OFFSET
dnl presence and behavior of C library functions
BASH_FUNC_STRSIGNAL
BASH_FUNC_OPENDIR_CHECK
+4 -4
View File
@@ -1,5 +1,5 @@
dnl
dnl Configure script for bash-4.1
dnl Configure script for bash-4.2
dnl
dnl report bugs to chet@po.cwru.edu
dnl
@@ -21,10 +21,10 @@ dnl Process this file with autoconf to produce a configure script.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AC_REVISION([for Bash 4.1, version 4.023])dnl
AC_REVISION([for Bash 4.2, version 4.031])dnl
define(bashvers, 4.1)
define(relstatus, maint)
define(bashvers, 4.2)
define(relstatus, devel)
AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
+1687 -1673
View File
File diff suppressed because it is too large Load Diff
+35 -12
View File
@@ -5,12 +5,12 @@
.\" Case Western Reserve University
.\" chet@po.cwru.edu
.\"
.\" Last Change: Sat Jun 12 15:34:58 EDT 2010
.\" Last Change: Fri Jul 2 17:31:49 EDT 2010
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
.TH BASH 1 "2010 June 12" "GNU Bash-4.1"
.TH BASH 1 "2010 July 2" "GNU Bash-4.1"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -554,6 +554,8 @@ reserved word precedes a pipeline, the elapsed as well as user and
system time consumed by its execution are reported when the pipeline
terminates.
The \fB\-p\fP option changes the output format to that specified by POSIX.
When the shell is in \fIposix mode\fP, it does not recognize
\fBtime\fP as a reserved word if the next token begins with a `-'.
The
.SM
.B TIMEFORMAT
@@ -1429,14 +1431,15 @@ The command argument to the \fB\-c\fP invocation option.
.TP
.B BASH_LINENO
An array variable whose members are the line numbers in source files
corresponding to each member of
where each corresponding member of
.SM
.BR FUNCNAME .
.B FUNCNAME
was invoked.
\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP is the line number in the source
file where \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP was called
file (\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP) where
\fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP was called
(or \fB${BASH_LINENO[\fP\fI$i-1\fP\fB]}\fP if referenced within another
shell function).
The corresponding source file name is \fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP.
Use
.SM
.B LINENO
@@ -1452,11 +1455,15 @@ string matching the \fIn\fPth parenthesized subexpression.
This variable is read-only.
.TP
.B BASH_SOURCE
An array variable whose members are the source filenames corresponding
to the elements in the
An array variable whose members are the source filenames
where the corresponding shell function names in the
.SM
.B FUNCNAME
array variable.
array variable are defined.
The shell function
\fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP is defined in the file
\fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP and called from
\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP.
.TP
.B BASH_SUBSHELL
Incremented by one each time a subshell or subshell environment is spawned.
@@ -1593,7 +1600,7 @@ An array variable containing the names of all shell functions
currently in the execution call stack.
The element with index 0 is the name of any currently-executing
shell function.
The bottom-most element is
The bottom-most element (the one with the highest index) is
.if t \f(CW"main"\fP.
.if n "main".
This variable exists only when a shell function is executing.
@@ -1606,6 +1613,16 @@ If
.B FUNCNAME
is unset, it loses its special properties, even if it is
subsequently reset.
.if t .sp 0.5
.if n .sp 1
This variable can be used with \fBBASH_LINENO\fP and \fBBASH_SOURCE\fP.
Each element of \fBFUNCNAME\fP has corresponding elements in
\fBBASH_LINENO\fP and \fBBASH_SOURCE\fP to describe the call stack.
For instance, \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP was called from the file
\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP at line number
\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP.
The \fBcaller\fP builtin displays the current call stack using this
information.
.TP
.B GROUPS
An array variable containing the list of groups of which the current
@@ -3851,8 +3868,10 @@ in multiple identically-named entries in the environment passed to the
shell's children.
Care should be taken in cases where this may cause a problem.
.PP
Functions may be recursive. No limit is imposed on the number
of recursive calls.
Functions may be recursive.
The \fBFUNCNEST\fP variable may be used to limit the depth of the
function call stack and restrict the number of function invocations.
By default, no limit is imposed on the number of recursive calls.
.SH "ARITHMETIC EVALUATION"
The shell allows arithmetic expressions to be evaluated, under
certain circumstances (see the \fBlet\fP and \fBdeclare\fP builtin
@@ -9048,6 +9067,10 @@ line to be ignored in an interactive shell (see
.B COMMENTS
above). This option is enabled by default.
.TP 8
.B lastpipe
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.
.TP 8
.B lithist
If set, and the
.B cmdhist
+32 -10
View File
@@ -5,12 +5,12 @@
.\" Case Western Reserve University
.\" chet@po.cwru.edu
.\"
.\" Last Change: Sat Jun 12 15:34:58 EDT 2010
.\" Last Change: Fri Jul 2 17:31:49 EDT 2010
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
.TH BASH 1 "2010 June 12" "GNU Bash-4.1"
.TH BASH 1 "2010 July 2" "GNU Bash-4.1"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -554,6 +554,8 @@ reserved word precedes a pipeline, the elapsed as well as user and
system time consumed by its execution are reported when the pipeline
terminates.
The \fB\-p\fP option changes the output format to that specified by POSIX.
When the shell is in \fIposix mode\fP, it does not recognize
\fBtime\fP as a reserved word if the next token begins with a `-'.
The
.SM
.B TIMEFORMAT
@@ -1429,14 +1431,15 @@ The command argument to the \fB\-c\fP invocation option.
.TP
.B BASH_LINENO
An array variable whose members are the line numbers in source files
corresponding to each member of
where each corresponding member of
.SM
.BR FUNCNAME .
.B FUNCNAME
was invoked.
\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP is the line number in the source
file where \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP was called
file (\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP) where
\fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP was called
(or \fB${BASH_LINENO[\fP\fI$i-1\fP\fB]}\fP if referenced within another
shell function).
The corresponding source file name is \fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP.
Use
.SM
.B LINENO
@@ -1452,11 +1455,15 @@ string matching the \fIn\fPth parenthesized subexpression.
This variable is read-only.
.TP
.B BASH_SOURCE
An array variable whose members are the source filenames corresponding
to the elements in the
An array variable whose members are the source filenames
where the corresponding shell function names in the
.SM
.B FUNCNAME
array variable.
array variable are defined.
The shell function
\fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP is defined in the file
\fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP and called from
\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP.
.TP
.B BASH_SUBSHELL
Incremented by one each time a subshell or subshell environment is spawned.
@@ -1593,7 +1600,7 @@ An array variable containing the names of all shell functions
currently in the execution call stack.
The element with index 0 is the name of any currently-executing
shell function.
The bottom-most element is
The bottom-most element (the one with the highest index) is
.if t \f(CW"main"\fP.
.if n "main".
This variable exists only when a shell function is executing.
@@ -1606,6 +1613,16 @@ If
.B FUNCNAME
is unset, it loses its special properties, even if it is
subsequently reset.
.if t .sp 0.5
.if n .sp 1
This variable can be used with \fBBASH_LINENO\fP and \fBBASH_SOURCE\fP.
Each element of \fBFUNCNAME\fP has corresponding elements in
\fBBASH_LINENO\fP and \fBBASH_SOURCE\fP to describe the call stack.
For instance, \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP was called from the file
\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP at line number
\fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP.
The \fBcaller\fP builtin displays the current call stack using this
information.
.TP
.B GROUPS
An array variable containing the list of groups of which the current
@@ -8897,6 +8914,7 @@ when in posix mode, treats a single quote in a double-quoted
parameter expansion as a special character. The single quotes must match
(an even number) 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.
.TP 8
.B dirspell
If set,
@@ -9047,6 +9065,10 @@ line to be ignored in an interactive shell (see
.B COMMENTS
above). This option is enabled by default.
.TP 8
.B lastpipe
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.
.TP 8
.B lithist
If set, and the
.B cmdhist
+28 -7
View File
@@ -3,7 +3,7 @@
</HEAD>
<BODY><TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2010 May 30<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2010 June 12<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<BR><A HREF="#index">Index</A>
@@ -3007,9 +3007,14 @@ An indexed array is created automatically if any variable is assigned to
using the syntax <I>name</I>[<I>subscript</I>]=<I>value</I>. The
<I>subscript</I>
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
is treated as an arithmetic expression that must evaluate to a number.
If
<I>subscript</I>
evaluates to a number less than zero, it is used as
an offset from one greater than the array's maximum index (so a subcript
of -1 refers to the last element of the array).
To explicitly declare an indexed array, use
<B>declare -a </B><I>name</I>
(see
@@ -3491,9 +3496,13 @@ If <I>length</I> is omitted, expands to the substring of
</FONT>
below).
<I>length</I> must evaluate to a number greater than or equal to zero.
If <I>offset</I> evaluates to a number less than zero, the value
is used as an offset from the end of the value of <I>parameter</I>.
If <I>length</I> evaluates to a number less than zero, and <I>parameter</I>
is not <B>@</B> and not an indexed or associative array, it is interpreted
as an offset from the end of the value of <I>parameter</I> rather than
a number of characters, and the expansion is the characters between the
two offsets.
If <I>parameter</I> is <B>@</B>, the result is <I>length</I> positional
parameters beginning at <I>offset</I>.
If <I>parameter</I> is an indexed array name subscripted by @ or *,
@@ -11373,6 +11382,18 @@ If set,
changes its behavior to that of version 4.0 with respect to locale-specific
string comparison when using the conditional command's &lt; and &gt; operators
and the effect of interrupting a command list.
<DT><B>compat41</B>
<DD>
@item compat41
If set,
<B>bash</B>,
when in posix mode, treats a single quote in a double-quoted
parameter expansion as a special character. The single quotes must match
(an even number) 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.
<DT><B>dirspell</B>
<DD>
@@ -12608,7 +12629,7 @@ There may be only one active coprocess at a time.
<HR>
<TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>GNU Bash-4.1<TH ALIGN=CENTER width=33%>2010 May 30<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>GNU Bash-4.1<TH ALIGN=CENTER width=33%>2010 June 12<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<HR>
@@ -12714,6 +12735,6 @@ There may be only one active coprocess at a time.
</DL>
<HR>
This document was created by man2html from bash.1.<BR>
Time: 07 June 2010 16:19:05 EDT
Time: 29 June 2010 14:02:49 EDT
</BODY>
</HTML>
BIN
View File
Binary file not shown.
+2923 -2888
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+23 -8
View File
@@ -1,6 +1,6 @@
<HTML>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- Created on June, 7 2010 by texi2html 1.64 -->
<!-- Created on June, 29 2010 by texi2html 1.64 -->
<!--
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
Karl Berry <karl@freefriends.org>
@@ -33,10 +33,10 @@ Send bugs and suggestions to <texi2html@mathematik.uni-kl.de>
<H1>Bash Reference Manual</H1></P><P>
This text is a brief description of the features that are present in
the Bash shell (version 4.1, 30 May 2010).
the Bash shell (version 4.1, 12 June 2010).
</P><P>
This is Edition 4.1, last updated 30 May 2010,
This is Edition 4.1, last updated 12 June 2010,
of <CITE>The GNU Bash Reference Manual</CITE>,
for <CODE>Bash</CODE>, Version 4.1.
</P><P>
@@ -2332,9 +2332,13 @@ If <VAR>length</VAR> is omitted, expands to the substring of
This is referred to as Substring Expansion.
<P>
<VAR>length</VAR> must evaluate to a number greater than or equal to zero.
If <VAR>offset</VAR> evaluates to a number less than zero, the value
is used as an offset from the end of the value of <VAR>parameter</VAR>.
If <VAR>length</VAR> evaluates to a number less than zero, and <VAR>parameter</VAR>
is not <SAMP>`@'</SAMP> and not an indexed or associative array, it is interpreted
as an offset from the end of the value of <VAR>parameter</VAR> rather than
a number of characters, and the expansion is the characters between the
two offsets.
If <VAR>parameter</VAR> is <SAMP>`@'</SAMP>, the result is <VAR>length</VAR> positional
parameters beginning at <VAR>offset</VAR>.
If <VAR>parameter</VAR> is an indexed array name subscripted
@@ -5763,6 +5767,14 @@ string comparison when using the conditional command's &#60; and &#62; operators
and the effect of interrupting a command list.
<P>
<DT><CODE>compat41</CODE>
<DD>If set, Bash, when in posix mode, treats a single quote in a double-quoted
parameter expansion as a special character. The single quotes must match
(an even number) 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.
<P>
<DT><CODE>dirspell</CODE>
<DD>If set, Bash
attempts spelling correction on directory names during word completion
@@ -8162,8 +8174,11 @@ using the syntax
</pre></td></tr></table></P><P>
The <VAR>subscript</VAR>
is treated as an arithmetic expression that must evaluate to a number
greater than or equal to zero. To explicitly declare an array, use
is treated as an arithmetic expression that must evaluate to a number.
If <VAR>subscript</VAR> evaluates to a number less than zero, it is used as
an offset from one greater than the array's maximum index (so a subcript
of -1 refers to the last element of the array).
To explicitly declare an array, use
<TABLE><tr><td>&nbsp;</td><td class=example><pre>declare -a <VAR>name</VAR>
</pre></td></tr></table>The syntax
<TABLE><tr><td>&nbsp;</td><td class=example><pre>declare -a <VAR>name</VAR>[<VAR>subscript</VAR>]
@@ -16312,7 +16327,7 @@ to permit their use in free software.
<TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="bashref.html#SEC_About"> ? </A>]</TD>
</TR></TABLE>
<H1>About this document</H1>
This document was generated by <I>Chet Ramey</I> on <I>June, 7 2010</I>
This document was generated by <I>Chet Ramey</I> on <I>June, 29 2010</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
<P></P>
@@ -16474,7 +16489,7 @@ the following structure:
<BR>
<FONT SIZE="-1">
This document was generated
by <I>Chet Ramey</I> on <I>June, 7 2010</I>
by <I>Chet Ramey</I> on <I>June, 29 2010</I>
using <A HREF="http://www.mathematik.uni-kl.de/~obachman/Texi2html
"><I>texi2html</I></A>
+125 -112
View File
@@ -1,10 +1,10 @@
This is bashref.info, produced by makeinfo version 4.13 from
/usr/homes/chet/src/bash/src/doc/bashref.texi.
/Users/chet/src/bash/src/doc/bashref.texi.
This text is a brief description of the features that are present in
the Bash shell (version 4.1, 30 May 2010).
the Bash shell (version 4.1, 12 June 2010).
This is Edition 4.1, last updated 30 May 2010, of `The GNU Bash
This is Edition 4.1, last updated 12 June 2010, of `The GNU Bash
Reference Manual', for `Bash', Version 4.1.
Copyright (C) 1988-2010 Free Software Foundation, Inc.
@@ -38,9 +38,9 @@ Bash Features
*************
This text is a brief description of the features that are present in
the Bash shell (version 4.1, 30 May 2010).
the Bash shell (version 4.1, 12 June 2010).
This is Edition 4.1, last updated 30 May 2010, of `The GNU Bash
This is Edition 4.1, last updated 12 June 2010, of `The GNU Bash
Reference Manual', for `Bash', Version 4.1.
Bash contains features that appear in other popular shells, and some
@@ -1531,16 +1531,19 @@ omitted, the operator tests only for existence.
OFFSET. LENGTH and OFFSET are arithmetic expressions (*note Shell
Arithmetic::). This is referred to as Substring Expansion.
LENGTH must evaluate to a number greater than or equal to zero.
If OFFSET evaluates to a number less than zero, the value is used
as an offset from the end of the value of PARAMETER. If PARAMETER
is `@', the result is LENGTH positional parameters beginning at
OFFSET. If PARAMETER is an indexed array name subscripted by `@'
or `*', the result is the LENGTH members of the array beginning
with `${PARAMETER[OFFSET]}'. A negative OFFSET is taken relative
to one greater than the maximum index of the specified array.
Substring expansion applied to an associative array produces
undefined results.
as an offset from the end of the value of PARAMETER. If LENGTH
evaluates to a number less than zero, and PARAMETER is not `@' and
not an indexed or associative array, it is interpreted as an
offset from the end of the value of PARAMETER rather than a number
of characters, and the expansion is the characters between the two
offsets. If PARAMETER is `@', the result is LENGTH positional
parameters beginning at OFFSET. If PARAMETER is an indexed array
name subscripted by `@' or `*', the result is the LENGTH members
of the array beginning with `${PARAMETER[OFFSET]}'. A negative
OFFSET is taken relative to one greater than the maximum index of
the specified array. Substring expansion applied to an
associative array produces undefined results.
Note that a negative offset must be separated from the colon by at
least one space to avoid being confused with the `:-' expansion.
@@ -3914,6 +3917,14 @@ This builtin allows you to change additional shell optional behavior.
conditional command's < and > operators and the effect of
interrupting a command list.
`compat41'
If set, Bash, when in posix mode, treats a single quote in a
double-quoted parameter expansion as a special character.
The single quotes must match (an even number) 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.
`dirspell'
If set, Bash attempts spelling correction on directory names
during word completion if the directory name initially
@@ -5488,8 +5499,10 @@ assigned to using the syntax
name[SUBSCRIPT]=VALUE
The SUBSCRIPT is treated as an arithmetic expression that must evaluate
to a number greater than or equal to zero. To explicitly declare an
array, use
to a number. If SUBSCRIPT evaluates to a number less than zero, it is
used as an offset from one greater than the array's maximum index (so a
subcript of -1 refers to the last element of the array). To explicitly
declare an array, use
declare -a NAME
The syntax
declare -a NAME[SUBSCRIPT]
@@ -10416,7 +10429,7 @@ D.5 Concept Index

Tag Table:
Node: Top1340
Node: Top1338
Node: Introduction3169
Node: What is Bash?3397
Node: What is a shell?4510
@@ -10449,100 +10462,100 @@ Node: Shell Expansions53319
Node: Brace Expansion55244
Node: Tilde Expansion57999
Node: Shell Parameter Expansion60350
Node: Command Substitution69251
Node: Arithmetic Expansion70584
Node: Process Substitution71434
Node: Word Splitting72484
Node: Filename Expansion74107
Node: Pattern Matching76246
Node: Quote Removal79885
Node: Redirections80180
Node: Executing Commands88705
Node: Simple Command Expansion89375
Node: Command Search and Execution91305
Node: Command Execution Environment93642
Node: Environment96628
Node: Exit Status98288
Node: Signals99909
Node: Shell Scripts101877
Node: Shell Builtin Commands104395
Node: Bourne Shell Builtins106423
Node: Bash Builtins124101
Node: Modifying Shell Behavior150306
Node: The Set Builtin150651
Node: The Shopt Builtin160175
Node: Special Builtins171509
Node: Shell Variables172488
Node: Bourne Shell Variables172928
Node: Bash Variables174909
Node: Bash Features199247
Node: Invoking Bash200130
Node: Bash Startup Files205894
Node: Interactive Shells210906
Node: What is an Interactive Shell?211316
Node: Is this Shell Interactive?211965
Node: Interactive Shell Behavior212780
Node: Bash Conditional Expressions216060
Node: Shell Arithmetic219808
Node: Aliases222567
Node: Arrays225139
Node: The Directory Stack229097
Node: Directory Stack Builtins229811
Node: Printing a Prompt232703
Node: The Restricted Shell235455
Node: Bash POSIX Mode237287
Node: Job Control246113
Node: Job Control Basics246573
Node: Job Control Builtins251290
Node: Job Control Variables255654
Node: Command Line Editing256812
Node: Introduction and Notation258379
Node: Readline Interaction260001
Node: Readline Bare Essentials261192
Node: Readline Movement Commands262981
Node: Readline Killing Commands263946
Node: Readline Arguments265866
Node: Searching266910
Node: Readline Init File269096
Node: Readline Init File Syntax270243
Node: Conditional Init Constructs285347
Node: Sample Init File287880
Node: Bindable Readline Commands290997
Node: Commands For Moving292204
Node: Commands For History293348
Node: Commands For Text296503
Node: Commands For Killing299176
Node: Numeric Arguments301627
Node: Commands For Completion302766
Node: Keyboard Macros306958
Node: Miscellaneous Commands307529
Node: Readline vi Mode313335
Node: Programmable Completion314242
Node: Programmable Completion Builtins321452
Node: Using History Interactively330588
Node: Bash History Facilities331272
Node: Bash History Builtins334186
Node: History Interaction338043
Node: Event Designators340748
Node: Word Designators341763
Node: Modifiers343402
Node: Installing Bash344806
Node: Basic Installation345943
Node: Compilers and Options348635
Node: Compiling For Multiple Architectures349376
Node: Installation Names351040
Node: Specifying the System Type351858
Node: Sharing Defaults352574
Node: Operation Controls353247
Node: Optional Features354205
Node: Reporting Bugs363764
Node: Major Differences From The Bourne Shell364965
Node: GNU Free Documentation License381652
Node: Indexes406848
Node: Builtin Index407302
Node: Reserved Word Index414129
Node: Variable Index416577
Node: Function Index429531
Node: Concept Index436540
Node: Command Substitution69485
Node: Arithmetic Expansion70818
Node: Process Substitution71668
Node: Word Splitting72718
Node: Filename Expansion74341
Node: Pattern Matching76480
Node: Quote Removal80119
Node: Redirections80414
Node: Executing Commands88939
Node: Simple Command Expansion89609
Node: Command Search and Execution91539
Node: Command Execution Environment93876
Node: Environment96862
Node: Exit Status98522
Node: Signals100143
Node: Shell Scripts102111
Node: Shell Builtin Commands104629
Node: Bourne Shell Builtins106657
Node: Bash Builtins124335
Node: Modifying Shell Behavior150540
Node: The Set Builtin150885
Node: The Shopt Builtin160409
Node: Special Builtins172168
Node: Shell Variables173147
Node: Bourne Shell Variables173587
Node: Bash Variables175568
Node: Bash Features199906
Node: Invoking Bash200789
Node: Bash Startup Files206553
Node: Interactive Shells211565
Node: What is an Interactive Shell?211975
Node: Is this Shell Interactive?212624
Node: Interactive Shell Behavior213439
Node: Bash Conditional Expressions216719
Node: Shell Arithmetic220467
Node: Aliases223226
Node: Arrays225798
Node: The Directory Stack229913
Node: Directory Stack Builtins230627
Node: Printing a Prompt233519
Node: The Restricted Shell236271
Node: Bash POSIX Mode238103
Node: Job Control246929
Node: Job Control Basics247389
Node: Job Control Builtins252106
Node: Job Control Variables256470
Node: Command Line Editing257628
Node: Introduction and Notation259195
Node: Readline Interaction260817
Node: Readline Bare Essentials262008
Node: Readline Movement Commands263797
Node: Readline Killing Commands264762
Node: Readline Arguments266682
Node: Searching267726
Node: Readline Init File269912
Node: Readline Init File Syntax271059
Node: Conditional Init Constructs286163
Node: Sample Init File288696
Node: Bindable Readline Commands291813
Node: Commands For Moving293020
Node: Commands For History294164
Node: Commands For Text297319
Node: Commands For Killing299992
Node: Numeric Arguments302443
Node: Commands For Completion303582
Node: Keyboard Macros307774
Node: Miscellaneous Commands308345
Node: Readline vi Mode314151
Node: Programmable Completion315058
Node: Programmable Completion Builtins322268
Node: Using History Interactively331404
Node: Bash History Facilities332088
Node: Bash History Builtins335002
Node: History Interaction338859
Node: Event Designators341564
Node: Word Designators342579
Node: Modifiers344218
Node: Installing Bash345622
Node: Basic Installation346759
Node: Compilers and Options349451
Node: Compiling For Multiple Architectures350192
Node: Installation Names351856
Node: Specifying the System Type352674
Node: Sharing Defaults353390
Node: Operation Controls354063
Node: Optional Features355021
Node: Reporting Bugs364580
Node: Major Differences From The Bourne Shell365781
Node: GNU Free Documentation License382468
Node: Indexes407664
Node: Builtin Index408118
Node: Reserved Word Index414945
Node: Variable Index417393
Node: Function Index430347
Node: Concept Index437356

End Tag Table
+18 -18
View File
@@ -1,6 +1,6 @@
This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 7 JUN 2010 16:19
**/usr/homes/chet/src/bash/src/doc/bashref.texi
(/usr/homes/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
This is TeX, Version 3.141592 (Web2C 7.5.4) (format=tex 2008.12.11) 29 JUN 2010 14:02
**/Users/chet/src/bash/src/doc/bashref.texi
(/Users/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
Loading texinfo [version 2009-01-18.17]:
\bindingoffset=\dimen16
\normaloffset=\dimen17
@@ -232,7 +232,7 @@ arallel -k traceroute[]
[15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29]
[30] [31] [32] [33] [34] Chapter 4 [35] [36] [37] [38] [39] [40] [41] [42]
[43]
Underfull \hbox (badness 5231) in paragraph at lines 3399--3412
Underfull \hbox (badness 5231) in paragraph at lines 3403--3416
@texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr
m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and
@@ -245,7 +245,7 @@ m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and
.etc.
[44] [45] [46] [47] [48] [49]
Overfull \hbox (172.34125pt too wide) in paragraph at lines 3856--3856
Overfull \hbox (172.34125pt too wide) in paragraph at lines 3860--3860
[]@texttt read [-ers] [-a @textttsl aname@texttt ] [-d @textttsl de-lim@texttt
] [-i @textttsl text@texttt ] [-n @textttsl nchars@texttt ] [-N @textttsl ncha
rs@texttt ] [-p @textttsl prompt@texttt ] [-t @textttsl time-
@@ -260,7 +260,7 @@ rs@texttt ] [-p @textttsl prompt@texttt ] [-t @textttsl time-
[50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] Chapter 5 [62]
[63] [64] [65] [66] [67] [68] [69] [70] [71] Chapter 6 [72]
Overfull \hbox (51.96864pt too wide) in paragraph at lines 5449--5449
Overfull \hbox (51.96864pt too wide) in paragraph at lines 5460--5460
[]@texttt bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@t
exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
@@ -273,7 +273,7 @@ exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
.etc.
Overfull \hbox (76.23077pt too wide) in paragraph at lines 5450--5450
Overfull \hbox (76.23077pt too wide) in paragraph at lines 5461--5461
[]@texttt bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@texttt
] [-O @textttsl shopt_option@texttt ] -c @textttsl string @texttt [@textttsl ar
-
@@ -287,7 +287,7 @@ Overfull \hbox (76.23077pt too wide) in paragraph at lines 5450--5450
.etc.
Overfull \hbox (34.72258pt too wide) in paragraph at lines 5451--5451
Overfull \hbox (34.72258pt too wide) in paragraph at lines 5462--5462
[]@texttt bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@text
tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
@@ -300,7 +300,7 @@ tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
.etc.
[73] [74]
Underfull \hbox (badness 2245) in paragraph at lines 5624--5626
Underfull \hbox (badness 2245) in paragraph at lines 5635--5637
[]@textrm When a lo-gin shell ex-its, Bash reads and ex-e-cutes com-mands from
the file
@@ -313,7 +313,7 @@ the file
.etc.
[75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88]
Underfull \hbox (badness 2521) in paragraph at lines 6793--6796
Underfull \hbox (badness 2521) in paragraph at lines 6807--6810
@textrm `@texttt --enable-strict-posix-default[]@textrm '[] to @texttt configur
e[] @textrm when build-ing (see Sec-tion 10.8
@@ -326,8 +326,8 @@ e[] @textrm when build-ing (see Sec-tion 10.8
.etc.
Chapter 7 [89] [90] [91] [92] [93]
(/usr/homes/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 [94]
[95] [96] [97] [98] [99] [100]
(/Users/chet/src/bash/src/lib/readline/doc/rluser.texi Chapter 8 [94] [95]
[96] [97] [98] [99] [100]
Underfull \hbox (badness 5231) in paragraph at lines 551--567
@texttt emacs-meta[]@textrm , @texttt emacs-ctlx[]@textrm , @texttt vi[]@textr
m , @texttt vi-move[]@textrm , @texttt vi-command[]@textrm , and
@@ -379,9 +379,9 @@ Underfull \hbox (badness 2753) in paragraph at lines 1919--1922
.@texttt o
.etc.
[121]) (/usr/homes/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9
[121]) (/Users/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9
[122] [123] [124] [125] [126]) Chapter 10 [127] [128] [129] [130] [131]
Underfull \hbox (badness 2772) in paragraph at lines 7394--7398
Underfull \hbox (badness 2772) in paragraph at lines 7408--7412
[]@textrm Enable sup-port for large files (@texttt http://www.sas.com/standard
s/large_
@@ -400,11 +400,11 @@ s/large_
[159] [160] )
Here is how much of TeX's memory you used:
2081 strings out of 97980
28590 string characters out of 1221004
65603 words of memory out of 1500000
28558 string characters out of 1221004
65605 words of memory out of 1500000
2897 multiletter control sequences out of 10000+50000
32127 words of font info for 112 fonts, out of 1200000 for 2000
51 hyphenation exceptions out of 8191
16i,6n,14p,319b,702s stack positions out of 5000i,500n,6000p,200000b,5000s
16i,6n,14p,315b,702s stack positions out of 5000i,500n,6000p,200000b,5000s
Output written on bashref.dvi (166 pages, 676044 bytes).
Output written on bashref.dvi (166 pages, 677000 bytes).
BIN
View File
Binary file not shown.
+606 -592
View File
File diff suppressed because it is too large Load Diff
+34 -9
View File
@@ -648,6 +648,9 @@ The statistics currently consist of elapsed (wall-clock) time and
user and system time consumed by the command's execution.
The @option{-p} option changes the output format to that specified
by @sc{posix}.
When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}),
it does not recognize @code{time} as a reserved word if the next
token begins with a @samp{-}.
The @env{TIMEFORMAT} variable may be set to a format string that
specifies how the timing information should be displayed.
@xref{Bash Variables}, for a description of the available formats.
@@ -1325,8 +1328,10 @@ in multiple identically-named entries in the environment passed to the
shell's children.
Care should be taken in cases where this may cause a problem.
Functions may be recursive. No limit is placed on the number of
recursive calls.
Functions may be recursive.
The @code{FUNCNEST} variable may be used to limit the depth of the
function call stack and restrict the number of function invocations.
By default, no limit is placed on the number of recursive calls.
@node Shell Parameters
@section Shell Parameters
@@ -4632,6 +4637,10 @@ to cause that word and all remaining characters on that
line to be ignored in an interactive shell.
This option is enabled by default.
@item lastpipe
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.
@item lithist
If enabled, and the @code{cmdhist}
option is enabled, multi-line commands are saved to the history with
@@ -4894,11 +4903,11 @@ The command argument to the @option{-c} invocation option.
@item BASH_LINENO
An array variable whose members are the line numbers in source files
corresponding to each member of @var{FUNCNAME}.
@code{$@{BASH_LINENO[$i]@}} is the line number in the source file where
where each corresponding member of @var{FUNCNAME} was invoked.
@code{$@{BASH_LINENO[$i]@}} is the line number in the source file
(@code{$@{BASH_SOURCE[$i+1]@}}) where
@code{$@{FUNCNAME[$i]@}} was called (or @code{$@{BASH_LINENO[$i-1]@}} if
referenced within another shell function).
The corresponding source file name is @code{$@{BASH_SOURCE[$i]@}}.
referenced within another shell function).
Use @code{LINENO} to obtain the current line number.
@item BASH_REMATCH
@@ -4912,8 +4921,11 @@ string matching the @var{n}th parenthesized subexpression.
This variable is read-only.
@item BASH_SOURCE
An array variable whose members are the source filenames corresponding
to the elements in the @code{FUNCNAME} array variable.
An array variable whose members are the source filenames where the
corresponding shell function names in the @code{FUNCNAME} array
variable are defined.
The shell function @code{$@{FUNCNAME[$i]@}} is defined in the file
@code{$@{BASH_SOURCE[$i]@}} and called from @code{$@{BASH_SOURCE[$i+1]@}}
@item BASH_SUBSHELL
Incremented by one each time a subshell or subshell environment is spawned.
@@ -5070,12 +5082,21 @@ An array variable containing the names of all shell functions
currently in the execution call stack.
The element with index 0 is the name of any currently-executing
shell function.
The bottom-most element is @code{"main"}.
The bottom-most element (the one with the highest index)
is @code{"main"}.
This variable exists only when a shell function is executing.
Assignments to @env{FUNCNAME} have no effect and return an error status.
If @env{FUNCNAME} is unset, it loses its special properties, even if
it is subsequently reset.
This variable can be used with @code{BASH_LINENO} and @code{BASH_SOURCE}.
Each element of @code{FUNCNAME} has corresponding elements in
@code{BASH_LINENO} and @code{BASH_SOURCE} to describe the call stack.
For instance, @code{$@{FUNCNAME[$i]@}} was called from the file
@code{$@{BASH_SOURCE[$i+1]@}} at line number @code{$@{BASH_LINENO[$i]@}}.
The @code{caller} builtin displays the current call stack using this
information.
@item FUNCNEST
If set to a numeric value greater than 0, defines a maximum function
nesting level. Function invocations that exceed this nesting level
@@ -6658,6 +6679,10 @@ quote a closing brace or other special character, unless the operator is
one of those defined to perform pattern removal. In this case, they do
not have to appear as matched pairs.
@item
The parser does not recognize @code{time} as a reserved word if the next
token begins with a @samp{-}.
@item
If a @sc{posix} special builtin returns an error status, a
non-interactive shell exits. The fatal errors are those listed in
+31 -7
View File
@@ -648,6 +648,9 @@ The statistics currently consist of elapsed (wall-clock) time and
user and system time consumed by the command's execution.
The @option{-p} option changes the output format to that specified
by @sc{posix}.
When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}),
it does not recognize @code{time} as a reserved word if the next
token begins with a @samp{-}.
The @env{TIMEFORMAT} variable may be set to a format string that
specifies how the timing information should be displayed.
@xref{Bash Variables}, for a description of the available formats.
@@ -4514,6 +4517,7 @@ If set, Bash, when in posix mode, treats a single quote in a double-quoted
parameter expansion as a special character. The single quotes must match
(an even number) and the characters between the single quotes are considered
quoted. This is the behavior of @sc{posix} mode through version 4.1.
The default Bash behavior remains as in previous versions.
@item dirspell
If set, Bash
@@ -4631,6 +4635,10 @@ to cause that word and all remaining characters on that
line to be ignored in an interactive shell.
This option is enabled by default.
@item lastpipe
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.
@item lithist
If enabled, and the @code{cmdhist}
option is enabled, multi-line commands are saved to the history with
@@ -4893,11 +4901,11 @@ The command argument to the @option{-c} invocation option.
@item BASH_LINENO
An array variable whose members are the line numbers in source files
corresponding to each member of @var{FUNCNAME}.
@code{$@{BASH_LINENO[$i]@}} is the line number in the source file where
where each corresponding member of @var{FUNCNAME} was invoked.
@code{$@{BASH_LINENO[$i]@}} is the line number in the source file
(@code{$@{BASH_SOURCE[$i+1]@}}) where
@code{$@{FUNCNAME[$i]@}} was called (or @code{$@{BASH_LINENO[$i-1]@}} if
referenced within another shell function).
The corresponding source file name is @code{$@{BASH_SOURCE[$i]@}}.
referenced within another shell function).
Use @code{LINENO} to obtain the current line number.
@item BASH_REMATCH
@@ -4911,8 +4919,11 @@ string matching the @var{n}th parenthesized subexpression.
This variable is read-only.
@item BASH_SOURCE
An array variable whose members are the source filenames corresponding
to the elements in the @code{FUNCNAME} array variable.
An array variable whose members are the source filenames where the
corresponding shell function names in the @code{FUNCNAME} array
variable are defined.
The shell function @code{$@{FUNCNAME[$i]@}} is defined in the file
@code{$@{BASH_SOURCE[$i]@}} and called from @code{$@{BASH_SOURCE[$i+1]@}}
@item BASH_SUBSHELL
Incremented by one each time a subshell or subshell environment is spawned.
@@ -5069,12 +5080,21 @@ An array variable containing the names of all shell functions
currently in the execution call stack.
The element with index 0 is the name of any currently-executing
shell function.
The bottom-most element is @code{"main"}.
The bottom-most element (the one with the highest index)
is @code{"main"}.
This variable exists only when a shell function is executing.
Assignments to @env{FUNCNAME} have no effect and return an error status.
If @env{FUNCNAME} is unset, it loses its special properties, even if
it is subsequently reset.
This variable can be used with @code{BASH_LINENO} and @code{BASH_SOURCE}.
Each element of @code{FUNCNAME} has corresponding elements in
@code{BASH_LINENO} and @code{BASH_SOURCE} to describe the call stack.
For instance, @code{$@{FUNCNAME[$i]@}} was called from the file
@code{$@{BASH_SOURCE[$i+1]@}} at line number @code{$@{BASH_LINENO[$i]@}}.
The @code{caller} builtin displays the current call stack using this
information.
@item FUNCNEST
If set to a numeric value greater than 0, defines a maximum function
nesting level. Function invocations that exceed this nesting level
@@ -6657,6 +6677,10 @@ quote a closing brace or other special character, unless the operator is
one of those defined to perform pattern removal. In this case, they do
not have to appear as matched pairs.
@item
The parser does not recognize @code{time} as a reserved word if the next
token begins with a @samp{-}.
@item
If a @sc{posix} special builtin returns an error status, a
non-interactive shell exits. The fatal errors are those listed in
+8
View File
@@ -1237,6 +1237,14 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
with respect to locale-specific string comparison when
using the conditional command's < and > operators and
the effect of interrupting a command list.
ccoommppaatt4411
@item compat41 If set, bbaasshh, when in posix mode, treats
a single quote in a double-quoted parameter expansion as
a special character. The single quotes must match (an
even number) and the characters between the single
quotes are considered quoted. This is the behavior of
posix mode through version 4.1. The default bash behav-
ior remains as in previous versions.
ddiirrssppeellll
If set, bbaasshh attempts spelling correction on directory
names during word completion if the directory name ini-
+280 -271
View File
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.19.2
%%CreationDate: Mon Jun 7 16:18:58 2010
%%CreationDate: Tue Jun 29 14:02:44 2010
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
@@ -2149,543 +2149,552 @@ BP
(ersion 4.0 with respect to locale-speci\214c)-.15 F 1.692
(string comparison when using the conditional command')184 144 R 4.193
(s<a)-.55 G 1.693(nd > operators and the)-4.193 F(ef)184 156 Q
(fect of interrupting a command list.)-.25 E F1(dirspell)144 168 Q F0
.859(If set,)7.77 F F1(bash)3.359 E F0 .858
(fect of interrupting a command list.)-.25 E F1(compat41)144 168 Q F0
1.232(@item compat41 If set,)184 180 R F1(bash)3.732 E F0 3.732(,w)C
1.232(hen in posix mode, treats a single quote in a double-)-3.732 F
1.213(quoted parameter e)184 192 R 1.213
(xpansion as a special character)-.15 F 6.213(.T)-.55 G 1.214
(he single quotes must match \(an)-6.213 F -2.15 -.25(ev e)184 204 T
2.949(nn).25 G .448(umber\) and the characters between the single quote\
s are considered quoted.)-2.949 F(This)5.448 E .062(is the beha)184 216
R .062(vior of posix mode through v)-.2 F .062(ersion 4.1.)-.15 F .062
(The def)5.062 F .062(ault bash beha)-.1 F .063(vior remains as)-.2 F
(in pre)184 228 Q(vious v)-.25 E(ersions.)-.15 E F1(dirspell)144 240 Q
F0 .859(If set,)7.77 F F1(bash)3.359 E F0 .858
(attempts spelling correction on directory names during w)3.359 F .858
(ord completion if)-.1 F
(the directory name initially supplied does not e)184 180 Q(xist.)-.15 E
F1(dotglob)144 192 Q F0 .165(If set,)7.77 F F1(bash)2.665 E F0 .165
(the directory name initially supplied does not e)184 252 Q(xist.)-.15 E
F1(dotglob)144 264 Q F0 .165(If set,)7.77 F F1(bash)2.665 E F0 .165
(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i)
-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F
(xpansion.)-.15 E F1(execfail)144 204 Q F0 1.387
(xpansion.)-.15 E F1(execfail)144 276 Q F0 1.387
(If set, a non-interacti)7.79 F 1.687 -.15(ve s)-.25 H 1.386
(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15(xe)-.15 G
1.386(cute the \214le speci\214ed as an).15 F(ar)184 216 Q
1.386(cute the \214le speci\214ed as an).15 F(ar)184 288 Q
(gument to the)-.18 E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E
(An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15
E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 228 Q F0
.716(If set, aliases are e)184 240 R .717(xpanded as described abo)-.15
E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 300 Q F0
.716(If set, aliases are e)184 312 R .717(xpanded as described abo)-.15
F 1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E
/F3 9/Times-Roman@0 SF(.)A F0 .717(This option is enabled)5.217 F
(by def)184 252 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.)
.15 E F1(extdeb)144 264 Q(ug)-.2 E F0(If set, beha)184 276 Q
(by def)184 324 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.)
.15 E F1(extdeb)144 336 Q(ug)-.2 E F0(If set, beha)184 348 Q
(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184
288 Q F0(The)28.5 E F1<ad46>4.251 E F0 1.751(option to the)4.251 F F1
360 Q F0(The)28.5 E F1<ad46>4.251 E F0 1.751(option to the)4.251 F F1
(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751
(iltin displays the source \214le name and line).2 F
(number corresponding to each function name supplied as an ar)220 300 Q
(gument.)-.18 E F1(2.)184 312 Q F0 1.667(If the command run by the)28.5
(number corresponding to each function name supplied as an ar)220 372 Q
(gument.)-.18 E F1(2.)184 384 Q F0 1.667(If the command run by the)28.5
F F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F
1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 324
Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 336 Q F0 .841
1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 396
Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 408 Q F0 .841
(If the command run by the)28.5 F F1(DEB)3.341 E(UG)-.1 E F0 .841
(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15
(exe)220 348 S .488
(exe)220 420 S .488
(cuting in a subroutine \(a shell function or a shell script e).15 F
-.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1
(sour)220 360 Q(ce)-.18 E F0 -.2(bu)2.5 G(iltins\), a call to).2 E F1
-.18(re)2.5 G(tur).18 E(n)-.15 E F0(is simulated.)2.5 E F1(4.)184 372 Q
(sour)220 432 Q(ce)-.18 E F0 -.2(bu)2.5 G(iltins\), a call to).2 E F1
-.18(re)2.5 G(tur).18 E(n)-.15 E F0(is simulated.)2.5 E F1(4.)184 444 Q
F2 -.27(BA)28.5 G(SH_ARGC).27 E F0(and)3.154 E F2 -.27(BA)3.404 G
(SH_ARGV).27 E F0 .904(are updated as described in their descriptions)
3.154 F(abo)220 384 Q -.15(ve)-.15 G(.).15 E F1(5.)184 396 Q F0 1.359
3.154 F(abo)220 456 Q -.15(ve)-.15 G(.).15 E F1(5.)184 468 Q F0 1.359
(Function tracing is enabled:)28.5 F 1.359
(command substitution, shell functions, and sub-)6.359 F(shells in)220
408 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E/F4 10
480 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E/F4 10
/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1
(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0(traps.)2.5 E F1(6.)
184 420 Q F0 .805(Error tracing is enabled:)28.5 F .804
(command substitution, shell functions, and subshells)5.805 F(in)220 432
184 492 Q F0 .805(Error tracing is enabled:)28.5 F .804
(command substitution, shell functions, and subshells)5.805 F(in)220 504
Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4
(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)
2.5 E F1(extglob)144 444 Q F0 .4(If set, the e)8.89 F .4
2.5 E F1(extglob)144 516 Q F0 .4(If set, the e)8.89 F .4
(xtended pattern matching features described abo)-.15 F .7 -.15(ve u)
-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 456 Q
F0(are enabled.)2.5 E F1(extquote)144 468 Q F0 2.473(If set,)184 480 R
-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 528 Q
F0(are enabled.)2.5 E F1(extquote)144 540 Q F0 2.473(If set,)184 552 R
F1($)4.973 E F0<08>A F4(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973
E F0(")A F4(string)A F0 4.973("q)C 2.473(uoting is performed within)
-4.973 F F1(${)4.973 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G
(pansions).15 E(enclosed in double quotes.)184 492 Q
(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 504 Q F0
(pansions).15 E(enclosed in double quotes.)184 564 Q
(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 576 Q F0
1.424(If set, patterns which f)7.77 F 1.425
(ail to match \214lenames during pathname e)-.1 F 1.425
(xpansion result in an)-.15 F -.15(ex)184 516 S(pansion error).15 E(.)
-.55 E F1 -.25(fo)144 528 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
.937(If set, the suf)184 540 R<8c78>-.25 E .936(es speci\214ed by the)
(xpansion result in an)-.15 F -.15(ex)184 588 S(pansion error).15 E(.)
-.55 E F1 -.25(fo)144 600 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
.937(If set, the suf)184 612 R<8c78>-.25 E .936(es speci\214ed by the)
-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w)
-.25 F .936(ords to be ignored)-.1 F .32(when performing w)184 552 R .32
-.25 F .936(ords to be ignored)-.1 F .32(when performing w)184 624 R .32
(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32
(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.948
(pletions. See)184 564 R F2 .448(SHELL V)2.948 F(ARIABLES)-1.215 E F0
(pletions. See)184 636 R F2 .448(SHELL V)2.948 F(ARIABLES)-1.215 E F0
(abo)2.698 E .748 -.15(ve f)-.15 H .448(or a description of).15 F F2
(FIGNORE)2.947 E F3(.)A F0 .447(This option is)4.947 F(enabled by def)
184 576 Q(ault.)-.1 E F1(globstar)144 588 Q F0 .178(If set, the pattern)
184 648 Q(ault.)-.1 E F1(globstar)144 660 Q F0 .178(If set, the pattern)
5 F F1(**)2.678 E F0 .178(used in a pathname e)2.678 F .178
(xpansion conte)-.15 F .179(xt will match a \214les and zero or)-.15 F
1.298(more directories and subdirectories.)184 600 R 1.298
1.298(more directories and subdirectories.)184 672 R 1.298
(If the pattern is follo)6.298 F 1.298(wed by a)-.25 F F1(/)3.797 E F0
3.797(,o)C 1.297(nly directories)-3.797 F(and subdirectories match.)184
612 Q F1(gnu_errfmt)144 624 Q F0(If set, shell error messages are writt\
en in the standard GNU error message format.)184 636 Q F1(histappend)144
648 Q F0 .676
(If set, the history list is appended to the \214le named by the v)184
660 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G
(ri-).25 E(able when the shell e)184 672 Q(xits, rather than o)-.15 E
-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 684 Q(eedit)-.18
E F0 .576(If set, and)184 696 R F1 -.18(re)3.076 G(adline).18 E F0 .575
(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575
(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F
(tory substitution.)184 708 Q(GNU Bash-4.0)72 768 Q(2004 Apr 20)148.735
E(17)198.725 E 0 Cg EP
684 Q F1(gnu_errfmt)144 696 Q F0(If set, shell error messages are writt\
en in the standard GNU error message format.)184 708 Q(GNU Bash-4.0)72
768 Q(2004 Apr 20)148.735 E(17)198.725 E 0 Cg EP
%%Page: 18 18
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48
(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10
/Times-Bold@0 SF(histv)144 84 Q(erify)-.1 E F0 .402(If set, and)184 96 R
F1 -.18(re)2.903 G(adline).18 E F0 .403
/Times-Bold@0 SF(histappend)144 84 Q F0 .676
(If set, the history list is appended to the \214le named by the v)184
96 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.177 E F0
-.25(va)2.927 G(ri-).25 E(able when the shell e)184 108 Q
(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1
(histr)144 120 Q(eedit)-.18 E F0 .576(If set, and)184 132 R F1 -.18(re)
3.076 G(adline).18 E F0 .575(is being used, a user is gi)3.076 F -.15
(ve)-.25 G 3.075(nt).15 G .575(he opportunity to re-edit a f)-3.075 F
.575(ailed his-)-.1 F(tory substitution.)184 144 Q F1(histv)144 156 Q
(erify)-.1 E F0 .402(If set, and)184 168 R F1 -.18(re)2.903 G(adline).18
E F0 .403
(is being used, the results of history substitution are not immediately)
2.903 F .662(passed to the shell parser)184 108 R 5.662(.I)-.55 G .661
2.903 F .662(passed to the shell parser)184 180 R 5.662(.I)-.55 G .661
(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161
G(adline).18 E F0(editing)3.161 E -.2(bu)184 120 S -.25(ff).2 G(er).25 E
G(adline).18 E F0(editing)3.161 E -.2(bu)184 192 S -.25(ff).2 G(er).25 E
2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1
(hostcomplete)144 132 Q F0 1.181(If set, and)184 144 R F1 -.18(re)3.681
(hostcomplete)144 204 Q F0 1.181(If set, and)184 216 R F1 -.18(re)3.681
G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182
(will attempt to perform hostname completion)3.682 F 1.381(when a w)184
156 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381
228 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381
(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E
/F2 9/Times-Bold@0 SF(READLINE)3.88 E F0(abo)184 168 Q -.15(ve)-.15 G
2.5(\). This).15 F(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144
180 Q F0(If set,)184 192 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)
2.5 E F0(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H
(ogin shell e).15 E(xits.)-.15 E F1(interacti)144 204 Q -.1(ve)-.1 G
(_comments).1 E F0 .33(If set, allo)184 216 R 2.83(waw)-.25 G .33
(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E F0 .33
(to cause that w)2.83 F .33(ord and all remaining characters on)-.1 F
.967(that line to be ignored in an interacti)184 228 R 1.267 -.15(ve s)
-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)
-.15 G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184
240 Q(ault.)-.1 E F1(lithist)144 252 Q F0 .654(If set, and the)15.55 F
F1(cmdhist)3.154 E F0 .654
(option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G
3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)-3.155 F
(with embedded ne)184 264 Q
F2(READLINE)3.88 E F0(abo)184 240 Q -.15(ve)-.15 G 2.5(\). This).15 F
(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 252 Q F0(If set,)
184 264 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0
(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e)
.15 E(xits.)-.15 E F1(interacti)144 276 Q -.1(ve)-.1 G(_comments).1 E F0
.33(If set, allo)184 288 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33
(ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33
(ord and all remaining characters on)-.1 F .967
(that line to be ignored in an interacti)184 300 R 1.267 -.15(ve s)-.25
H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15
G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 312 Q
(ault.)-.1 E F1(lithist)144 324 Q F0 .654(If set, and the)15.55 F F1
(cmdhist)3.154 E F0 .654(option is enabled, multi-line commands are sa)
3.154 F -.15(ve)-.2 G 3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)
-3.155 F(with embedded ne)184 336 Q
(wlines rather than using semicolon separators where possible.)-.25 E F1
(login_shell)144 276 Q F0 .486
(login_shell)144 348 Q F0 .486
(The shell sets this option if it is started as a login shell \(see)184
288 R F2(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve)
-.15 G 2.986(\). The).15 F -.25(va)184 300 S(lue may not be changed.).25
E F1(mailwar)144 312 Q(n)-.15 E F0 .814(If set, and a \214le that)184
324 R F1(bash)3.314 E F0 .815
360 R F2(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve)
-.15 G 2.986(\). The).15 F -.25(va)184 372 S(lue may not be changed.).25
E F1(mailwar)144 384 Q(n)-.15 E F0 .814(If set, and a \214le that)184
396 R F1(bash)3.314 E F0 .815
(is checking for mail has been accessed since the last time it)3.314 F
-.1(wa)184 336 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
-.1(wa)184 408 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
(`The mail in)-.74 E/F3 10/Times-Italic@0 SF(mail\214le)2.5 E F0
(has been read')2.5 E 2.5('i)-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1
(no_empty_cmd_completion)144 348 Q F0 .325(If set, and)184 360 R F1 -.18
(no_empty_cmd_completion)144 420 Q F0 .325(If set, and)184 432 R F1 -.18
(re)2.825 G(adline).18 E F0 .325(is being used,)2.825 F F1(bash)2.824 E
F0 .324(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)
-.189 E F0 .324(for possible)2.574 F
(completions when completion is attempted on an empty line.)184 372 Q F1
(nocaseglob)144 384 Q F0 .436(If set,)184 396 R F1(bash)2.936 E F0 .436
(completions when completion is attempted on an empty line.)184 444 Q F1
(nocaseglob)144 456 Q F0 .436(If set,)184 468 R F1(bash)2.936 E F0 .436
(matches \214lenames in a case\255insensiti)2.936 F .737 -.15(ve f)-.25
H .437(ashion when performing pathname).05 F -.15(ex)184 408 S
H .437(ashion when performing pathname).05 F -.15(ex)184 480 S
(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E
-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 420 Q F0 1.194(If set,)184
432 R F1(bash)3.694 E F0 1.194(matches patterns in a case\255insensiti)
-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 492 Q F0 1.194(If set,)184
504 R F1(bash)3.694 E F0 1.194(matches patterns in a case\255insensiti)
3.694 F 1.493 -.15(ve f)-.25 H 1.193(ashion when performing matching).05
F(while e)184 444 Q -.15(xe)-.15 G(cuting).15 E F1(case)2.5 E F0(or)2.5
E F1([[)2.5 E F0(conditional commands.)2.5 E F1(nullglob)144 456 Q F0
.854(If set,)184 468 R F1(bash)3.354 E F0(allo)3.354 E .855
F(while e)184 516 Q -.15(xe)-.15 G(cuting).15 E F1(case)2.5 E F0(or)2.5
E F1([[)2.5 E F0(conditional commands.)2.5 E F1(nullglob)144 528 Q F0
.854(If set,)184 540 R F1(bash)3.354 E F0(allo)3.354 E .855
(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa)3.355 G .855
(thname Expansion).1 F F0(abo)3.355 E -.15(ve)-.15 G 3.355(\)t).15 G(o)
-3.355 E -.15(ex)184 480 S(pand to a null string, rather than themselv)
.15 E(es.)-.15 E F1(pr)144 492 Q(ogcomp)-.18 E F0 .677
(If set, the programmable completion f)184 504 R .677(acilities \(see)
-3.355 E -.15(ex)184 552 S(pand to a null string, rather than themselv)
.15 E(es.)-.15 E F1(pr)144 564 Q(ogcomp)-.18 E F0 .677
(If set, the programmable completion f)184 576 R .677(acilities \(see)
-.1 F F1(Pr)3.176 E .676(ogrammable Completion)-.18 F F0(abo)3.176 E
-.15(ve)-.15 G(\)).15 E(are enabled.)184 516 Q
(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 528 Q(omptv)
-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 540 R 1.448
-.15(ve)-.15 G(\)).15 E(are enabled.)184 588 Q
(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 600 Q(omptv)
-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)184 612 R 1.448
(go parameter e)-.18 F 1.448(xpansion, command substitution, arithmetic)
-.15 F -.15(ex)184 552 S .171(pansion, and quote remo).15 F -.25(va)-.15
-.15 F -.15(ex)184 624 S .171(pansion, and quote remo).15 F -.25(va)-.15
G 2.67(la).25 G .17(fter being e)-2.67 F .17(xpanded as described in)
-.15 F F2(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G(.).15 E
(This option is enabled by def)184 564 Q(ault.)-.1 E F1 -.18(re)144 576
(This option is enabled by def)184 636 Q(ault.)-.1 E F1 -.18(re)144 648
S(stricted_shell).18 E F0 1.069
(The shell sets this option if it is started in restricted mode \(see)
184 588 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 600 Q 4.178
184 660 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 672 Q 4.178
(w\). The)-.25 F -.25(va)4.178 G 1.678(lue may not be changed.).25 F
1.678(This is not reset when the startup \214les are)6.678 F -.15(exe)
184 612 S(cuted, allo).15 E(wing the startup \214les to disco)-.25 E
184 684 S(cuted, allo).15 E(wing the startup \214les to disco)-.25 E
-.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E
F1(shift_v)144 624 Q(erbose)-.1 E F0 .501(If set, the)184 636 R F1
F1(shift_v)144 696 Q(erbose)-.1 E F0 .501(If set, the)184 708 R F1
(shift)3.001 E F0 -.2(bu)3.001 G .501
(iltin prints an error message when the shift count e).2 F .502
(xceeds the number)-.15 F(of positional parameters.)184 648 Q F1(sour)
144 660 Q(cepath)-.18 E F0 .771(If set, the)184 672 R F1(sour)3.271 E
(ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v)
-3.471 F .771(alue of)-.25 F F2 -.666(PA)3.27 G(TH)-.189 E F0 .77
(to \214nd the directory containing the)3.02 F(\214le supplied as an ar)
184 684 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.)
-.1 E F1(xpg_echo)144 696 Q F0(If set, the)184 708 Q F1(echo)2.5 E F0
-.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)-.15
E(ault.)-.1 E(GNU Bash-4.0)72 768 Q(2004 Apr 20)148.735 E(18)198.725 E 0
Cg EP
(xceeds the number)-.15 F(of positional parameters.)184 720 Q
(GNU Bash-4.0)72 768 Q(2004 Apr 20)148.735 E(18)198.725 E 0 Cg EP
%%Page: 19 19
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48
(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10
/Times-Bold@0 SF(suspend)108 84 Q F0([)2.5 E F1<ad66>A F0(])A 1.001
(Suspend the e)144 96 R -.15(xe)-.15 G 1.001
/Times-Bold@0 SF(sour)144 84 Q(cepath)-.18 E F0 .771(If set, the)184 96
R F1(sour)3.271 E(ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771
(uiltin uses the v)-3.471 F .771(alue of)-.25 F/F2 9/Times-Bold@0 SF
-.666(PA)3.27 G(TH)-.189 E F0 .77
(to \214nd the directory containing the)3.02 F(\214le supplied as an ar)
184 108 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.)
-.1 E F1(xpg_echo)144 120 Q F0(If set, the)184 132 Q F1(echo)2.5 E F0
-.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)-.15
E(ault.)-.1 E F1(suspend)108 144 Q F0([)2.5 E F1<ad66>A F0(])A 1.001
(Suspend the e)144 156 R -.15(xe)-.15 G 1.001
(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G
/F2 9/Times-Bold@0 SF(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002
(login shell cannot be)3.502 F .023(suspended; the)144 108 R F1<ad66>
2.523 E F0 .023(option can be used to o)2.523 F -.15(ve)-.15 G .022
F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be)
3.502 F .023(suspended; the)144 168 R F1<ad66>2.523 E F0 .023
(option can be used to o)2.523 F -.15(ve)-.15 G .022
(rride this and force the suspension.).15 F .022(The return status is)
5.022 F 2.5(0u)144 120 S(nless the shell is a login shell and)-2.5 E F1
5.022 F 2.5(0u)144 180 S(nless the shell is a login shell and)-2.5 E F1
<ad66>2.5 E F0(is not supplied, or if job control is not enabled.)2.5 E
F1(test)108 132 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)108
144 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 1.15
F1(test)108 192 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)108
204 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 1.15
(Return a status of 0 or 1 depending on the e)6.77 F -.25(va)-.25 G 1.15
(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)3.65 G
(pr).2 E F0 6.15(.E).73 G(ach)-6.15 E 1.188
(operator and operand must be a separate ar)144 156 R 3.688
(operator and operand must be a separate ar)144 216 R 3.688
(gument. Expressions)-.18 F 1.187(are composed of the primaries)3.688 F
1.889(described abo)144 168 R 2.189 -.15(ve u)-.15 H(nder).15 E F2
1.889(described abo)144 228 R 2.189 -.15(ve u)-.15 H(nder).15 E F2
(CONDITION)4.389 E 1.889(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A
F1(test)6.389 E F0 1.89(does not accept an)4.389 F 4.39(yo)-.15 G 1.89
(ptions, nor)-4.39 F(does it accept and ignore an ar)144 180 Q
(ptions, nor)-4.39 F(does it accept and ignore an ar)144 240 Q
(gument of)-.18 E F1<adad>2.5 E F0(as signifying the end of options.)2.5
E .786(Expressions may be combined using the follo)144 198 R .785
E .786(Expressions may be combined using the follo)144 258 R .785
(wing operators, listed in decreasing order of prece-)-.25 F 2.5
(dence. The)144 210 R -.25(eva)2.5 G
(dence. The)144 270 R -.25(eva)2.5 G
(luation depends on the number of ar).25 E(guments; see belo)-.18 E -.65
(w.)-.25 G F1(!)144 222 Q F3 -.2(ex)2.5 G(pr).2 E F0 -.35(Tr)12.6 G
(w.)-.25 G F1(!)144 282 Q F3 -.2(ex)2.5 G(pr).2 E F0 -.35(Tr)12.6 G
(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.)-.1 E F1(\()
144 234 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26(Returns the v)6.77
144 294 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26(Returns the v)6.77
F .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 E F0 5.26(.T)C .26
(his may be used to o)-5.26 F -.15(ve)-.15 G .26
(rride the normal precedence of opera-).15 F(tors.)180 246 Q F3 -.2(ex)
144 258 S(pr1).2 E F0<ad>2.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35
(Tr)180 270 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F3
-.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 282 S(pr1).2 E
F0<ad>2.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 294 S
(rride the normal precedence of opera-).15 F(tors.)180 306 Q F3 -.2(ex)
144 318 S(pr1).2 E F0<ad>2.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35
(Tr)180 330 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F3
-.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 342 S(pr1).2 E
F0<ad>2.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 354 S
(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2(ex)2.5 G
(pr2).2 E F0(is true.)2.52 E F1(test)144 310.8 Q F0(and)2.5 E F1([)2.5 E
(pr2).2 E F0(is true.)2.52 E F1(test)144 370.8 Q F0(and)2.5 E F1([)2.5 E
F0 -.25(eva)2.5 G(luate conditional e).25 E
(xpressions using a set of rules based on the number of ar)-.15 E
(guments.)-.18 E 2.5(0a)144 328.8 S -.18(rg)-2.5 G(uments).18 E(The e)
180 340.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 352.8 S -.18
(rg)-2.5 G(ument).18 E(The e)180 364.8 Q
(guments.)-.18 E 2.5(0a)144 388.8 S -.18(rg)-2.5 G(uments).18 E(The e)
180 400.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 412.8 S -.18
(rg)-2.5 G(ument).18 E(The e)180 424.8 Q
(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18
E 2.5(2a)144 376.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
180 388.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
E 2.5(2a)144 436.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
180 448.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
F .37(xpression is true if and only if the second ar)-.15 F .37
(gument is null.)-.18 F .379(If the \214rst ar)180 400.8 R .38
(gument is null.)-.18 F .379(If the \214rst ar)180 460.8 R .38
(gument is one of the unary conditional operators listed abo)-.18 F .68
-.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 412.8 Q .553
-.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 472.8 Q .553
(AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552
(xpression is true if the unary test is true.)-.15 F .552
(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 424.8 Q
(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 484.8 Q
(alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E
(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 436.8 S -.18(rg)-2.5 G
(uments).18 E .023(If the second ar)180 448.8 R .023
(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 496.8 S -.18(rg)-2.5 G
(uments).18 E .023(If the second ar)180 508.8 R .023
(gument is one of the binary conditional operators listed abo)-.18 F
.324 -.15(ve u)-.15 H(nder).15 E F2(CON-)2.524 E(DITION)180 460.8 Q
.324 -.15(ve u)-.15 H(nder).15 E F2(CON-)2.524 E(DITION)180 520.8 Q
1.478(AL EXPRESSIONS)-.18 F F4(,)A F0 1.477(the result of the e)3.727 F
1.477(xpression is the result of the binary test)-.15 F .513
(using the \214rst and third ar)180 472.8 R .513(guments as operands.)
(using the \214rst and third ar)180 532.8 R .513(guments as operands.)
-.18 F(The)5.513 E F1<ad61>3.013 E F0(and)3.013 E F1<ad6f>3.013 E F0
.513(operators are considered)3.013 F .972
(binary operators when there are three ar)180 484.8 R 3.472(guments. If)
(binary operators when there are three ar)180 544.8 R 3.472(guments. If)
-.18 F .972(the \214rst ar)3.472 F .972(gument is)-.18 F F1(!)3.472 E F0
3.472(,t)C .972(he v)-3.472 F .972(alue is)-.25 F .883(the ne)180 496.8
3.472(,t)C .972(he v)-3.472 F .972(alue is)-.25 F .883(the ne)180 556.8
R -.05(ga)-.15 G .883(tion of the tw).05 F(o-ar)-.1 E .884
(gument test using the second and third ar)-.18 F 3.384(guments. If)-.18
F .884(the \214rst)3.384 F(ar)180 508.8 Q .875(gument is e)-.18 F
F .884(the \214rst)3.384 F(ar)180 568.8 Q .875(gument is e)-.18 F
(xactly)-.15 E F1(\()3.375 E F0 .875(and the third ar)3.375 F .875
(gument is e)-.18 F(xactly)-.15 E F1(\))3.375 E F0 3.374(,t)C .874
(he result is the one-ar)-3.374 F(gument)-.18 E(test of the second ar)
180 520.8 Q 2.5(gument. Otherwise,)-.18 F(the e)2.5 E(xpression is f)
-.15 E(alse.)-.1 E 2.5(4a)144 532.8 S -.18(rg)-2.5 G(uments).18 E .384
(If the \214rst ar)180 544.8 R .384(gument is)-.18 F F1(!)2.884 E F0
180 580.8 Q 2.5(gument. Otherwise,)-.18 F(the e)2.5 E(xpression is f)
-.15 E(alse.)-.1 E 2.5(4a)144 592.8 S -.18(rg)-2.5 G(uments).18 E .384
(If the \214rst ar)180 604.8 R .384(gument is)-.18 F F1(!)2.884 E F0
2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 G .385
(tion of the three-ar).05 F .385(gument e)-.18 F .385(xpression com-)
-.15 F 1.648(posed of the remaining ar)180 556.8 R 4.147
-.15 F 1.648(posed of the remaining ar)180 616.8 R 4.147
(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.647
(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E
(according to precedence using the rules listed abo)180 568.8 Q -.15(ve)
-.15 G(.).15 E 2.5(5o)144 580.8 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)
-.18 E 1.635(The e)180 592.8 R 1.635(xpression is parsed and e)-.15 F
(according to precedence using the rules listed abo)180 628.8 Q -.15(ve)
-.15 G(.).15 E 2.5(5o)144 640.8 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)
-.18 E 1.635(The e)180 652.8 R 1.635(xpression is parsed and e)-.15 F
-.25(va)-.25 G 1.635
(luated according to precedence using the rules listed).25 F(abo)180
604.8 Q -.15(ve)-.15 G(.).15 E F1(times)108 621.6 Q F0 1.229(Print the \
664.8 Q -.15(ve)-.15 G(.).15 E F1(times)108 681.6 Q F0 1.229(Print the \
accumulated user and system times for the shell and for processes run f\
rom the shell.)13.23 F(The return status is 0.)144 633.6 Q F1(trap)108
650.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E F3(ar)A(g)-.37 E F0
(])A F3(sigspec)2.5 E F0(...])2.5 E .702(The command)144 662.4 R F3(ar)
3.532 E(g)-.37 E F0 .702(is to be read and e)3.422 F -.15(xe)-.15 G .702
(cuted when the shell recei).15 F -.15(ve)-.25 G 3.203(ss).15 G
(ignal\(s\))-3.203 E F3(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F3
(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single)
144 674.4 R F3(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F1<ad>3.108 E
F0 3.108(,e)C .608
(ach speci\214ed signal is reset to its original disposition)-3.108 F
.658(\(the v)144 686.4 R .658(alue it had upon entrance to the shell\).)
-.25 F(If)5.658 E F3(ar)3.488 E(g)-.37 E F0 .659
(is the null string the signal speci\214ed by each)3.378 F F3(sigspec)
144.34 698.4 Q F0 .581
(is ignored by the shell and by the commands it in)3.391 F -.2(vo)-.4 G
-.1(ke).2 G 3.08(s. If).1 F F3(ar)3.41 E(g)-.37 E F0 .58
(is not present and)3.3 F F1<ad70>3.08 E F0(has)3.08 E 1.214
(been supplied, then the trap commands associated with each)144 710.4 R
F3(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215
F(gu-)-.18 E .86(ments are supplied or if only)144 722.4 R F1<ad70>3.36
E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86
(prints the list of commands associated with each)3.36 F(GNU Bash-4.0)72
768 Q(2004 Apr 20)148.735 E(19)198.725 E 0 Cg EP
rom the shell.)13.23 F(The return status is 0.)144 693.6 Q(GNU Bash-4.0)
72 768 Q(2004 Apr 20)148.735 E(19)198.725 E 0 Cg EP
%%Page: 20 20
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48
(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E 2.83
(signal. The)144 84 R/F1 10/Times-Bold@0 SF<ad6c>2.83 E F0 .33(option c\
auses the shell to print a list of signal names and their corresponding\
num-)2.83 F 4.311(bers. Each)144 96 R/F2 10/Times-Italic@0 SF(sigspec)
4.651 E F0 1.811(is either a signal name de\214ned in <)4.621 F F2
(signal.h)A F0 1.81(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E
(names are case insensiti)144 108 Q .3 -.15(ve a)-.25 H(nd the).15 E/F3
(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10
/Times-Bold@0 SF(trap)108 84 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5
E/F2 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])
2.5 E .702(The command)144 96 R F2(ar)3.532 E(g)-.37 E F0 .702
(is to be read and e)3.422 F -.15(xe)-.15 G .702
(cuted when the shell recei).15 F -.15(ve)-.25 G 3.203(ss).15 G
(ignal\(s\))-3.203 E F2(sigspec)3.203 E F0 5.703(.I).31 G(f)-5.703 E F2
(ar)3.533 E(g)-.37 E F0(is)3.423 E .609(absent \(and there is a single)
144 108 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F1<ad>3.108 E F0
3.108(,e)C .608
(ach speci\214ed signal is reset to its original disposition)-3.108 F
.658(\(the v)144 120 R .658(alue it had upon entrance to the shell\).)
-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .659
(is the null string the signal speci\214ed by each)3.378 F F2(sigspec)
144.34 132 Q F0 .581(is ignored by the shell and by the commands it in)
3.391 F -.2(vo)-.4 G -.1(ke).2 G 3.08(s. If).1 F F2(ar)3.41 E(g)-.37 E
F0 .58(is not present and)3.3 F F1<ad70>3.08 E F0(has)3.08 E 1.214
(been supplied, then the trap commands associated with each)144 144 R F2
(sigspec)4.054 E F0 1.215(are displayed.)4.024 F 1.215(If no ar)6.215 F
(gu-)-.18 E .86(ments are supplied or if only)144 156 R F1<ad70>3.36 E
F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86
(prints the list of commands associated with each)3.36 F 2.83
(signal. The)144 168 R F1<ad6c>2.83 E F0 .33(option causes the shell to\
print a list of signal names and their corresponding num-)2.83 F 4.311
(bers. Each)144 180 R F2(sigspec)4.651 E F0 1.811
(is either a signal name de\214ned in <)4.621 F F2(signal.h)A F0 1.81
(>, or a signal number)B 6.81(.S)-.55 G(ignal)-6.81 E
(names are case insensiti)144 192 Q .3 -.15(ve a)-.25 H(nd the).15 E/F3
9/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.648(If a)
144 126 R F2(sigspec)4.488 E F0(is)4.458 E F3(EXIT)4.148 E F0 1.648
144 210 R F2(sigspec)4.488 E F0(is)4.458 E F3(EXIT)4.148 E F0 1.648
(\(0\) the command)3.898 F F2(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F
-.15(xe)-.15 G 1.649(cuted on e).15 F 1.649(xit from the shell.)-.15 F
1.649(If a)6.649 F F2(sigspec)4.489 E F0(is)4.459 E F3(DEB)144 138 Q(UG)
1.649(If a)6.649 F F2(sigspec)4.489 E F0(is)4.459 E F3(DEB)144 222 Q(UG)
-.09 E/F4 9/Times-Roman@0 SF(,)A F0 1.168(the command)3.418 F F2(ar)
3.998 E(g)-.37 E F0 1.168(is e)3.888 F -.15(xe)-.15 G 1.167
(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F2 1.167(simple command)
3.667 F F0(,)A F2(for)3.667 E F0(command,)3.667 E F2(case)3.667 E F0
(com-)3.667 E(mand,)144 150 Q F2(select)2.646 E F0 .146(command, e)2.646
(com-)3.667 E(mand,)144 234 Q F2(select)2.646 E F0 .146(command, e)2.646
F -.15(ve)-.25 G .146(ry arithmetic).15 F F2(for)2.646 E F0 .147
(command, and before the \214rst command e)2.646 F -.15(xe)-.15 G .147
(cutes in a).15 F .146(shell function \(see)144 162 R F3 .146
(cutes in a).15 F .146(shell function \(see)144 246 R F3 .146
(SHELL GRAMMAR)2.646 F F0(abo)2.396 E -.15(ve)-.15 G 2.646(\). Refer).15
F .146(to the description of the)2.646 F F1(extdeb)2.645 E(ug)-.2 E F0
.145(option to)2.645 F(the)144 174 Q F1(shopt)3.2 E F0 -.2(bu)3.2 G .7
.145(option to)2.645 F(the)144 258 Q F1(shopt)3.2 E F0 -.2(bu)3.2 G .7
(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E(UG)
-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F2(sigspec)3.54 E F0(is)3.51 E F3
(RETURN)3.2 E F4(,)A F0 .701(the com-)2.951 F(mand)144 186 Q F2(ar)3.474
(RETURN)3.2 E F4(,)A F0 .701(the com-)2.951 F(mand)144 270 Q F2(ar)3.474
E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643
(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G
.643(cuted with the).15 F F1(.)3.143 E F0(or)3.143 E F1(sour)3.143 E(ce)
-.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 198 Q -.15(xe)-.15
G(cuting.).15 E .928(If a)144 216 R F2(sigspec)3.768 E F0(is)3.738 E F3
-.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 282 Q -.15(xe)-.15
G(cuting.).15 E .928(If a)144 300 R F2(sigspec)3.768 E F0(is)3.738 E F3
(ERR)3.429 E F4(,)A F0 .929(the command)3.179 F F2(ar)3.759 E(g)-.37 E
F0 .929(is e)3.649 F -.15(xe)-.15 G .929(cuted whene).15 F -.15(ve)-.25
G 3.429(ras).15 G .929(imple command has a non\255zero)-3.429 F -.15(ex)
144 228 S 1.009(it status, subject to the follo).15 F 1.009
144 312 S 1.009(it status, subject to the follo).15 F 1.009
(wing conditions.)-.25 F(The)6.009 E F3(ERR)3.509 E F0 1.009
(trap is not e)3.259 F -.15(xe)-.15 G 1.008(cuted if the f).15 F 1.008
(ailed com-)-.1 F .324
(mand is part of the command list immediately follo)144 240 R .324
(mand is part of the command list immediately follo)144 324 R .324
(wing a)-.25 F F1(while)2.824 E F0(or)2.824 E F1(until)2.824 E F0 -.1
(ke)2.824 G(yw)-.05 E .324(ord, part of the test)-.1 F 1.129(in an)144
252 R F2(if)3.639 E F0 1.129(statement, part of a command e)5.589 F -.15
336 R F2(if)3.639 E F0 1.129(statement, part of a command e)5.589 F -.15
(xe)-.15 G 1.129(cuted in a).15 F F1(&&)3.629 E F0(or)3.629 E/F5 10
/Symbol SF<efef>3.629 E F0 1.129(list, or if the command')3.629 F 3.628
(sr)-.55 G(eturn)-3.628 E -.25(va)144 264 S(lue is being in).25 E -.15
(sr)-.55 G(eturn)-3.628 E -.25(va)144 348 S(lue is being in).25 E -.15
(ve)-.4 G(rted via).15 E F1(!)2.5 E F0 5(.T)C
(hese are the same conditions obe)-5 E(yed by the)-.15 E F1(err)2.5 E
(exit)-.18 E F0(option.)2.5 E 1.095
(Signals ignored upon entry to the shell cannot be trapped or reset.)144
282 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662
(being ignored are reset to their original v)144 294 R .662
366 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662
(being ignored are reset to their original v)144 378 R .662
(alues in a subshell or subshell en)-.25 F .661(vironment when one is)
-.4 F 2.5(created. The)144 306 R(return status is f)2.5 E(alse if an)-.1
-.4 F 2.5(created. The)144 390 R(return status is f)2.5 E(alse if an)-.1
E(y)-.15 E F2(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G
(lid; otherwise).25 E F1(trap)2.5 E F0(returns true.)2.5 E F1(type)108
322.8 Q F0([)2.5 E F1(\255aftpP)A F0(])A F2(name)2.5 E F0([)2.5 E F2
(name)A F0(...])2.5 E -.4(Wi)144 334.8 S .173
406.8 Q F0([)2.5 E F1(\255aftpP)A F0(])A F2(name)2.5 E F0([)2.5 E F2
(name)A F0(...])2.5 E -.4(Wi)144 418.8 S .173
(th no options, indicate ho).4 F 2.673(we)-.25 G(ach)-2.673 E F2(name)
3.033 E F0 -.1(wo)2.853 G .174
(uld be interpreted if used as a command name.).1 F .174(If the)5.174 F
F1<ad74>144 346.8 Q F0 .843(option is used,)3.343 F F1(type)3.343 E F0
F1<ad74>144 430.8 Q F0 .843(option is used,)3.343 F F1(type)3.343 E F0
.843(prints a string which is one of)3.343 F F2(alias)3.343 E F0(,).27 E
F2 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)3.343 E F0
(,).24 E F2 -.2(bu)3.342 G(iltin).2 E F0 3.342(,o).24 G(r)-3.342 E F2
(\214le)5.252 E F0(if)3.522 E F2(name)144.36 358.8 Q F0 .086
(\214le)5.252 E F0(if)3.522 E F2(name)144.36 442.8 Q F0 .086
(is an alias, shell reserv)2.766 F .086(ed w)-.15 F .086
(ord, function, b)-.1 F .087(uiltin, or disk \214le, respecti)-.2 F -.15
(ve)-.25 G(ly).15 E 5.087(.I)-.65 G 2.587(ft)-5.087 G(he)-2.587 E F2
(name)2.947 E F0 .087(is not)2.767 F .119
(found, then nothing is printed, and an e)144 370.8 R .118
(found, then nothing is printed, and an e)144 454.8 R .118
(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F
F1<ad70>2.618 E F0 .118(option is used,)2.618 F F1(type)2.618 E F0 .855
(either returns the name of the disk \214le that w)144 382.8 R .855
(either returns the name of the disk \214le that w)144 466.8 R .855
(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0
.855(were speci\214ed as a com-)3.535 F .641(mand name, or nothing if)
144 394.8 R/F6 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141
144 478.8 R/F6 10/Courier@0 SF .641(type -t name)3.141 F F0 -.1(wo)3.141
G .641(uld not return).1 F F2(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E
F1<ad50>3.14 E F0 .64(option forces a)3.14 F F3 -.666(PA)3.14 G(TH)-.189
E F0 .112(search for each)144 406.8 R F2(name)2.612 E F0 2.612(,e)C -.15
E F0 .112(search for each)144 490.8 R F2(name)2.612 E F0 2.612(,e)C -.15
(ve)-2.862 G 2.613(ni).15 G(f)-2.613 E F6 .113(type -t name)2.613 F F0
-.1(wo)2.613 G .113(uld not return).1 F F2(\214le)2.613 E F0 5.113(.I)
.18 G 2.613(fac)-5.113 G .113(ommand is hashed,)-2.613 F F1<ad70>2.613 E
F0(and)144 418.8 Q F1<ad50>2.945 E F0 .445(print the hashed v)2.945 F
F0(and)144 502.8 Q F1<ad50>2.945 E F0 .445(print the hashed v)2.945 F
.444(alue, not necessarily the \214le that appears \214rst in)-.25 F F3
-.666(PA)2.944 G(TH)-.189 E F4(.)A F0 .444(If the)4.944 F F1<ad61>2.944
E F0(option)2.944 E .265(is used,)144 430.8 R F1(type)2.765 E F0 .265
E F0(option)2.944 E .265(is used,)144 514.8 R F1(type)2.765 E F0 .265
(prints all of the places that contain an e)2.765 F -.15(xe)-.15 G .265
(cutable named).15 F F2(name)2.765 E F0 5.265(.T).18 G .265
(his includes aliases)-5.265 F .427(and functions, if and only if the)
144 442.8 R F1<ad70>2.926 E F0 .426(option is not also used.)2.926 F
144 526.8 R F1<ad70>2.926 E F0 .426(option is not also used.)2.926 F
.426(The table of hashed commands is not)5.426 F .548
(consulted when using)144 454.8 R F1<ad61>3.048 E F0 5.548(.T)C(he)
(consulted when using)144 538.8 R F1<ad61>3.048 E F0 5.548(.T)C(he)
-5.548 E F1<ad66>3.048 E F0 .549
(option suppresses shell function lookup, as with the)3.048 F F1
(command)3.049 E F0 -.2(bu)144 466.8 S(iltin.).2 E F1(type)5 E F0
(command)3.049 E F0 -.2(bu)144 550.8 S(iltin.).2 E F1(type)5 E F0
(returns true if all of the ar)2.5 E(guments are found, f)-.18 E
(alse if an)-.1 E 2.5(ya)-.15 G(re not found.)-2.5 E F1(ulimit)108 483.6
(alse if an)-.1 E 2.5(ya)-.15 G(re not found.)-2.5 E F1(ulimit)108 567.6
Q F0([)2.5 E F1(\255HST)A(abcde\214lmnpqrstuvx)-.92 E F0([)2.5 E F2
(limit)A F0(]])A(Pro)144 495.6 Q .244(vides control o)-.15 F -.15(ve)
(limit)A F0(]])A(Pro)144 579.6 Q .244(vides control o)-.15 F -.15(ve)
-.15 G 2.744(rt).15 G .244(he resources a)-2.744 F -.25(va)-.2 G .244
(ilable to the shell and to processes started by it, on systems).25 F
.943(that allo)144 507.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F
.943(that allo)144 591.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F
(The)5.943 E F1<ad48>3.443 E F0(and)3.443 E F1<ad53>3.444 E F0 .944
(options specify that the hard or soft limit is set for the)3.444 F(gi)
144 519.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208
144 603.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208
(hard limit cannot be increased by a non-root user once it is set; a so\
ft limit may)2.709 F .425(be increased up to the v)144 531.6 R .425
ft limit may)2.709 F .425(be increased up to the v)144 615.6 R .425
(alue of the hard limit.)-.25 F .426(If neither)5.425 F F1<ad48>2.926 E
F0(nor)2.926 E F1<ad53>2.926 E F0 .426
(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144
543.6 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139
627.6 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139
(can be a number in the unit speci\214ed for the resource or one)3.319 F
.741(of the special v)144 555.6 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1
.741(of the special v)144 639.6 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1
(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w)
C .741(hich stand for the current hard limit, the current)-3.241 F .78
(soft limit, and no limit, respecti)144 567.6 R -.15(ve)-.25 G(ly).15 E
(soft limit, and no limit, respecti)144 651.6 R -.15(ve)-.25 G(ly).15 E
5.78(.I)-.65 G(f)-5.78 E F2(limit)3.37 E F0 .78
(is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25
F .498(resource is printed, unless the)144 579.6 R F1<ad48>2.999 E F0
F .498(resource is printed, unless the)144 663.6 R F1<ad48>2.999 E F0
.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499
(more than one resource is speci\214ed, the)2.999 F
(limit name and unit are printed before the v)144 591.6 Q 2.5
(limit name and unit are printed before the v)144 675.6 Q 2.5
(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F1
<ad61>144 603.6 Q F0(All current limits are reported)25.3 E F1<ad62>144
615.6 Q F0(The maximum sock)24.74 E(et b)-.1 E(uf)-.2 E(fer size)-.25 E
F1<ad63>144 627.6 Q F0(The maximum size of core \214les created)25.86 E
F1<ad64>144 639.6 Q F0(The maximum size of a process')24.74 E 2.5(sd)
-.55 G(ata se)-2.5 E(gment)-.15 E F1<ad65>144 651.6 Q F0
(The maximum scheduling priority \("nice"\))25.86 E F1<ad66>144 663.6 Q
F0(The maximum size of \214les written by the shell and its children)
26.97 E F1<ad69>144 675.6 Q F0(The maximum number of pending signals)
27.52 E F1<ad6c>144 687.6 Q F0(The maximum size that may be lock)27.52 E
(ed into memory)-.1 E F1<ad6d>144 699.6 Q F0
(The maximum resident set size \(man)21.97 E 2.5(ys)-.15 G
(ystems do not honor this limit\))-2.5 E F1<ad6e>144 711.6 Q F0 .791(Th\
e maximum number of open \214le descriptors \(most systems do not allo)
24.74 F 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F(be set\))180
723.6 Q(GNU Bash-4.0)72 768 Q(2004 Apr 20)148.735 E(20)198.725 E 0 Cg EP
<ad61>144 687.6 Q F0(All current limits are reported)25.3 E F1<ad62>144
699.6 Q F0(The maximum sock)24.74 E(et b)-.1 E(uf)-.2 E(fer size)-.25 E
F1<ad63>144 711.6 Q F0(The maximum size of core \214les created)25.86 E
(GNU Bash-4.0)72 768 Q(2004 Apr 20)148.735 E(20)198.725 E 0 Cg EP
%%Page: 21 21
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 290.48
(TINS\(1\) B)-.92 F(ASH_B)-.35 E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10
/Times-Bold@0 SF<ad70>144 84 Q F0
/Times-Bold@0 SF<ad64>144 84 Q F0(The maximum size of a process')24.74 E
2.5(sd)-.55 G(ata se)-2.5 E(gment)-.15 E F1<ad65>144 96 Q F0
(The maximum scheduling priority \("nice"\))25.86 E F1<ad66>144 108 Q F0
(The maximum size of \214les written by the shell and its children)26.97
E F1<ad69>144 120 Q F0(The maximum number of pending signals)27.52 E F1
<ad6c>144 132 Q F0(The maximum size that may be lock)27.52 E
(ed into memory)-.1 E F1<ad6d>144 144 Q F0
(The maximum resident set size \(man)21.97 E 2.5(ys)-.15 G
(ystems do not honor this limit\))-2.5 E F1<ad6e>144 156 Q F0 .791(The \
maximum number of open \214le descriptors \(most systems do not allo)
24.74 F 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F(be set\))180
168 Q F1<ad70>144 180 Q F0
(The pipe size in 512-byte blocks \(this may not be set\))24.74 E F1
<ad71>144 96 Q F0(The maximum number of bytes in POSIX message queues)
24.74 E F1<ad72>144 108 Q F0(The maximum real-time scheduling priority)
25.86 E F1<ad73>144 120 Q F0(The maximum stack size)26.41 E F1<ad74>144
132 Q F0(The maximum amount of cpu time in seconds)26.97 E F1<ad75>144
144 Q F0(The maximum number of processes a)24.74 E -.25(va)-.2 G
(ilable to a single user).25 E F1<ad76>144 156 Q F0 .47
<ad71>144 192 Q F0(The maximum number of bytes in POSIX message queues)
24.74 E F1<ad72>144 204 Q F0(The maximum real-time scheduling priority)
25.86 E F1<ad73>144 216 Q F0(The maximum stack size)26.41 E F1<ad74>144
228 Q F0(The maximum amount of cpu time in seconds)26.97 E F1<ad75>144
240 Q F0(The maximum number of processes a)24.74 E -.25(va)-.2 G
(ilable to a single user).25 E F1<ad76>144 252 Q F0 .47
(The maximum amount of virtual memory a)25.3 F -.25(va)-.2 G .47
(ilable to the shell and, on some systems, to).25 F(its children)180 168
Q F1<ad78>144 180 Q F0(The maximum number of \214le locks)25.3 E F1
<ad54>144 192 Q F0(The maximum number of threads)23.63 E(If)144 208.8 Q
(ilable to the shell and, on some systems, to).25 F(its children)180 264
Q F1<ad78>144 276 Q F0(The maximum number of \214le locks)25.3 E F1
<ad54>144 288 Q F0(The maximum number of threads)23.63 E(If)144 304.8 Q
/F2 10/Times-Italic@0 SF(limit)2.933 E F0 .343(is gi)3.523 F -.15(ve)
-.25 G .343(n, it is the ne).15 F 2.843(wv)-.25 G .343
(alue of the speci\214ed resource \(the)-3.093 F F1<ad61>2.843 E F0 .343
(option is display only\).)2.843 F .343(If no)5.343 F .175(option is gi)
144 220.8 R -.15(ve)-.25 G .175(n, then).15 F F1<ad66>2.675 E F0 .175
144 316.8 R -.15(ve)-.25 G .175(n, then).15 F F1<ad66>2.675 E F0 .175
(is assumed.)2.675 F -1.11(Va)5.175 G .175
(lues are in 1024-byte increments, e)1.11 F .176(xcept for)-.15 F F1
<ad74>2.676 E F0 2.676(,w)C .176(hich is in)-2.676 F(seconds,)144 232.8
<ad74>2.676 E F0 2.676(,w)C .176(hich is in)-2.676 F(seconds,)144 328.8
Q F1<ad70>2.516 E F0 2.516(,w)C .016
(hich is in units of 512-byte blocks, and)-2.516 F F1<ad54>2.516 E F0(,)
A F1<ad62>2.515 E F0(,)A F1<ad6e>2.515 E F0 2.515(,a)C(nd)-2.515 E F1
<ad75>2.515 E F0 2.515(,w)C .015(hich are unscaled v)-2.515 F(al-)-.25 E
3.787(ues. The)144 244.8 R 1.287(return status is 0 unless an in)3.787 F
3.787(ues. The)144 340.8 R 1.287(return status is 0 unless an in)3.787 F
-.25(va)-.4 G 1.287(lid option or ar).25 F 1.287
(gument is supplied, or an error occurs)-.18 F(while setting a ne)144
256.8 Q 2.5(wl)-.25 G(imit.)-2.5 E F1(umask)108 273.6 Q F0([)2.5 E F1
352.8 Q 2.5(wl)-.25 G(imit.)-2.5 E F1(umask)108 369.6 Q F0([)2.5 E F1
<ad70>A F0 2.5(][)C F1<ad53>-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A .2
(The user \214le-creation mask is set to)144 285.6 R F2(mode)2.7 E F0
(The user \214le-creation mask is set to)144 381.6 R F2(mode)2.7 E F0
5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2
(gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\
therwise it is interpreted as a symbolic mode mask similar to that acce\
pted by)144 297.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
309.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
pted by)144 393.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
405.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
(alue of the mask is printed.)-.25 F(The)5.382 E F1<ad53>2.882 E F0 .382
(option causes the mask to be)2.882 F .547
(printed in symbolic form; the def)144 321.6 R .547
(printed in symbolic form; the def)144 417.6 R .547
(ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G
(he)-3.047 E F1<ad70>3.047 E F0 .547(option is supplied, and)3.047 F F2
(mode)144.38 333.6 Q F0 .552
(mode)144.38 429.6 Q F0 .552
(is omitted, the output is in a form that may be reused as input.)3.232
F .551(The return status is 0 if the)5.551 F(mode w)144 345.6 Q
F .551(The return status is 0 if the)5.551 F(mode w)144 441.6 Q
(as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E
(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1
(unalias)108 362.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0
(...])2.5 E(Remo)144 374.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name)
(unalias)108 458.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0
(...])2.5 E(Remo)144 470.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name)
4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E
F1<ad61>4.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155
F(remo)144 386.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E
F(remo)144 482.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E
(alue is true unless a supplied)-.25 E F2(name)2.86 E F0
(is not a de\214ned alias.)2.68 E F1(unset)108 403.2 Q F0<5bad>2.5 E F1
(fv)A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E -.15(Fo)144 415.2 S 3.107
(is not a de\214ned alias.)2.68 E F1(unset)108 499.2 Q F0<5bad>2.5 E F1
(fv)A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E -.15(Fo)144 511.2 S 3.107
(re).15 G(ach)-3.107 E F2(name)3.107 E F0 3.107(,r).18 G(emo)-3.107 E
.907 -.15(ve t)-.15 H .607(he corresponding v).15 F .607
(ariable or function.)-.25 F .606(If no options are supplied, or the)
5.607 F F1<ad76>144 427.2 Q F0 .304(option is gi)2.804 F -.15(ve)-.25 G
5.607 F F1<ad76>144 523.2 Q F0 .304(option is gi)2.804 F -.15(ve)-.25 G
.304(n, each).15 F F2(name)3.164 E F0 .305(refers to a shell v)2.985 F
2.805(ariable. Read-only)-.25 F -.25(va)2.805 G .305
(riables may not be unset.).25 F(If)5.305 E F1<ad66>144 439.2 Q F0 .46
(riables may not be unset.).25 F(If)5.305 E F1<ad66>144 535.2 Q F0 .46
(is speci\214ed, each)2.96 F F2(name)3.32 E F0 .459
(refers to a shell function, and the function de\214nition is remo)3.14
F -.15(ve)-.15 G 2.959(d. Each).15 F .902(unset v)144 451.2 R .902
F -.15(ve)-.15 G 2.959(d. Each).15 F .902(unset v)144 547.2 R .902
(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.402(df).15 G .902
(rom the en)-3.402 F .903(vironment passed to subsequent commands.)-.4 F
(If)5.903 E(an)144 463.2 Q 6.916(yo)-.15 G(f)-6.916 E/F3 9/Times-Bold@0
(If)5.903 E(an)144 559.2 Q 6.916(yo)-.15 G(f)-6.916 E/F3 9/Times-Bold@0
SF(COMP_W)6.916 E(ORDBREAKS)-.09 E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)
6.665 E F4(,)A F3(SECONDS)6.665 E F4(,)A F3(LINENO)6.665 E F4(,)A F3
(HISTCMD)6.665 E F4(,)A F3(FUNCN)6.665 E(AME)-.18 E F4(,)A F3(GR)144
475.2 Q(OUPS)-.27 E F4(,)A F0(or)2.522 E F3(DIRST)2.772 E -.495(AC)-.81
571.2 Q(OUPS)-.27 E F4(,)A F0(or)2.522 E F3(DIRST)2.772 E -.495(AC)-.81
G(K).495 E F0 .272(are unset, the)2.522 F 2.772(yl)-.15 G .272
(ose their special properties, e)-2.772 F -.15(ve)-.25 G 2.772(ni).15 G
2.772(ft)-2.772 G(he)-2.772 E 2.773(ya)-.15 G .273(re subsequently)
-2.773 F 2.5(reset. The)144 487.2 R -.15(ex)2.5 G
-2.773 F 2.5(reset. The)144 583.2 R -.15(ex)2.5 G
(it status is true unless a).15 E F2(name)2.86 E F0(is readonly)2.68 E
(.)-.65 E F1(wait)108 504 Q F0([)2.5 E F2 2.5(n.)C(..)-2.5 E F0(])A -.8
(Wa)144 516 S .288
(.)-.65 E F1(wait)108 600 Q F0([)2.5 E F2 2.5(n.)C(..)-2.5 E F0(])A -.8
(Wa)144 612 S .288
(it for each speci\214ed process and return its termination status.).8 F
(Each)5.288 E F2(n)3.148 E F0 .287(may be a process ID or a)3.028 F .722
(job speci\214cation; if a job spec is gi)144 528 R -.15(ve)-.25 G .722
(job speci\214cation; if a job spec is gi)144 624 R -.15(ve)-.25 G .722
(n, all processes in that job').15 F 3.222(sp)-.55 G .722(ipeline are w)
-3.222 F .722(aited for)-.1 F 5.722(.I)-.55 G(f)-5.722 E F2(n)3.583 E F0
(is)3.463 E 1.266(not gi)144 540 R -.15(ve)-.25 G 1.266
(is)3.463 E 1.266(not gi)144 636 R -.15(ve)-.25 G 1.266
(n, all currently acti).15 F 1.566 -.15(ve c)-.25 H 1.265
(hild processes are w).15 F 1.265(aited for)-.1 F 3.765(,a)-.4 G 1.265
(nd the return status is zero.)-3.765 F(If)6.265 E F2(n)4.125 E F0 .456
(speci\214es a non-e)144 552 R .457
(speci\214es a non-e)144 648 R .457
(xistent process or job, the return status is 127.)-.15 F .457
(Otherwise, the return status is the)5.457 F -.15(ex)144 564 S
(Otherwise, the return status is the)5.457 F -.15(ex)144 660 S
(it status of the last process or job w).15 E(aited for)-.1 E(.)-.55 E
/F5 10.95/Times-Bold@0 SF(SEE ALSO)72 580.8 Q F0(bash\(1\), sh\(1\))108
592.8 Q(GNU Bash-4.0)72 768 Q(2004 Apr 20)148.735 E(21)198.725 E 0 Cg EP
/F5 10.95/Times-Bold@0 SF(SEE ALSO)72 676.8 Q F0(bash\(1\), sh\(1\))108
688.8 Q(GNU Bash-4.0)72 768 Q(2004 Apr 20)148.735 E(21)198.725 E 0 Cg EP
%%Trailer
end
%%EOF
+1 -1
View File
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.19.2
%%CreationDate: Mon Jun 7 16:18:58 2010
%%CreationDate: Tue Jun 29 14:02:44 2010
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%DocumentSuppliedResources: procset grops 1.19 2
+4 -3
View File
@@ -2,9 +2,10 @@
Copyright (C) 1988-2010 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Sat Jun 12 15:35:23 EDT 2010
@set LASTCHANGE Fri Jul 2 17:30:39 EDT 2010
@set EDITION 4.1
@set VERSION 4.1
@set UPDATED 12 June 2010
@set UPDATED-MONTH June 2010
@set UPDATED 2 July 2010
@set UPDATED-MONTH July 2010
+3 -3
View File
@@ -2,9 +2,9 @@
Copyright (C) 1988-2010 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Sun May 30 17:03:21 EDT 2010
@set LASTCHANGE Sat Jun 12 15:35:23 EDT 2010
@set EDITION 4.1
@set VERSION 4.1
@set UPDATED 30 May 2010
@set UPDATED-MONTH May 2010
@set UPDATED 12 June 2010
@set UPDATED-MONTH June 2010
+70
View File
@@ -98,6 +98,7 @@ extern int errno;
# include "bashhist.h"
#endif
extern int dollar_dollar_pid;
extern int posixly_correct;
extern int expand_aliases;
extern int autocd;
@@ -275,6 +276,8 @@ static int line_number_for_err_trap;
int funcnest = 0;
int funcnest_max = 0; /* XXX - bash-4.2 */
int lastpipe_opt = 0;
struct fd_bitmap *current_fds_to_close = (struct fd_bitmap *)NULL;
#define FD_BITMAP_DEFAULT_SIZE 32
@@ -2070,6 +2073,22 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
}
#endif
static void
restore_stdin (s)
int s;
{
dup2 (s, 0);
close (s);
}
/* Catch-all cleanup function for lastpipe code for unwind-protects */
static void
lastpipe_cleanup (s)
int s;
{
unfreeze_jobs_list ();
}
static int
execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
COMMAND *command;
@@ -2077,8 +2096,10 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
struct fd_bitmap *fds_to_close;
{
int prev, fildes[2], new_bitmap_size, dummyfd, ignore_return, exec_result;
int lstdin, lastpipe_flag, lastpipe_jid;
COMMAND *cmd;
struct fd_bitmap *fd_bitmap;
pid_t lastpid;
#if defined (JOB_CONTROL)
sigset_t set, oset;
@@ -2168,11 +2189,45 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
cmd = cmd->value.Connection->second;
}
lastpid = last_made_pid;
/* Now execute the rightmost command in the pipeline. */
if (ignore_return && cmd)
cmd->flags |= CMD_IGNORE_RETURN;
lastpipe_flag = 0;
begin_unwind_frame ("lastpipe-exec");
lstdin = -1;
/* If the `lastpipe' option is set with shopt, and job control is not
enabled, execute the last element of non-async pipelines in the
current shell environment. */
if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
{
lstdin = move_to_high_fd (0, 0, 255);
if (lstdin > 0)
{
do_piping (prev, pipe_out);
prev = NO_PIPE;
add_unwind_protect (restore_stdin, lstdin);
lastpipe_flag = 1;
freeze_jobs_list ();
lastpipe_jid = stop_pipeline (0, (COMMAND *)NULL); /* XXX */
add_unwind_protect (lastpipe_cleanup, lastpipe_jid);
}
cmd->flags |= CMD_LASTPIPE;
}
if (prev >= 0)
add_unwind_protect (close, prev);
/* XXX - might need to temporarily put shell process in pgrp of the pipeline,
so after we give the terminal to that process group in stop_pipeline, the
shell can still access it. Would need to give it to
jobs[lastpipe_jid]->pgrp */
exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
if (lstdin > 0)
restore_stdin (lstdin);
if (prev >= 0)
close (prev);
@@ -2181,6 +2236,21 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
#endif
QUIT;
if (lastpipe_flag)
{
#if defined (JOB_CONTROL)
append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid);
#endif
lstdin = wait_for (lastpid);
#if defined (JOB_CONTROL)
exec_result = job_exit_status (lastpipe_jid);
#endif
unfreeze_jobs_list ();
}
discard_unwind_frame ("lastpipe-exec");
return (exec_result);
}
+71 -1
View File
@@ -98,6 +98,7 @@ extern int errno;
# include "bashhist.h"
#endif
extern int dollar_dollar_pid;
extern int posixly_correct;
extern int expand_aliases;
extern int autocd;
@@ -275,6 +276,8 @@ static int line_number_for_err_trap;
int funcnest = 0;
int funcnest_max = 0; /* XXX - bash-4.2 */
int lastpipe_opt = 0;
struct fd_bitmap *current_fds_to_close = (struct fd_bitmap *)NULL;
#define FD_BITMAP_DEFAULT_SIZE 32
@@ -1548,7 +1551,7 @@ static struct cpelement *cpl_search __P((pid_t));
static struct cpelement *cpl_searchbyname __P((char *));
static void cpl_prune __P((void));
Coproc sh_coproc = { 0, NO_PID, -1, -1, 0, 0 };
Coproc sh_coproc = { 0, NO_PID, -1, -1, 0, 0, 0, 0 };
cplist_t coproc_list = {0, 0, 0};
@@ -2070,6 +2073,22 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
}
#endif
static void
restore_stdin (s)
int s;
{
dup2 (s, 0);
close (s);
}
/* Catch-all cleanup function for lastpipe code for unwind-protects */
static void
lastpipe_cleanup (s)
int s;
{
unfreeze_jobs_list ();
}
static int
execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
COMMAND *command;
@@ -2077,8 +2096,10 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
struct fd_bitmap *fds_to_close;
{
int prev, fildes[2], new_bitmap_size, dummyfd, ignore_return, exec_result;
int lstdin, lastpipe_flag, lastpipe_jid;
COMMAND *cmd;
struct fd_bitmap *fd_bitmap;
pid_t lastpid;
#if defined (JOB_CONTROL)
sigset_t set, oset;
@@ -2168,11 +2189,45 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
cmd = cmd->value.Connection->second;
}
lastpid = last_made_pid;
/* Now execute the rightmost command in the pipeline. */
if (ignore_return && cmd)
cmd->flags |= CMD_IGNORE_RETURN;
lastpipe_flag = 0;
begin_unwind_frame ("lastpipe-exec");
lstdin = -1;
/* If the `lastpipe' option is set with shopt, and job control is not
enabled, execute the last element of non-async pipelines in the
current shell environment. */
if (lastpipe_opt && job_control == 0 && asynchronous == 0 && pipe_out == NO_PIPE && prev > 0)
{
lstdin = move_to_high_fd (0, 0, 255);
if (lstdin > 0)
{
do_piping (prev, pipe_out);
prev = NO_PIPE;
add_unwind_protect (restore_stdin, lstdin);
lastpipe_flag = 1;
freeze_jobs_list ();
lastpipe_jid = stop_pipeline (0, (COMMAND *)NULL); /* XXX */
add_unwind_protect (lastpipe_cleanup, lastpipe_flag);
}
cmd->flags |= CMD_LASTPIPE;
}
if (prev >= 0)
add_unwind_protect (close, prev);
/* XXX - might need to temporarily put shell process in pgrp of the pipeline,
so after we give the terminal to that process group in stop_pipeline, the
shell can still access it. Would need to give it to
jobs[lastpipe_jid]->pgrp */
exec_result = execute_command_internal (cmd, asynchronous, prev, pipe_out, fds_to_close);
if (lstdin > 0)
restore_stdin (lstdin);
if (prev >= 0)
close (prev);
@@ -2181,6 +2236,21 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
#endif
QUIT;
if (lastpipe_flag)
{
#if defined (JOB_CONTROL)
append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid);
#endif
lstdin = wait_for (lastpid);
#if defined (JOB_CONTROL)
exec_result = job_exit_status (lastpipe_jid);
#endif
unfreeze_jobs_list ();
}
discard_unwind_frame ("lastpipe-exec");
return (exec_result);
}
+44 -11
View File
@@ -250,8 +250,6 @@ static int find_job __P((pid_t, int, PROCESS **));
static int print_job __P((JOB *, int, int, int));
static int process_exit_status __P((WAIT));
static int process_exit_signal __P((WAIT));
static int job_exit_status __P((int));
static int job_exit_signal __P((int));
static int set_job_status_and_cleanup __P((int));
static WAIT job_signal_status __P((int));
@@ -649,7 +647,7 @@ stop_pipeline (async, deferred)
stop_making_children ();
UNBLOCK_CHILD (oset);
return (js.j_current);
return (newjob ? i : js.j_current);
}
/* Functions to manage the list of exited background pids whose status has
@@ -1138,6 +1136,33 @@ add_process (name, pid)
}
}
/* Create a (dummy) PROCESS with NAME, PID, and STATUS, and make it the last
process in jobs[JID]->pipe. Used by the lastpipe code. */
void
append_process (name, pid, status, jid)
char *name;
pid_t pid;
int status;
int jid;
{
PROCESS *t, *p;
t = (PROCESS *)xmalloc (sizeof (PROCESS));
t->next = (PROCESS *)NULL;
t->pid = pid;
/* set process exit status using offset discovered by configure */
t->status = (status & 0xff) << WEXITSTATUS_OFFSET;
t->running = PS_DONE;
t->command = name;
js.c_reaped++; /* XXX */
for (p = jobs[jid]->pipe; p->next != jobs[jid]->pipe; p = p->next)
;
p->next = t;
t->next = jobs[jid]->pipe;
}
#if 0
/* Take the last job and make it the first job. Must be called with
SIGCHLD blocked. */
@@ -1712,10 +1737,10 @@ make_child (command, async_p)
/* Create the child, handle severe errors. Retry on EAGAIN. */
while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX)
{
#if 0 /* for bash-4.2 */
/* bash-4.2 */
/* If we can't create any children, try to reap some dead ones. */
waitchld (-1, 0);
#endif
sys_error ("fork: retry");
if (sleep (forksleep) != 0)
break;
@@ -2310,14 +2335,14 @@ raw_job_exit_status (job)
/* Return the exit status of job JOB. This is the exit status of the last
(rightmost) process in the job's pipeline, modified if the job was killed
by a signal or stopped. */
static int
int
job_exit_status (job)
int job;
{
return (process_exit_status (raw_job_exit_status (job)));
}
static int
int
job_exit_signal (job)
int job;
{
@@ -2552,11 +2577,13 @@ if (job == NO_JOB)
}
}
}
else if ((subshell_environment & SUBSHELL_COMSUB) && wait_sigint_received)
else if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PIPE)) && wait_sigint_received)
{
/* If waiting for a job in a subshell started to do command
substitution, simulate getting and being killed by the SIGINT to
pass the status back to our parent. */
substitution or to run a pipeline element that consists of
something like a while loop or a for loop, simulate getting
and being killed by the SIGINT to pass the status back to our
parent. */
s = job_signal_status (job);
if (WIFSIGNALED (s) && WTERMSIG (s) == SIGINT && signal_is_trapped (SIGINT) == 0)
@@ -4117,7 +4144,13 @@ itrace("mark_dead_jobs_as_notified: child_max = %d ndead = %d ndeadproc = %d", j
}
/* Here to allow other parts of the shell (like the trap stuff) to
unfreeze the jobs list. */
freeze and unfreeze the jobs list. */
void
freeze_jobs_list ()
{
jobs_list_frozen = 1;
}
void
unfreeze_jobs_list ()
{
+45 -11
View File
@@ -3,7 +3,7 @@
/* This file works with both POSIX and BSD systems. It implements job
control. */
/* Copyright (C) 1989-2009 Free Software Foundation, Inc.
/* Copyright (C) 1989-2010 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -250,8 +250,6 @@ static int find_job __P((pid_t, int, PROCESS **));
static int print_job __P((JOB *, int, int, int));
static int process_exit_status __P((WAIT));
static int process_exit_signal __P((WAIT));
static int job_exit_status __P((int));
static int job_exit_signal __P((int));
static int set_job_status_and_cleanup __P((int));
static WAIT job_signal_status __P((int));
@@ -649,7 +647,7 @@ stop_pipeline (async, deferred)
stop_making_children ();
UNBLOCK_CHILD (oset);
return (js.j_current);
return (newjob ? i : js.j_current);
}
/* Functions to manage the list of exited background pids whose status has
@@ -1138,6 +1136,33 @@ add_process (name, pid)
}
}
/* Create a (dummy) PROCESS with NAME, PID, and STATUS, and make it the last
process in jobs[JID]->pipe. Used by the lastpipe code. */
void
append_process (name, pid, status, jid)
char *name;
pid_t pid;
int status;
int jid;
{
PROCESS *t, *p;
t = (PROCESS *)xmalloc (sizeof (PROCESS));
t->next = (PROCESS *)NULL;
t->pid = pid;
/* set process exit status using offset discovered by configure */
t->status = (status & 0xff) << WEXITSTATUS_OFFSET;
t->running = PS_DONE;
t->command = name;
js.c_reaped++; /* XXX */
for (p = jobs[jid]->pipe; p->next != jobs[jid]->pipe; p = p->next)
;
p->next = t;
t->next = jobs[jid]->pipe;
}
#if 0
/* Take the last job and make it the first job. Must be called with
SIGCHLD blocked. */
@@ -1712,7 +1737,7 @@ make_child (command, async_p)
/* Create the child, handle severe errors. Retry on EAGAIN. */
while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX)
{
#if 0 /* for bash-4.2 */
#if 1 /* bash-4.2 */
/* If we can't create any children, try to reap some dead ones. */
waitchld (-1, 0);
#endif
@@ -2293,6 +2318,7 @@ raw_job_exit_status (job)
p = jobs[job]->pipe;
do
{
/* XXX - should this use WEXITSTATUS? */
if (WSTATUS (p->status) != EXECUTION_SUCCESS)
fail = WSTATUS(p->status);
p = p->next;
@@ -2310,14 +2336,14 @@ raw_job_exit_status (job)
/* Return the exit status of job JOB. This is the exit status of the last
(rightmost) process in the job's pipeline, modified if the job was killed
by a signal or stopped. */
static int
int
job_exit_status (job)
int job;
{
return (process_exit_status (raw_job_exit_status (job)));
}
static int
int
job_exit_signal (job)
int job;
{
@@ -2552,11 +2578,13 @@ if (job == NO_JOB)
}
}
}
else if ((subshell_environment & SUBSHELL_COMSUB) && wait_sigint_received)
else if ((subshell_environment & (SUBSHELL_COMSUB|SUBSHELL_PIPE)) && wait_sigint_received)
{
/* If waiting for a job in a subshell started to do command
substitution, simulate getting and being killed by the SIGINT to
pass the status back to our parent. */
substitution or to run a pipeline element that consists of
something like a while loop or a for loop, simulate getting
and being killed by the SIGINT to pass the status back to our
parent. */
s = job_signal_status (job);
if (WIFSIGNALED (s) && WTERMSIG (s) == SIGINT && signal_is_trapped (SIGINT) == 0)
@@ -4117,7 +4145,13 @@ itrace("mark_dead_jobs_as_notified: child_max = %d ndead = %d ndeadproc = %d", j
}
/* Here to allow other parts of the shell (like the trap stuff) to
unfreeze the jobs list. */
freeze and unfreeze the jobs list. */
void
freeze_jobs_list ()
{
jobs_list_frozen = 1;
}
void
unfreeze_jobs_list ()
{
+5
View File
@@ -177,6 +177,7 @@ extern void save_pipeline __P((int));
extern void restore_pipeline __P((int));
extern void start_pipeline __P((void));
extern int stop_pipeline __P((int, COMMAND *));
extern void append_process __P((char *, pid_t, int, int));
extern void delete_job __P((int, int));
extern void nohup_job __P((int));
@@ -208,6 +209,9 @@ extern pid_t make_child __P((char *, int));
extern int get_tty_state __P((void));
extern int set_tty_state __P((void));
extern int job_exit_status __P((int));
extern int job_exit_signal __P((int));
extern int wait_for_single_pid __P((pid_t));
extern void wait_for_background_pids __P((void));
extern int wait_for __P((pid_t));
@@ -223,6 +227,7 @@ extern int give_terminal_to __P((pid_t, int));
extern void run_sigchld_trap __P((int));
extern void freeze_jobs_list __P((void));
extern void unfreeze_jobs_list __P((void));
extern int set_job_control __P((int));
extern void without_job_control __P((void));
+249
View File
@@ -0,0 +1,249 @@
/* jobs.h -- structures and definitions used by the jobs.c file. */
/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#if !defined (_JOBS_H_)
# define _JOBS_H_
#include "quit.h"
#include "siglist.h"
#include "stdc.h"
#include "posixwait.h"
/* Defines controlling the fashion in which jobs are listed. */
#define JLIST_STANDARD 0
#define JLIST_LONG 1
#define JLIST_PID_ONLY 2
#define JLIST_CHANGED_ONLY 3
#define JLIST_NONINTERACTIVE 4
/* I looked it up. For pretty_print_job (). The real answer is 24. */
#define LONGEST_SIGNAL_DESC 24
/* The max time to sleep while retrying fork() on EAGAIN failure */
#define FORKSLEEP_MAX 16
/* We keep an array of jobs. Each entry in the array is a linked list
of processes that are piped together. The first process encountered is
the group leader. */
/* Values for the `running' field of a struct process. */
#define PS_DONE 0
#define PS_RUNNING 1
#define PS_STOPPED 2
#define PS_RECYCLED 4
/* Each child of the shell is remembered in a STRUCT PROCESS. A circular
chain of such structures is a pipeline. */
typedef struct process {
struct process *next; /* Next process in the pipeline. A circular chain. */
pid_t pid; /* Process ID. */
WAIT status; /* The status of this command as returned by wait. */
int running; /* Non-zero if this process is running. */
char *command; /* The particular program that is running. */
} PROCESS;
/* PALIVE really means `not exited' */
#define PSTOPPED(p) (WIFSTOPPED((p)->status))
#define PRUNNING(p) ((p)->running == PS_RUNNING)
#define PALIVE(p) (PRUNNING(p) || PSTOPPED(p))
#define PEXITED(p) ((p)->running == PS_DONE)
#if defined (RECYCLES_PIDS)
# define PRECYCLED(p) ((p)->running == PS_RECYCLED)
#else
# define PRECYCLED(p) (0)
#endif
#define PDEADPROC(p) (PEXITED(p) || PRECYCLED(p))
#define get_job_by_jid(ind) (jobs[(ind)])
/* A description of a pipeline's state. */
typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } JOB_STATE;
#define JOBSTATE(job) (jobs[(job)]->state)
#define J_JOBSTATE(j) ((j)->state)
#define STOPPED(j) (jobs[(j)]->state == JSTOPPED)
#define RUNNING(j) (jobs[(j)]->state == JRUNNING)
#define DEADJOB(j) (jobs[(j)]->state == JDEAD)
#define INVALID_JOB(j) ((j) < 0 || (j) >= js.j_jobslots || get_job_by_jid(j) == 0)
/* Values for the FLAGS field in the JOB struct below. */
#define J_FOREGROUND 0x01 /* Non-zero if this is running in the foreground. */
#define J_NOTIFIED 0x02 /* Non-zero if already notified about job state. */
#define J_JOBCONTROL 0x04 /* Non-zero if this job started under job control. */
#define J_NOHUP 0x08 /* Don't send SIGHUP to job if shell gets SIGHUP. */
#define J_STATSAVED 0x10 /* A process in this job had had status saved via $! */
#define J_ASYNC 0x20 /* Job was started asynchronously */
#define IS_FOREGROUND(j) ((jobs[j]->flags & J_FOREGROUND) != 0)
#define IS_NOTIFIED(j) ((jobs[j]->flags & J_NOTIFIED) != 0)
#define IS_JOBCONTROL(j) ((jobs[j]->flags & J_JOBCONTROL) != 0)
#define IS_ASYNC(j) ((jobs[j]->flags & J_ASYNC) != 0)
typedef struct job {
char *wd; /* The working directory at time of invocation. */
PROCESS *pipe; /* The pipeline of processes that make up this job. */
pid_t pgrp; /* The process ID of the process group (necessary). */
JOB_STATE state; /* The state that this job is in. */
int flags; /* Flags word: J_NOTIFIED, J_FOREGROUND, or J_JOBCONTROL. */
#if defined (JOB_CONTROL)
COMMAND *deferred; /* Commands that will execute when this job is done. */
sh_vptrfunc_t *j_cleanup; /* Cleanup function to call when job marked JDEAD */
PTR_T cleanarg; /* Argument passed to (*j_cleanup)() */
#endif /* JOB_CONTROL */
} JOB;
struct jobstats {
/* limits */
long c_childmax;
/* child process statistics */
int c_living; /* running or stopped child processes */
int c_reaped; /* exited child processes still in jobs list */
int c_injobs; /* total number of child processes in jobs list */
/* child process totals */
int c_totforked; /* total number of children this shell has forked */
int c_totreaped; /* total number of children this shell has reaped */
/* job counters and indices */
int j_jobslots; /* total size of jobs array */
int j_lastj; /* last (newest) job allocated */
int j_firstj; /* first (oldest) job allocated */
int j_njobs; /* number of non-NULL jobs in jobs array */
int j_ndead; /* number of JDEAD jobs in jobs array */
/* */
int j_current; /* current job */
int j_previous; /* previous job */
/* */
JOB *j_lastmade; /* last job allocated by stop_pipeline */
JOB *j_lastasync; /* last async job allocated by stop_pipeline */
};
struct pidstat {
struct pidstat *next;
pid_t pid;
int status;
};
struct bgpids {
struct pidstat *list;
struct pidstat *end;
int npid;
};
#define NO_JOB -1 /* An impossible job array index. */
#define DUP_JOB -2 /* A possible return value for get_job_spec (). */
#define BAD_JOBSPEC -3 /* Bad syntax for job spec. */
/* A value which cannot be a process ID. */
#define NO_PID (pid_t)-1
/* System calls. */
#if !defined (HAVE_UNISTD_H)
extern pid_t fork (), getpid (), getpgrp ();
#endif /* !HAVE_UNISTD_H */
/* Stuff from the jobs.c file. */
extern struct jobstats js;
extern pid_t original_pgrp, shell_pgrp, pipeline_pgrp;
extern pid_t last_made_pid, last_asynchronous_pid;
extern int asynchronous_notification;
extern JOB **jobs;
extern void making_children __P((void));
extern void stop_making_children __P((void));
extern void cleanup_the_pipeline __P((void));
extern void save_pipeline __P((int));
extern void restore_pipeline __P((int));
extern void start_pipeline __P((void));
extern int stop_pipeline __P((int, COMMAND *));
extern void append_process __P((char *, pid_t, int, int));
extern void delete_job __P((int, int));
extern void nohup_job __P((int));
extern void delete_all_jobs __P((int));
extern void nohup_all_jobs __P((int));
extern int count_all_jobs __P((void));
extern void terminate_current_pipeline __P((void));
extern void terminate_stopped_jobs __P((void));
extern void hangup_all_jobs __P((void));
extern void kill_current_pipeline __P((void));
#if defined (__STDC__) && defined (pid_t)
extern int get_job_by_pid __P((int, int));
extern void describe_pid __P((int));
#else
extern int get_job_by_pid __P((pid_t, int));
extern void describe_pid __P((pid_t));
#endif
extern void list_one_job __P((JOB *, int, int, int));
extern void list_all_jobs __P((int));
extern void list_stopped_jobs __P((int));
extern void list_running_jobs __P((int));
extern pid_t make_child __P((char *, int));
extern int get_tty_state __P((void));
extern int set_tty_state __P((void));
extern int job_exit_status __P((int));
extern int job_exit_signal __P((int));
extern int wait_for_single_pid __P((pid_t));
extern void wait_for_background_pids __P((void));
extern int wait_for __P((pid_t));
extern int wait_for_job __P((int));
extern void notify_and_cleanup __P((void));
extern void reap_dead_jobs __P((void));
extern int start_job __P((int, int));
extern int kill_pid __P((pid_t, int, int));
extern int initialize_job_control __P((int));
extern void initialize_job_signals __P((void));
extern int give_terminal_to __P((pid_t, int));
extern void run_sigchld_trap __P((int));
extern void unfreeze_jobs_list __P((void));
extern int set_job_control __P((int));
extern void without_job_control __P((void));
extern void end_job_control __P((void));
extern void restart_job_control __P((void));
extern void set_sigchld_handler __P((void));
extern void ignore_tty_job_signals __P((void));
extern void default_tty_job_signals __P((void));
extern void init_job_stats __P((void));
extern void close_pgrp_pipe __P((void));
extern void save_pgrp_pipe __P((int *, int));
extern void restore_pgrp_pipe __P((int *));
#if defined (JOB_CONTROL)
extern int job_control;
#endif
#endif /* _JOBS_H_ */
+5
View File
@@ -926,6 +926,11 @@ describe_pid (pid)
fprintf (stderr, "%ld\n", (long) pid);
}
void
freeze_jobs_list ()
{
}
void
unfreeze_jobs_list ()
{
+938
View File
@@ -0,0 +1,938 @@
/* nojobs.c - functions that make children, remember them, and handle their termination. */
/* This file works under BSD, System V, minix, and Posix systems. It does
not implement job control. */
/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "bashtypes.h"
#include "filecntl.h"
#if defined (HAVE_UNISTD_H)
# include <unistd.h>
#endif
#include <stdio.h>
#include <signal.h>
#include <errno.h>
#if defined (BUFFERED_INPUT)
# include "input.h"
#endif
/* Need to include this up here for *_TTY_DRIVER definitions. */
#include "shtty.h"
#include "bashintl.h"
#include "shell.h"
#include "jobs.h"
#include "execute_cmd.h"
#include "builtins/builtext.h" /* for wait_builtin */
#define DEFAULT_CHILD_MAX 32
#if defined (_POSIX_VERSION) || !defined (HAVE_KILLPG)
# define killpg(pg, sig) kill(-(pg),(sig))
#endif /* USG || _POSIX_VERSION */
#if !defined (HAVE_SIGINTERRUPT) && !defined (HAVE_POSIX_SIGNALS)
# define siginterrupt(sig, code)
#endif /* !HAVE_SIGINTERRUPT && !HAVE_POSIX_SIGNALS */
#if defined (HAVE_WAITPID)
# define WAITPID(pid, statusp, options) waitpid (pid, statusp, options)
#else
# define WAITPID(pid, statusp, options) wait (statusp)
#endif /* !HAVE_WAITPID */
/* Return the fd from which we are actually getting input. */
#define input_tty() (shell_tty != -1) ? shell_tty : fileno (stderr)
#if !defined (errno)
extern int errno;
#endif /* !errno */
extern int interactive, interactive_shell, login_shell;
extern int subshell_environment;
extern int last_command_exit_value, last_command_exit_signal;
extern int interrupt_immediately;
extern sh_builtin_func_t *this_shell_builtin;
#if defined (HAVE_POSIX_SIGNALS)
extern sigset_t top_level_mask;
#endif
extern procenv_t wait_intr_buf;
extern int wait_signal_received;
pid_t last_made_pid = NO_PID;
pid_t last_asynchronous_pid = NO_PID;
/* Call this when you start making children. */
int already_making_children = 0;
/* The controlling tty for this shell. */
int shell_tty = -1;
/* If this is non-zero, $LINES and $COLUMNS are reset after every process
exits from get_tty_state(). */
int check_window_size;
/* STATUS and FLAGS are only valid if pid != NO_PID
STATUS is only valid if (flags & PROC_RUNNING) == 0 */
struct proc_status {
pid_t pid;
int status; /* Exit status of PID or 128 + fatal signal number */
int flags;
};
/* Values for proc_status.flags */
#define PROC_RUNNING 0x01
#define PROC_NOTIFIED 0x02
#define PROC_ASYNC 0x04
#define PROC_SIGNALED 0x10
/* Return values from find_status_by_pid */
#define PROC_BAD -1
#define PROC_STILL_ALIVE -2
static struct proc_status *pid_list = (struct proc_status *)NULL;
static int pid_list_size;
static int wait_sigint_received;
static long child_max = -1L;
static void alloc_pid_list __P((void));
static int find_proc_slot __P((void));
static int find_index_by_pid __P((pid_t));
static int find_status_by_pid __P((pid_t));
static int process_exit_status __P((WAIT));
static int find_termsig_by_pid __P((pid_t));
static int get_termsig __P((WAIT));
static void set_pid_status __P((pid_t, WAIT));
static void set_pid_flags __P((pid_t, int));
static void unset_pid_flags __P((pid_t, int));
static int get_pid_flags __P((pid_t));
static void add_pid __P((pid_t, int));
static void mark_dead_jobs_as_notified __P((int));
static sighandler wait_sigint_handler __P((int));
static char *j_strsignal __P((int));
#if defined (HAVE_WAITPID)
static void reap_zombie_children __P((void));
#endif
#if !defined (HAVE_SIGINTERRUPT) && defined (HAVE_POSIX_SIGNALS)
static int siginterrupt __P((int, int));
#endif
static void restore_sigint_handler __P((void));
/* Allocate new, or grow existing PID_LIST. */
static void
alloc_pid_list ()
{
register int i;
int old = pid_list_size;
pid_list_size += 10;
pid_list = (struct proc_status *)xrealloc (pid_list, pid_list_size * sizeof (struct proc_status));
/* None of the newly allocated slots have process id's yet. */
for (i = old; i < pid_list_size; i++)
pid_list[i].pid = NO_PID;
}
/* Return the offset within the PID_LIST array of an empty slot. This can
create new slots if all of the existing slots are taken. */
static int
find_proc_slot ()
{
register int i;
for (i = 0; i < pid_list_size; i++)
if (pid_list[i].pid == NO_PID)
return (i);
if (i == pid_list_size)
alloc_pid_list ();
return (i);
}
/* Return the offset within the PID_LIST array of a slot containing PID,
or the value NO_PID if the pid wasn't found. */
static int
find_index_by_pid (pid)
pid_t pid;
{
register int i;
for (i = 0; i < pid_list_size; i++)
if (pid_list[i].pid == pid)
return (i);
return (NO_PID);
}
/* Return the status of PID as looked up in the PID_LIST array. A
return value of PROC_BAD indicates that PID wasn't found. */
static int
find_status_by_pid (pid)
pid_t pid;
{
int i;
i = find_index_by_pid (pid);
if (i == NO_PID)
return (PROC_BAD);
if (pid_list[i].flags & PROC_RUNNING)
return (PROC_STILL_ALIVE);
return (pid_list[i].status);
}
static int
process_exit_status (status)
WAIT status;
{
if (WIFSIGNALED (status))
return (128 + WTERMSIG (status));
else
return (WEXITSTATUS (status));
}
/* Return the status of PID as looked up in the PID_LIST array. A
return value of PROC_BAD indicates that PID wasn't found. */
static int
find_termsig_by_pid (pid)
pid_t pid;
{
int i;
i = find_index_by_pid (pid);
if (i == NO_PID)
return (0);
if (pid_list[i].flags & PROC_RUNNING)
return (0);
return (get_termsig ((WAIT)pid_list[i].status));
}
/* Set LAST_COMMAND_EXIT_SIGNAL depending on STATUS. If STATUS is -1, look
up PID in the pid array and set LAST_COMMAND_EXIT_SIGNAL appropriately
depending on its flags and exit status. */
static int
get_termsig (status)
WAIT status;
{
if (WIFSTOPPED (status) == 0 && WIFSIGNALED (status))
return (WTERMSIG (status));
else
return (0);
}
/* Give PID the status value STATUS in the PID_LIST array. */
static void
set_pid_status (pid, status)
pid_t pid;
WAIT status;
{
int slot;
#if defined (COPROCESS_SUPPORT)
coproc_pidchk (pid, status);
#endif
slot = find_index_by_pid (pid);
if (slot == NO_PID)
return;
pid_list[slot].status = process_exit_status (status);
pid_list[slot].flags &= ~PROC_RUNNING;
if (WIFSIGNALED (status))
pid_list[slot].flags |= PROC_SIGNALED;
/* If it's not a background process, mark it as notified so it gets
cleaned up. */
if ((pid_list[slot].flags & PROC_ASYNC) == 0)
pid_list[slot].flags |= PROC_NOTIFIED;
}
/* Give PID the flags FLAGS in the PID_LIST array. */
static void
set_pid_flags (pid, flags)
pid_t pid;
int flags;
{
int slot;
slot = find_index_by_pid (pid);
if (slot == NO_PID)
return;
pid_list[slot].flags |= flags;
}
/* Unset FLAGS for PID in the pid list */
static void
unset_pid_flags (pid, flags)
pid_t pid;
int flags;
{
int slot;
slot = find_index_by_pid (pid);
if (slot == NO_PID)
return;
pid_list[slot].flags &= ~flags;
}
/* Return the flags corresponding to PID in the PID_LIST array. */
static int
get_pid_flags (pid)
pid_t pid;
{
int slot;
slot = find_index_by_pid (pid);
if (slot == NO_PID)
return 0;
return (pid_list[slot].flags);
}
static void
add_pid (pid, async)
pid_t pid;
int async;
{
int slot;
slot = find_proc_slot ();
pid_list[slot].pid = pid;
pid_list[slot].status = -1;
pid_list[slot].flags = PROC_RUNNING;
if (async)
pid_list[slot].flags |= PROC_ASYNC;
}
static void
mark_dead_jobs_as_notified (force)
int force;
{
register int i, ndead;
/* first, count the number of non-running async jobs if FORCE == 0 */
for (i = ndead = 0; force == 0 && i < pid_list_size; i++)
{
if (pid_list[i].pid == NO_PID)
continue;
if (((pid_list[i].flags & PROC_RUNNING) == 0) &&
(pid_list[i].flags & PROC_ASYNC))
ndead++;
}
if (child_max < 0)
child_max = getmaxchild ();
if (child_max < 0)
child_max = DEFAULT_CHILD_MAX;
if (force == 0 && ndead <= child_max)
return;
/* If FORCE == 0, we just mark as many non-running async jobs as notified
to bring us under the CHILD_MAX limit. */
for (i = 0; i < pid_list_size; i++)
{
if (pid_list[i].pid == NO_PID)
continue;
if (((pid_list[i].flags & PROC_RUNNING) == 0) &&
pid_list[i].pid != last_asynchronous_pid)
{
pid_list[i].flags |= PROC_NOTIFIED;
if (force == 0 && (pid_list[i].flags & PROC_ASYNC) && --ndead <= child_max)
break;
}
}
}
/* Remove all dead, notified jobs from the pid_list. */
int
cleanup_dead_jobs ()
{
register int i;
#if defined (HAVE_WAITPID)
reap_zombie_children ();
#endif
for (i = 0; i < pid_list_size; i++)
{
if ((pid_list[i].flags & PROC_RUNNING) == 0 &&
(pid_list[i].flags & PROC_NOTIFIED))
pid_list[i].pid = NO_PID;
}
#if defined (COPROCESS_SUPPORT)
coproc_reap ();
#endif
return 0;
}
void
reap_dead_jobs ()
{
mark_dead_jobs_as_notified (0);
cleanup_dead_jobs ();
}
/* Initialize the job control mechanism, and set up the tty stuff. */
initialize_job_control (force)
int force;
{
shell_tty = fileno (stderr);
if (interactive)
get_tty_state ();
}
/* Setup this shell to handle C-C, etc. */
void
initialize_job_signals ()
{
set_signal_handler (SIGINT, sigint_sighandler);
/* If this is a login shell we don't wish to be disturbed by
stop signals. */
if (login_shell)
ignore_tty_job_signals ();
}
#if defined (HAVE_WAITPID)
/* Collect the status of all zombie children so that their system
resources can be deallocated. */
static void
reap_zombie_children ()
{
# if defined (WNOHANG)
pid_t pid;
WAIT status;
CHECK_TERMSIG;
while ((pid = waitpid (-1, (int *)&status, WNOHANG)) > 0)
set_pid_status (pid, status);
# endif /* WNOHANG */
CHECK_TERMSIG;
}
#endif /* WAITPID */
#if !defined (HAVE_SIGINTERRUPT) && defined (HAVE_POSIX_SIGNALS)
static int
siginterrupt (sig, flag)
int sig, flag;
{
struct sigaction act;
sigaction (sig, (struct sigaction *)NULL, &act);
if (flag)
act.sa_flags &= ~SA_RESTART;
else
act.sa_flags |= SA_RESTART;
return (sigaction (sig, &act, (struct sigaction *)NULL));
}
#endif /* !HAVE_SIGINTERRUPT && HAVE_POSIX_SIGNALS */
/* Fork, handling errors. Returns the pid of the newly made child, or 0.
COMMAND is just for remembering the name of the command; we don't do
anything else with it. ASYNC_P says what to do with the tty. If
non-zero, then don't give it away. */
pid_t
make_child (command, async_p)
char *command;
int async_p;
{
pid_t pid;
int forksleep;
/* Discard saved memory. */
if (command)
free (command);
start_pipeline ();
#if defined (BUFFERED_INPUT)
/* If default_buffered_input is active, we are reading a script. If
the command is asynchronous, we have already duplicated /dev/null
as fd 0, but have not changed the buffered stream corresponding to
the old fd 0. We don't want to sync the stream in this case. */
if (default_buffered_input != -1 && (!async_p || default_buffered_input > 0))
sync_buffered_stream (default_buffered_input);
#endif /* BUFFERED_INPUT */
/* Create the child, handle severe errors. Retry on EAGAIN. */
forksleep = 1;
while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX)
{
sys_error ("fork: retry");
#if defined (HAVE_WAITPID)
/* Posix systems with a non-blocking waitpid () system call available
get another chance after zombies are reaped. */
reap_zombie_children ();
if (forksleep > 1 && sleep (forksleep) != 0)
break;
#else
if (sleep (forksleep) != 0)
break;
#endif /* HAVE_WAITPID */
forksleep <<= 1;
}
if (pid < 0)
{
sys_error ("fork");
throw_to_top_level ();
}
if (pid == 0)
{
#if defined (BUFFERED_INPUT)
unset_bash_input (0);
#endif /* BUFFERED_INPUT */
#if defined (HAVE_POSIX_SIGNALS)
/* Restore top-level signal mask. */
sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL);
#endif
#if 0
/* Ignore INT and QUIT in asynchronous children. */
if (async_p)
last_asynchronous_pid = getpid ();
#endif
default_tty_job_signals ();
}
else
{
/* In the parent. */
last_made_pid = pid;
if (async_p)
last_asynchronous_pid = pid;
add_pid (pid, async_p);
}
return (pid);
}
void
ignore_tty_job_signals ()
{
#if defined (SIGTSTP)
set_signal_handler (SIGTSTP, SIG_IGN);
set_signal_handler (SIGTTIN, SIG_IGN);
set_signal_handler (SIGTTOU, SIG_IGN);
#endif
}
void
default_tty_job_signals ()
{
#if defined (SIGTSTP)
set_signal_handler (SIGTSTP, SIG_DFL);
set_signal_handler (SIGTTIN, SIG_DFL);
set_signal_handler (SIGTTOU, SIG_DFL);
#endif
}
/* Wait for a single pid (PID) and return its exit status. Called by
the wait builtin. */
int
wait_for_single_pid (pid)
pid_t pid;
{
pid_t got_pid;
WAIT status;
int pstatus, flags;
pstatus = find_status_by_pid (pid);
if (pstatus == PROC_BAD)
{
internal_error (_("wait: pid %ld is not a child of this shell"), (long)pid);
return (127);
}
if (pstatus != PROC_STILL_ALIVE)
{
if (pstatus > 128)
last_command_exit_signal = find_termsig_by_pid (pid);
return (pstatus);
}
siginterrupt (SIGINT, 1);
while ((got_pid = WAITPID (pid, &status, 0)) != pid)
{
CHECK_TERMSIG;
if (got_pid < 0)
{
if (errno != EINTR && errno != ECHILD)
{
siginterrupt (SIGINT, 0);
sys_error ("wait");
}
break;
}
else if (got_pid > 0)
set_pid_status (got_pid, status);
}
if (got_pid > 0)
{
set_pid_status (got_pid, status);
set_pid_flags (got_pid, PROC_NOTIFIED);
}
siginterrupt (SIGINT, 0);
QUIT;
return (got_pid > 0 ? process_exit_status (status) : -1);
}
/* Wait for all of the shell's children to exit. Called by the `wait'
builtin. */
void
wait_for_background_pids ()
{
pid_t got_pid;
WAIT status;
/* If we aren't using job control, we let the kernel take care of the
bookkeeping for us. wait () will return -1 and set errno to ECHILD
when there are no more unwaited-for child processes on both
4.2 BSD-based and System V-based systems. */
siginterrupt (SIGINT, 1);
/* Wait for ECHILD */
while ((got_pid = WAITPID (-1, &status, 0)) != -1)
set_pid_status (got_pid, status);
if (errno != EINTR && errno != ECHILD)
{
siginterrupt (SIGINT, 0);
sys_error("wait");
}
siginterrupt (SIGINT, 0);
QUIT;
mark_dead_jobs_as_notified (1);
cleanup_dead_jobs ();
}
/* Make OLD_SIGINT_HANDLER the SIGINT signal handler. */
#define INVALID_SIGNAL_HANDLER (SigHandler *)wait_for_background_pids
static SigHandler *old_sigint_handler = INVALID_SIGNAL_HANDLER;
static void
restore_sigint_handler ()
{
if (old_sigint_handler != INVALID_SIGNAL_HANDLER)
{
set_signal_handler (SIGINT, old_sigint_handler);
old_sigint_handler = INVALID_SIGNAL_HANDLER;
}
}
/* Handle SIGINT while we are waiting for children in a script to exit.
All interrupts are effectively ignored by the shell, but allowed to
kill a running job. */
static sighandler
wait_sigint_handler (sig)
int sig;
{
SigHandler *sigint_handler;
/* If we got a SIGINT while in `wait', and SIGINT is trapped, do
what POSIX.2 says (see builtins/wait.def for more info). */
if (this_shell_builtin && this_shell_builtin == wait_builtin &&
signal_is_trapped (SIGINT) &&
((sigint_handler = trap_to_sighandler (SIGINT)) == trap_handler))
{
last_command_exit_value = EXECUTION_FAILURE;
restore_sigint_handler ();
interrupt_immediately = 0;
trap_handler (SIGINT); /* set pending_traps[SIGINT] */
wait_signal_received = SIGINT;
longjmp (wait_intr_buf, 1);
}
if (interrupt_immediately)
{
last_command_exit_value = EXECUTION_FAILURE;
restore_sigint_handler ();
ADDINTERRUPT;
QUIT;
}
wait_sigint_received = 1;
SIGRETURN (0);
}
static char *
j_strsignal (s)
int s;
{
static char retcode_name_buffer[64] = { '\0' };
char *x;
x = strsignal (s);
if (x == 0)
{
x = retcode_name_buffer;
sprintf (x, "Signal %d", s);
}
return x;
}
/* Wait for pid (one of our children) to terminate. This is called only
by the execution code in execute_cmd.c. */
int
wait_for (pid)
pid_t pid;
{
int return_val, pstatus;
pid_t got_pid;
WAIT status;
pstatus = find_status_by_pid (pid);
if (pstatus == PROC_BAD)
return (0);
if (pstatus != PROC_STILL_ALIVE)
{
if (pstatus > 128)
last_command_exit_signal = find_termsig_by_pid (pid);
return (pstatus);
}
/* If we are running a script, ignore SIGINT while we're waiting for
a child to exit. The loop below does some of this, but not all. */
wait_sigint_received = 0;
if (interactive_shell == 0)
old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
while ((got_pid = WAITPID (-1, &status, 0)) != pid) /* XXX was pid now -1 */
{
CHECK_TERMSIG;
if (got_pid < 0 && errno == ECHILD)
{
#if !defined (_POSIX_VERSION)
status.w_termsig = status.w_retcode = 0;
#else
status = 0;
#endif /* _POSIX_VERSION */
break;
}
else if (got_pid < 0 && errno != EINTR)
programming_error ("wait_for(%ld): %s", (long)pid, strerror(errno));
else if (got_pid > 0)
set_pid_status (got_pid, status);
}
if (got_pid > 0)
set_pid_status (got_pid, status);
#if defined (HAVE_WAITPID)
if (got_pid >= 0)
reap_zombie_children ();
#endif /* HAVE_WAITPID */
if (interactive_shell == 0)
{
SigHandler *temp_handler;
temp_handler = old_sigint_handler;
restore_sigint_handler ();
/* If the job exited because of SIGINT, make sure the shell acts as if
it had received one also. */
if (WIFSIGNALED (status) && (WTERMSIG (status) == SIGINT))
{
if (maybe_call_trap_handler (SIGINT) == 0)
{
if (temp_handler == SIG_DFL)
termsig_handler (SIGINT);
else if (temp_handler != INVALID_SIGNAL_HANDLER && temp_handler != SIG_IGN)
(*temp_handler) (SIGINT);
}
}
}
/* Default return value. */
/* ``a full 8 bits of status is returned'' */
return_val = process_exit_status (status);
last_command_exit_signal = get_termsig (status);
#if !defined (DONT_REPORT_SIGPIPE)
if ((WIFSTOPPED (status) == 0) && WIFSIGNALED (status) &&
(WTERMSIG (status) != SIGINT))
#else
if ((WIFSTOPPED (status) == 0) && WIFSIGNALED (status) &&
(WTERMSIG (status) != SIGINT) && (WTERMSIG (status) != SIGPIPE))
#endif
{
fprintf (stderr, "%s", j_strsignal (WTERMSIG (status)));
if (WIFCORED (status))
fprintf (stderr, _(" (core dumped)"));
fprintf (stderr, "\n");
}
if (interactive_shell && subshell_environment == 0)
{
if (WIFSIGNALED (status) || WIFSTOPPED (status))
set_tty_state ();
else
get_tty_state ();
}
return (return_val);
}
/* Send PID SIGNAL. Returns -1 on failure, 0 on success. If GROUP is non-zero,
or PID is less than -1, then kill the process group associated with PID. */
int
kill_pid (pid, signal, group)
pid_t pid;
int signal, group;
{
int result;
if (pid < -1)
{
pid = -pid;
group = 1;
}
result = group ? killpg (pid, signal) : kill (pid, signal);
return (result);
}
static TTYSTRUCT shell_tty_info;
static int got_tty_state;
/* Fill the contents of shell_tty_info with the current tty info. */
get_tty_state ()
{
int tty;
tty = input_tty ();
if (tty != -1)
{
ttgetattr (tty, &shell_tty_info);
got_tty_state = 1;
if (check_window_size)
get_new_window_size (0, (int *)0, (int *)0);
}
}
/* Make the current tty use the state in shell_tty_info. */
int
set_tty_state ()
{
int tty;
tty = input_tty ();
if (tty != -1)
{
if (got_tty_state == 0)
return 0;
ttsetattr (tty, &shell_tty_info);
}
return 0;
}
/* Give the terminal to PGRP. */
give_terminal_to (pgrp, force)
pid_t pgrp;
int force;
{
}
/* Stop a pipeline. */
int
stop_pipeline (async, ignore)
int async;
COMMAND *ignore;
{
already_making_children = 0;
return 0;
}
void
start_pipeline ()
{
already_making_children = 1;
}
void
stop_making_children ()
{
already_making_children = 0;
}
int
get_job_by_pid (pid, block)
pid_t pid;
int block;
{
int i;
i = find_index_by_pid (pid);
return ((i == NO_PID) ? PROC_BAD : i);
}
/* Print descriptive information about the job with leader pid PID. */
void
describe_pid (pid)
pid_t pid;
{
fprintf (stderr, "%ld\n", (long) pid);
}
void
unfreeze_jobs_list ()
{
}
int
count_all_jobs ()
{
return 0;
}
+14
View File
@@ -2658,6 +2658,20 @@ static int
time_command_acceptable ()
{
#if defined (COMMAND_TIMING)
int i;
if (posixly_correct && shell_compatibility_level > 41)
{
/* Quick check of the rest of the line to find the next token. If it
begins with a `-', Posix says to not return `time' as the token.
This was interp 267. */
i = shell_input_line_index;
while (i < shell_input_line_len && (shell_input_line[i] == ' ' || shell_input_line[i] == '\t'))
i++;
if (shell_input_line[i] == '-')
return 0;
}
switch (last_read_token)
{
case 0:
+11 -4
View File
@@ -2516,7 +2516,6 @@ yylex ()
if ((parser_state & PST_EOFTOKEN) && current_token == shell_eof_token)
{
current_token = yacc_EOF;
itrace("read_token: read shell_eof_token, returning yacc_EOF");
if (bash_input.type == st_string)
rewind_input_string ();
}
@@ -2659,6 +2658,17 @@ static int
time_command_acceptable ()
{
#if defined (COMMAND_TIMING)
int c, i;
if (posixly_correct && shell_compatibility_level > 41)
{
i = shell_input_line_index;
while (i < shell_input_line_len && (shell_input_line[i] == ' ' || shell_input_line[i] == '\t'))
i++;
if (shell_input_line[i] == '-')
return 0;
}
switch (last_read_token)
{
case 0:
@@ -4741,9 +4751,6 @@ got_token:
break;
}
if (result == WORD)
itrace("read_token: returning WORD: `%s'", yylval.word->word);
return (result);
}
+620 -4
View File
@@ -8,8 +8,8 @@ msgstr ""
"Project-Id-Version: bash 4.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-12-30 08:25-0500\n"
"PO-Revision-Date: 2010-06-24 16:27+0800\n"
"Last-Translator: Alyex.ye <alyex.ye@gmail.com>\n"
"PO-Revision-Date: 2010-06-29 10:16+0800\n"
"Last-Translator: Alex Ye <alyex.ye@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@@ -3273,7 +3273,7 @@ msgstr ""
" -r\t限制仅输出运行中的任务\n"
" -s\t限制仅输出停止的任务\n"
" \n"
" 如果使用了 -x 选项,ARG 参数中的所有任务明会被替换为该任务\n"
" 如果使用了 -x 选项,ARG 参数中的所有任务明会被替换为该任务\n"
" 的进程组头领的进程号,然后执行 COMMAND 命令。\n"
" \n"
" 退出状态:\n"
@@ -3308,7 +3308,7 @@ msgstr ""
" -r\t仅删除运行中的任务\n"
" \n"
" 退出状态:\n"
" 返回成功除非使用了无效的选项或者 JOBSPEC 明。"
" 返回成功除非使用了无效的选项或者 JOBSPEC 明。"
#: builtins.c:898
msgid ""
@@ -3331,6 +3331,23 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
"向一个任务发送一个信号。\n"
" \n"
" 向以 PID 进程号或者 JOBSPEC 任务声明指定的进程发送一个以\n"
" SIGSPEC 信号声明或 SIGNUM 信号编号命名的信号。如果没有指定\n"
" SIGSPEC 或 SIGNUM,那么假定发送 SIGTERM 信号。\n"
" \n"
" 选项:\n"
" -s sig\tSIG 是信号名称\n"
" -n sig\tSIG 是信号编号\n"
" -l\t列出信号名称;如果参数后跟 `-l'则被假设为信号编号,\n"
" \t而相应的信号名称会被列出\n"
" \n"
" Kill 成为 shell 内嵌有两个理由:它允许使用任务编号而不是进程号,\n"
" 并且在可以创建的进程数上限达到是允许进程被杀死。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者有错误发生。"
#: builtins.c:921
msgid ""
@@ -3457,6 +3474,42 @@ msgid ""
" The return code is zero, unless end-of-file is encountered, read times out,\n"
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"从标准输入读取一行并将其分为不同的域。\n"
" \n"
" 从标准输入读取单独的一行,或者如果使用了 -u 选项,从文件描\n"
" 述 FD 中读取。该行被分割成域,如同词语分割一样,并且\n"
" 第一个词被赋值给第一个 NAME 变量,第二个词被赋值给第二个\n"
" NAME 变量,如此继续,直到剩下所有的词被赋值给最后一个\n"
" NAME 变量。只有 $IFS 变量中的字符被认作是词语分隔符。\n"
" \n"
" 如果没有提供 NAME 变量,则读取的行被存放在 REPLY 变量中。\n"
" \n"
" 选项:\n"
" -a array\t将词语赋值给 ARRAY 数组变量的序列下标成员,从\n"
" \t\t零开始。\n"
" -d delim\t持续读取直到读入 DELIM 变量中的第一个字符,而不是\n"
" \t\t换行符\n"
" -e\t\t在一个交互式 shell 中使用 readline 获取行\n"
" -i text\t使用 TEXT 文本作为 readline 的初始文字\n"
" -n nchars\t读取 nchars 个字符之后返回,而不是等到读取\n"
" \t\t换行符,但是分隔符仍然有效,如果遇到分隔符之前读\n"
" \t\t取了不足 nchars 个字符\n"
" -N nchars\t在准确读取了 nchars 个字符之后返回,除非遇到\n"
" \t\t了文件结束符或者读超时,任何的分隔符都被忽略\n"
" -p prompt\t在尝试读取之前输出 PROMPT 提示符并且不带\n"
" \t\t换行符\n"
" -r\t\t不允许反斜杠转义任何字符\n"
" -s\t\t不显示终端的任何输入\n"
" -t timeout\t如果在 TIMEOUT 秒内没有读取一个完整的行则\n"
" \t\t超时并且返回失败。TMOUT 变量的值是默认的超时时间。\n"
" \t\tTIMEOUT 可以是小数。如果 TIMEOUT 是0,那么仅当在\n"
" \t\t指定的文件描述符上输入有效的时候,read 才返回成功。\n"
" \t\t如果超过了超时时间,则返回状态码大于128\n"
" -u fd\t\t从文件描述符 FD 中读取,而不是标准输入\n"
" \n"
" 退出状态:\n"
" 返回码为零,除非遇到了文件结束符,读超时,或者无效的文\n"
" 件描述符作为参数传递给了 -u 选项。"
#: builtins.c:1009
msgid ""
@@ -3558,6 +3611,81 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
msgstr ""
"设定或反设定 shell 选项和位置参数的值。\n"
" \n"
" 改变 shell 选项和位置参数的值,或者显示 shell 变量的\n"
" 名称和值。\n"
" \n"
" 选项:\n"
" -a 标记修改的或者创建的变量为导出。\n"
" -b 立即通告任务终结。\n"
" -e 如果一个命令以非零状态退出,则立即退出。\n"
" -f 禁用文件名生成(模式匹配)。\n"
" -h 当查询命令时记住它们的位置\n"
" -k 所有的赋值参数被放在命令的环境中,而不仅仅是\n"
" 命令名称之前的参数。\n"
" -m 启用任务控制。\n"
" -n 读取命令但不执行\n"
" -o 选项名\n"
" 设定与选项名对应的变量:\n"
" allexport 与 -a 相同\n"
" braceexpand 与 -B 相同\n"
" emacs 使用 emacs 风格的行编辑界面\n"
" errexit 与 -e 相同\n"
" errtrace 与 -E 相同\n"
" functrace 与 -T 相同\n"
" hashall 与 -h 相同\n"
" histexpand 与 -H 相同\n"
" history 启用命令历史\n"
" ignoreeof shell 读取文件结束符时不会退出\n"
" interactive-comments\n"
" 允许在交互式命令中显示注释\n"
" keyword 与 -k 相同\n"
" monitor 与 -m 相同\n"
" noclobber 与 -C 相同\n"
" noexec 与 -n 相同\n"
" noglob 与 -f 相同\n"
" nolog 目前可接受但是被忽略\n"
" notify 与-b 相同\n"
" nounset 与 -u 相同\n"
" onecmd 与 -t 相同\n"
" physical 与 -P 相同\n"
" pipefail 管道的返值是最后一个非零返回值的命令的返回结果,\n"
" 或者当所有命令都返回零是也为零。\n"
" posix 改变默认时和 Posix 标准不同的 bash 行为\n"
" 以匹配标准\n"
" privileged 与 -p 相同\n"
" verbose 与 -v 相同\n"
" vi 使用 vi 风格的行编辑界面\n"
" xtrace 与 -x 相同\n"
" -p 无论何时当真实的有效的用户身份不匹配时打开。\n"
" 禁用对 $ENV 文件的处理以及导入 shell 函数。\n"
" 关闭此选项会导致有效的用户编号和组编号设定\n"
" 为真实的用户编号和组编号\n"
" -t 读取并执行一个命令之后退出。\n"
" -u 替换时将为设定的变量当作错误对待。\n"
" -v 读取 shell 输入行时将它们打印。\n"
" -x 执行命令时打印它们以及参数。\n"
" -B shell 将执行花括号扩展。\n"
" -C 设定之后禁止以重定向输出的方式覆盖常\n"
" 规文件。\n"
" -E 设定之后 ERR 陷阱会被 shell 函数继承。\n"
" -H 启用 ! 风格的历史替换。当 shell 是交互式的\n"
" 时候这个标识位默认打开。\n"
" -P 设定之后类似 cd 的会改变当前目录的命令不\n"
" 追踪符号链接。\n"
" -T 设定之后 DEBUG 陷阱会被 shell 函数继承。\n"
" - 任何剩余的参数会被赋值给位置参数。\n"
" -x 和 -v 选项已关闭。\n"
" \n"
" 使用 + 而不是 - 会使标志位被关闭。标志位也可以在\n"
" shell 被启动时使用。当前的标志位设定可以在 $- 变\n"
" 量中找到。剩余的 ARG 参数是位置参数并且是按照\n"
" $1, $2, .. $n 的顺序被赋值的。如果没有给定 ARG\n"
" 参数,则打印所有的 shell 变量。\n"
" \n"
" 退出状态:\n"
" 返回成功除非使用了无效的参数。"
#: builtins.c:1104
msgid ""
@@ -3577,6 +3705,21 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
"反设定 shell 变量和函数的值和属性。\n"
" \n"
" 对每一个 NAME 名称,删除对应的变量或函数。\n"
" \n"
" 选项:\n"
" -f\t将每个 NAME 名称当作函数对待\n"
" -v\t将每个 NAME 名称当作变量对待\n"
" \n"
" 不带选项时,unset 首先尝试反设定一个变量,如果\n"
" 失败,再尝试反设定一个函数。\n"
" \n"
" 某些变量不可以被反设定;请查看 `readonly'。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者 NAME 名称为只读。"
#: builtins.c:1124
msgid ""
@@ -3595,6 +3738,20 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
"为 shell 变量设定导出属性。\n"
" \n"
" 标记每个 NAME 名称为自动导出到后续命令执行的环境。如果提供了 VALUE\n"
" 则导出前将 VALUE 作为赋值。\n"
" \n"
" 选项:\n"
" -f\t指 shell 函数\n"
" -n\t删除每个 NAME 名称的导出属性\n"
" -p\t显示所有导出的变量和函数的列表\n"
" \n"
" `--' 的参数禁用进一步的选项处理。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者 NAME 名称。"
#: builtins.c:1143
msgid ""
@@ -3615,6 +3772,21 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
"标记 shell 变量为不可改变。\n"
" \n"
" 标记每一个 NAME 名称为只读;这些 NAME 变量的值将不可以被后续的赋值\n"
" 操作所改变。如果提供了 VALUE,则在标记为只读之前将 VALUE 值赋给变量。\n"
" \n"
" 选项:\n"
" -a\t指下标数组变量\n"
" -A\t指关联数组标量\n"
" -f\t指 shell 函数\n"
" -p\t显示只读变量和函数列表\n"
" \n"
" `--' 的参数禁用进一步的选项处理。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者 NAME 名称。"
#: builtins.c:1164
msgid ""
@@ -3626,6 +3798,13 @@ msgid ""
" Exit Status:\n"
" Returns success unless N is negative or greater than $#."
msgstr ""
"移位位置参数。\n"
" \n"
" 重命名位置参数 $N+1、$N+2 ... 到 $1、$2 ... 如果没有给定 N\n"
" 则假设为1.\n"
" \n"
" 退出状态:\n"
" 返回成功,除非 N 为负或者大于 $#。"
#: builtins.c:1176 builtins.c:1191
msgid ""
@@ -3640,6 +3819,14 @@ msgid ""
" Returns the status of the last command executed in FILENAME; fails if\n"
" FILENAME cannot be read."
msgstr ""
"在当前 shell 中执行一个文件中的命令。\n"
" \n"
" 在当前 shell 中读取并执行 FILENAME 文件中的命令。$PATH 变量中的\n"
" 条目被用于寻找包含 FILENAME 文件的目录。如果提供了任何的 ARGUMENTS\n"
" 参数,则它们将成为 FILENAME 文件执行时的位置参数。\n"
" \n"
" 退出状态:\n"
" 返回 FILENAME 文件中最后一个命令的状态;如果 FILENAME 文件不可读则失败。"
#: builtins.c:1207
msgid ""
@@ -3654,6 +3841,16 @@ msgid ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
"挂起 shell 执行。\n"
" \n"
" 挂起 shell 的执行直到收到 SIGCONT 信号。\n"
" 登录 shell 不可以被挂起,除非强制执行。\n"
" \n"
" 选项:\n"
" -f\t强制挂起,即使是登录 shell。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非没有启用任务控制或者有错误发生。"
#: builtins.c:1223
msgid ""
@@ -3729,6 +3926,75 @@ msgid ""
" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
" false or an invalid argument is given."
msgstr ""
"对条件表达式进行估值。\n"
" \n"
" 根据 EXPR 表达式的估值以状态0(真)或1(伪)退出。\n"
" 表达式可以是一元或者二元的。一元表达式通常用于检测\n"
" 文件状态。同时还有字符串操作符和数字比较操作符。\n"
" \n"
" 文件操作符:\n"
" \n"
" -a 文件 如果文件存在则为真。\n"
" -b 文件 如果文件为块特殊文件则为真。\n"
" -c 文件 如果文件为字符特殊文件则为真。\n"
" -d 文件 如果文件为目录则为真。\n"
" -e 文件 如果文件存在则为真。\n"
" -f 文件 如果文件存在且为常规文件则为真。\n"
" -g 文件 如果文件的组属性设置打开则为真。\n"
" -h 文件 如果文件为符号链接则为真。\n"
" -L 文件 如果文件为符号链接则为真。\n"
" -k 文件 如果文件的粘滞位设定则为真。\n"
" -p 文件 如果文件为命名管道则为真。\n"
" -r 文件 如果文件对于您是可读的则为真。\n"
" -s 文件 如果文件存在且不为空则为真。\n"
" -S 文件 如果文件是套接字则为真。\n"
" -t 文件描述符 如果文件描述符在一个终端上打开则为真。\n"
" -u 文件 如果文件的用户数行设置打开则为真。\n"
" -w 文件 如果文件对您是可写的则为真\n"
" -x 文件 如果文件对您是可执行的则为真。\n"
" -O 文件 如果文件是被您所有的则为真。\n"
" -G 文件 如果文件被您的组所有则为真。\n"
" -N 文件 如果文件上次被读取之后修改过则为真。\n"
" \n"
" FILE1 -nt FILE2 如果 file1 文件新于 file2 文件则为真(根据\n"
" 修改日期)。\n"
" \n"
" FILE1 -ot FILE2 如果 file1 文件旧于 file2 文件则为真。\n"
" \n"
" FILE1 -ef FILE2 如果 file1 文件是 file2 文件的硬链接则为真。\n"
" \n"
" 字符串操作符\n"
" \n"
" -z 字符串 如果字符串为空则为真。\n"
" \n"
" -n 字符串\n"
" 字符串 如果字符串不为空则为真。\n"
" \n"
" STRING1 = STRING2\n"
" 如果 string1 和 string2 字符串相同则为真。\n"
" STRING1 != STRING2\n"
" 如果 string1 和 string2 字符串不相同则为真。\n"
" STRING1 < STRING2\n"
" 如果按字典排序 string1 在 string2 串之前则为真。\n"
" STRING1 > STRING2\n"
" 如果按字典排序 string1 在 string2 串之前则为真。\n"
" \n"
" 其他操作符:\n"
" \n"
" -o 选项 如果指定 shell 选项启用则为真。\n"
" ! EXPR 如果表达式 expr 为假则为真。\n"
" EXPR1 -a EXPR2 如果 expr1 和 expr2 都为真则为真。\n"
" EXPR1 -o EXPR2 如果 expr1 和 expr2 有一个为真则为真。\n"
" \n"
" arg1 OP arg2 算数测试。OP操作符可以是 -eq、-ne、\n"
" -lt、-le、-gt、或 -ge 中的一个。\n"
" \n"
" 二元算数操作返回真,如果 ARG1 参数等于、不等于、\n"
" 小于、小于等于、大于、或者大于等于 ARG2 参数。\n"
" \n"
" 退出状态:\n"
" 如果 EXPR 表达式估值为真则返回成功;如果 EXPR 表达式估值\n"
" 为假或者使用了无效的参数则返回失败。"
#: builtins.c:1299
msgid ""
@@ -3790,6 +4056,32 @@ msgid ""
" Exit Status:\n"
" Returns success unless a SIGSPEC is invalid or an invalid option is given."
msgstr ""
"对信号和其他事件设陷阱。\n"
" \n"
" 定义一个处理器,在 shell 接收到信号和其他条件下执行。\n"
" \n"
" ARG 参数是当 shell 接收到 SIGNAL_SPEC 信号时读取和执行的命令。\n"
" 如果没有指定 ARG 参数(并且只给出一个 SIGNAL_SPEC 信号)或者\n"
" 或者 ARG 参数为 `-',每一个指定的参数会被重置为原始值。如果 ARG 参数\n"
" 是一个空串,则每一个 SIGNAL_SPEC 信号会被 shell 和它启动的命令忽略。\n"
" \n"
" 如果一个 SIGNAL_SPEC 信号是“退出” (0) ,则 ARG 命令会在 shell 退出时被\n"
" 执行。如果一个 SIGNAL_SPEC 信号是“调试“,则 ARG命令会在每一个简单命\n"
" 令之前执行。\n"
" \n"
" 如果不提供参数,trap 打印列表显示每一个与每一个信号相关联的\n"
" 命令。\n"
" \n"
" 选项:\n"
" -l\t打印一个信号名称和它们对应的编号的列表\n"
" -p\t打印与每个 SIGNAL_SPEC 信号相关联的陷阱命令\n"
" \n"
" 每一个 SIGNAL_SPEC 信号可以是 <signal.h> 中的信号名称或者\n"
" 信号编号。信号名称大小写敏感且可以使用 SIG 前缀。信号可以用\n"
" \"kill -signal $$\" 发送给 shell。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者 SIGSPEC。"
#: builtins.c:1352
msgid ""
@@ -3819,6 +4111,28 @@ msgid ""
" Exit Status:\n"
" Returns success if all of the NAMEs are found; fails if any are not found."
msgstr ""
"显示命令类型的信息。\n"
" \n"
" 对于每一个 NAME 名称,指示如果作为命令它将如何被解释。\n"
" \n"
" 选项:\n"
" -a\t显示所有包含名称为 NAME 的可执行文件的位置;\n"
" \t包括别名、内嵌和函数。仅当 `-p' 选项没有使用时\n"
" -f\t抑制 shell 函数查询\n"
" -P\t为每个 NAME 名称惊醒 PATH 路径搜索,即使它是别名、\n"
" \t内嵌或函数,并且返回将被执行的磁盘上文件的名称。\n"
" -p\t返回将被执行的磁盘上文件的名称,或者当 `type -t NAME'\n"
" \t不返回 `file' 时,不返回任何值。\n"
" -t\t返回下列词中的任何一个`alias'、`keyword'、\n"
" \t`function'、`builtin'、`file'或者`',如果 NAME 是相应的\n"
" \t一个别名、shell 保留字、shell 函数、shell 内嵌、\n"
" \t磁盘文件或没有找到。\n"
" \n"
" 参数:\n"
" NAME\t将要解析的命令。\n"
" \n"
" 退出状态:\n"
" 如果所有的 NAME 命令都找到则返回成功;任何找不到则失败。"
#: builtins.c:1383
msgid ""
@@ -3862,6 +4176,42 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
"修改 shell 资源限制。\n"
" \n"
" 在允许此类控制的系统上,提供对于 shell 及其创建的进程所可用的\n"
" 资源的控制。\n"
" \n"
" 选项:\n"
" -S\t使用 `soft'(软)资源限制\n"
" -H\t使用 `hard'(硬)资源限制\n"
" -a\t所有当前限制都被报告\n"
" -b\t套接字缓存尺寸\n"
" -c\t创建的核文件的最大尺寸\n"
" -d\t一个进程的数据区的最大尺寸\n"
" -e\t最高的调度优先级(`nice'\n"
" -f\t有 shell 及其子进程可以写的最大文件尺寸\n"
" -i\t最多的可以挂起的信号数\n"
" -l\t一个进程可以锁定的最大内存尺寸\n"
" -m\t最大的内存进驻尺寸\n"
" -n\t最多的打开的文件描述符个数\n"
" -p\t管道缓冲区尺寸\n"
" -q\tPOSIX 信息队列的最大字节数\n"
" -r\t实时调度的最大优先级\n"
" -s\t最大栈尺寸\n"
" -t\t最大的CPU时间,以秒为单位\n"
" -u\t最大用户进程数\n"
" -v\t虚拟内存尺寸\n"
" -x\t最大的锁数量\n"
" \n"
" 如果提供了 LIMIT 变量,则它为指定资源的新的值;特别的 LIMIT 值为\n"
" `soft'、`hard'和`unlimited',分别表示当前的软限制,硬限制和无限制。\n"
" 否则打印指定资源的当前限制值,不带选项则假定为 -f\n"
" \n"
" 取值都是1024字节为单位,除了 -t 以秒为单位,-p 以512字节为单位,\n"
" -u 以无范围的进程数量。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者错误发生。"
#: builtins.c:1428
msgid ""
@@ -3880,6 +4230,20 @@ msgid ""
" Exit Status:\n"
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
"显示或设定文件模式掩码。\n"
" \n"
" 设定用户文件创建掩码为 MODE 模式。如果省略了 MODE,则\n"
" 打印当前掩码的值。\n"
" \n"
" 如果MODE 模式以数字开头,则被当作八进制数解析;否则是一个\n"
" chmod(1) 可接收的符号模式串。\n"
" \n"
" 选项:\n"
" -p\t如果省略 MDOE 模式,以可重用为输入的格式输入\n"
" -S\t以符号形式输出,否则以八进制数格式输出\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的 MODE 模式或者选项。"
#: builtins.c:1448
msgid ""
@@ -3895,6 +4259,15 @@ msgid ""
" Returns the status of ID; fails if ID is invalid or an invalid option is\n"
" given."
msgstr ""
"等待任务完成并返回退出状态。\n"
" \n"
" 等待以 ID 编号识别的进程,其中ID 可以是进程编号或者任务声明,\n"
" 并报告它的终止状态。如果 ID 没有给出,则等待所有的当前活跃子\n"
" 进程,并且返回状态为零。如果 ID 是任务声明,等待任务管道中的\n"
" 所有进程。\n"
" \n"
" 退出状态:\n"
" 返回 ID 进程的状态;如果使用了无效的 ID 或者选项则失败。"
#: builtins.c:1466
msgid ""
@@ -3930,6 +4303,14 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"为列表中的每个成员执行命令。\n"
" \n"
" `for' 循环为列表中的每个成员执行一系列的命令。如果没有\n"
" `in WORDS ...;'则假定使用 `in \"$@\"'。对于 WORDS 中的每\n"
" 个元素,NAME 被设定为该元素,并且执行 COMMANDS 命令。\n"
" \n"
" 退出状态:\n"
" 返回最后执行的命令的状态。"
#: builtins.c:1495
msgid ""
@@ -3947,6 +4328,19 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"算术 for 循环。\n"
" \n"
" 等价于\n"
" \t(( EXP1 ))\n"
" \twhile (( EXP2 )); do\n"
" \t\tCOMMANDS\n"
" \t\t(( EXP3 ))\n"
" \tdone\n"
" EXP1、EXP2 和 EXP3都是算术表达式。如果省略任何表达式,\n"
" 则等同于使用了估值为1的表达式。\n"
" \n"
" 退出状态:\n"
" 返回最后执行的命令的状态。"
#: builtins.c:1513
msgid ""
@@ -3967,6 +4361,19 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"从列表中选取词并且执行命令。\n"
" \n"
" WORDS 变量被展开,生成一个词的列表。展开的词集合被打印\n"
" 在标准错误输出设备上,每个以一个数字做前缀。如果没有 `in WORDS'\n"
" 则假定使用`in \"$@\"'。PS3提示符会被显示并且从标准输入读入一行\n"
" 如果该行由被显示的词对应的数字组成,则 NAME 变量被设定为相应\n"
" 的词。如果行为空,则 WORDS 变量和提示符被重新显示。如果读取了\n"
" 文件结束符,则命令完成。读入任何其他的值会导致 NAME 变量被设定\n"
" 为空。读入的行被存放在变量 REPLY 中。COMMANDS 命令在每次选择\n"
" 之后执行直到执行一个 break 命令。\n"
" \n"
" 退出状态:\n"
" 返回最后一个执行的命令的状态。"
#: builtins.c:1534
msgid ""
@@ -4029,6 +4436,16 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
"根据条件执行命令。\n"
" \n"
" `if COMMANDS'列表被执行。如果退出状态为零,则执行`then COMMANDS' \n"
" 列表。否则按顺序执行每个 `elif COMMANDS'列表,并且如果它的退出状态为\n"
" 零,则执行对应的 `then COMMANDS' 列表并且 if 命令终止。否则如果存在的\n"
" 情况下,执行 `else COMMANDS'列表。整个结构的退出状态是最后一个执行\n"
" 的命令的状态,或者如果没有条件测试为真的话,为零。\n"
" \n"
" 退出状态:\n"
" 返回最后一个执行的命令的状态。"
#: builtins.c:1580
msgid ""
@@ -4194,6 +4611,25 @@ msgid ""
" Exit Status:\n"
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
"执行条件命令。\n"
" \n"
" 根据条件表达式 EXPRESSION 的估值返回状态0或1。表达式按照\n"
" `test' 内嵌的相同条件组成,或者可以有下列操作符连接而成:\n"
" \n"
" ( EXPRESSION )\t返回 EXPRESSION 表达式的值\n"
" ! EXPRESSION\t\t如果 EXPRESSION表达式为假则为真,否则为假\n"
" EXPR1 && EXPR2\t如果 EXPR1 和 EXPR2 表达式均为真则为真,否则为假\n"
" EXPR1 || EXPR2\t如果 EXPR1 和 EXPR2 表达式中有一个为真则为真,否则为假\n"
" \n"
" 当使用 `==' 和 `!=' 操作符时,操作符右边的字符串被用作模式并且执行一个\n"
" 匹配。当使用 `=~' 操作符时,操作符右边的字符串被当作正则表达式来进行\n"
" 匹配。\n"
" \n"
" 操作符 && 和 || 将不对 EXPR2 表达式进行估值,如果 EXPR1 表达式足够确定\n"
" 整个表达式的值。\n"
" \n"
" 退出状态:\n"
" 根据 EXPRESSION 的值为0或1。"
#: builtins.c:1697
msgid ""
@@ -4248,6 +4684,47 @@ msgid ""
" HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
" \t\tcommands should be saved on the history list.\n"
msgstr ""
"常用 shell 变量名称和使用。\n"
" \n"
" BASH_VERSION\t当前 Bash 的版本信息。\n"
" CDPATH\t用于 `cd' 命令参数搜索的分号分隔的目录列表\n"
" GLOBIGNORE\t路径扩展时忽略的文件名匹配模式列表,\n"
" \t\t以分号分隔。\n"
" HISTFILE\t您的命令历史存放的文件名称。\n"
" HISTFILESIZE\t历史文件最多可以保存的行数。\n"
" HISTSIZE\t一个运行的 shell 最多可以访问的历史命令行数。\n"
" HOME\t您的登录目录的完整路径。\n"
" HOSTNAME\t当前主机的主机名。\n"
" HOSTTYPE\t当前版本的 BASH 在其之上运行的 CPU 类型。\n"
" IGNOREEOF\t控制 shell 收到文件结束符作为单一输入后的\n"
" \t\t动作。如果设定这个变量,则它的值是 shell 退出之前在\n"
" \t\t一个空行上可以连续看到的文件结束符数量(默认为10)。\n"
" \t\t未设定时,文件结束符标志着输入的结束。\n"
" MACHTYPE\t描述当前运行 Bash 的系统的字符串。\n"
" MAILCHECK\tBash 检测新邮件的频率,以秒为单位。\n"
" MAILPATH\tBash 从中检测新邮件的文件列表,以分号分隔。\n"
" OSTYPE\t运行 Bash 的 Unix 版本。\n"
" PATH\t当寻找命令时搜索的目录列表,以冒号分隔。\n"
" PROMPT_COMMAND\t打印每一个主提示符之前执行的命\n"
" \t\t令。\n"
" PS1\t\t主提示符字符串。\n"
" PS2\t\t从提示符字符串。\n"
" PWD\t\t当前目录的完整路径。\n"
" SHELLOPTS\t已启用的 shell 选项列表,以冒号分隔。\n"
" TERM\t当前终端类型的名称。\n"
" TIMEFORMAT\t以关键则 `time' 显示的时间统计信息的输出\n"
" \t\t格式。\n"
" auto_resume\t非空时,一个单独的命令词会首先被在当前\n"
" \t\t停止的任务列表中搜索。如果找到则该任务被置于前台。\n"
" \t\t如果值为 `exact' 则意味着命令词必须精确匹配停止任务\n"
" \t\t列表中的命令。如果值为 `substring' 则意味着命令词必\n"
" \t\t须匹配任务的一个子字符串。任何其他的值意味着命令词\n"
" \t\t必须是停止任务的一个前缀。\n"
" histchars\t控制历史展开和快速替换的字符。第一个字符是\n"
" \t\t历史替换字符,通常是 `!'。第二个字符是快速替换字符,\n"
" \t\t通常是 `^'。第三个是历史注释字符,通常是 `#'。\n"
" HISTIGNORE\t用于决定哪些命令被存入历史文件的模式\n"
" \t\t列表,以冒号分隔。\n"
#: builtins.c:1754
msgid ""
@@ -4279,6 +4756,28 @@ msgid ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
msgstr ""
"将目录添加到栈中。\n"
" \n"
" 将目录添加到目录栈顶,或着旋转栈直到当前工作目录成为\n"
" 新的栈顶。不带参数时,交换栈顶的两个目录。\n"
" \n"
" 选项:\n"
" -n\t抑制添加目录至栈时通常的改变目录操作,从而仅对栈\n"
" \t进行操作。\n"
" \n"
" 参数:\n"
" +N\t旋转栈从而第 N 个目录(`dirs' 显示的列表中左起,从零开始)\n"
" \t将移动到栈顶。\n"
" \n"
" -N\t旋转栈从而第 N 个目录(`dirs' 显示的列表中右起,从零开始)\n"
" \t将移动到栈顶。\n"
" \n"
" dir\t将 DIR 目录添加到栈顶,并且使其成为当前工作目录。\n"
" \n"
" `dirs' 内嵌显示目录栈。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的参数或者目录转换失败。"
#: builtins.c:1788
msgid ""
@@ -4306,6 +4805,26 @@ msgid ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
msgstr ""
"从栈中删除目录。\n"
" \n"
" 从目录栈中删除条目。不带参数时,删除栈顶目录,并改变至新的栈\n"
" 顶目录。\n"
" \n"
" 选项:\n"
" -n\t抑制从栈中删除目录时通常的目录变换操作,从而仅对栈\n"
" \t进行操作。\n"
" \n"
" 参数:\n"
" +N\t删除第 N 个目录(`dirs' 显示的目录列表中左起,从零开始)。\n"
" \t例如: `popd +0' 删除第一个目录,popd +1' 删除第二个。\n"
" \n"
" -N\t删除第 N 个目录(`dirs' 显示的目录列表中右起,从零开始)。\n"
" \t例如: `popd -0'删除最后一个目录,,`popd -1' 删除倒数第二个。\n"
" \n"
" `dirs' 内嵌显示目录栈。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的参数或者目录变换失败。"
#: builtins.c:1818
msgid ""
@@ -4333,6 +4852,26 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
"显示目录栈。\n"
" \n"
" 显示当前记住的目录列表。通过 `pushd' 命令可以将目录存入列表\n"
" 中;`popd' 命令可用于遍历列表。\n"
" \n"
" 选项:\n"
" -c\t删除所有元素以清空目录栈\n"
" -l\t不打印与主目录相关的波浪号前缀的目录\n"
" -p\t每行一个条目打印目录栈\n"
" -v\t每行一个条目,以栈中位置为前缀打印目录栈\n"
" \n"
" 参数:\n"
" +N\t显示 dirs 不带选项启动时显示的目录列表左起中第\n"
" \tN 个目录,从零开始。\n"
" \n"
" -N\t显示 dirs 不带选项启动时显示的目录列表右起中第\n"
" \tN 个目录,从零开始。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者发生错误。"
#: builtins.c:1847
msgid ""
@@ -4394,6 +4933,21 @@ msgid ""
" Returns success unless an invalid option is given or a write or assignment\n"
" error occurs."
msgstr ""
"在 FORMAT 变量的控制下格式化并打印 ARGUMENTS 参数。\n"
" \n"
" 选项:\n"
" -v var\t将输出赋值给 shell 变量 VAR 而不显示在标准输出上\n"
" \n"
" FORMAT 变量是包含三种对象的字符串:简单地被拷贝到标准输出的普通字符;\n"
" 被变换之后拷贝到标准输入的转义字符;以及每个都会影响到下个参数的打印的 格式化声明。\n"
" \n"
" 在 printf(1)、printf(3) 中描述的标准控制声明之外,printf解析:\n"
"、 \n"
" %b\t扩展对应参数中的反斜杠转义序列\n"
" %q\t以可作为 shell 输入的格式引用参数\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者写或赋值错误发生。"
#: builtins.c:1895
msgid ""
@@ -4419,6 +4973,23 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
"声明 readline 如何完成读取参数。\n"
" \n"
" 声明对于每一个 NAME 名称如何完成读取参数。如果不带选项,\n"
" 现有的补完声明会以可以重用为输入的格式打印出来。\n"
" \n"
" 选项:\n"
" -p\t以可重用的格式打印现有的补完声明。\n"
" -r\tr对于每个 NAME 名称删除补完声明,或者如果没有提供 NAME\n"
" \t名称,删除所有的补完声明。\n"
" -D\t对于没有补完声明定义的命令,设定默认的补完动作\n"
" -E\t对于 \"empty\" 命令设定补完动作,—— 对于空行的补完。\n"
" \n"
" 尝试补完时,按照上述大写字母选项的顺序进行动作。-D 选项优先\n"
" 级高于 -E 选项。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者错误发生。"
#: builtins.c:1923
msgid ""
@@ -4467,6 +5038,27 @@ msgid ""
" Returns success unless an invalid option is supplied or NAME does not\n"
" have a completion specification defined."
msgstr ""
"修改或显示补完选项。\n"
" \n"
" 修改每个 NAME 名称的补完选项,或者如果没有提供 NAME 名称,\n"
" 执行当前的补完。如果不带选项,打印每个 NAME 名称的补完选项或\n"
" 当前的补完声明。\n"
" \n"
" 选项:\n"
" \t-o option\t为每个 NAME 名称设定补完选项 option\n"
" \t-D\t\t为 \"default\" 命令补完改变选项\n"
" \t-E\t\t为 \"empty\" 命令补完改变选项\n"
" \n"
" 使用 `+o' 而不是 `-o' 可以关闭指定的选项。\n"
" \n"
" 参数:\n"
" \n"
" 每个 NAME 名称都对应一个之前以通过 `complete' 内嵌定义了补完声明的\n"
" 命令。如果不提供 NAME 名称,当前生成补完的函数必须调用 compopt\n"
" 并且当前执行的补完生成器选项会被修改。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项或者 NAME 名称没有定义补完声明。"
#: builtins.c:1968
msgid ""
@@ -4499,6 +5091,30 @@ msgid ""
" Returns success unless an invalid option is given or ARRAY is readonly or\n"
" not an indexed array."
msgstr ""
"从标准输入读取行到下表数组变量中。\n"
" \n"
" 从标准输入读取行到下表数组变量 ARRAY 中,或者如果使用了 -u 选项,\n"
" 从文件描述符 FD 中读取。MAPFILE 变量是默认的 ARRAY 变量。\n"
" \n"
" 选项:\n"
" -n count\t最多拷贝 COUNT 行,如果 COUNT 为0,则拷贝所有行。\n"
" -O origin\t从下表 ORIGIN 开始 赋值给 ARRAY 变量。默认下表是0.\n"
" -s count \t丢弃最先读取的 COUNT 行。\n"
" -t\t\t从读取的每行末尾删除一个换行符。\n"
" -u fd\t\t从文件描述符 FD 中读取行而不是标准输入。\n"
" -C callback\t每次 QUANTUM 行读取之后对 CALLBACK 回调进行估值。\n"
" -c quantum\t定义每次调用 CALLBACK 回调之间读取的行数。\n"
" \n"
" 参数:\n"
" ARRAY\t\t存储数据使用的数组变量\n"
" \n"
" 如果使用了-C而没有-c,默认的量子是5000。当对 CALLBACK 估值时,\n"
" 下一个将被赋值的数组元素的下标作为额外参数被传递。\n"
" \n"
" 如果没有显式指定起始下标,mapfile将在赋值前清空 ARRAY 变量。\n"
" \n"
" 退出状态:\n"
" 返回成功,除非使用了无效的选项,或者 ARRAY 变量是只读或者不是下标数组。"
#: builtins.c:2001
msgid ""
+10
View File
@@ -0,0 +1,10 @@
after 1: foo = a b c
after 2: tot = 6
after: 7
last = c
1 -- 142 1
0 -- 0 1 0
1 -- 0 0 1
1 -- 0 0 1
1 -- 0 1 0
lastpipe1.sub returns 14
+38
View File
@@ -0,0 +1,38 @@
shopt -s lastpipe
unset foo bar
echo a b c | read foo
echo after 1: foo = $foo
unset tot
declare -i tot
printf "%d\n" 1 2 3 | while read foo; do tot+=$foo; done
echo after 2: tot = $tot
unset bar
echo g h i | bar=7
echo after: $bar
unset foo last
printf "%s\n" a b c | while read foo; do last=$foo; done
echo last = $last
exit 142 | false
echo $? -- ${PIPESTATUS[@]}
true | false | /usr/bin/true
echo $? -- ${PIPESTATUS[@]}
true | /usr/bin/true | false
echo $? -- ${PIPESTATUS[@]}
set -o pipefail
true | /usr/bin/true | false
echo $? -- ${PIPESTATUS[@]}
true | /usr/bin/false | true
echo $? -- ${PIPESTATUS[@]}
set +o pipefail
${THIS_SH} ./lastpipe1.sub
echo lastpipe1.sub returns $?
+37
View File
@@ -0,0 +1,37 @@
shopt -s lastpipe
unset foo bar
echo a b c | read foo
echo after 1: foo = $foo
unset tot
declare -i tot
printf "%d\n" 1 2 3 | while read foo; do tot+=$foo; done
echo after 2: tot = $tot
unset bar
echo g h i | bar=7
echo after: $bar
unset foo last
printf "%s\n" a b c | while read foo; do last=$foo; done
echo last = $last
exit 142 | false
echo $? -- ${PIPESTATUS[@]}
true | false | /usr/bin/true
echo $? -- ${PIPESTATUS[@]}
true | /usr/bin/true | false
echo $? -- ${PIPESTATUS[@]}
set -o pipefail
true | /usr/bin/true | false
echo $? -- ${PIPESTATUS[@]}
true | /usr/bin/false | true
echo $? -- ${PIPESTATUS[@]}
set +o pipefail
${THIS_SH} ./lastpipe1.sub
+5
View File
@@ -0,0 +1,5 @@
# with lastpipe set, exit at the end of a pipeline exits
# the calling shell
shopt -s lastpipe
exit 142 | exit 14
echo after: $?
+4
View File
@@ -0,0 +1,4 @@
# with lastpipe set, exit at the end of a pipeline exits
# the calling shell
exit 142 | exit 14
echo after: $?
+2
View File
@@ -0,0 +1,2 @@
${THIS_SH} ./lastpipe.tests > /tmp/xx 2>&1
diff /tmp/xx lastpipe.right && rm -f /tmp/xx
+6
View File
@@ -0,0 +1,6 @@
echo "warning: UNIX versions number signals and schedule processes differently." >&2
echo "warning: If output differing only in line numbers is produced, please" >&2
echo "warning: do not consider this a test failure." >&2
${THIS_SH} ./trap.tests > /tmp/xx 2>&1
diff /tmp/xx trap.right && rm -f /tmp/xx
+3
View File
@@ -29,6 +29,7 @@ shopt -u histverify
shopt -s hostcomplete
shopt -u huponexit
shopt -s interactive_comments
shopt -u lastpipe
shopt -u lithist
shopt -u login_shell
shopt -u mailwarn
@@ -79,6 +80,7 @@ shopt -u histappend
shopt -u histreedit
shopt -u histverify
shopt -u huponexit
shopt -u lastpipe
shopt -u lithist
shopt -u login_shell
shopt -u mailwarn
@@ -111,6 +113,7 @@ histappend off
histreedit off
histverify off
huponexit off
lastpipe off
lithist off
login_shell off
mailwarn off