Странная ошибка 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, но я не знаю правильного обходного пути.
- Ссылка: https://rc.fas.harvard.edu/shellshock-update-issue-temporarily-affecting-slurm-jobs-software-modules/
- Ссылка 2: https://bugzilla.redhat.com/show_bug.cgi?id=1147043
Какой обходной путь для этой проблемы?
Я работаю в "Мега Корпорейшн", поэтому контроль над установленными пакетами равен нулю.
2 ответа
Единственная очевидная ошибка: кто-то сделал eval `/usr/bin/modulecmd bash $*`
, В этом коде слишком много странных вещей, чтобы вдаваться в детали ( действительно ли это нужно eval
почему у вас старые бэки, почему $*
вместо $@
и почему нигде нет кавычек), но похоже, что у вас может быть оболочка с серьезными недостатками для работы.
У меня была такая же проблема, так как я начал использовать "Модули среды". Решение (по крайней мере для меня) состояло в том, чтобы обновить bash, который я использовал bash 4.1.2-15.el6 и обновил до bash 4.1.2-29.el6 с помощью: yum update bash Очевидно, что вы не сможете убедить "мега" Корпорация ", чтобы обновить, но учитывая озабоченность вокруг снарядов они могут вас слушать?