[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bash doesn't send SIGHUP to children
From: |
Chet Ramey |
Subject: |
Re: bash doesn't send SIGHUP to children |
Date: |
Sat, 13 Sep 2008 22:15:14 -0400 |
User-agent: |
Thunderbird 2.0.0.16 (Macintosh/20080707) |
Emil wrote:
Bash runs interactive.
Not the one you traced; see below.
After some further investigation it turned out that you also need to use
a function in your bash scripts to reproduce the bug.
I have the following in my .bashrc
mc () { MC=`/usr/bin/mc -P "$@"`; [ -n "$MC" ] && cd "$MC"; unset MC; }
This changes things significantly. The bash you traced is the one that
is waiting for the `mc' in the command substitution to exit and reading
its output -- that shell is not interactive. The difference is probably
somewhere in the execution environment set up for command substitution.
To make sure, try the following function and see if you get the same
result:
mc()
{
T=${TMPDIR:-/tmp}/mc-$$
/usr/bin/mc -p "$@" > $T
es=$?
read MC < $T
rm -f "$T"
[ -n "$MC" ] && cd "$MC"
unset MC
return $es
}
It is probably the different mechanisms for handling terminating signals
in non-interactive shells. I might have a fix, but I have to be able to
reproduce it, and I won't be back in front of a Linux machine to try until
next week.
Chet
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
Chet Ramey, ITS, CWRU chet@case.edu http://cnswww.cns.cwru.edu/~chet/