Uh oh!
There was an error while loading. Please reload this page.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please keep in mind that
_posixsubprocessis likely to use a different algorithm for searching inPATHcompared toposix_spawnpimplementations (and, moreover,posix_spawnpimplementations differ between libcs and even between versions of the same libc). For example, musl usesexecvpeas a "backend" forposix_spawnp, which skips only 3 kinds of errors, while_posixsubprocessskips all errors. Also,EACCESis treated in a special way by both glibc and musl.Also, the default
PATHif the environment variable is not set is likely to differ (e.g., glibc uses/bin:/usr/bin, musl uses/usr/local/bin:/bin:/usr/bin, and Python uses:/bin:/usr/bin).There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"... glibc uses /bin:/usr/bin ... and Python uses :/bin:/usr/bin"
Oh. ":" at the start of posixpath.defpath is surprising. Is it a bug? What's the point of putting an empty string in the list of default search paths? It doesn't help to locate an executable...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's not a bug: empty entries in PATH mean "the current directory". See also NOTES in man execvp about glibc dropping this empty entry.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I created https://bugs.python.org/issue35755 to propose to remove it :-)