/ bin / sh:导入“一些功能”的功能定义时出错


14

为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'

Answers:


17

[在发表第一条评论后编辑:@chepner-谢谢!]

/ bin / bash允许在函数名称中使用连字符,而/ bin / sh(Bourne shell)则不允许。在这里,令人讨厌的“某些功能”已由bash导出,名为bum的bash称为/ bin / sh,它报告了上述错误。

修复:重命名外壳函数不带连字符

bash男子说bash标识符可能包括:“仅字母数字字符和下划线”

/ bin / sh错误更为明显:

some-function () { :; }

sh:`some-function':不是有效的标识符


请注意,在中bash,函数名称中允许使用连字符,而参数名称中则不允许使用连字符。
chepner 2014年

@chepner下划线呢?函数名称和参数名称中是否可以使用下划线?
BH2017 '16

在我的系统上,bash 4允许函数名称带有连字符, bash 3不允许连字符-我假设在OP的系统上/ bin / sh是bash 3,/ bin / bash是bash 4
Mark Fox

2

从更改/修复功能名称"foo-bar""foo_bar"

bash可以使用命名约定,而sh不能使用。

将“-”(连字符/破折号/减号)替换为“ _”(下划线),错误得到修复,并且代码可同时用于bashsh

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.