CVE-2014-6271のセキュリティ問題のbashを更新するときに、このエラーが発生しました:
# yum update bash
Running transaction (shutdown inhibited)
Updating : bash-4.2.47-4.fc20.x86_64
/bin/sh: error importing function definition for `some-function'
[最初のコメントの後に編集:@chepner-ありがとう!]
/ bin/bashでは関数名にハイフンを使用できますが、/ bin/sh(Bourne Shell)では使用できません。ここでは、問題のある「some-function」がbashによってエクスポートされており、bashは上記のエラーを報告した/ bin/shを呼び出すyumを呼び出しました。
修正:ハイフンを含まないようにシェル関数の名前を変更
man bashは、bash識別子は「英数字とアンダースコアのみ」で構成されている可能性があると述べています。
/ bin/shエラーはより明確です:
some-function () { :; }
sh: `some-function ':有効な識別子ではありません
関数名を"foo-bar"
から"foo_bar"
に変更/修正します
shはそうではなく、bashは問題ないという命名規則です。
「-」(ハイフン/ダッシュ/マイナス)を「_」(アンダースコア)に置き換えます。エラーが修正され、コードはbashとshの両方で機能します。