diff -u -r ../zsh-5.3/Src/exec.c ./Src/exec.c
--- ../zsh-5.3/Src/exec.c	2016-12-06 20:21:39.000000000 +0100
+++ ./Src/exec.c	2017-07-21 00:51:47.226997418 +0200
@@ -518,7 +518,7 @@
 		    } else if (eno == ENOEXEC) {
 			argv[-1] = "sh";
 			winch_unblock();
-			execve("/bin/sh", argv - 1, newenvp);
+			execve("@TERMUX_PREFIX@/bin/sh", argv - 1, newenvp);
 		    }
 		} else if (eno == ENOEXEC) {
 		    for (t0 = 0; t0 != ct; t0++)
@@ -527,7 +527,7 @@
 		    if (t0 == ct) {
 			argv[-1] = "sh";
 			winch_unblock();
-			execve("/bin/sh", argv - 1, newenvp);
+			execve("@TERMUX_PREFIX@/bin/sh", argv - 1, newenvp);
 		    }
 		}
 	    } else
@@ -3295,9 +3295,12 @@
 	    holdintr();
 #ifdef HAVE_NICE
 	/* Check if we should run background jobs at a lower priority. */
-	if ((how & Z_ASYNC) && isset(BGNICE))
-	    if (nice(5) < 0)
+	if ((how & Z_ASYNC) && isset(BGNICE)) {
+	    errno = 0;
+	    nice(5);
+	    if (errno != 0)
 		zwarn("nice(5) failed: %e", errno);
+	}
 #endif /* HAVE_NICE */
 
     } else if (is_cursh) {