解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题

PS背景:我在公司做sdk 的pc端开发,所以经常会在win下编译通过之后跑到linux下再运行一次已确保能支持多平台。

今儿在win下跑完一程序,然后放到linux下跑的时候,我用指令:

[plain] view plain copy

  1. sudo ./build.sh

但是却没有任何反应。于是我换了指令,用

[plain] view plain copy

  1. chmod u+x build.sh

  2. ./build.sh

报错 “build.sh  /bin/bash^M: 坏的解释器:没有那个文件或目录”。 以前遇到这个问题,换了几种编译方法就解决了,单这次还是不行,于是又换:
bash build.sh

编译的时候报错 :

后来一想 \r 这个符号怎么出现的,于是各种百度,才知道原因可能是因为我在win下操作的时候,修改到了此文件。

在win下编辑的时候,换行结尾是\n\r , 而在linux下 是\n,所以才会有 多出来的\r

用指令:

[plain] view plain copy

  1. sed -i ‘s/\r$//‘ build.sh

会把 build.sh 中的\r 替换成空白!

再次编译!成功!!

PS:写在后面

参考文章:http://www.educity.cn/wenda/153393.html

一楼大牛提议,有一个dos2unix的软件,我一看果然好用!感谢CedarDiao  大牛!

时间: 2024-10-19 23:46:50

解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题的相关文章

linux下编译make文件报错“/bin/bash^M: 坏的解释器,使用grep快速定位代码位置

一.linux下编译make文件报错"/bin/bash^M: 坏的解释器 参考文章:http://blog.csdn.net/liuqiyao_01/article/details/41542101#comments 自己测试的结果: [1]使用windows 下的编辑工具 新建文件doc2unix.sh #!/usr/bin/env bash # test PID=$(ps -aef | grep nginx | grep -v grep | grep master |awk '{print

解决 linux下编译make文件报错“/bin/bash^M: 坏的解释器:没有那个文件或目录” 问题

PS背景:我在公司做sdk 的pc端开发,所以经常会在win下编译通过之后跑到linux下再运行一次已确保能支持多平台. 今儿在win下跑完一程序,然后放到linux下跑的时候,我用指令: sudo ./build.sh 但是却没有任何反应.于是我换了指令,用 chmod u+x build.sh ./build.sh 报错 "build.sh  /bin/bash^M: 坏的解释器:没有那个文件或目录". 以前遇到这个问题,换了几种编译方法就解决了,单这次还是不行,于是又换:bash

/bin/bash^M: 坏的解释器: 没有那个文件或目录(bad interpreter: No such file or directory)

在Linux下编译cocos2d-x运行脚本的时候出现"/bin/bash^M: 坏的解释器: 没有那个文件或目录(bad interpreter: No such file or directory)"这样的错误如下图. 解决方法: 使用在终端输入sed -i 's/\r$//' make-all-linux-project.sh即可 其中make-all-linux-project.sh为我的文件名,这里改成自己需要的即可 原因: 这个文件在Windows 下编辑过,在Window

/bin/bash^M: 坏的解释器: 没有那个文件或目录

在windows 下编辑的shell 脚本在linux下运行时,报"没有这个文件或目录",原因在于 两个系统的换行符不一致导致. 解决方法: 使用在终端输入sed -i 's/\r$//' make-all-linux-project.sh即可 其中make-all-linux-project.sh为我的文件名,这里改成自己需要的即可 原因: 这个文件在Windows 下编辑过,在Windows下每一行结尾是\n\r,而Linux下则是\n sed -i 's/\r$//' make-

Android下编译cocos2d-x项目报错 ***'AssetsManager.o'. Stop

具体错误提示: make: *** No rule to make target `***/extensions/AssetsManager/AssetsManager.cpp', needed by `obj/local/armeabi/objs/cocos_extension_static/AssetsManager/AssetsManager.o'.  Stop. 很头疼的问题,一时间无从下手,从网上搜索论坛,终于找到了大神的答案. 具体的解决办法如下: 删除projec.andriod 

解决 linux下编译.sh文件报错 “[: XXXX: unexpected operator” 问题

本人经常在linux通过编译 .sh文件来生成工程,之前一直都没问题,代码一直都没变,但是今天编译的时候,却提示错误: 然后我就表示很费解,查看我的.sh文件,其中有很多的[] ,都是这些报错,可是之前一直没问题. 后来发现,因为ubuntu默认的sh是连接到dash的,又因为dash跟bash的不兼容所以出错了.执行时可以把sh换成bash文件名.sh来执行.成功.dash是什么东西,查了一下,应该也是一种shell,貌似用户对它的诟病颇多. 修改sh默认连接到bash的一种方法: sudo

解决Linux下编译.sh文件报错 “[: XXXX: unexpected operator”

本人经常在Linux通过编译 .sh文件来生成工程,之前一直都没问题,代码一直都没变,但是今天编译的时候,却提示错误: 然后我就表示很费解,查看我的.sh文件,其中有很多的[] ,都是这些报错,可是之前一直没问题. 后来发现,因为Ubuntu默认的sh是连接到dash的,又因为dash跟bash的不兼容所以出错了.执行时可以把sh换成bash文件名.sh来执行.成功.dash是什么东西,查了一下,应该也是一种shell,貌似用户对它的诟病颇多. 修改sh默认连接到bash的一种方法: sudo

Linux下搭建FTP以及报错

首先搭建FTP. 说明:本例是在redhat6 64 系统中进行安装的:大部分Linux中的配置都一样 一.安装 1.确认yum源 [我的yum源是直接用的redhat盘比较简便,同时确认光盘已用  mount /dev/cdrom /media  这条命令挂载到了/media 下] rm -rf /etc/yum.repos.d/* vi /etc/yum.repos.d/yum.repo [yum] name=yum baseurl=file:///media enabled=1 gpgch

linux下tomcat无法启动报错

×××××××××××××××××××××××××××××××××××××××××××××××××××报错信息如下×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× Neither the JAVA_HOME nor the JRE_HOME environment variable is definedAt least one of these environment variable is needed t