From 1efdc7ca11487230175c26a9c03174d98f5f89be Mon Sep 17 00:00:00 2001 From: Damjan Cvetko Date: Tue, 15 Mar 2022 00:39:26 +0100 Subject: [PATCH] doc: clarify path search in `child_process.spawn` The documentation about command lookup could be more clear and note differences between Windows and Linux/OSX. Current text gives the impression that if one passes `options.env` without `PATH`, the path search will fall back on `process.env.PATH`. In reality, passing environment without `PATH` to `execvp` causes it to look for the binary only in `/usr/bin:/bin`. Also Windows behaves different and more in line with the current documentation text. PR-URL: https://github.com/nodejs/node/pull/41418 Reviewed-By: Richard Lau Reviewed-By: James M Snell --- doc/api/child_process.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/doc/api/child_process.md b/doc/api/child_process.md index de988c25b0787e..ad712eb8786f59 100644 --- a/doc/api/child_process.md +++ b/doc/api/child_process.md @@ -36,8 +36,11 @@ identical to the behavior of pipes in the shell. Use the `{ stdio: 'ignore' }` option if the output will not be consumed. The command lookup is performed using the `options.env.PATH` environment -variable if it is in the `options` object. Otherwise, `process.env.PATH` is -used. +variable if `env` is in the `options` object. Otherwise, `process.env.PATH` is +used. If `options.env` is set without `PATH`, lookup on Unix is performed +on a default search path search of `/usr/bin:/bin` (see your operating system's +manual for execvpe/execvp), on Windows the current processes environment +variable `PATH` is used. On Windows, environment variables are case-insensitive. Node.js lexicographically sorts the `env` keys and uses the first one that