From 384736e9550be328e0209c1f217b164d2fbc8fa1 Mon Sep 17 00:00:00 2001 From: nicm Date: Thu, 9 Nov 2017 23:02:13 +0000 Subject: [PATCH] If we successfully change the directory, set PWD too to give the shell a hint in case of symlinks. --- window.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/window.c b/window.c index 2afd42d3..78e81269 100644 --- a/window.c +++ b/window.c @@ -935,10 +935,13 @@ window_pane_spawn(struct window_pane *wp, int argc, char **argv, proc_clear_signals(server_proc, 1); sigprocmask(SIG_SETMASK, &oldset, NULL); - if (chdir(wp->cwd) != 0) { - if ((home = find_home()) == NULL || chdir(home) != 0) - chdir("/"); - } + cwd = NULL; + if (chdir(wp->cwd) == 0) + cwd = wp->cwd; + else if ((home = find_home()) != NULL && chdir(home) == 0) + cwd = home; + else + chdir("/"); if (tcgetattr(STDIN_FILENO, &tio2) != 0) fatal("tcgetattr failed"); @@ -953,6 +956,8 @@ window_pane_spawn(struct window_pane *wp, int argc, char **argv, if (path != NULL) environ_set(env, "PATH", "%s", path); + if (cwd != NULL) + environ_set(env, "PWD", "%s", cwd); environ_set(env, "TMUX_PANE", "%%%u", wp->id); environ_push(env);