about summary refs log tree commit diff
path: root/Src/exec.c
diff options
context:
space:
mode:
Diffstat (limited to 'Src/exec.c')
-rw-r--r--Src/exec.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/Src/exec.c b/Src/exec.c
index 5ee161fff..97e8f4912 100644
--- a/Src/exec.c
+++ b/Src/exec.c
@@ -1528,7 +1528,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)
+	    if ((cflags & BINF_EXEC) && last1 == 2)
 		flags |= CFLAG_EXEC;
 
 	    /* Empty command */
@@ -2062,9 +2062,8 @@ execcmd(Cmd cmd, int input, int output, int how, int last1)
 	    restore_params(restorelist, removelist);
 
 	} else {
-	    if (!forked)
-		setiparam("SHLVL", --shlvl);
 	    if (flags & CFLAG_EXEC) {
+		setiparam("SHLVL", --shlvl);
 		/* 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)