前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录

Shell脚本bash: ./t.sh:/bin/bash^M:损坏的解释器: 没有那个文件或目录

作者头像
星辰sea
发布2022-10-29 09:57:15
1.3K0
发布2022-10-29 09:57:15
举报
文章被收录于专栏:星辰SEA星辰SEA

今天在将windows下的脚本文件通过scp命令,发送到远程服务器上,在执行过程中遇得到了这个问题

代码语言:javascript
复制
./sh.sh 
-bash: ./sh.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录

原因分析:windows下,每一行的结尾是\n\r,而在linux下文件的结尾是\n,那么在windows下编辑过的文件在linux下打开看的时候每一行的结尾就会多出来一个字符\r,用cat -A urfile时你可以看到这个\r字符被显示为^M,这时候只需要删除这个字符就可以了,可以使用命令 sed -i 's/\r//' filename

代码语言:javascript
复制
cat -A sh.sh
#!/bin/bash^M$
# ^M$
^M$
echo "Hello World"^M$
代码语言:javascript
复制
sed -i 's/\r//' sh.sh
代码语言:javascript
复制
./sh.sh 
Hello World
你好
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-07-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档