在Ubuntu Shell下编译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): 没有那个文件或目录
同样是Linux,Fedora就能顺利的编译成功,这可能是Ubuntu Shell的问题,Ubuntu默认sh /bin/dash,与Fedora等Linux版本采用的bash不一样。
echo $SHELL 返回 /bin/bash
ls /bin/sh 返回指向/bin/dash
在make时makefile中已经有#! /bin/bash,可是调用的还是sh。
bash - GNU Bourne-Again SHell
dash - Debian Almquist Shell
解决方法:
无效文件限定的解决为:
文件首行采用 #! /bin/bash 这个是行不通的
文件首行采用 SHELL=/bin/bash 这个还没有测试,可能不行。echo $SHELL已经指向bash
最终解决方法:
sudo dpkg-reconfigure dash,在出来的菜单中选择NO,即不使用dash。