Странная ошибка bash: "ошибка импорта определения функции для BASH_FUNC_module"

Пример скрипта:

#!/usr/bin/env bash
echo "abc"

Выход из Bash версии 4.1.2(1)-релиз:

$ ./a.bash
bash: BASH_FUNC_module(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_module(): line 0: `BASH_FUNC_module() () {  eval `/usr/bin/modulecmd bash $*`'
bash: error importing function definition for `BASH_FUNC_module'
abc

Выход из Bash версии 3.2.25(1)-релиз:

$ ./a.bash
abc

Интересно, что они оба работают, но я хотел бы удалить это уродливое сообщение.

Я думаю, что это связано с патчем Shellshock, но мне нужна помощь, чтобы подтвердить.

Я немного погуглил, и большинство страниц указывают на поведение Bash после исправления Shellshock, но я не знаю правильного обходного пути.

Какой обходной путь для этой проблемы?

Я работаю в "Мега Корпорейшн", поэтому контроль над установленными пакетами равен нулю.

2 ответа

Единственная очевидная ошибка: кто-то сделал eval `/usr/bin/modulecmd bash $*` , В этом коде слишком много странных вещей, чтобы вдаваться в детали ( действительно ли это нужно eval почему у вас старые бэки, почему $* вместо $@ и почему нигде нет кавычек), но похоже, что у вас может быть оболочка с серьезными недостатками для работы.

У меня была такая же проблема, так как я начал использовать "Модули среды". Решение (по крайней мере для меня) состояло в том, чтобы обновить bash, который я использовал bash 4.1.2-15.el6 и обновил до bash 4.1.2-29.el6 с помощью: yum update bash Очевидно, что вы не сможете убедить "мега" Корпорация ", чтобы обновить, но учитывая озабоченность вокруг снарядов они могут вас слушать?

Другие вопросы по тегам