gradlew 出错:/usr/bin/env: bash: 没有这样的文件或目录

Posted

技术标签:

【中文标题】gradlew 出错:/usr/bin/env: bash: 没有这样的文件或目录【英文标题】:Error with gradlew: /usr/bin/env: bash: No such file or directory 【发布时间】:2014-04-13 15:53:03 【问题描述】:

使用 Git 将我的项目的 gradlew 文件从我的 Windows 机器提交到远程存储库后,在我的 Linux 服务器上调用 gradlew 失败并显示以下消息:

/usr/bin/env: bash: 没有这样的文件或目录

发生了什么?

【问题讨论】:

【参考方案1】:

问题的原因是 Windows 上的 Git 将 gradlew 的行尾从 Unix 样式 (LF) 转换为 Windows 样式 (CRLF)。

您可以使用 git config core.autocrlf false 关闭该自动转换。

gradlew 的行尾设置回 Unix 样式解决了这个问题。在Vim 中,这是使用:set fileformat=unix 完成的。

【讨论】:

@MatthiasBraun - 你好。我有同样的问题。我有一个使用 android Studio 在 Windows 上构建的 Android 项目。当我在我的 MAC 中导入时,我无法运行 ./gradlew clean 或 ./gradlew build 因为我得到 = env: bash\r: No such file or directory 。我尝试设置 fileformat=unix 但不起作用。 这并不能解决我的问题。我也在使用 Windows。 作为对 Windows 用户的额外帮助,可以在 Notepad++ 中使用菜单项编辑 -> EOL 转换 -> Unix (LF) 这正是我的问题。我在 windows 机器和 macbook 之间共享我的项目文件【参考方案2】:

这是因为 gradlew 文件具有 Windows 文件结尾。

您可以通过运行安装dos2unixapt-getyum

sudo apt-get install dos2unix

sudo yum install -y dos2unix

然后使用dos2unix 转换行尾

来自 CRLF Windows 回车 + 换行

LF 仅限 Linux LineFeed:

dos2unix ./gradlew

然后运行您的gradlew 进行测试:

./gradlew clean -d

【讨论】:

【参考方案3】:

感谢您的回答,这些突出表明问题是 Windows 创建 gradlew,当我在 mac 上时。

为了解决这个问题,我从应用程序的目录中运行了命令:

gradle wrapper

这会创建(替换损坏的)一个 gradle 包装器,它可以工作! (注意它使用您本地的gradle install 来修复应用程序的包装)

【讨论】:

这真的是一个答案吗?与所有其他答案相比,您能否提供更多关于您的答案的作用的信息? 它从根目录运行gradle wrapper cmd,而其他答案则不... 不工作... zsh:找不到命令:gradle 你需要安装gradle,比如brew install gradle【参考方案4】:

要永久解决 Linux 和 Mac 上的 Git 结帐

在您的 Git 存储库根目录中添加一个名为 .gitattributes 的文件,其中包含以下内容:

gradlew text eol=lf

更多信息:https://git-scm.com/docs/gitattributes

PS:也适用于使用此条目的.sh 文件:

*.sh text eol=lf

这些条目在结帐时起作用,并将这些文件的行尾转换为LF

【讨论】:

【参考方案5】:

供应商已发送带有 Windows 回车符的 gradlew。在 vim 中打开 gradlew 显示 ^M 行尾。运行 :e ++ff=dos 删除了行尾并解决了这个问题。

根据https://vim.fandom.com/wiki/File_format

【讨论】:

【参考方案6】:

按照箭头然后确定,它适用于@macOS #BigSur

【讨论】:

以上是关于gradlew 出错:/usr/bin/env: bash: 没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

php脚本#!/usr/bin/env php 写法

php脚本#!/usr/bin/env php写法的好处

#!/usr/bin/env python与#!/usr/bin/python的区别

关于#!/usr/bin/env python 的用法

#!/usr/bin/env python与#!/usr/bin/python的区别

#! /usr/bin node 和#! /usr/bin/env node两者的区别