3

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

#!/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 ответа2

2

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

1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .