执行shell脚本时提示bad interpreter:No such file or directory的解决办法

故障现象:在终端直接cd /var正常,在shell脚本中执行则报错。原因是脚本是在windows平台下写的,换行符与Linux不同,造成脚本不能正确执行

出现bad interpreter:No such file or directory(没有那个文件或目录)的原因,是文件格式的问题。这个文件是在Windows下编写的。换行的方式与Unix不一样,但是在vim下面如果不Set一下又完全看不出来。

问题分析:
1、将windows 下编写好的SHELL文件,传到linux下执行,提示出错。
2、出错信息:bad interpreter: 没有那个文件或目录。

问题原因:
因为操作系统是windows,在windows下编辑的脚本,所以有可能有不可见字符。脚本文件是DOS格式的
即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A.

解决方法:
可以有很多种办法看这个文件是DOS格式的还是UNIX格式的, 还是MAC格式的
(1) vim filename
然后用命令 :set ff
可看到dos或unix的字样,如果的确是dos格式的, 那么用set ff=unix把它强制为unix格式的,,然后存盘退出后就可运行。

(set ff=unix : 告诉 vi 编辑器,使用unix换行符,个人使用以上方法解决,简单方便,推荐此方式)

###############分割线##############

转换不同平台的文本文件格式可以用
1. unix2dos或dos2unix这两个小程序来做. 很简单. 在djgpp中这两个程序的名字叫dtou和utod, u代表unix, d代表dos
2. 也可以用sed 这样的工具来做:

复制代码代码如下:

sed ‘s/^M//‘ filename > tmp_filename
mv -f tmp_filename filename

特别说明:^M并不是按键shift + 6产生的^和字母M, 它是一个字符, 其ASCII是0x0D, 生成它的办法是先按CTRL+V, 然后再回车(或CTRL+M)

另外, 当SHELL程序报告command not found时, 总是去检查一下你的PATH里面有没有程序要用到的每一个命令(没指定绝对路径的那种). 你这么小的程序, 可以一行一行核对。

附:少写一个/引发的没有那个文件或目录问题

今天在翻看以前写的简单的shell脚本时,发现一个问题:

当./运行时总是提示:  (bash: ./hello.sh: bin/bash: 坏的解释器: 没有那个文件或目录),但是当用sh运行时正确.

原来的脚本:

(试试看你能否一眼看出错误)

复制代码代码如下:

#!bin/bash

echo "Hello Linux!"

后来几番检查发现自己写的丢了一些东西.

应该把第一行改成  #!/bin/bash ,少写了一个/

唉,很简单的问题,自己以前没有发现还有这样的错误! shell脚本的确好用,可唯一难的就是格式要求太高!

时间: 2024-10-08 10:14:02

执行shell脚本时提示bad interpreter:No such file or directory的解决办法的相关文章

/usr/bin/perl:bad interpreter:No such file or directory 的解决办法

yum -y install gcc gcc-c++ perl make kernel-headers kernel-devel 参考: https://blog.csdn.net/Hello_World_QWP/article/details/82624715 原文地址:https://www.cnblogs.com/sea-stream/p/10387794.html

Linux问题:Crontab 执行shell脚本时相对路径的问题,不能识别。

问题描述:在linux中的直接执行shell脚本可以用相对路径找到文件,但是如果通过计划任务crontab执行shell脚本时,却不能通过相对路径找到文件! 例子: shell脚本文件代码~ #! /bin/sh Logfile = './1.txt'; date >> $Logfile; echo '------'; 直接执行shell脚本,可以在1.txt文件中看到执行结果,但是如果用crontab计划任务去执行,却在1.txt中看不到执行结果.换成绝对路径就可以,代码如下 #! /bin

VS2012与VS2015同时安装用VS2012创建MFC程序时弹出编译错误”fatal error C1083: 无法打开包括文件:“mprapidef.h”: No such file or directory”的解决办法

在WIndows 7操作系统上同时安装VS2012与VS2015并用VS2012创建MFC程序时弹出编译错误"fatal error C1083: 无法打开包括文件:"mprapidef.h": No such file or directory"的解决办法: I installed vs2015 and vs2012, then the same problem occurs,however, I find a solution. open visual stud

sh脚本异常:bad interpreter: No such file or directory

转:http://bluedest.iteye.com/blog/1674963 在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory. 分析:这是不同系统编码格式引起的:在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息. 解决:1)在windows下转换: 利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行.转

执行Python "/bin/usr/python: bad interpreter: No such file or directory" 错误

今天在电脑上写了一个Python脚本,写好之后用ftp传上去,然后执行/var/www/cron.py,结果报错,/bin/usr/python: bad interpreter: No such file or directory,之前都是执行python /var/www/cron.py都没问题啊,看来应该不是代码的问题. 上网上搜了一下,有很多人都反映在windows下写的python文件会由于编码问题执行出错(windows下的换行符是'\r',而linux下是'\n'),于是检查了一下

在cocos2d-x-3.0 android 平台编译时提示CocosGUI.h: No such file or directory

分类是个让人蛋疼的事情,所幸自己的博客自己做主.这是个高兴的开始. 每天抽空玩2048,终于忍受不住,于是决定自己从网上download下源码,自己编译一个出来.所有的事情都很容易,除了操蛋的中文注释,在Unicode(UTF-8无签名)-代码页 65001的编码格式下,会产生很操蛋的错误提示. 当vs2012提示的错误让人摸不着头脑如坠毒海祸水时,首先应该怀疑编码格式,以及是否有中文注释. 然后,给vs添加了CocoStudio所应引用的三个库: HelloCocos\cocos2d\coco

64位linux系统无法运行Android sdk的adb和aapt,提示No such file or directory的解决办法

参考资料: http://askubuntu.com/questions/147400/problems-with-eclipse-and-android-sdk http://serverfault.com/questions/442792/ubuntu-12-04-apt-get-install-ia32-libs-unmet-dependencies http://my.oschina.net/uoy/blog/129108 本人在64位Debian上运行Android sdk目录下的ad

shell脚本执行后出现错误提示" /bin/bash^M: bad interpreter: No such file or dire"的解决办法

出现这种情况,通常都是在window下写好的shell脚本,拷贝到linux机器执行 才会出现 原因就是: windows下每一行的结尾是\n\r,而在linux下文件的结尾是\n 这样window写编辑的shell脚本拷贝到linux下时 每一行的结尾就会多出来一个字符\r 这个\r字符会被显示为^M 所以就会出现错误提示" /bin/bash^M: bad interpreter: No such file or dire", 字面意思就是/bin/bash^M: 坏的解释器: 没

解决使用crontab执行shell脚本时出现乱码情况

自己编写了一个shell脚本来维护测试环境,使用了crontab调度让其定时执行,结果遇到了乱码问题,脚本在shell环境下直接运行没有问 题. 结论是crontab执行时不会携带用户的环境变量,缺失一些系统变量,碰到中文就乱码.需要在脚本里额外添加缺失的环境变量,针对中文问题,需要声明 LANG参数 在脚本开头增加:LANG="en_US.UTF-8"export LANG 设置的编码要和系统设置的一致,具体可以到/etc/sysconfig/i18n 查看对应的环境变量.