-bash: ./switch.sh: /bin/bash^M: bad interpreter: No such file or directory

问题:

       偶然使用 windows 进行编写脚本。使用 wsl (windows subsystem for linux) 进行运行的时候,什么事情没有。但是当把脚本移植到远程服务器进行运行的时候,发现脚本执行出现了错误:-bash: ./switch.sh: /bin/bash^M: bad interpreter: No such file or directory 。一时间解决不了。理论上都使用wsl 执行过了,应该是没问题了。但是通过查找资料发现,确实是有问题:

思考:

       应该是就是windows 中 CRLF 与 linux 或者Unix类系统中的 LF 之间的区别。这段时间听说,window 即将更正CRLF 这个换行。想必到时应该就没有上述的问题了。同时我们也可以证明发现。在windows subsystem for linux 中,其是兼容windows的 CRLF 的这种格式的。

解决方法:

      1. 使用 vim/vi 中的 命令

:set ff=unix

  2. 使用 bash 中的dos2unix 命令,来进行文件格式转换。这个操作可以在服务器上,也可以使用windows subsystem linux 完成。 如果系统中没有 dos2unix 工具,那么你可能需要使用 yum / apt / dnf / pacman 之类的 包管理软件,进行安装一下了。

DESKTOP-05DDFQ6# dos2unix runmake.sh
dos2unix: converting file runmake.sh to Unix format ...

 转载请注明出处. 2018年5月13日

 

猜你喜欢

转载自www.cnblogs.com/xuyaowen/p/dos2unix-wsl.html