当前位置: 首页 > news >正文

Shell报错bash^M /bin/bash^M: bad interpreter: No such file or directory

问题:

在windows上写的一个shell脚本,在Linux上报错,vim打开的时候看了没有啥问题,这种情况遇到很棘手,明明没有问题的脚本怎么会报错。
后来直接在另外一台linux机器scp传过来的同样的脚本就没问题。第一个脚本因为在windows上做过修改,所以怀疑是系统之间的默认编码不同导致的报错。报错内容是^M,所以查找这个报错。

解决方法:

如果是单个文件的话,直接vim打开,命令模式用set ff?查看一下编码是dos还是unix,如果是dos直接用set ff=unix就可以了,如果是批量文件的话,找到下面的方法(用sed或者vim进行替换的时候打^M不是shift+6,而是Ctrl+v+m):

基于 DOS/Windows 的文本文件在每一行末尾有一个 CR(回车)和 LF(换行),
而 UNIX 文本只有一个换行,即win每行结尾为\r\n,而linux只有一个\n,
如果win下的文档上传到linux,每行的结尾都会出现一个^M,(^M是ctrl+v,ctrl+m)
如果是单个文档的话,可以用vi打开,执行 :%s/^M//g 来去掉^M,但如里批量去
除的话就不能用vi了,
方法1: 用dos2unix工具,把win文档转换成linux下文档命令:
find ./ -type f -print0 | xargs -0 dos2unix
如果想把linux下的文档转换成win下的:
find ./ -type f -print0 | xargs -0 unix2dos方法2: 用sed命令把win文档
转换成linux下文档:
find ./ -type f print0 | xargs -0 sed -i 's/^M$//'
把linux下的文档转换成win下的
fild ./ -type f print0 | xargs -0 sed -i 's/$/^M/'

作者:小幕
链接:https://www.zhihu.com/question/22130727/answer/33814375
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

转载于:https://www.cnblogs.com/lixuebin/p/10808473.html

相关文章:

  • TFRecords文件的生成和读取(1)
  • lis最长递增子序列
  • Python全栈之路系列之深浅拷贝
  • mysql之count,max,min,sum,avg,celing,floor
  • 课堂小练习
  • 【题解】 [POI2012]FES-Festival (差分约束)
  • mac环境下配置nginx
  • 迭代器(Iterator)
  • git设置HTTP代理
  • Box and Ball
  • jsp中的el表达式没有解析
  • android解决AVD中文路径无法启动问题
  • TP5 中引入第三方类库
  • [BZOJ5250][九省联考2018]秘密袭击(DP)
  • 数据结构中的查找
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【347天】每日项目总结系列085(2018.01.18)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • JavaScript 基础知识 - 入门篇(一)
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Vue.js-Day01
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 分享一份非常强势的Android面试题
  • 构造函数(constructor)与原型链(prototype)关系
  • 聊一聊前端的监控
  • 如何学习JavaEE,项目又该如何做?
  • 使用parted解决大于2T的磁盘分区
  • 写代码的正确姿势
  • 一个完整Java Web项目背后的密码
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 积累各种好的链接
  • 如何正确理解,内页权重高于首页?
  • 我们雇佣了一只大猴子...
  • ​Java并发新构件之Exchanger
  • ​Linux·i2c驱动架构​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #1014 : Trie树
  • #QT(智能家居界面-界面切换)
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (14)Hive调优——合并小文件
  • (26)4.7 字符函数和字符串函数
  • (多级缓存)缓存同步
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)甲方乙方——赵民谈找工作
  • (转)重识new
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .net快速开发框架源码分享
  • .net中的Queue和Stack
  • @CacheInvalidate(name = “xxx“, key = “#results.![a+b]“,multi = true)是什么意思
  • [android] 练习PopupWindow实现对话框
  • [AX]AX2012 AIF(四):文档服务应用实例