Allow $HOME as default-path in tmux.conf so the same config file can be used

on different machines regardless of where the user's home directory is.
ok nicm
This commit is contained in:
Stefan Sperling 2011-12-27 14:07:20 +00:00
parent d377a68593
commit fdd1d0b72e
2 changed files with 12 additions and 0 deletions

7
cmd.c
View File

@ -1221,11 +1221,18 @@ cmd_get_default_path(struct cmd_ctx *ctx)
char *cwd; char *cwd;
struct session *s; struct session *s;
struct window_pane *wp; struct window_pane *wp;
struct environ_entry *envent;
if ((s = cmd_current_session(ctx, 0)) == NULL) if ((s = cmd_current_session(ctx, 0)) == NULL)
return (NULL); return (NULL);
cwd = options_get_string(&s->options, "default-path"); cwd = options_get_string(&s->options, "default-path");
if ((cwd[0] == '~' && cwd[1] == '\0') || !strcmp(cwd, "$HOME")) {
envent = environ_find(&global_environ, "HOME");
if (envent != NULL && *envent->value != '\0')
return envent->value;
cwd = "";
}
if (*cwd == '\0') { if (*cwd == '\0') {
if (ctx->cmdclient != NULL && ctx->cmdclient->cwd != NULL) if (ctx->cmdclient != NULL && ctx->cmdclient->cwd != NULL)
return (ctx->cmdclient->cwd); return (ctx->cmdclient->cwd);

5
tmux.1
View File

@ -1845,6 +1845,11 @@ Set the default working directory for new panes.
If empty (the default), the working directory is determined from the process If empty (the default), the working directory is determined from the process
running in the active pane, from the command line environment or from the running in the active pane, from the command line environment or from the
working directory where the session was created. working directory where the session was created.
If
.Ar path
is "$HOME" or "~", the value of the
.Ev HOME
environment variable is used.
.It Ic default-shell Ar path .It Ic default-shell Ar path
Specify the default shell. Specify the default shell.
This is used as the login shell for new windows when the This is used as the login shell for new windows when the