Что такое "огромные проблемы"? autoconf очень усердно работает над созданием скрипта configure, который работает с очень большим процентом оболочек. Если у вас есть пример конструкции, которую пишет autoconf, которая не переносима, сообщите об этом в список рассылки autoconf. С другой стороны, если проблемы, с которыми вы сталкиваетесь, являются результатом того, что ваш собственный код оболочки в configure.ac не является переносимым (например, вы используете bashisms), то решение состоит в том, чтобы либо прекратить использование непереносимого кода, либо потребовать пользователь должен явно установить SHELL или CONFIG_SHELL во время настройки.
Похоже, что проблема, с которой вы столкнулись, находится в среде пользователя, запустившего configure. В Linux у вашего пользователя SHELL установлено значение / bin / bash, а в OS X - / bin / sh. Сценарий конфигурирования, сгенерированный autoconf, выполняет некоторые начальные тесты оболочки, в которой он работает, и пытается повторно выполнить себя, используя другую оболочку, если в предоставленной оболочке отсутствуют определенные функции. Однако, если вы вводите непереносимый код оболочки в configure.ac, то вы нарушаете одну из основных принципов autoconf, а именно то, что скрипты configure должны быть переносимыми. Если вы действительно хотите использовать bashisms в своем шелл-коде, то вы требуете, чтобы ваш пользователь передал SHELL = / bin / bash в качестве аргумента скрипту конфигурации. Это не ошибка в autoconf, но многие считают ее ошибкой в сборке вашего проекта.