サンプルスクリプト:
#!/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パッチに関連していると思いますが、確認するためにいくつかの助けが必要です。
グーグルを実行しましたが、ほとんどのページでShellshockパッチ適用後のBashの動作が示されていますが、正しい回避策がわかりません。
この問題の回避策は何ですか?
私は「メガコープ」で働いているので、インストールされたパッケージの制御はありません。
すぐに明らかな唯一のエラーは、誰かがeval `/usr/bin/modulecmd bash $*`
。そのコードにはあまりにも多くの奇妙なことがあり、詳細に説明することはできません(そうですか本当にeval
が必要です、なぜあなたがたは古いスタイルのバックティックなのか、なぜ$*
の代わりに $@
、そしてなぜどこにも引用符がないのはなぜですか)、しかしあなたは対処すべき重度の障害のあるシェルを持っているようです。
「環境モジュール」を使い始めてから、同じ問題が発生していました。解決策は(少なくとも私にとっては)bash 4.1.2-15.el6を使用していたbashを更新し、bash4.1.2-29.el6に次のように更新することでした。yumupdatebash明らかに、「メガ」を納得させることができない場合があります。 corp」を更新しますが、Shellshockに関する懸念を考えると、彼らはあなたの言うことを聞くかもしれません。