Use /bin/bash or user shell in /etc/passwd if none set before /bin/sh.
This commit is contained in:
parent
1d48183646
commit
77c8f8abbb
@ -15,6 +15,8 @@
|
||||
#rc_interactive="YES"
|
||||
|
||||
# If we need to drop to a shell, you can specify it here.
|
||||
# If not specified we use $SHELL, otherwise the one specified in /etc/passwd,
|
||||
# otherwise /bin/sh
|
||||
# Linux users could specify /sbin/sulogin
|
||||
#rc_shell=/bin/sh
|
||||
|
||||
|
15
src/rc/rc.c
15
src/rc/rc.c
@ -53,6 +53,7 @@ const char rc_copyright[] = "Copyright (c) 2007-2008 Roy Marples";
|
||||
#include <getopt.h>
|
||||
#include <libgen.h>
|
||||
#include <limits.h>
|
||||
#include <pwd.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
@ -315,6 +316,7 @@ static void
|
||||
open_shell(void)
|
||||
{
|
||||
const char *shell;
|
||||
struct passwd *pw;
|
||||
|
||||
#ifdef __linux__
|
||||
const char *sys = rc_sys();
|
||||
@ -330,8 +332,17 @@ open_shell(void)
|
||||
#endif
|
||||
|
||||
shell = rc_conf_value("rc_shell");
|
||||
if (shell == NULL)
|
||||
shell = "/bin/sh";
|
||||
/* No shell set, so obey env, then passwd, then default to /bin/sh */
|
||||
if (shell == NULL) {
|
||||
shell = getenv("SHELL");
|
||||
if (shell == NULL) {
|
||||
pw = getpwuid(getuid());
|
||||
if (pw)
|
||||
shell = pw->pw_shell;
|
||||
if (shell == NULL)
|
||||
shell = "/bin/sh";
|
||||
}
|
||||
}
|
||||
run_program(shell);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user