diff options
-rw-r--r-- | Src/exec.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Src/exec.c b/Src/exec.c index eab846540..a7a861f12 100644 --- a/Src/exec.c +++ b/Src/exec.c @@ -1522,7 +1522,7 @@ execcmd(Cmd cmd, int input, int output, int how, int last1) /* Current shell should not fork unless the * * exec occurs at the end of a pipeline. */ - if ((cflags & BINF_EXEC) && last1 == 2) + if ((cflags & BINF_EXEC) && last1) flags |= CFLAG_EXEC; /* Empty command */ @@ -2053,8 +2053,9 @@ execcmd(Cmd cmd, int input, int output, int how, int last1) restore_params(restorelist, removelist); } else { - if (flags & CFLAG_EXEC) { + if (!forked) setiparam("SHLVL", --shlvl); + if (flags & CFLAG_EXEC) { /* If we are exec'ing a command, and we are not * * in a subshell, then save the history file. */ if (!subsh && isset(RCS) && interact && !nohistsave) |