+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) {