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

8642
kevinarpe

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

#!/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, но я не знаю правильного обходного пути.

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

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

3

2 ответа на вопрос

2
l0b0

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

1
jonny

I was having this same problem since I began using "Environment Modules". The solution (for me at least) was to update bash I had been using bash 4.1.2-15.el6 and updated to bash 4.1.2-29.el6 with: yum update bash Obviously you may not be able to convince "mega corp" to update but given the concern around shellshock they might listen to you?

Похожие вопросы