MShakeG Asked: 2020-05-15 03:29:58 +0800 CST2020-05-15 03:29:58 +0800 CST 2020-05-15 03:29:58 +0800 CST 为什么 WSL 不忽略 bash 脚本中的空行? 772 我最近从在双启动上使用 Ubuntu 切换到在 WSL 上使用它。我有一个在 Ubuntu 上运行良好的 bash 脚本,然后我将其从 GitHub 存储库克隆到 Windows。当我尝试在 WSL 中运行脚本时,出现以下错误: batch.sh: line 2: $'\r': command not found 如何使用 git 的 windows 安装克隆 repo,以便换行符处理与 WSL 兼容? 编辑:这个问题被大大改写,以更准确地描述问题。 linux ubuntu 2 个回答 Voted Best Answer gronostaj 2020-05-15T04:34:39+08:002020-05-15T04:34:39+08:00 这不是 WSL 的错。 当您在 Windows 上安装 git 时,安装程序会询问您希望它使用哪种换行处理。您必须选择“签出为 CRLF,提交为 LF”。因此 git 在您的文本文件中插入了 Linux 上不存在的额外\r字符(如果它们存在,您将得到相同的错误)。 .gitconfig您可以在主目录 ( C:\Users\YourUsername)的文件中更改此设置。它被称为core.autocrlf。可能的值为: true(您当前的设置) input(按原样结帐,提交 LF) false(按原样结帐和提交)。 MShakeG 2020-05-15T04:02:56+08:002020-05-15T04:02:56+08:00 我设法解决了我的特定问题。bash 脚本从克隆的 GitHub 存储库复制到 Windows,但是我从 cmd 克隆了存储库。当我从 WSL 克隆存储库时,问题得到了解决。据推测,问题的原因与 2 个操作系统处理/解释\n和\r字符的方式不同有关。 肯定有比我的更技术性的解释。
这不是 WSL 的错。
当您在 Windows 上安装 git 时,安装程序会询问您希望它使用哪种换行处理。您必须选择“签出为 CRLF,提交为 LF”。因此 git 在您的文本文件中插入了 Linux 上不存在的额外
\r
字符(如果它们存在,您将得到相同的错误)。.gitconfig
您可以在主目录 (C:\Users\YourUsername
)的文件中更改此设置。它被称为core.autocrlf
。可能的值为:true
(您当前的设置)input
(按原样结帐,提交 LF)false
(按原样结帐和提交)。我设法解决了我的特定问题。bash 脚本从克隆的 GitHub 存储库复制到 Windows,但是我从 cmd 克隆了存储库。当我从 WSL 克隆存储库时,问题得到了解决。据推测,问题的原因与 2 个操作系统处理/解释
\n
和\r
字符的方式不同有关。肯定有比我的更技术性的解释。