[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [BUG] Bash not reacting to Ctrl-C

From: Bob Proulx
Subject: Re: [BUG] Bash not reacting to Ctrl-C
Date: Wed, 9 Feb 2011 14:11:42 -0700
User-agent: Mutt/1.5.20 (2009-06-14)

Oleg Nesterov wrote:
> Bob Proulx wrote:
> > Is the behavior you observe any different for this case?
> >   $ bash -c 'while true; do /bin/true || exit 1; done'
> > Or different for this case?
> >   $ bash -e -c 'while true; do /bin/true; done'
> The same.

I expected that to behave differently for you because I expected that
the issue was that /bin/true was being delivered the signal but the
exit status of /bin/true is being ignored in your test case.  In your
test case if /bin/true caught the SIGINT then I expect the loop to
continue.  Since you were saying that it was continuing then that is
what I was expecting was happening.

> I do not know what "-e" does (and I can't find it in man), but how
> this can make a difference?

The documentation says this about -e:

              -e      Exit immediately if a pipeline (which may consist
                      of a single simple command), a subshell command
                      enclosed in parentheses, or one of the commands
                      executed as part of a command list enclosed by
                      braces (see SHELL GRAMMAR above) exits with a
                      non-zero status.  The shell does not exit if the
                      command that fails is part of the command list
                      immediately following a while or until keyword,
                      part of the test following the if or elif
                      reserved words, part of any command executed in
                      a && or list except the command following the
                      final && or, any command in a pipeline but the
                      last, or if the command's return value is being
                      inverted with !.  A trap on ERR, if set, is
                      executed before the shell exits.  This option
                      applies to the shell environment and each
                      subshell environment separately (see COMMAND
                      EXECUTION ENVIRONMENT above), and may cause
                      subshells to exit before executing all the
                      commands in the subshell.

Using -e would cause the shell to exit if /bin/true returned a
non-zero exit status.  /bin/true would exit non-zero if it caught a
SIGINT signal.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]