Merkwürdiger Bash-Fehler: "Fehler beim Importieren der Funktionsdefinition für 'BASH_FUNC_module'"

8645
kevinarpe

Beispielskript:

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

Ausgabe von Bash Version 4.1.2 (1) - Freigabe:

$ ./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 

Ausgabe von Bash-Version 3.2.25 (1) -Release:

$ ./a.bash abc 

Interessanterweise funktionieren beide, aber ich möchte diese hässliche Nachricht entfernen.

Ich denke, das hängt mit dem Shellshock-Patch zusammen, aber ich brauche Hilfe, um das zu bestätigen.

Ich habe ein bisschen gegoogelt, und die meisten Seiten verweisen auf das Verhalten von Bash nach dem Shellshock-Patching, aber ich weiß nicht, wie das Problem behoben werden kann.

Was ist die Problemumgehung für dieses Problem?

Ich arbeite bei einer "Mega Corporation", daher ist die Kontrolle über die installierten Pakete gleich Null.

3

2 Antworten auf die Frage

2
l0b0

Der einzige offensichtliche Fehler ist, dass jemand dies tat eval `/usr/bin/modulecmd bash $*`. Es gibt zu viele seltsame Dinge in diesem Code ins Detail zu gehen (tut es wirklich brauchen eval, warum die ye olde Stil Backticks, warum $*statt $@, und warum gibt es keine Anführungszeichen überall), aber es sieht aus wie Sie eine schwerbehinderte Schale haben damit umgehen.

1
jonny

Ich hatte das gleiche Problem, seit ich angefangen habe, "Umgebungsmodule" zu verwenden. Die Lösung (zumindest für mich) war, bash zu aktualisieren. Ich hatte bash 4.1.2-15.el6 verwendet und auf bash 4.1.2-29.el6 aktualisiert: yum update bash Natürlich können Sie "Mega" nicht überzeugen corp "zu aktualisieren, aber angesichts der Sorge um Shellshock könnten sie Ihnen zuhören?