Accept the value of $SHELL or the shell in the user's password entry, even if it's not found in /etc/shells. Patch by Mark H Weaver . --- xterm/main.c.orig 2014-01-15 21:12:25.000000000 -0500 +++ xterm/main.c 2014-02-13 01:55:04.840576171 -0500 @@ -4570,12 +4570,12 @@ if (validShell(explicit_shname)) { xtermSetenv("SHELL", explicit_shname); shell_path = explicit_shname; - } else if (validShell(shell_path = x_getenv("SHELL"))) { + } else if (shell_path = x_getenv("SHELL")) { ; /* OK */ } else if ((!OkPasswd(&pw) && !x_getpwuid(screen->uid, &pw)) || *(shell_path = x_strdup(pw.pw_shell)) == 0) { shell_path = resetShell(shell_path); - } else if (validShell(shell_path)) { + } else if (x_nonempty(shell_path)) { xtermSetenv("SHELL", shell_path); } else { shell_path = resetShell(shell_path);