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

脚本文件保存时使用了DOS格式,用DOS2UNIX转为UNIX格式,也可以用vim打开,用:set ff=unix转换。
不要在 Windows下编辑脚本文件,否则经常会遇到这种问题。

代码:
sed -i ‘s/\r$//‘ server.sh

还 可以用 vim 打开文件,然后执行冒号命令:

代码:

:set ff=unix
:wq

时间: 2024-11-03 03:31:46

bin/sh^M:损坏的解释器: 没有那个文件或目录的相关文章

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

有时候编写脚本时会出现类似标题列出的错误,这个问题大多数是因为你的脚本文件在windows下编辑过. windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么你在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用cat -A urfile时你可以看到这个\r字符被显示为^M,这时候只需要删除这个字符就可以了. 可以使用命令sed -i 's/\r$//' urfile .

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

由于在Windows下换行是\n\r,在Linux下打开多了\r,所以需要删除.删除命令 :sed -i 's/\r$//' filename -i插入 s替代模式 \r$表示任何以\r结束的字符 整句意思是把以\r结束的字符换成空白 参考: bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录 Error处理:/bin/bash^M: 坏的解释器: 没有该文件或目录(bad interpreter: No such file or directory)

/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-

脚本格式之殇——/bin/bash^M: 没有那个文件或目录

Linux下的bash脚本是不支持换行符\r的,如果运行从windows拷贝的文件,出现/bin/bash^M: 坏的解释器: 没有那个文件或目录这样的错误提示,不妨检查下文件格式是否有误. 如果是格式问题,有如下两种方法: 一.查找替换法 第一步: cat -A filename查看'\n及\r空白符,\n会显示为$,而\r会显示为^M`. 第二步: sed -i 's/\r$//'filename替换掉全部\r字符. 二.VIM重置文档格式 第一步: :set ff?查看文件格式,能看到fi

CentOS7 crontab 不执行,报错 /bin/sh: root: command not found

使用CentOS7 执行定时脚本,结果提示报错: /bin/sh: root: command not found 问题在于文件 /var/spool/cron/root ,中无需再写root. 修改之后的脚本: [[email protected] cron]# crontab -l */10 * * * * perl /home/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.zbphp.com >> /sbin/null 2&

Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别

一.意思 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径. 其实第一句的#!是对脚本的解释器程序路径,脚本的内容是由解释器解释的,我们可以用各种各样的解释器来写对应的脚本. 比如说/bin/csh脚本,/bin/perl脚本,/bin/awk脚本,/bin/sed脚本,甚至/bin/echo等等. #!/bin/bash同理. 二.区别 GNU/Linux操作系统中的/bin/sh本是bash (Bourne-Again

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

PS背景:我在公司做sdk 的pc端开发,所以经常会在win下编译通过之后跑到linux下再运行一次已确保能支持多平台. 今儿在win下跑完一程序,然后放到linux下跑的时候,我用指令: [plain] view plain copy sudo ./build.sh 但是却没有任何反应.于是我换了指令,用 [plain] view plain copy chmod u+x build.sh ./build.sh 报错 "build.sh  /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