web-dev-qa-db-ja.com

/ bin / sh:「some-function」の関数定義のインポートエラー

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'
14
D McKeon

[最初のコメントの後に編集:@chepner-ありがとう!]

/ bin/bashでは関数名にハイフンを使用できますが、/ bin/sh(Bourne Shell)では使用できません。ここでは、問題のある「some-function」がbashによってエクスポートされており、bashは上記のエラーを報告した/ bin/shを呼び出すyumを呼び出しました。

修正:ハイフンを含まないようにシェル関数の名前を変更

man bashは、bash識別子は「英数字とアンダースコアのみ」で構成されている可能性があると述べています。

/ bin/shエラーはより明確です:

some-function () { :; }

sh: `some-function ':有効な識別子ではありません

17
D McKeon

関数名を"foo-bar"から"foo_bar"に変更/修正します

shはそうではなく、bashは問題ないという命名規則です。

「-」(ハイフン/ダッシュ/マイナス)を「_」(アンダースコア)に置き換えます。エラーが修正され、コードはbashshの両方で機能します。

2
S471