感谢支持
我们一直在努力

Ubuntu Shell引发编译问题

Ubuntu 13.04下编译Realtek提供的Linux source包时发生

make_release: 344: make_release: Syntax error: “do” unexpected (expecting “fi”)
mv: 无法获取”drivers/net/wireless/realtek/pci/rtl8192ce/../../combo/rtl8192c_8192d/rtl8192_8188CE_linux_drv/” 的文件状态(stat): 没有那个文件或目录

改到Fedora 16下就顺利编译通过。

 

参考网上资料,发现是 Ubuntu 默认Shell的问题。Unbuntu默认 sh –> /bin/dash,与Fedora标准采用bash不一致。

echo $SHELL 返回 /bin/bash

ls -lis /bin/sh 返回指向/bin/dash

make 时,虽然makefile中已经有 #! /bin/bash,但实际上调用的还是sh。(该makefile是次级目录中的)

bash – GNU Bourne-Again SHell
dash – Debian Almquist Shell

解决方式:

网上提到无效的文件限定的解决方式:

  • 文件首行采用 #! /bin/bash 实际上行不通
  • 文件首行采用 SHELL=/bin/bash 未测试,但应该不行。 echo $SHELL 已经指向bash

网上资料中提供了最终解决方式:

sudo dpkg-reconfigure dash

在出现的菜单中选择 NO (不使用dash)

参考

Ubuntu下shell脚本运行异常:bash和dash的区别  http://www.linuxidc.com/Linux/2013-10/91100.htm

Ubuntu 的 bash和dash的区别  http://www.linuxidc.com/Linux/2012-03/57493.htm

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

赞(0) 打赏
转载请注明出处:服务器评测 » Ubuntu Shell引发编译问题
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏