diff --git a/src/job.c b/src/job.c index 94835c0d..c4e77490 100644 --- a/src/job.c +++ b/src/job.c @@ -2381,6 +2381,18 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) break; } + /* execvp() will use a default PATH if none is set; emulate that. */ + if (p == NULL) + { + size_t l = confstr (_CS_PATH, NULL, 0); + if (l) + { + char *dp = alloca (l); + confstr (_CS_PATH, dp, l); + p = dp; + } + } + cmd = (char *)find_in_given_path (argv[0], p, 0); } diff --git a/tests/scripts/misc/general4 b/tests/scripts/misc/general4 index 263505e4..0077c896 100644 --- a/tests/scripts/misc/general4 +++ b/tests/scripts/misc/general4 @@ -118,4 +118,11 @@ all: ; $sname unlink($sname); +# SV 57674: ensure we use a system default PATH if one is not set +delete $ENV{PATH}; +run_make_test(q! +a: ; @echo hi +!, + '', "hi\n"); + 1;