linux解决“/bin/bash^M: bad interpreter“的思路
原创Linux解决"/bin/bash^M: bad interpreter"问题思路
在Linux系统中,当你尝试执行一个脚本文件时,有时会遇到如下不正确信息:“/bin/bash^M: bad interpreter”。这个问题通常是由于脚本文件中的DOS格式换行符让的。本文将介绍怎样解决这个问题。
问题原因
在Windows系统中,文本文件的换行符通常是两个字符:回车(CR)和换行(LF),即“\r”。而在Linux系统中,换行符仅包含一个字符:换行(LF),即“”。当你在Windows系统中编辑或创建一个脚本文件,然后在Linux系统上尝试执行时,这个文件大概包含DOS格式的换行符(CR+LF)。这时,如果bash尝试读取这些字符作为命令的一部分,就会让“bad interpreter”不正确。
解决方案
方法一:转换文件格式
你可以使用以下命令将文件格式从DOS变成UNIX格式:
sed 's/\r$//' inputfile.sh > outputfile.sh
这个命令会读取
方法二:在Vim中转换
如果你使用Vim编辑器,可以按照以下步骤转换文件格式:
- 打开文件:vim inputfile.sh
- 在Vim命令模式中执行以下命令::set ff=unix
- 保存文件并退出::wq
方法三:使用命令行工具
可以使用以下命令行工具将文件格式变成UNIX格式:
- dos2unix:在大多数Linux发行版中都可以使用
- fromdos:在某些Linux发行版中可用
例如,使用以下命令:
dos2unix inputfile.sh
预防措施
为了避免将来遇到这个问题,建议在编写和编辑脚本时使用拥护UNIX格式换行符的文本编辑器。此外,确保你的文件传输工具在从Windows系统传输文件到Linux系统时不会改变文件格式。
文章标签:
Linux