(原创)Windows下编译的Shell脚本不能再Linux中运行的解决办法
2015-05-11 16:22
1051 查看
一、原理
Windows编译的文件和Linux编译的文件格式不太一样,导致在Linux运行Shell脚本的时候会提示:/bin/bash^M: bad interpreter: 没有那个文件或目录。
原因是这样的:
1、Windows编译的文件结束时(回车+换行)
2、Linux编译的文件结束时(换行)
![](http://images.cnitblog.com/blog2015/706441/201505/111620118764916.png)
![](http://images.cnitblog.com/blog2015/706441/201505/111623447829271.png)
这样导致了Windows编译的文件放在Linux中会有[noeol]和[dos]的Flag标示。
如果运行CAT命令可以更直观的看到两个不同操作系统产生的文件差异,Windows产生的shell脚本文件中多了一个^M。
![](http://images.cnitblog.com/blog2015/706441/201505/111609545482245.png)
二、解决办法
在Windows生成的脚本进入vim编译模式,输入“:set fileformat=unix #转换成unix格式”,回车后wq保存退出即可。
![](http://images.cnitblog.com/blog2015/706441/201505/111616409237528.png)
现在可以用./Window.sh或者sh Window.sh在Linux中运行Shell脚本了,很神奇有木有^-^
大功告成~
Windows编译的文件和Linux编译的文件格式不太一样,导致在Linux运行Shell脚本的时候会提示:/bin/bash^M: bad interpreter: 没有那个文件或目录。
原因是这样的:
1、Windows编译的文件结束时(回车+换行)
2、Linux编译的文件结束时(换行)
![](http://images.cnitblog.com/blog2015/706441/201505/111620118764916.png)
![](http://images.cnitblog.com/blog2015/706441/201505/111623447829271.png)
这样导致了Windows编译的文件放在Linux中会有[noeol]和[dos]的Flag标示。
如果运行CAT命令可以更直观的看到两个不同操作系统产生的文件差异,Windows产生的shell脚本文件中多了一个^M。
命令格式:cat -A filename cat -A windows.sh cat -A linux.sh
![](http://images.cnitblog.com/blog2015/706441/201505/111609545482245.png)
二、解决办法
在Windows生成的脚本进入vim编译模式,输入“:set fileformat=unix #转换成unix格式”,回车后wq保存退出即可。
![](http://images.cnitblog.com/blog2015/706441/201505/111616409237528.png)
现在可以用./Window.sh或者sh Window.sh在Linux中运行Shell脚本了,很神奇有木有^-^
大功告成~
相关文章推荐
- windows下编写的Shell脚本在Linux下运行错误的解决方法
- 解决部分linux下不能shell脚本失效的解决办法 : not found Bad for loop variable
- windows下写的shell脚本在linux执行出错的解决办法
- windows下写的shell脚本在linux执行出错的解决办法
- windows下编写的Shell脚本在Linux下运行错误的解决方法
- windows下编写的Shell脚本在Linux下运行错误的解决方法
- Linux运行shell脚本提示No such file or directory错误的解决办法
- windows下写的shell脚本在linux执行出错的解决办法
- windows下上传shell脚本不能运行的解决方法
- 解决在windows环境中编写shell脚本,在Linux运行出错的问题
- windows下写的shell脚本在linux执行出错的解决办法
- Linux运行脚本命令提示No such file or directory错误的解决办法
- windows安装cygwin运行shell脚本 $'\r': 未找到命令的解决方法
- 在linux下无法访问Windows下的文件,显示错误为:不能访问软件的解决办法
- Linux终端执行shell脚本,提示权限不够的解决办法
- Sublimetext (for windows)编译运行c出现Error 2错误的解决办法
- 运行shell脚本提示找不到该文件的错误,解决办法
- Linux下VMware虚拟机网卡不能运行在混杂模式解决办法
- windows下建立文件的换行符^M导致linux下的shell脚本执行错误的解决方式
- 由于Windows和Linux行尾标识引起脚本无法运行的解决