Shell “为什么可以?”;破折号-c';:'&引用;从源代码生成破折号0.5.8时失败?
使用从源代码(版本0.5.8,可在上获得)编译的破折号二进制文件,执行Shell “为什么可以?”;破折号-c';:'&引用;从源代码生成破折号0.5.8时失败?,shell,ubuntu,posix,dash-shell,Shell,Ubuntu,Posix,Dash Shell,使用从源代码(版本0.5.8,可在上获得)编译的破折号二进制文件,执行 dash -c ':' 失败于 dash: 1: :: Permission denied 这意味着 case foo in *bar*) : do_stuff ;; *) : ;; esac 失败,这会破坏很多脚本。为什么ubuntu分发的破折号二进制文件没有这个问题?如果LC\u ALL设置为排序规则顺序,这与ASCII字节顺序默认值(LC\u ALL=C)不同,mkbuiltins可以在builtin
dash -c ':'
失败于
dash: 1: :: Permission denied
这意味着
case foo in
*bar*) :
do_stuff ;;
*) :
;;
esac
失败,这会破坏很多脚本。为什么ubuntu分发的破折号二进制文件没有这个问题?如果
LC\u ALL
设置为排序规则顺序,这与ASCII字节顺序默认值(LC\u ALL=C
)不同,mkbuiltins
可以在builtins.C
中生成一个数组,其中bsearch()
可能无法找到内置文件
这肯定是一个bug,应该向上游报告。CNR。运行我自己的构建,同一命令没有失败。
$~/local/opt/dash-0.5.8/bin/dash-c':&echo“null命令成功退出”
;仅输出:null命令成功退出
我很好奇,顺便问一下——您是否从true
中得到同样的失败?如果您阅读源代码,true
和:
的实现方式相同。嗯,true可以工作,:不可以。您在哪个操作系统上试用过它?我刚刚测试了true和:在OS X上工作,但是:在ubuntu 14.04上从源代码编译时不工作。中报告-感谢所有的帮助!