diff --git a/src/global.h b/src/global.h
index 67e4141bc49313747530b80f1ba6444940aa9c15..9ba22bae9c965e24b5bbce4436162b09f91e1768 100644
--- a/src/global.h
+++ b/src/global.h
@@ -103,5 +103,6 @@ int input_handle(int);
 #include "help.h"
 #include "path.h"
 #include "util.h"
+#include "shell.h"
 
 #endif
diff --git a/src/help.c b/src/help.c
index 074d9eddd4f43d55d613550354fbb362c0938ed4..8c130d76938c998a117384504d360062acc01b4e 100644
--- a/src/help.c
+++ b/src/help.c
@@ -32,7 +32,7 @@
 int page, start;
 
 
-#define KEYS 16
+#define KEYS 17
 char *keys[KEYS*2] = {
 /*|----key----|  |----------------description----------------|*/
         "up, k", "Move cursor up",
diff --git a/src/shell.c b/src/shell.c
index ae3cc22db435b7430d2f53c0c2eac6f68dd2030d..d601b5a1babaf8a9e0995924298485a8439d4555 100644
--- a/src/shell.c
+++ b/src/shell.c
@@ -34,7 +34,7 @@
 #include <unistd.h>
 
 void shell_draw() {
-  char *full_path, *shell;
+  char *full_path;
   int res;
 
   /* suspend ncurses mode */
@@ -60,7 +60,7 @@ void shell_draw() {
     /* resume ncurses mode */
     reset_prog_mode();
 
-    if (res == -1 || WEXITSTATUS(res) != 0) {
+    if (res == -1 || !WIFEXITED(res) || WEXITSTATUS(res) == 127) {
       clear();
       printw("ERROR: Can't execute shell interpreter: %s\n"
              "\n"