Skip to main content
Ask Question
General
Asked a question recently

Why do I get error messages after patching BASH for the Shellshock vulnerabilty?

Where am I?

In Bright Computing, Inc. you can ask and answer questions and share your experience with others!

Why do I get error messages after patching BASH for the Shellshock vulnerability?

Symptom:

bash: BASH_FUNC_module(): line 0: syntax error near unexpected token `)' bash: BASH_FUNC_module(): line 0: `BASH_FUNC_module() () {  eval `/cm/local/apps/environment-modules/3.2.6//Modules/$MODULE_VERSION/bin/modulecmd bash $*`' 
bash: error importing function definition for `BASH_FUNC_module' bash: BASH_FUNC_module(): line 0: syntax error near unexpected token `)' 
bash: BASH_FUNC_module(): line 0: `BASH_FUNC_module() () {  eval `/cm/local/apps/environment-modules/3.2.6//Modules/$MODULE_VERSION/bin/modulecmd bash $*`' 
bash: error importing function definition for `BASH_FUNC_module' bash: BASH_FUNC_module(): line 0: syntax error near unexpected token `)' 
bash: BASH_FUNC_module(): line 0: `BASH_FUNC_module() () {  eval `/cm/local/apps/environment-modules/3.2.6//Modules/$MODULE_VERSION/bin/modulecmd bash $*`'

The patching of BASH due to the shellshock vulnerability has introduced some changes with respect to the function definition syntax in exported functions

If you defined and export a function:

$ myfunction () { echo "hello world"; } $ export -f myfunction

the corresponding environment variable is now different.

The old form:

myfunction=() { echo "hello world"}

The new form:

BASH_FUNC_myfunction()=() { echo "hello world"}

The two forms are not compatible and this triggers the errors that you see.

The workaround is to source the modules init script again in your (job submission) script:

source /etc/profile.d/modules.sh22