故障现象:在终端直接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脚本,如果能执行成功说明问题已经解决。