Linux执行shell脚本时报错:./startup.sh: /bin/sh^M: 解释器错误: 没有那个文件或目录

从windows 复制过来的解压文件到 linux 发现了这个错误,可以这样解决:

原因:
将shell脚本由windows下移动、复制到linux系统下时会出现该问题,windows会自动在每一行结尾处加上 \r ,这是由于windows系统造成,但是 \r 在linux下没有对应的符号,所以Linux把 \r 就翻译成为 ^M ,当执行脚本时,由于无法识别 ^M 所以报错

解决办法:
使用sed将 \r 从每行结尾删除,如下

[root@iZuf60pvo0wxky9iy0cs8sZ bin]# ls
shutdown.cmd  shutdown.sh  startup.cmd  startup.sh
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# ./startup.sh 
-bash: ./startup.sh: /bin/sh^M: 解释器错误: 没有那个文件或目录
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# sed -i 's/\r$//' urfile
sed:无法读取 urfile:没有那个文件或目录
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# sed -i 's/\r$//' startup.sh 
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# sed -i 's/\r$//' shutdown.sh 
[root@iZuf60pvo0wxky9iy0cs8sZ bin]# sed -i 's/\r$//' startup.sh 

复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享