例子:
错误:

如果执行./prebuilts_download.sh 报错,错误是:
-bash: ./prebuilts_download.sh:/bin/bash^M:解释器错误: 没有那个文件或目录
原因:通常是由于脚本文件中的行尾符格式不正确导致的。 特别是当你在 Windows 系统上编辑了 Bash 脚本,然后将其复制到 Linux 或 macOS 系统上时,会发生此问题。
Windows 使用回车符+换行符 (\r\n) 作为行尾符,而 Linux 和 macOS 使用换行符 (\n)。 ^M 实际上就是回车符 (\r) 在某些编辑器中的显示方式。
麻烦执行:
sudo apt-get install dos2unix
dos2unix prebuilts_download.sh
./prebuilts_download.sh
如果不可用,可尝试 sed:
sed -i ‘s/\r$//’ prebuilts_download.sh
./prebuilts_download.sh
本质问题:
可能是由于你在执行git命令之后导致的。
说明你的文件或环境存在一些配置或操作,导致经常使用或产生这种格式的文件。以下是一些可能的原因:
1.Git 配置: Git 在 Windows 环境下,默认会将检出的文件转换为 Windows 换行符。
1.检查 core.autocrlf 配置:
git config --global core.autocrlf
如果输出是 true,表示 Git 会自动将文件转换为 Windows 换行符。
2.纠正方式:
git config --global core.autocrlf input # 推荐
#或者
git config --global core.autocrlf false # 禁用自动转换
input 设置会在检出时保留换行符不变,提交时将 CRLF 转换为 LF。 false 则禁用自动转换。
2.代码编辑器配置: 你使用的代码编辑器可能默认保存文件时使用 Windows 风格的换行符 (CRLF)。许多编辑器允许你配置默认的换行符类型。
Notepad++: 编辑 -> 行尾符转换 -> 选择 Unix (LF) 或 macOS (LF)。
VS Code: 文件 -> 首选项 -> 设置,搜索 “files.eol”,设置为 \n。
3.跨平台开发:
如果你在 Windows 和 Linux/macOS 之间共享代码,并且没有正确配置 Git 或编辑器,很容易导致换行符不一致。
4.IDE 或工具链:
某些 IDE 或工具链在生成文件时可能默认使用 Windows 换行符。
5.脚本生成或转换:
如果你在脚本中生成文本文件,确保脚本使用正确的换行符。在 Python 中,使用 \n 表示换行:
with open('file.txt', 'w', newline='\n') as f:
f.write("Line 1\nLine 2\n")
newline=‘\n’ 确保使用 Unix 换行符。
复制粘贴: 从 Windows 应用程序复制文本并粘贴到云端文本编辑器或终端中,可能引入 Windows 换行符。
如何诊断和解决:
1.确定问题文件: 使用 file file.py 或 cat -vte file.py 命令来检查文件是否包含 ^M 字符 (即 \r)。
2.批量转换: 使用 find 和 dos2unix 可以批量转换目录中的所有文件:
`find . -type f -print0 | xargs -0 dos2unix`
3.配置编辑器和 Git: 确保你的代码编辑器和 Git 使用正确的换行符配置。
4.检查脚本: 检查你编写的脚本,确保在生成文件时使用正确的换行符。
3407

被折叠的 条评论
为什么被折叠?



