我在针对 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'
答案1
[在第一条评论后编辑:@chepner - 谢谢!]
/bin/bash 允许在函数名称中使用连字符,而 /bin/sh (Bourne shell) 则不允许。在这里,有问题的“some-function”已由 bash 导出,并且 bash 调用 yum,它调用 /bin/sh 并报告上述错误。
修复:重命名 shell 函数以不包含连字符
man bash 说 bash 标识符可能包含:“仅包含字母数字字符和下划线”
/bin/sh 错误更加明确:
some-function () { :; }
sh:“某些功能”:不是有效的标识符
答案2
更改/修复函数名称从"foo-bar"
到"foo_bar"
这是命名约定巴什没问题,因为嘘不是。
将“-”(连字符/破折号/减号)替换为“_”(下划线),错误得到修复,并且代码适用于两者巴什和嘘