env : bash \ r : 해당 파일 또는 디렉토리 없음


93

여기 에서 YouCompleteMe를 설치하려고합니다 .

실행할 때 :

./install.sh --clang-completer

이 오류가 발생합니다.

env: bash\r: No such file or directory

환경 변수에 어떤 문제가 있는지 모르겠습니다. 내 bash 경로는 다음과 같습니다.

which bash 
/bin/bash

로 변경해야 /usr/bash합니까? 그렇다면 어떻게해야합니까? ~/.bashrc파일 변경을 시도했지만 작동하지 않았습니다.

답변:


158

오류 메시지 는 호출하는 스크립트에 \r문자 가 포함되어 있음을 나타내며, 이는 차례로 예상 되는 유일한 줄 끝 대신 Windows 스타일의 \r\n줄 끝 이 있음을 나타냅니다 .\nbash

A와 빠른 수정 , 당신은 제거 할 수있는 \r문자를. 다음과 같이 :

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

참고 : $'...'문자열이 있습니다 인용 문자열은 ANSI-C 에서 지원 bash, kshzsh. 모든 구현 자체 가 이스케이프 시퀀스로 지원 되는 것은 아니기 때문에 스크립트 \rsed보기 전에 실제 CR 문자로 확장 되는지 확인하는 데 사용됩니다 .sed\r

그런 다음 실행

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

그러나 더 큰 질문은 왜 당신이 \r\n-스타일 파일로 끝났는지입니다. 대부분 다른 파일들도 영향을받습니다.

아마도 당신은 Windows 에서 Git을 실행 하고 있는데, 일반적인 구성은 파일체크 아웃 할 때 Unix 스타일 \n전용 줄 바꿈을 Windows 스타일 \r\n줄 바꿈으로 변환하고 커밋 할 때 전용 줄 바꿈으로 다시 변환 하는 것\n 입니다.

이것은 Windows에서의 개발 에는 의미가 있지만 다음 과 같은 설치 시나리오를 방해 합니다 .

Windows 에서 Unix 스타일 파일로 끝나는 파일을 Git으로 확인 하려면 -최소한 일시적으로-다음을 사용하십시오.

git config --global core.autocrlf false

그런 다음 git clone다시 관련된 설치 명령을 실행 하십시오.

나중에 Git의 동작을 복원하려면 git config --global core.autocrlf true.



17

파일에 Windows 줄 끝이 있습니다. Unix 줄 끝으로 변경하십시오.


13

비슷한 것을 발견했습니다. dos2unix install.sh줄 끝을 변환하는 데 사용할 수 있습니다 . 여러 파일을 통해find [pattern] | xargs dos2unix


1
다음을 사용할 수 있습니다.find . -type f -exec dos2unix {} \;
s.ouchene

13

줄 끝 변환을위한 빠른 명령 :

dos2unix thescript.sh

3

제 경우에는 잘못된 자식 구성이 있습니다. git 문서는 다음과 같이 설명합니다.

Windows에서 프로그래밍하고 그렇지 않은 사람과 작업하는 경우 (또는 그 반대의 경우) 언젠가 줄 끝 문제가 발생할 수 있습니다.

나는 Mac OS를 사용하고 있으며 내 프로젝트 중 하나에서 정확히이 문제가 있습니다. 이를 해결하기 위해 나는 상태 autocrlftrue있는 것은 잘못이었다.

다음 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 에서 자세히 알아보십시오.


3

위의 의견에서 말했듯이 Windows 줄 끝으로 인해 발생합니다. 문제를 해결하려면 다음 단계를 따르십시오.

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

그리고 git 구성이 다음과 같이 설정되어 있는지 확인하십시오.

git config --global core.autocrlf input

마지막으로 작동합니다. 나는이 문제에 2 일 동안 직면하고 있었고 github에서 복제 한 프로젝트의 창 라인 엔딩이었고 마지막으로 귀하의 솔루션이 완벽한 솔루션이었습니다. 감사.
Riddhi

1
도움이
돼서

마침내 완벽하게 작동했습니다. 대단히 감사합니다
Muhammad Ashfaq

2

제 경우에는 잘못된 자식 구성이 있습니다. git 문서는 다음과 같이 설명합니다.

Windows에서 프로그래밍하고 그렇지 않은 사람과 작업하는 경우 (또는 그 반대의 경우) 언젠가 줄 끝 문제가 발생할 수 있습니다.

나는 Mac OS를 사용하고 있으며 내 프로젝트 중 하나에서 정확히이 문제가 있습니다. 그것을 해결하기 위해 내가 조정 autocrlftrue.

다음 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.