CONFIG_SHELL simply acts as a user override; it's not part of autoconf's core logic. That role belongs to the SHELL macro, who's picks the first available of the following: - CONFIG_SHELL environment variable, - SHELL environment variable, or - /bin/sh See autoconf's m4sugar/m4sh.m4 for the gory details. Arguably, this should also be updated to point to a fixed /bin/sh output fallback. Anyway, AM_SUBST_NOTMAKE([SHELL]), cf. '(automake) Optional', simply tells automake to not define SHELL inside the generated Makefile. This means that make will instead use it's default, which in our case is hard-coded to the /bin/sh in its implicit bash-minimal dependency. For detailed info about this behaviour of make, see '(make) Choosing the Shell'. Note, however, you will have to do a mental sed-replace of "/bin/sh" with "/bin/sh" when reading that page. Cheers, B.