After committing my project's gradlew
file from my Windows machine to the remote repo using Git, invoking gradlew
on my Linux server failed with this message:
/usr/bin/env: bash: No such file or directory
What happened?
After committing my project's gradlew
file from my Windows machine to the remote repo using Git, invoking gradlew
on my Linux server failed with this message:
/usr/bin/env: bash: No such file or directory
What happened?
The problem's cause was that Git on Windows converted the line endings of
gradlew
from Unix style (LF) to Windows style (CRLF).You can turn off that automatic conversion using
git config core.autocrlf false
.Setting the line endings of
gradlew
back to Unix style fixed the problem. In Vim this is done using:set fileformat=unix
.Thanks for the answers, these highlighted that the problem was Windows creating the gradlew, when I am on mac.
To fix this, from the directory of the app I ran the command:
gradle wrapper
This creates (replaces the broken) a gradle wrapper, that works! (notice it uses your local
gradle
install to fix the wrapper of the app)A vendor had shipped a
gradlew
with Windows carriage returns. Openinggradlew
in vim revealed^M
line endings. Running:e ++ff=dos
removed the line endings and resolved this issue.As per https://vim.fandom.com/wiki/File_format
This is because the gradlew file has Windows file-endings.
You can install
dos2unix
withapt-get
oryum
by running:and then use
dos2unix
to convert the line-endingsfrom
CRLF
Windows CarriageReturn + LineFeedto
LF
Linux LineFeed only:Then run your
gradlew
for a test: