Linux下运行shell脚本,报错“/bin/bash^M: bad interpreter: No such file or directory”

问题描述:

问题出现操作过程:

1. 使用TortoiseGit从github上clone一个工程,工程中存在一个shell脚本。

2. 将shell脚本使用sftp上传至Linux服务器。

3. 执行shell脚本,报错"/bin/bash^M: bad interpreter: No such file or directory"。

问题原因

TortoiseGit安装后默认Git设置为自动转换文件格式,它会直接将文件Unix格式转成Windows下的dos格式,字段为:AutoCrlf,如图1所示:

Linux下运行shell脚本,报错“/bin/bash^M: bad interpreter: No such file or directory”_第1张图片
图1. TortoiseGit Git默认设置自动转换文件格式

解决办法

将TortoiseGit 工具上该字段值关闭,修改autocrlf=false即可解决,方法如图2、图3所示:

Linux下运行shell脚本,报错“/bin/bash^M: bad interpreter: No such file or directory”_第2张图片
图2. TortoiseGit修改演示
Linux下运行shell脚本,报错“/bin/bash^M: bad interpreter: No such file or directory”_第3张图片
图3. autocrlf修改演示

附:Linux上修改文件格式方法

首先你先要检查一下看看你的脚本文件是不是这个问题导致的,用vi命令打开要检查的脚本文件,然后用

:set ff?

命令检查一下,看看是不是dos字样,如果是dos格式的,继续执行

:set ff=unix

然后执行

:qw

保存退出即可

你可能感兴趣的:(Linux下运行shell脚本,报错“/bin/bash^M: bad interpreter: No such file or directory”)