env: bash \ r: Böyle bir dosya veya dizin yok


94

YouCompleteMe'yi buradan yüklemeye çalışıyorum .

Çalıştırdığımda:

./install.sh --clang-completer

Bu hatayı alıyorum:

env: bash\r: No such file or directory

Ortam değişkenlerinde neyin yanlış olduğunu bilmiyorum. İşte benim bash yolum:

which bash 
/bin/bash

Olarak değiştirmem gerekiyor /usr/bashmu? Evetse, bunu nasıl yapmalıyım? ~/.bashrcDosyayı değiştirmeyi denedim ama işe yaramadı.

Yanıtlar:


158

Hata mesajı, çağırdığınız betiğin gömülü \rkarakterlere sahip olduğunu ve bu da -only satır sonlarının beklediği yerine Windows tarzı \r\nsatır sonlarının bulunduğunu gösterir .\nbash

Hızlı bir çözüm olarak , \rkarakterleri kaldırabilirsiniz . aşağıdaki gibi:

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

Not: $'...'dize bir olduğunu alıntılanan dize ANSI-C desteklenir bash, kshve zsh. Komut dosyasını \rgörmeden önce gerçek bir CR karakterine genişlemesini sağlamak için kullanılır sed, çünkü tüm seduygulamaların kendisi \rbir kaçış dizisi olarak desteklemez .

ve sonra koş

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

Bununla birlikte, asıl soru, neden \r\n-stilli dosyalara sahip olduğunuzdur - büyük olasılıkla, diğer dosyalar da etkilenir.

Belki de Git'i Windows üzerinde çalıştırıyorsunuzdur , burada tipik bir konfigürasyon Unix \ntarzı \r\nsatır sonlarını, dosyaları teslim\n alırken ve taahhütte yalnızca satır sonlarına yeniden dönüştürürken Windows stili satır sonlarına dönüştürmektir .

Bu , Windows üzerinde geliştirme için mantıklı olsa da , bunun gibi kurulum senaryolarının önüne geçer .

To Git Windows üzerinde Unix tarzı dosya sonları ile dosya kontrol yapmak en azından geçici olarak - - kullanım:

git config --global core.autocrlf false

Sonra git clonetekrar içeren kurulum komutlarınızı çalıştırın .

Git'in davranışını daha sonra geri yüklemek için çalıştırın git config --global core.autocrlf true.



17

Dosyanızın Windows satır sonları var. Unix satır sonlarına geçin.


13

Benzer bir şeyle karşılaştım. dos2unix install.shSatır sonlarını dönüştürmek için kullanabilirsiniz . Birden çok dosyafind [pattern] | xargs dos2unix


1
find . -type f -exec dos2unix {} \;
Şunu

13

Satır sonunu dönüştürmek için hızlı komut:

dos2unix thescript.sh

4

Benim durumumda yanlış bir git konfigürasyonuna sahiptim. Git dokümantasyonu şunları belirtir:

Windows üzerinde programlama yapıyorsanız ve olmayan (veya tam tersi) insanlarla çalışıyorsanız, muhtemelen bir noktada satır sonu sorunlarıyla karşılaşırsınız.

Mac OS kullanıyorum ve bu sorunu projelerimden birinde tam olarak yaşıyorum. Bunu çözmek için Döndüm autocrlfiçin truehangi yanlıştı.

autocrlfGit konfigürasyonunuzun durumunu şu şekilde kontrol edebilirsiniz :

git config core.autocrlf

Dolayısıyla, bu geri dönerse trueve sorun bir git deposunda meydana gelirse, bu yapılandırmayı şu şekilde değiştirmeniz gerekir:

git config --global core.autocrlf input

bir Mac / Unix sisteminde. Yalnızca Windows için kullanabileceğiniz projeler

git config --global core.autocrlf false

Benim durumumda git deposunu sildim ve tekrar klonladım ve bundan sonra her şey beklendiği gibi tekrar çalıştı.

Https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration adresinde daha fazla bilgi edinin


günümü kurtardın. 2 gündür bu hat bitirme sorunu ile uğraşıyordum.
Tahmidur Rahman

4

Yukarıdaki yorumların dediği gibi, Windows satır sonları nedeniyle oluyor. Sorunu çözmek için şu adımları izleyin

Mac için:

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

Linux için:

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

Git yapılandırmanızın aşağıdaki gibi ayarlandığından emin olun:

git config --global core.autocrlf input

Nihayet Çalışmak. 2 gündür bu sorunla karşı karşıyaydım ve projeden klonladığım Windows satır sonlarının sonucuydu ve nihayet çözümünüz mükemmel bir çözümdü. Teşekkürler.
Riddhi

1
Sana yardım ettiğine sevindim :)
salvi shahzad

nihayet mükemmel çalıştı. çok teşekkür ederim
Muhammed Ashfaq

2

Benim durumumda yanlış bir git konfigürasyonuna sahiptim. Git dokümantasyonu şunları belirtir:

Windows üzerinde programlama yapıyorsanız ve olmayan (veya tam tersi) insanlarla çalışıyorsanız, muhtemelen bir noktada satır sonu sorunlarıyla karşılaşırsınız.

Mac OS kullanıyorum ve bu sorunu projelerimden birinde tam olarak yaşıyorum. Çözmek autocrlfiçin ayarladım true.

autocrlfGit konfigürasyonunuzun durumunu şu şekilde kontrol edebilirsiniz :

git config core.autocrlf

Dolayısıyla, bu geri dönerse trueve sorun bir git deposunda meydana gelirse, bu yapılandırmayı şu şekilde değiştirmeniz gerekir:

git config --global core.autocrlf input

Mac / Unix sistemleri için doğru olan budur. Yalnızca Windows için kullanabileceğiniz projeler

git config --global core.autocrlf false

Benim durumumda git deposunu sildim ve tekrar kontrol ettim ve ondan sonra her şey beklendiği gibi tekrar çalıştı.

Https://www.git-scm.com/book/en/v2/Customizing-Git-Git-Configuration adresinde daha fazla bilgi edinin


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.