env: bash \ r: Tidak ada file atau direktori seperti itu

94

Saya mencoba menginstal YouCompleteMe dari sini .

Saat saya mengeksekusi:

./install.sh --clang-completer

Saya mendapatkan kesalahan ini:

env: bash\r: No such file or directory

Saya tidak tahu apa yang salah dengan variabel lingkungan. Inilah jalur pesta saya:

which bash 
/bin/bash

Apakah saya perlu mengubahnya menjadi /usr/bash? Jika ya, lalu bagaimana saya harus melakukannya? Saya mencoba mengubah ~/.bashrcfile, tetapi tidak berhasil.

Brijesh Rakholia
sumber

Jawaban:

158

Pesan kesalahan menunjukkan bahwa skrip yang Anda panggil memiliki \rkarakter yang disematkan , yang pada gilirannya menunjukkan bahwa ia memiliki akhiran baris gaya Windows\r\n daripada yang diharapkan \n-hanya akhir baris bash.

Sebagai perbaikan cepat , Anda dapat menghapus \rkarakter. sebagai berikut:

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

Catatan: $'...'string adalah ANSI-C string dikutip didukung dalam bash, ksh, dan zsh. Ini digunakan untuk memastikan bahwa \rekspansi ke karakter CR aktual sebelum sedmelihat skrip, karena tidak semua sedimplementasi itu sendiri mendukung \rsebagai escape sequence.

lalu lari

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

Namun, pertanyaan yang lebih besar adalah mengapa Anda berakhir dengan \r\nfile -style - kemungkinan besar, file lain juga terpengaruh.

Mungkin Anda menjalankan Git di Windows , di mana konfigurasi tipikal adalah untuk mengonversi \njeda baris gaya Unix menjadi \r\njeda baris gaya Windows saat memeriksa file dan mengonversi ulang menjadi \n-hanya baris saat melakukan .

Meskipun ini masuk akal untuk pengembangan di Windows, ini menghalangi skenario penginstalan seperti ini.

Untuk membuat Git memeriksa file dengan akhiran file bergaya Unix di Windows - setidaknya untuk sementara - gunakan:

git config --global core.autocrlf false

Kemudian jalankan git clonelagi perintah instalasi Anda .

Untuk memulihkan perilaku Git nanti, jalankan git config --global core.autocrlf true.

mklement0
sumber
28
>vim gradlew
:set fileformat=unix
:wq
>./gradlew clean build
Tuan Nguyen
sumber
17

File Anda memiliki akhiran baris Windows. Ubah ke akhir baris Unix.

Carl Norum
sumber
13

Bertemu sesuatu yang serupa. Anda dapat menggunakan dos2unix install.shuntuk mengonversi akhir baris. Beberapa file melaluifind [pattern] | xargs dos2unix

Michael Harris
sumber
1
Anda dapat menggunakan:find . -type f -exec dos2unix {} \;
s.ouchene
13

Perintah cepat untuk mengubah akhiran baris:

dos2unix thescript.sh
igonejack
sumber
4

Dalam kasus saya, saya memiliki konfigurasi git yang salah. Dokumentasi git menyatakan:

Jika Anda memprogram di Windows dan bekerja dengan orang yang bukan (atau sebaliknya), Anda mungkin akan mengalami masalah akhir baris di beberapa titik.

Saya menggunakan Mac OS dan saya mengalami masalah ini di salah satu proyek saya. Untuk mengatasinya, saya beralih autocrlfke truemana yang salah.

Anda dapat memeriksa autocrlfstatus konfigurasi git Anda seperti ini:

git config core.autocrlf

Jadi jika ini kembali truedan masalah terjadi dalam repositori git, Anda harus mengubah konfigurasi itu menjadi

git config --global core.autocrlf input

pada sistem Mac / Unix. Untuk proyek khusus Windows yang dapat Anda gunakan

git config --global core.autocrlf false

Dalam kasus saya, saya menghapus repositori git dan mengkloningnya lagi dan setelah itu semuanya berfungsi seperti yang diharapkan.

Cari tahu lebih lanjut di https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

penangan keberuntungan
sumber
kamu menyelamatkan hariku. Saya berjuang dengan masalah akhir baris ini selama 2 hari.
Tahmidur Rahman
3

Seperti yang dikatakan komentar di atas, ini terjadi karena ujung baris windows. Untuk memperbaiki masalah, ikuti langkah-langkah berikut

Untuk Mac:

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

Untuk Linux:

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

Dan pastikan konfigurasi git Anda disetel sebagai berikut:

git config --global core.autocrlf input
salvi shahzad
sumber
Bekerja Akhirnya. Saya menghadapi masalah ini selama 2 hari dan itu adalah masalah akhir baris jendela dari proyek yang saya kloning dari github dan akhirnya solusi Anda adalah solusi yang tepat. Terima kasih.
Riddhi
1
Saya senang ini membantu Anda :)
salvi shahzad
akhirnya bekerja dengan sempurna. terima kasih banyak
Muhammad Ashfaq
2

Dalam kasus saya, saya memiliki konfigurasi git yang salah. Dokumentasi git menyatakan:

Jika Anda memprogram di Windows dan bekerja dengan orang yang bukan (atau sebaliknya), Anda mungkin akan mengalami masalah akhir baris di beberapa titik.

Saya menggunakan Mac OS dan saya mengalami masalah ini di salah satu proyek saya. Untuk mengatasinya saya menyetel autocrlfke true.

Anda dapat memeriksa autocrlfstatus konfigurasi git Anda seperti ini:

git config core.autocrlf

Jadi jika ini kembali truedan masalah terjadi dalam repositori git, Anda harus mengubah konfigurasi itu menjadi

git config --global core.autocrlf input

yang mana yang benar untuk sistem Mac / Unix. Untuk proyek khusus Windows yang dapat Anda gunakan

git config --global core.autocrlf false

Dalam kasus saya, saya menghapus repositori git dan memeriksanya lagi dan setelah itu semuanya berfungsi seperti yang diharapkan.

Cari tahu lebih lanjut di https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

penangan keberuntungan
sumber