1.问题现象
bash: ./startup.sh:/bin/bash^M:解释器错误: 没有那个文件或目录
这个错误通常发生在尝试在Unix-like系统中执行脚本时,脚本文件的行尾结束符是Windows风格的CRLF(回车+换行,即\r\n
),而不是Unix风格的LF(换行,即\n
)。/bin/bash^M
说明了这个问题,^M
是字符\r
的控制台输出表示,即回车符。
2.解决办法
使用dos2unix
工具将脚本文件的行尾结束符从CRLF转换为LF: dos2unix startup.sh,dos2unix shutdown.sh,
如果没有dos2unix
,可以使用sed
命令进行转换: sed -i 's/\r//' startup.sh,sed -i 's/\r//' shutdown.sh
如果不想安装额外工具,可以使用vim
编辑器进行转换
vim startup.sh :set fileformat=unix :wq
或者使用sed
直接在命令行中执行转换:
sed -i 's/\r//' startup.sh
如果脚本是在Windows下编写的,考虑在Windows下转换为Unix风格再移动到Unix系统。
转换行尾结束符后,脚本应该可以在Unix-like系统中正常执行
其它sh文件按照上述办法进行处理。
标签:sed,startup,Unix,sh,Window,SH,Linux,转换,dos2unix From: https://www.cnblogs.com/oumi/p/18091543