Note that if you build something relying on $SHELL, it may still fail to
build in chroot.
In the chroot we first use "env -i" to clean the environment variables.
When bash starts with no $SHELL set, it *sets* SHELL=(the login shell
of current user specified in /etc/passwd), but it *does not export this
variable*.
For example:
$ cat > t.c << EOF
#include <stdio.h>
#include <stdlib.h>
int main() { puts (getenv ("SHELL") ?: "(nullptr)"); }
$ ./a.out
/bin/zsh/
$ cc t.c
$ env -i bash -c "echo $SHELL"
/bin/zsh
$ env -i bash -c "./a.out"
(nullptr)
We can remove this now only because Mozilla has added a workaround into
their building system at
https://hg.mozilla.org/mozilla-central/rev/5afe7b911f61 for some Mac
builder, inadvertently fixing our issue.
Link: https://lists.linuxfromscratch.org/sympa/arc/blfs-support/2014-11/msg00050.html
Link: https://lists.linuxfromscratch.org/sympa/arc/blfs-dev/2023-11/msg00136.html