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"
|
#rc_interactive="YES"
|
||||||
|
|
||||||
# If we need to drop to a shell, you can specify it here.
|
# 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
|
# Linux users could specify /sbin/sulogin
|
||||||
#rc_shell=/bin/sh
|
#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 <getopt.h>
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
#include <pwd.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -315,6 +316,7 @@ static void
|
|||||||
open_shell(void)
|
open_shell(void)
|
||||||
{
|
{
|
||||||
const char *shell;
|
const char *shell;
|
||||||
|
struct passwd *pw;
|
||||||
|
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
const char *sys = rc_sys();
|
const char *sys = rc_sys();
|
||||||
@ -330,8 +332,17 @@ open_shell(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
shell = rc_conf_value("rc_shell");
|
shell = rc_conf_value("rc_shell");
|
||||||
if (shell == NULL)
|
/* No shell set, so obey env, then passwd, then default to /bin/sh */
|
||||||
shell = "/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);
|
run_program(shell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user