env: bash\r: 没有那个文件或目录

env: bash\r: No such file or directory

我正在尝试从 here 安装 YouCompleteMe。

当我执行时:

./install.sh --clang-completer

我收到这个错误:

env: bash\r: No such file or directory

不知道环境变量有什么问题。这是我的 bash 路径:

which bash 
/bin/bash

需要改成/usr/bash吗?如果是,那我该怎么做?我尝试更改 ~/.bashrc 文件,但没有成功。

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

作为快速修复,您可以删除 \r 个字符。如下:

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

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

然后是运行

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

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

也许您在 Windows 上 运行ning Git,其中 典型配置是转换 Unix -style \n-only line breaks to Windows-style \r\n line breaks on checking files out and re-converting to \n -仅在 committing.

时换行

虽然此 对 Windows 上的 开发 有意义,但它 妨碍了 安装 场景 像这样。

为了 make Git 在 Windows 上检查具有 Unix 风格文件结尾的文件 - 至少暂时 - 使用:

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

这 link 帮我解决了这个问题。 https://github.com/tiangolo/uwsgi-nginx-flask-docker/issues/127

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

就我而言,我的 git 配置有误。 git 文档指出:

If you’re programming on Windows and working with people who are not (or vice-versa), you’ll probably run into line-ending issues at some point

我正在使用 Mac OS,我的一个项目确实遇到了这个问题。为了解决这个问题,我把 autocrlf 变成了 true 这是错误的。

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

git config core.autocrlf

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

git config --global core.autocrlf input

在 Mac / Unix 系统上。对于 Windows 个项目,您可以使用

git config --global core.autocrlf false

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

https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

了解更多信息

它是由于 windows 行结尾而发生的。要解决此问题,请执行以下步骤

对于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

时出现此错误

然后将windows版本路径添加到.bash_profile或.zprofile

所以我的解决方案是从 (.bash_profile 和 .zprofile) 中删除路径 然后通过打开终端并输入:

下载 mac 版本
  1. mkdir 源码
  2. cd 源码
  3. git克隆https://github.com/flutter/flutter.git-b稳定
  4. export PATH="$PATH:pwd/flutter/bin"
  5. 扑博士

我之前尝试降级flutter时遇到过这个问题

这解决了我的问题

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

如果您使用的是 MAC,并使用 VS Code,您可以从 CRLF 切换到 LF 并再次保存文件。这会将所有 CRLF 替换为 LF。