env:bash \ r:没有这样的文件或目录


96

我正在尝试从此处安装YouCompleteMe 。

当我执行时:

./install.sh --clang-completer

我收到此错误:

env: bash\r: No such file or directory

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

which bash 
/bin/bash

我需要将其更改为/usr/bash吗?如果是,那我该怎么办?我尝试更改~/.bashrc文件,但是没有用。


如果您的错误是错误,则可能包含“错误”一词。最好找不到“ bash \ r”文件,因为文件名不能包含“ \”。
大卫·斯莫林斯基

快速修复:)只需在记事本++编辑器中编辑脚本,然后将EOL转换更改为UNIX(LF)。将EOL转换为UNIX(LF)后,它也开始工作了,我也遇到了同样的问题。
Aryashree Pritikrishna

Answers:


163

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

作为快速解决方案,您可以删除\r字符。如下:

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

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

然后运行

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

但是,更大的问题是为什么您最终使用\r\n-style文件-其他文件也很可能受到影响。

也许您正在Windows上运行Git,其中的典型配置是在检出文件时将Unix风格的\n换行符转换为Windows风格的\r\n换行符,并在提交时将其转换为仅换行符\n

尽管这对于在Windows上进行开发很有意义,但它会妨碍此类安装方案

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

git config --global core.autocrlf false

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

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


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


14

碰到类似的东西。您可以dos2unix install.sh用来转换行尾。通过多个文件find [pattern] | xargs dos2unix


1
您可以使用:find . -type f -exec dos2unix {} \;
s.ouchene


6

正如上面的评论所说,这是由于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

1
最后工作。我面对这个问题已经两天了,这是我从github克隆的项目的Windows行尾的问题,最后您的解决方案才是完美的解决方案。谢谢。
Riddhi's

1
我很高兴它对您
有所

是的,它醒了。感谢@salvishahzad
Mohit Tomar

5

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

如果您在Windows上进行编程并且与非Windows的人一起工作(反之亦然),则有时可能会遇到行尾问题

我正在使用Mac OS,而我的一个项目中确实有这个问题。为了解决它,我转身autocrlftrue这是错误的。

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

git config core.autocrlf

因此,如果返回此错误,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上找到更多信息


你救了我的一天。我在这行结束问题上苦苦挣扎了2天。
Tahmidur Ra​​hman

2

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

如果您在Windows上进行编程并且与非Windows的人一起工作(反之亦然),则有时可能会遇到行尾问题

我正在使用Mac OS,而我的一个项目中确实有这个问题。为了解决这个问题我调autocrlftrue

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

git config core.autocrlf

因此,如果返回此错误,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上找到更多信息


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.