From 7d5e4947160d9355353c29a983e373b66c05abef Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Tue, 1 Sep 2009 13:09:49 +0000 Subject: When using tmux as a login shell, there is currently no way to specify a shell to be used as a login shell inside tmux, so add a default-shell session option. This sets the shell invoked as a login shell when the default-command option is empty. The default option value is whichever of $SHELL, getpwuid(getuid())'s pw_shell or /bin/sh is valid first. Based on a diff from martynas@, changed by me to be a session option rather than a window option. --- session.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'session.c') diff --git a/session.c b/session.c index 2e1aae3d..55d38c80 100644 --- a/session.c +++ b/session.c @@ -19,6 +19,7 @@ #include #include +#include #include #include #include @@ -207,6 +208,7 @@ session_new(struct session *s, { struct window *w; struct environ env; + const char *shell; u_int hlimit; environ_init(&env); @@ -214,9 +216,13 @@ session_new(struct session *s, environ_copy(&s->environ, &env); server_fill_environ(s, &env); + shell = options_get_string(&s->options, "default-shell"); + if (*shell == '\0' || areshell(shell)) + shell = _PATH_BSHELL; + hlimit = options_get_number(&s->options, "history-limit"); w = window_create( - name, cmd, cwd, &env, &s->tio, s->sx, s->sy, hlimit, cause); + name, cmd, shell, cwd, &env, &s->tio, s->sx, s->sy, hlimit, cause); if (w == NULL) { environ_free(&env); return (NULL); -- cgit