一、问题:
在用assembly插件进行spring boot项目打包发版时,写的shell脚本在每次运行时都会提示:
/bin/sh^M: bad interpreter: No such file or directory
二、原因:
是CR/LF问题,在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”;
而linux/unix下按一次回车键只输入“换行(LF)”,所以修改的sh文件在每行都会多了一个CR,所以linux下运行时就会报错找不到命令。
三、解决方式:
1、利用editplus等工具设置sh文件的File format格式为unix——
在editplus中“文档->文件格式(CR/LF)->UNIX”,这样linux下就能按unix的格式保存文件
(英文对应:document→File Format(CR/LF)→change File Format,设置为unix格式即可)
在UltraEdit:File-->Conversions-->DOS->UNIX。
2、在vim/vi中,输入:set ff=unix,同样也是转换成unix的格式。
首先要确保文件有可执行权限
#sh>chmod a+x filename
然后修改文件格式
#sh>vi filename
利用如下命令查看文件格式
:set ff 或 :set fileformat
可以看到如下信息
fileformat=dos 或 fileformat=unix
利用如下命令修改文件格式
:set ff=unix 或 :set fileformat=unix
:wq (存盘退出)
最后再执行文件
#sh>./filename
注释:建议用第一种解决方法,这样不用每次打war包解包之后的sh脚本都修改ff格式。