bash: ./eth0-access: /bin/bash^M: bad interpreter:
没有那个文件或目录
错误分析:
因为操作系统是windows,我在windows下编辑的脚本,所以有可能有不可见字符。脚本文件是DOS格式的, 即每一行的行尾以 来标识, 其ASCII码分别是0x0D, 0x0A.可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的
解决方法:
vim filename
然后用命令
:set ff? #可以看到dos或unix的字样. 如果的确是dos格式的。
然后用
:set ff=unix #把它强制为unix格式的, 然后存盘退出。
再次运行脚本。
网络搜索的另一套方法:
在在做Broadcom的BCM2157平台,发给我们的平台源码包里只提供了一个patch,需要先从网上下载指定的Android源码,给的文档里下载源码的部分所用的命令很多都不能使用了,不知道为什么。按照常规的办法下载里指定的版本,在执行shell文件打patch时结果报如下错误: allen@dell-ubuntu:~/work$/bin/bash^M:损坏的解释器: 没有那个文件或目录 在网上查询得到如下信息: 有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为你的脚本文件在windows下编辑过。windows下,每一行的结尾是\n\r,而 在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用cat -A filename时你可以看到这个\r字符被显示为^M,这时候只需要删除这个字符就可以了。可以使用命令sed -i 's/\r$//' filename 。 看来发给我们的这个.sh文件在windows下编译过。执行如下命令OK了: allen@dell-ubuntu:~/work$ sed -i 's/\r$//' apply_brcm_patch.sh |