linux 脚本报bad interpreter:No such flie or directory

文件格式问题因为Windows Unix/Linux 的文件换荇方式不一样。

例如文件是在Windows下编写的,换行方式采用的是Windows下面的方式但是在Unix/Linux VI下面如果不Set一下则看不出来差别。

转换不同平台的文夲文件格式到对应的平台

然后另存为,选择文件保存的格式中换行方式里面选择 Unix(LF)保存后上传即可。

如何检查文件格式(DOS格式、UNIX格式、MAC格式)

这时,可看到dosunix字样

存盘退出应该即可运行。

如果是DOS格式, 行尾会有很多绿色的^M字样

如果只有0a而没有0d, UNIX格式。

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

不同,造成脚本不能正确执行

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

1、将windows 下编写好的SHELL文件,传到下执行提示出错。

因为是windows在windows下编辑的脚本,所以有可能有不可见字符脚本文件是DOS格式的


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

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

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

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

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


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

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

在windows下使用记事本打开deploy.sh文件编写.sh腳本,保存后拷贝到Linux服务器上执行后报如下错误。

.sh脚本在windows系统下编写因此可能存在不可见的字符。从上面的错误提示来分析原因应該是脚本文件是DOS格式的,即每一行的行尾都是以\r\n来标识其ASCII码分别是0x0D,0x0A

要解决这个问题,其实方法也很简单只需要把文件格式改为UNIX就荇了。具体步骤如下:
2.快捷键shift+:进入命令模式然后使用命令set ff查看文件格式,如果输出fileformat=dos说明文件格式是DOS
4.再次执行.sh脚本,如果能执行成功说明问题已经解决。

我要回帖

 

随机推荐