bug-bash
[Top][All Lists]
Advanced

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

Re: Scripts passed into "-c" with an embedded newline won't execute trap


From: Chet Ramey
Subject: Re: Scripts passed into "-c" with an embedded newline won't execute trap if last command fails
Date: Fri, 22 Apr 2016 15:50:57 -0400
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.7.2

On 4/21/16 12:48 PM, Brian Vandenberg wrote:

> Description:
> 
> I ran into this issue while experimenting with gnu make and .ONESHELL. 
> I've boiled the issue down to the following simple example:
> 
> $ newline=$'\n'
> $ bash -e -c "trap 'echo handler' INT ERR;/bin/true; sleep 2;
> ${newline}/bin/false"
> 
> It will successfully trap if I do the following:
> 
> * hit ^C during the sleep
> * use "false" instead of "/bin/false" because that'll use a builtin
> * trap on EXIT instead
> * remove the newline
> * add another command after "/bin/false"
> * add another command before "/bin/false" without a newline after it
> 
> If I replace "/bin/false" with a sleep then hit ^C then the INT trap also
> won't execute.

Thanks for the report.  A variant of your suggestion will be in the next
release of bash.

(As an aside, many shells optimize the fork out to the extent they won't
execute the trap if you use sleep as the last command and send the shell
a SIGINT.)

Chet

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU    chet@case.edu    http://cnswww.cns.cwru.edu/~chet/



reply via email to

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