我在windows中用UltraEdit写了两个简单Shell脚本,放到Ubuntu下运行。 在 Linux 中执行.sh脚本,异常/bin/sh^M: bad interpreter: No suchorfiledirectory。 分析:这是不同 系统编码格式 引起的,在windows系统中编辑的.sh文件可能有不可见字符,所以在Linux系统下执行会报以上异常信息。 解决方案: 1)在windows下转换: 利用一些编辑器如UltraEdit或EditPlus等工具先将脚本编码转换,再放到Linux中执行。转换方式如下(UltraEdit):File-->Conversions-->DOS->UNIX即可。 2)也可在Linux中转换: vi filename.sh 利用如下命令查看文件格式 :set ff 或 :set fileformat 可以看到如下信息 fileformat=dos 或 fileformat=unix 利用如下命令修改文件格式 :set ff=unix 或 :set fileformat=unix :wq (存盘退出) 再加一招 使用vi vi dos_file.txt :%s/^M//g 其中^M 必须是同时按 Ctrl+V+M ,表示回车。不是直接输入 ^M ,那没有用的, :-) 3)用 dos2unix 命令转换: 在Ubuntu中安装tofrodos软件包(dos2unix/unix2dos命令就在其中) sudo atp-get install tofrodos 安装好后,用如下命令即可将dos格式到文本文件转化为unix通用格式。 dos2unix filename.sh 最后再运行文件 sh filename.sh |
|