【发布时间】:2021-09-16 16:41:47
【问题描述】:
我正在尝试在 Linux 中构建一些代码,但出现错误:
'\r': command not found
现在我知道这个问题之前已经被普遍问过,并且我已经阅读了他们的答案。在这个问题中,我要求澄清我的特殊情况。
在这些问题中,已经解释了该错误的原因:存在被解释为命令的不可见字符。
一个建议的解决方案是修改文件以消除这些字符。在我的情况下,此解决方案不可行,原因有两个:
- 去修改所有所涉及的文件是不切实际的
- 已明确命令我不能修改文件。
推荐here 和here 的一个解决方案建议通过设置忽略CR 的选项来修改Cygwin 中的EOL 行为:
问题是这个igncr 选项的文档太少了,以至于我找不到这方面的详细信息。这个选项也适用于 linux 系统吗?
(作为参考,我正在 windows 中使用 git bash 来管理存储库,但我在将代码传输到 docker 容器内的 linux 工作站后构建代码)
我发现的另一个可能的解决方案是this one,其中建议修改 git 设置以 将 Git 配置为在结帐时不转换行尾:
这个配置是如何工作的?在链接的答案中它说
git config --global core.autocrlf input
当我在 Windows 机器上执行 git config --list 时,我得到了
core.autocrlf=true
我应该更改配置并再次克隆我的整个存储库吗?
我正在寻找有关这两种可能解决方案的说明,但任何其他解决方案(不涉及修改文件)也可以
仅供参考
我在 Windows 机器上本地管理一个 repo。完成后,我将代码传输到远程 linux 机器并在那里构建代码。 \r的问题出现在哪里
【问题讨论】:
-
你的 Linux 工作站上的
core.autocrlf是什么? AIUI 必须是input或false。 -
现在,它似乎没有设置。我做了
git config --list,我得到的只是 4 个 filter.lfs 配置。我应该指出(我知道这很奇怪)我使用 scp 将源文件复制到 WS,所以我没有在那里维护一个 repo -
@KansaiRobot :您的仓库中的文件确实有回车来标记行尾是否有特殊原因?根据我的经验,Windows 世界中的大多数程序都可以处理以 LF 或 CRLF 作为终止符的文本文件。