Subject: Re: [bug#57050] [PATCH 3/6] gnu: chez-scheme: Fix use of "/bin/sh".

From: Philip McGrath <[email-masked]>
Date: Tue, 09 Aug 2022 17:58:18 -0400

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 <paths.h>, which defines _PATH_BSHELL.
> 
> It's not standard C <https://en.cppreference.com/w/c/header> nor POSIX
> <https://pubs.opengroup.org/onlinepubs/9699919799/idx/head.html> 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