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. > > -- ( 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". -Philip