shell脚本报错说 bash解释器损坏,没有该目录或文件的解决方案
2012-09-25 10:12
218 查看
今天在翻看以前写的简单的shell脚本时,发现一个问题:
当./运行时总是提示: (bash: ./hello.sh: bin/bash: 坏的解释器: 没有那个文件或目录),但是当用sh运行时正确.
原来的脚本:
(试试看你能否一眼看出错误)
#!bin/bash
echo "Hello Linux!"
后来几番检查发现自己写的丢了一些东西.
应该把红体字改成 #!/bin/bash (!后面少了/)
唉,很简单的问题,自己以前没有发现还有这样的错误! shell脚本的确好用,可唯一难的就是格式要求太高!
-----------------------------------------------------------------------------------------------------------------------------------------------------------
另外出现此问题的原因还有:
今天在Windows环境下用UE写了个shell脚本,然后拿到linux下运行发现如下错误:
/bin/sh^M:损坏的解释器: 没有那个文件或目录
出现这个问题的原因如下:在Windows下,每一行的结尾是\n\r,但是在Linux下文件的结尾是\n。因此在Windows环境下编辑过的文件在Linux下打开看的时候每一行的结尾就会多出来一个字符\r。
因此,想要在Windows环境下编辑的脚本应该保存为UNIX而不是DOS格式,很多文本编辑器都支持另存为Unix格式的功能。
如果脚本文件保存时使用了DOS格式,我们就可以通过以下几种方法来将它转换为UNIX格式:
用vim打开该脚本,在命令行模式下输入:setff=unix来转换.
使用命令:sed-i
‘s/\r$//’ urfile.
使用UE打开该脚本,然后另存为UNIX换行符的脚本.
当./运行时总是提示: (bash: ./hello.sh: bin/bash: 坏的解释器: 没有那个文件或目录),但是当用sh运行时正确.
原来的脚本:
(试试看你能否一眼看出错误)
#!bin/bash
echo "Hello Linux!"
后来几番检查发现自己写的丢了一些东西.
应该把红体字改成 #!/bin/bash (!后面少了/)
唉,很简单的问题,自己以前没有发现还有这样的错误! shell脚本的确好用,可唯一难的就是格式要求太高!
-----------------------------------------------------------------------------------------------------------------------------------------------------------
另外出现此问题的原因还有:
/bin/sh^M:损坏的解释器: 没有那个文件或目
/bin/sh^M:损坏的解释器: 没有那个文件或目录
出现这个问题的原因如下:在Windows下,每一行的结尾是\n\r,但是在Linux下文件的结尾是\n。因此在Windows环境下编辑过的文件在Linux下打开看的时候每一行的结尾就会多出来一个字符\r。
因此,想要在Windows环境下编辑的脚本应该保存为UNIX而不是DOS格式,很多文本编辑器都支持另存为Unix格式的功能。
如果脚本文件保存时使用了DOS格式,我们就可以通过以下几种方法来将它转换为UNIX格式:
用vim打开该脚本,在命令行模式下输入:setff=unix来转换.
使用命令:sed-i
‘s/\r$//’ urfile.
使用UE打开该脚本,然后另存为UNIX换行符的脚本.
相关文章推荐
- shell脚本报错说 bash解释器损坏,没有该目录或文件的解决方案
- shell脚本报错说 bash解释器损坏,没有该目录或文件的解决方案
- bash: ./onekey.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- /bin/bash^M:损坏的解释器: 没有那个文件或目录
- bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- /bin/sh^M:损坏的解释器: 没有该文件或目录 【解决方案】
- bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- 【解决方案】/bin/sh^M:损坏的解释器: 没有该文件或目录
- Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录
- /bin/bash^M:损坏的解释器: 没有那个文件或目录
- /bin/bash^M: 坏的解释器: 没有那个文件或目录
- bash: ./configure: /bin/sh^M: 坏的解释器: 没有那个文件或目录
- /bin/sh^M:损坏的解释器: 没有那个文件或目录
- 脚本执行错误---binsh^M:损坏的解释器 没有那个文件或目录