diff options
Diffstat (limited to 'adb')
-rw-r--r-- | adb/shell_service.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/adb/shell_service.cpp b/adb/shell_service.cpp index 544afcebb..be5921d8e 100644 --- a/adb/shell_service.cpp +++ b/adb/shell_service.cpp @@ -83,6 +83,7 @@ #include <errno.h> #include <pty.h> +#include <pwd.h> #include <sys/select.h> #include <termios.h> @@ -281,6 +282,15 @@ bool Subprocess::ForkAndExec() { parent_error_sfd.Reset(); close_on_exec(child_error_sfd.fd()); + // TODO: $HOSTNAME? Normally bash automatically sets that, but mksh doesn't. + passwd* pw = getpwuid(getuid()); + if (pw != nullptr) { + setenv("HOME", pw->pw_dir, 1); + setenv("LOGNAME", pw->pw_name, 1); + setenv("SHELL", pw->pw_shell, 1); + setenv("USER", pw->pw_name, 1); + } + if (is_interactive()) { execl(_PATH_BSHELL, _PATH_BSHELL, "-", nullptr); } else { |