On 09-08-2022 23:58, Philip McGrath wrote: > On Tuesday, August 9, 2022 5:38:56 PM EDT ( wrote: >> On Tue Aug 9, 2022 at 10:24 PM BST, Maxime Devos wrote: >>> In the glibc headers, there's some (POSIX?) standard macro that points >>> at "/gnu/store/.../bin/sh" (I don't recall the name), any reason we >>> aren't using that macro? That would be Guix-independent. I'm not sure >>> if a /gnu/store/... prefix is included, but if not, maybe we could try >>> overriding it with -D...="/gnu/store/...", or failing that, add a >>> post-unpack substitute* replacing [the macro name] -> >>> "/gnu/store/.../bin/sh". >> I believe you might be referring to , which defines _PATH_BSHELL. >> >> It's not standard C nor POSIX >> though. >> >> -- ( Looking at the "paths.h" header, it appears to be a BSDism. Not really standard but still better than a Guix-ism. > I'd love to be wrong, but I also can't find such a macro. In the glibc source > tree, "stdlib/system.c" defines a stub implementation that always fails with > ENOSYS, and "sysdeps/posix/system.c" contains: > > #define SHELL_PATH "/bin/sh" /* Path of the shell. */ > #define SHELL_NAME "sh" /* Name to give it. */ > > Concretely, I think Guix's glibc currently uses /bin/sh dynamically: in my > Chez example above, if you replace `process` with `system` (which uses libc's > `system`), the result is always "/bin/sh\n". If so, that's a bug.  I do not know what result you are referring to. Anyway, the Guix package definition of glibc substitutes _PATH_BSHELL and SHELL_PATH, so unless there's a bug, it doesn't depend on /bin/sh. Greetings, Maxime.