在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
解決方式:
網上提到無效的文件限定的解決方式:
網上資料中提供了最終解決方式:
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