mirror of
https://github.com/tmate-io/tmate.git
synced 2025-08-15 00:02:36 +02:00
Just appending -l to $SHELL to create a login shell is wrong: -l is not POSIX,
and some people may use shells which do not support it. Instead, make an empty default-command option mean a login shell, and fork it with a - in argv[0] which is the method used by login(1). Also fix the automatic-rename code to handle this correctly and to strip a leading - if present.
This commit is contained in:
13
tmux.c
13
tmux.c
@ -209,7 +209,6 @@ main(int argc, char **argv)
|
||||
struct cmd *cmd;
|
||||
struct pollfd pfd;
|
||||
struct hdr hdr;
|
||||
const char *shell;
|
||||
struct passwd *pw;
|
||||
char *s, *path, *label, *cause, *home, *pass = NULL;
|
||||
char cwd[MAXPATHLEN];
|
||||
@ -270,6 +269,7 @@ main(int argc, char **argv)
|
||||
options_init(&global_s_options, NULL);
|
||||
options_set_number(&global_s_options, "bell-action", BELL_ANY);
|
||||
options_set_number(&global_s_options, "buffer-limit", 9);
|
||||
options_set_string(&global_s_options, "default-command", "%s", "");
|
||||
options_set_number(&global_s_options, "display-time", 750);
|
||||
options_set_number(&global_s_options, "history-limit", 2000);
|
||||
options_set_number(&global_s_options, "lock-after-time", 0);
|
||||
@ -358,17 +358,6 @@ main(int argc, char **argv)
|
||||
}
|
||||
xfree(label);
|
||||
|
||||
shell = getenv("SHELL");
|
||||
if (shell == NULL || *shell == '\0') {
|
||||
pw = getpwuid(getuid());
|
||||
if (pw != NULL)
|
||||
shell = pw->pw_shell;
|
||||
if (shell == NULL || *shell == '\0')
|
||||
shell = _PATH_BSHELL;
|
||||
}
|
||||
options_set_string(
|
||||
&global_s_options, "default-command", "exec %s -l", shell);
|
||||
|
||||
if (getcwd(cwd, sizeof cwd) == NULL) {
|
||||
pw = getpwuid(getuid());
|
||||
if (pw->pw_dir != NULL && *pw->pw_dir != '\0')
|
||||
|
Reference in New Issue
Block a user