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


13

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'

回答:


16

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

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

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

man bashは、bash識別子は「英数字とアンダースコアのみ」で構成されると言っています

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

some-function () { :; }

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


中にいることを注意bash、ハイフンがだけではないパラメータ名で、関数名に許可されています。
chepner 14

@chepnerアンダースコアはどうですか?関数名とパラメーター名にアンダースコアを使用できますか?
BH2017

私のシステムのbashで4は、関数名はハイフンを持つことができますが、 bashの3にはない-私はOPのシステム/ binに/ shの上で前提とbashの3で、及び/ binに/ bashはbashの4
マーク・フォックス

2

から"foo-bar"への関数名の変更/修正"foo_bar"

それはbashが命名規則ですがOKでであり、shはそうではありません。

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.