Set PWD for jobs as well as panes.
authornicm <nicm>
Tue, 2 Sep 2025 13:39:14 +0000 (2 13:39 +0000)
committernicm <nicm>
Tue, 2 Sep 2025 13:39:14 +0000 (2 13:39 +0000)
job.c

diff --git a/job.c b/job.c
index d8d8779..ceac8d2 100644 (file)
--- a/job.c
+++ b/job.c
@@ -141,9 +141,13 @@ job_run(const char *cmd, int argc, char **argv, struct environ *e,
                proc_clear_signals(server_proc, 1);
                sigprocmask(SIG_SETMASK, &oldset, NULL);
 
-               if ((cwd == NULL || chdir(cwd) != 0) &&
-                   ((home = find_home()) == NULL || chdir(home) != 0) &&
-                   chdir("/") != 0)
+               if (chdir(cwd) == 0)
+                       environ_set(env, "PWD", 0, "%s", cwd);
+               else if ((home = find_home()) != NULL && chdir(home) == 0)
+                       environ_set(env, "PWD", 0, "%s", home);
+               else if (chdir("/") == 0)
+                       environ_set(env, "PWD", 0, "/");
+               else
                        fatal("chdir failed");
 
                environ_push(env);