奇怪的 bash 错误:“导入‘BASH_FUNC_module’函数定义时出错”

奇怪的 bash 错误:“导入‘BASH_FUNC_module’函数定义时出错”

示例脚本:

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

Bash 版本 4.1.2(1)-release 的输出:

$ ./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)-release 的输出:

$ ./a.bash
abc

有趣的是,它们都有效,但我想删除那条丑陋的消息。

我认为这与 Shellshock 补丁有关,但我需要一些帮助来确认。

我进行了一些 Google 搜索,大多数页面都指出了 Shellshock 修补后 Bash 的行为,但我不知道正确的解决方法。

这个问题的解决方法是什么?

我在一家“大型公司”工作,因此对已安装软件包的控制为零。

答案1

唯一立即明显的错误是有人做了eval `/usr/bin/modulecmd bash $*`。代码中怪异之处太多,无法详述(真的需要eval,为什么是老式的反引号,为什么$*不使用$@,以及为什么任何地方都没有引号),但看起来你可能有一个严重残疾的外壳需要处理。

答案2

自从我开始使用“环境模块”以来,我也遇到了同样的问题。解决方案(至少对我来说)是更新 bash 我一直使用 bash 4.1.2-15.el6,并使用以下命令更新到 bash 4.1.2-29.el6:yum update bash 显然,您可能无法说服“大型公司”进行更新,但考虑到对 shellshock 的担忧,他们可能会听您的?

相关内容