【问题标题】:'\r': command not found - .bashrc'\r':找不到命令 - .bashrc
【发布时间】:2021-09-16 16:41:47
【问题描述】:

我正在尝试在 Linux 中构建一些代码,但出现错误:

'\r': command not found 

现在我知道这个问题之前已经被普遍问过,并且我已经阅读了他们的答案。在这个问题中,我要求澄清我的特殊情况。

在这些问题中,已经解释了该错误的原因:存在被解释为命令的不可见字符。

一个建议的解决方案是修改文件以消除这些字符。在我的情况下,此解决方案不可行,原因有两个:

  1. 去修改所有所涉及的文件是不切实际的
  2. 已明确命令我不能修改文件。

推荐herehere 的一个解决方案建议通过设置忽略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 必须是inputfalse
  • 现在,它似乎没有设置。我做了git config --list,我得到的只是 4 个 filter.lfs 配置。我应该指出(我知道这很奇怪)我使用 scp 将源文件复制到 WS,所以我没有在那里维护一个 repo
  • @KansaiRobot :您的仓库中的文件确实有回车来标记行尾是否有特殊原因?根据我的经验,Windows 世界中的大多数程序都可以处理以 LF 或 CRLF 作为终止符的文本文件。

标签: bash git newline


【解决方案1】:

首先,出于“What is the correct core.autocrlf setting I should use?”中解释的原因,请务必添加:

git config --global core.autocrlf false

第二:

  • 尝试修复您的部分文件 eol (dos2unix or other commands),然后
  • .gitattributes 文件中添加myfile eol=lf 指令以强制所述文件保持正确的行尾顺序。

【讨论】:

    猜你喜欢
    • 2022-01-10
    • 1970-01-01
    • 2021-08-31
    • 2021-07-23
    • 2014-12-24
    相关资源
    最近更新 更多