由于git clone速度太慢,有些人先在Windows下搭建了环境,已经把SDKclone下来了,现在又想在Ubuntu下搭建,又不想把SDK重新克隆,就直接把Windows下clone的SDK移到Ubuntu下。这样直接移入的SDK可以用,但是会出现某些问题,因为Windows和Linux系统有些格式不太一样。
问题
会出现": /usr/bin/env: "bash\r": 没有那个文件或目录
和":/usr/bin/env python\r ":no such file or directory
这样的错误.还有可能出现说某个执行程序没有权限的问题。
异常原因
在windows下,用连续的’\r’和’\n’两个字符进行换行。’\r’为回车符,’\n’为换行符,比如原来的’aaabbb’更改为’aaa \n bbb’后输出的结果为:aaa 换行 bbb。
#!/usr/bin/env python\r\n
在Linux下,用’\n’进行换行。
#!/usr/bin/env python\n
所以windows下的程序会认为#!/usr/bin/env python
是一行,而linux会认为#!/usr/bin/env python\r
是一行。
解决
1、可执行程序没有权限这个问题解决办法很简单,没有权限给它权限就行。
chmod +x <filename>
2、\r的问题解决办法有两个
(1)用VIM打开报错的脚本,直接输入以下命令:
注意:直接在命令行模式
:set ff
回车
:set ff=unix
回车,然后保存退出:wq!
(2)使用dos2unix这个包进行转换
首先通过apt-get命令安装dos2unix的包,然后通过dos2unix这个命令即可完成转换。
sudo apt-get install dos2unix
dos2unix <filename>