Bash r: 没有这样的文件或目录

我试图从 给你安装 YouCompleteMe。

当我执行:

./install.sh --clang-completer

我得到了这个错误:

env: bash\r: No such file or directory

我不知道环境变量出了什么问题,下面是我的 bash 路径:

which bash
/bin/bash

我需要把它改成 /usr/bash吗?如果是的话,我应该怎么做?我试着修改 ~/.bashrc文件,但是没有用。

243418 次浏览

错误消息暗示 您正在调用的脚本嵌入了 \r字符,这反过来又暗示它具有 Windows 样式的 \r\n行结尾,而不是 bash期望的仅 \n行结尾。

作为 快速解决,您可以删除 \r字符,如下所示:

sed $'s/\r$//' ./install.sh > ./install.Unix.sh

注意: $'...'字符串是 bashkshzsh支持的 带引号的字符串。它用于确保在 sed看到脚本之前,\r扩展到实际的 CR 字符,因为并非所有 sed实现本身都支持 \r作为转义序列。

然后逃跑

./install.Unix.sh --clang-completer

然而,更大的问题是为什么您最终得到了 \r\n风格的文件——很可能其他文件也受到了影响。

也许你正在运行 Windows 上的 Git,其中一个 典型的配置是在 < em > 检出文件 时将 Unix 风格的 \n-only 换行符转换为 Windows 风格的 ABC1换行符,在 < em > 提交 时重新转换为 \n-only 换行符

虽然这个 对于开发来说是有意义的在 Windows 上,它的 阻碍 < em > 安装 方案喜欢这些。

至于 在 Windows 上使用 Unix 风格的文件结尾让 Git 签出文件,至少暂时使用:

git config --global core.autocrlf false

然后再次运行涉及 git clone的安装命令。

要在以后恢复 Git 的行为,请运行 git config --global core.autocrlf true

您的文件具有 Windows 行结束符。请更改为 Unix 行结束符。

遇到类似的情况。您可以使用 dos2unix install.sh转换行结束。通过 find [pattern] | xargs dos2unix多个文件

>vim gradlew
:set fileformat=unix
:wq
>./gradlew clean build

转换行结束的快速命令:

dos2unix thescript.sh

这个链接帮助我解决了这个问题。 Https://github.com/tiangolo/uwsgi-nginx-flask-docker/issues/127

我编辑了我的.sh 文件,用 LF 替换了所有的 CRLF

在我的例子中,我有一个错误的 git 配置:

如果你在 Windows 上编程,并且和不在 Windows 上工作的人一起工作 (反之亦然) ,您可能会在某些时候遇到行结束问题 点

我使用的是 Mac OS,在我的一个项目中确实存在这个问题。为了解决这个问题,我把 autocrlf转换成了 true,这是错误的。

您可以像下面这样检查 git 配置的 autocrlf状态:

git config core.autocrlf

因此,如果返回 true并且问题发生在 git 存储库中,则必须将该配置更改为

git config --global core.autocrlf input

在 Mac/Unix 系统上

git config --global core.autocrlf false

在我的例子中,我删除了 git 存储库,然后再次克隆它,之后一切都按预期运行。

详情请看 https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

它是由于窗口行结束而发生的。要修复这个问题,请按照以下步骤

对于 MAC:

brew install dos2unix # Installs dos2unix Mac
find . -type f -exec dos2unix {} \; # recursively removes windows related stuff

对于 Linux:

sudo apt-get install -y dos2unix # Installs dos2unix Linux
sudo find . -type f -exec dos2unix {} \; # recursively removes windows related stuff

并确保您的 git 配置设置如下:

git config --global core.autocrlf input

input确保在写入对象数据库时将 CRLF 转换为 LF

就我而言: 当我下载并将 WINDOWS 版本解压缩到 MAC 时发生此错误

然后将窗口版本路径添加到. bash _ profile 或. zprofile

所以我的解决方案是从(. bash _ profile 和. zprofile)中删除路径 然后打开终端下载 Mac 版本,输入:

  1. Mkdir src
  2. Cdsrc
  3. Git 克隆 https://github.com/flutter/flutter.git-b 稳定
  4. Export PATH = “ $PATH: pwd/flutter/bin”
  5. 颤动医生

当我试图降低颤振时,我曾经遇到过这个问题

这解决了我的问题

rm -rf flutter
git config --global core.autocrlf false
git clone git@github.com:flutter/flutter.git
flutter channel stable

如果你在 MAC 上,并使用 VS 代码,你可以从 CRLF切换到 LF并再次保存文件。这将取代所有 CRLF 与 LF。

enter image description here