mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-06-27 23:53:18 +02:00
commit bash-20100701 snapshot
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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])
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
|
||||
@@ -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
@@ -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 {
|
||||
|
||||
@@ -415,6 +415,8 @@
|
||||
|
||||
#undef HAVE_STRUCT_TIMEZONE
|
||||
|
||||
#undef WEXITSTATUS_OFFSET
|
||||
|
||||
/* Characteristics of definitions in the system header files. */
|
||||
|
||||
#undef HAVE_GETPW_DECLS
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
File diff suppressed because it is too large
Load Diff
+35
-12
@@ -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
@@ -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
@@ -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 < and > 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>
|
||||
|
||||
Binary file not shown.
+2923
-2888
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+23
-8
@@ -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 < and > 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> </td><td class=example><pre>declare -a <VAR>name</VAR>
|
||||
</pre></td></tr></table>The syntax
|
||||
<TABLE><tr><td> </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
@@ -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
@@ -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).
|
||||
|
||||
Binary file not shown.
+606
-592
File diff suppressed because it is too large
Load Diff
+34
-9
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 ()
|
||||
{
|
||||
|
||||
@@ -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 ()
|
||||
{
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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_ */
|
||||
@@ -926,6 +926,11 @@ describe_pid (pid)
|
||||
fprintf (stderr, "%ld\n", (long) pid);
|
||||
}
|
||||
|
||||
void
|
||||
freeze_jobs_list ()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
unfreeze_jobs_list ()
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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:
|
||||
|
||||
@@ -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
@@ -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 ""
|
||||
|
||||
@@ -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
|
||||
@@ -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 $?
|
||||
@@ -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
|
||||
@@ -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: $?
|
||||
@@ -0,0 +1,4 @@
|
||||
# with lastpipe set, exit at the end of a pipeline exits
|
||||
# the calling shell
|
||||
exit 142 | exit 14
|
||||
echo after: $?
|
||||
@@ -0,0 +1,2 @@
|
||||
${THIS_SH} ./lastpipe.tests > /tmp/xx 2>&1
|
||||
diff /tmp/xx lastpipe.right && rm -f /tmp/xx
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user