From 960ca385b721400082323da7f8cddb7f3cfb3027 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Tue, 25 Oct 2016 18:12:15 +0200 Subject: ash: add comment explaining "set -e; $(cmd)" discrepancy Signed-off-by: Denys Vlasenko --- shell/ash.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/shell/ash.c b/shell/ash.c index cf48b7743..79439bf3e 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -5924,6 +5924,14 @@ evalbackcmd(union node *n, struct backcmd *result) copyfd(pip[1], 1 | COPYFD_EXACT); close(pip[1]); } +/* TODO: eflag clearing makes the following not abort: + * ash -c 'set -e; z=$(false;echo foo); echo $z' + * which is what bash does (unless it is in POSIX mode). + * dash deleted "eflag = 0" line in the commit + * Date: Mon, 28 Jun 2010 17:11:58 +1000 + * [EVAL] Don't clear eflag in evalbackcmd + * For now, preserve bash-like behavior, it seems to be somewhat more useful: + */ eflag = 0; evaltree(n, EV_EXIT); /* actually evaltreenr... */ /* NOTREACHED */ -- cgit v1.2.3