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」ファイルが見つからなかったのは良いことです。
DavidSmolinski20年

簡単な修正:)メモ帳++エディターでスクリプトを編集し、EOL変換をUNIX(LF)に変更するだけです。EOL変換をUNIX(LF)に変更した後も、同じ問題が発生しました。
AryashreePritikrishna20年

回答:


164

エラーメッセージはことを示唆している、あなたが呼び出しているスクリプトが埋め込まれている\r文字を順番にそれがあることを示唆している、Windowsスタイルの\r\n行末の代わり\nのみの行末のbashを期待します。

簡単な修正として、\r文字を削除できます。次のように:

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

注:$'...'文字列の引用符で囲まれた文字列は、ANSI-Cでサポートされているbashkshzsh。すべての実装自体がエスケープシーケンスとしてサポートしているわけではないため、スクリプトを表示\rする前に実際のCR文字に展開されるようにするために使用されます。sedsed\r

その後、実行します

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

ただし、より大きな問題は、なぜ\r\nスタイルファイルになってしまったのかということです。おそらく、他のファイルも影響を受けます。

おそらく、WindowsGitを実行している場合、一般的な構成では、ファイルのチェックアウト時にUnixスタイル\nのみの改行をWindowsスタイルの\r\n改行に変換し、コミット時にのみの改行に再変換し\nます。

これWindowsでの開発は意味がありますが、このようインストールシナリオの邪魔になります

ために作るGitはWindows上でUnix形式のファイル語尾を持つファイルをチェックアウト-少なくとも一時的に-使用します:

git config --global core.autocrlf false

次に、関連するインストールコマンドをgit clone再度実行します。

後でGitの動作を復元するには、を実行しgit config --global core.autocrlf trueます。




14

似たようなものに出くわした。を使用dos2unix install.shして、行末を変換できます。経由で複数のファイルfind [pattern] | xargs dos2unix


1
次のものを使用できます。find . -type f -exec dos2unix {} \;
s.ouchene19年

13

行末を変換するためのクイックコマンド:

dos2unix thescript.sh

6

上記のコメントが言うように、それはウィンドウズの行末が原因で起こっています。問題を修正するには、次の手順に従います

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

そして、gitconfigが次のように設定されていることを確認してください。

git config --global core.autocrlf input

1
最後に働く。私はこの問題に2日間直面していましたが、githubからクローンを作成したのはプロジェクトのWindowsの行末の問題であり、最終的にはあなたのソリューションが完璧なソリューションでした。ありがとう。
リッディ

1
お役に立ててうれしいです:)
salvishahzad20年

はい、目が覚めました。おかげ@salvishahzad
Mohitトマール

5

私の場合、git構成が間違っていました。gitのドキュメントには次のように記載されています。

Windowsでプログラミングしていて、そうでない人(またはその逆)と作業している場合は、ある時点で行末の問題が発生する可能性があります。

私はMacOSを使用していますが、プロジェクトの1つでこの問題が発生しています。それを解決するために、私はどちらが間違っているかに目を向けautocrlfましtrueた。

次の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日間苦労していました。
TahmidurRahman20年

2

私の場合、git構成が間違っていました。gitのドキュメントには次のように記載されています。

Windowsでプログラミングしていて、そうでない人(またはその逆)と作業している場合は、ある時点で行末の問題が発生する可能性があります。

私はMacOSを使用していますが、プロジェクトの1つでこの問題が発生しています。それを解決するために、私はに調整autocrlfしましたtrue

次の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をご覧ください。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.