Hello, The logic in AS_SHELL_SANITIZE() for reporting that it failed to find a function-supporting shell is just plain buggy. In the case when $SHELL does not support functions, AS_SHELL_SANITIZE() reports that it could not find an appropriate shell even if it actually locates such a shell (which it assigns to CONFIG_SHELL). Furthermore, when it actually does fail to find a suitable shell, it neglects to complain at all. The logic is backward. Here is a patch which implements the correct logic. The patch also makes the code more robust by preventing the user from fooling configure into thinking that it has a valid shell if the user manually sets CONFIG_SHELL to a non-function-supporting shell. Eric 2004-01-06 Eric Sunshine <sunshine@xxxxxxxxxxxxxx> * lib/m4sugar/m4sh.m4 (AS_SHELL_SANITIZE): Fixed bogus error reporting logic. If $SHELL did not support shell functions, and if it found a shell which did support functions, it would complain that it failed to find such a shell (backward logic). Worse, it did not complain if it failed to find a suitable shell. Now it complains iff it fails to find a function-supporting shell. --- lib/m4sugar/m4sh.m4 Tue Jan 6 10:44:28 2004 +++ lib/m4sugar/m4sh.m4-fix Tue Jan 6 10:44:08 2004 @@ -249,25 +249,22 @@ fi dnl In the future, the `else' branch will be that in AS_INIT_WITH_SHELL_FN. -AS_IF([_AS_SHELL_FN_WORK([$SHELL])], [], [ - case $CONFIG_SHELL in - '') - _AS_PATH_WALK([/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH], - [for as_base in sh bash ksh sh5; do - case $as_dir in - /*) - AS_IF([_AS_SHELL_FN_WORK([$as_dir/$as_base])], [ - AS_UNSET(BASH_ENV) - AS_UNSET(ENV) - CONFIG_SHELL=$as_dir/$as_base - export CONFIG_SHELL - exec "$CONFIG_SHELL" "$as_myself" ${1+"$[@]"} - ]);; - esac - done]);; - *) - $1;; - esac +AS_IF([_AS_SHELL_FN_WORK([${CONFIG_SHELL-${SHELL-/bin/sh}}])], [], [ + _AS_PATH_WALK([/bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH], + [for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + AS_IF([_AS_SHELL_FN_WORK([$as_dir/$as_base])], [ + AS_UNSET(BASH_ENV) + AS_UNSET(ENV) + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$[@]"} + ]);; + esac + done]) + # If we got this far, then we failed to find a function-supporting shell. + $1 ]) # Work around bugs in pre-3.0 UWIN ksh.