今天在Linux下写shell时碰到一个奇怪的问题:执行shell时编译不了某个模块,手工进行编译却可以。查找很久,google了N遍,不得要领,正要发狂的时候,突然发现有一个cp的命令好像有问题,命令是: cp ./aaa.ko /lib/modules/misc,马上转到/lib/modules目录,结果发现misc是一个文件!
哦,凶手就是它!由于/lib/modules目录下原先没有misc目录,所以把aaa.ko改名为misc并复制
到/lib/modules。避免这个问题的建议:在复制之前先判断目录是否存在,不存在的话就创建一个。
shell修改为下面的就可以正确执行了:
...
if ! ls /lib/modules/misc/
then
mkdir /lib/modules/misc/
fi
if cp ./aaa.ko /lib/modules/misc/
then
echo "copy aaa.ko succeed"
else
echo "copy aaa.ko failed!"
exit 1
fi
(作者:myth)