'\ r': 명령을 찾을 수 없음-.bashrc / .bash_profile
이 질문에는 이미 답변이 있습니다.
Cygwin을 사용하여 파일을 JAVA_HOME
영구적 으로 설정하려고하는 창이 .bashrc
있습니다.
.bashrc :
export PATH="$JAVA_HOME/bin:$PATH"
export JAVA_HOME=$JAVA_HOME:"/cygdrive/c/Program Files (x86)/Java/jdk1.7.0_05"
.bash_profile :
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
cygwin 실행 :
-bash: $'\377\376if': command not found
-bash: $'then\r': command not found
: No such file or directorysu//.bashrc
-bash: /cygdrive/c/Users/jhsu//.bash_profile: line 3: syntax error near unexpected token `fi'
-bash: /cygdrive/c/Users/jhsu//.bash_profile: line 3: `fi'
다른 시스템 용 자습서에서 명령을 받았는지 또는 단계가 누락되었는지 확실하지 않습니다. 또는 공백으로 인해 명령이 제대로 실행되지 않습니다.
비슷한 질문을 여러 번 보았지만 질문에 오류가 정확히있는 질문을 찾지 못했습니다.
내 집 경로 :
$ echo $HOME
/cygdrive/c/Users/jhsu
$ echo ~
/cygdrive/c/Users/jhsu/
따라서 파일을 올바른 위치에 배치해야한다고 생각합니다.
Cygwin에서 다른 모든 것이 실패하면 ...
dos2unix
해당 파일에서 명령을 실행하십시오 .
다음과 같은 오류 메시지가 표시되면 도움이 될 수 있습니다.
-bash: '\r': command not found
Windows 스타일의 개행 문자는 Cygwin에서 문제를 일으킬 수 있습니다.
이 dos2unix
명령은 개행 문자를 수정하여 Unix / Cygwin과 호환되도록합니다.
주의 : dos2unix 명령은 파일 을 제 위치에서 수정 하므로 필요한 경우 예방 조치를 취하십시오.
원본 파일을 유지해야하는 경우 먼저 백업해야합니다.
Mac 사용자를위한 참고 사항 : 이 dos2unix
명령은 Mac OS X에 존재하지 않습니다.
다른 도구를 사용하는 다양한 솔루션에 대해서는 이 답변 을 확인하십시오 .
unix2dos
반대로 하는 명령 도 있습니다 .
Unix 개행 문자를 수정하여 Windows 도구와 호환되도록합니다.
메모장에서 파일을 열고 모든 줄이 함께 실행되면을 시도하십시오 unix2dos filename
.
이없는 사람들을 위해 DOS2UNIX가 설치 (그것을 설치하지 않음) :
\r
이 오류를 일으키는 후행 문자를 제거하십시오 .
sed -i 's/\r$//' filename
설명 :
옵션 -i
은 내부 편집을 위한 \r
것이며 입력 파일에서 직접 후행을 삭제 합니다. 따라서 패턴을 올바르게 입력하도록주의하십시오.
들어 윈도우 와 사용자 메모장 ++ 이 옵션을 사용하여 특정 파일을 수정할 수 있습니다 (v6.8.3로 확인) - 편집 -> EOL 변환 -> 유닉스 / OSX 형식
그리고 파일을 다시 저장하십시오.
편집 : 여전히 v7.5.1에서 작동합니다 (Aug 29 2017)
cygwin과 Windows7을 사용하고 있습니다. 트릭은 set -o igncr
.bashrc에 넣지 말고 SHELLOPTS
Windows의 환경 변수에 전체 를 넣으십시오 . (따라서 유닉스 / cygwin에는 아무것도 없습니다 ...) .bashrc
독일어로 말하듯이 "방울이 이미 빨려 있기 때문에" 작동하지 않는다고 생각합니다 . ;-) 그래서 내 SHELLOPTS
모습은 이렇습니다
braceexpand:emacs:hashall:histexpand:history:igncr:interactive-comments:monitor
당신이 최근 Cygwin에서 (예 : 1.7)를 사용하는 경우, 당신은 또한 당신의 모두를 시작 .bashrc
하고 .bash_profile
다음 행으로, 첫 번째 비에 댓글을 선 :
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
(set -o igncr) 2>/dev/null && set -o igncr; # this comment is needed
이렇게하면 bash가 \r
Windows 줄 구분 기호에 사용 된 캐리지 리턴 ( ) 문자 를 무시하게 됩니다.
http://cygwin.com/ml/cygwin-announce/2010-08/msg00015.html을 참조 하십시오 .
SUBLIME TEXT
숭고한 당신은 단지
보기-> 줄 끝-> (선택)
그런 다음 파일을 저장하십시오. 이 문제를 해결합니다.
그렇게 쉬워요!
-o igncr
bash 호출에 옵션 을 추가 할 수도 있습니다. 예 :
bash -x -o igncr script.sh
오류:
'\r'
: 명령어를 찾을수 없음
쉘은 Windows와 같은 CRLF 줄 끝 ( 0d 0a
)을 예상 LF
( 0a
) 만 인식 할 수 없기 때문에 발생합니다 .
힘내
Windows에서 Git을 사용하는 경우 설정 중에 '있는 그대로 체크 아웃 '을 선택했는지 확인하십시오 . 그런 다음 :을 실행 git config --global core.autocrlf false
해야하므로 텍스트 파일을 체크 아웃하거나 커밋 할 때 Git이 변환을 수행하지 않습니다.
dos2unix
Git을 사용하지 않는다면, 다음과 같은 방법으로 영향을받는 파일 / 스크립트를 유닉스 계열 줄 끝 (LF)으로 다시 변환하면됩니다.
dos2unix ~/.bashrc
참고 :이 dos2unix
명령은 dos2unix
패키지의 일부입니다 .
Ex / Vim 편집기 + tr
Vim을 설치 한 경우 다음 명령으로 파일을 수정해야합니다.
ex +'bufdo! %! tr -d \\r' -scxa ~/.bash*
유용한 별칭 : alias dos2unix="ex +'bufdo! %! tr -d \\\\r' -scxa"
.
tr
사용하는 방법은 다음과 같습니다 tr
.
cat ~/.bashrc | tr -d '\r' > ~/.bashrc.fixed && mv -v ~/.bashrc.fixed ~/.bashrc
또는:
tr -d '\r' < filename > new_filename
참고 : \r
는와 같습니다 \015
.
sed
다음 명령을 시도 할 수 있습니다.
sed -i'.bak' s/\r//g ~/.bash*
recode
다음 별명이 유용 할 수 있습니다 ( dos2unix
명령 을 대체 함 ).
alias unix2dos='recode lat1:ibmpc'
alias dos2unix='recode ibmpc:lat1'
출처 : Windows에서 무료 유닉스 도구 (SSH, bash는 등) .
perl
다음 perl
명령은 파일을 DOS에서 Unix 형식으로 변환 할 수 있습니다.
perl -p -i.bak -e 's/\015//g' ~/.bash*
출처 : ^ M 제거 .
tofrodos
Linux에서 dos2unix
또는로 기본 제공되지 않는 Ubuntu와 같이 패키지 ( )를 unix2dos
설치 하고 다음 별명을 정의 할 수 있습니다 .tofrodos
sudo apt-get install tofrodos
alias dos2unix=’fromdos’
alias unix2dos=’todos’
그런 다음 위와 동일한 구문을 사용하십시오.
방랑자
Vagrant VM을 사용하고 있으며 프로비저닝 스크립트에서 발생하는 경우 binary
옵션을 true
다음으로 설정하십시오 .
# Shell provisioner, see: https://www.vagrantup.com/docs/provisioning/shell.html
config.vm.provision "shell" do |s|
s.binary = true # Replace Windows line endings with Unix line endings.
s.path = "script.sh"
end
Vagrant의 Windows CRLF 대 Unix LF 문제를 참조하십시오 .
다음 명령을 실행하십시오.
vim .bashrc
:set ff=unix
:wq!
이 요점 에 따라 해결책은 다음을 포함 하는 ~/.bash_profile
( HOME
디렉토리) 를 만드는 것 입니다.
export SHELLOPTS
set -o igncr
메모장 ++로 해결되었습니다.
1) 메뉴-> 편집-> EOL 변환-> 유닉스 / OSX 형식
2) 그런 다음 저장
결정된
notepad ++ (6.8.1)를 사용하여 쉘 스크립트를 Windows에서 Linux로 제공하는 사람들.
메모장에서 다음을 설정하십시오. ++ 편집-> EOL 변환-> Unix / OSX 형식
이 파일을 작성 / 업데이트하기 위해 notepad ++를 사용했을 수 있습니다.
EOL (편집-> EOL 변환) 기본적으로 변환은 Windows입니다.
메모장에서 EOL 변환 변경 ++
Edit -> EOL Conversion -> Unix (LF)
나는 같은 문제가 있었다. 해결책 : pspad 편집기로 파일을 편집하고 유닉스 형식을 지정하십시오 (메뉴-형식-> UNIX)
다른 편집기를 사용하여이 형식을 파일로 설정할 수 있다고 생각합니다
Emacs 사용자의 경우 :
- 파일을여십시오
- MX 세트 버퍼 파일-코딩 시스템
- "유닉스"를 선택하십시오
파일의 새 문자가 유닉스 스타일로 업데이트됩니다. Emacs의 "Newline Representation"에 대한 자세한 정보는 여기에서 찾을 수 있습니다.
http://ergoemacs.org/emacs/emacs_line_ending_char.html
참고 : 위의 단계는 명령 줄에서 실행하는 것을 선호하는 경우 Emacs 스크립트로 만들 수 있습니다.
에서 에디트 플러스 당신은에서 이렇게 Document → File Format (CR/LF) → Change File Format...
메뉴를 누른 다음 선택 Unix / Mac OS X
라디오 버튼을 누릅니다.
Windows 시스템에서 생성 / 다운로드 한 파일 / 스크립트로 인해 문제가 발생했을 수 있습니다. 리눅스 파일 형식으로 변환하십시오.
dos2unix ./script_name.sh
또는
dos2unix ~/.bashrc
1. 선택
EditorConfig — 나의 선택입니다.
2. 관련성
이 답변은 2018 년 3 월과 관련이 있습니다. 향후이 답변의 데이터는 더 이상 사용되지 않을 수 있습니다.
이 답변의 작성자는 2018 년 3 월에 개인적으로 EditorConfig를 사용했습니다.
3. 한계
지원되는 IDE / 편집기 중 하나 를 사용해야 합니다.
4. 논증
- 간단히 사용법.
.editorconfig
파일을 한 번 설정해야 프로젝트를 생성 할 수 있습니다. → 플랫폼, 스타일 및 IDE 관련 문제를 잊을 수 있습니다 . - 플랫폼 간, 언어 간, IDE 간, 편집기 간 .
5. 예
5.1. 단순한
Sublime Text → Editor 편집기 플러그인 편집기를 설치 합니다 . Sublime Text에서 파일을 편집합니다.
예를 들어 sashacrlf.sh
파일 이 있습니다.
echo "Sasha" &
echo "Goddess!" &
Cygwin에서이 파일을 실행합니다.
$ bash sashacrlf.sh
Sasha
sashacrlf.sh: line 1: $'\r': command not found
Goddess!
.editorconfig
와 같은 프로젝트에서 파일 을 만듭니다 sashacrlf.sh
.
[*.sh]
end_of_line = lf
즉, .sh
편집기에서 프로젝트에 확장자가 있는 파일을 저장하면 EditorConfig가이 파일의 UNIX 줄 끝을 설정합니다.
sashacrlf.sh
텍스트 편집기에 다시 저장 합니다. 나는 sashacrlf.sh
다시 달렸다 :
$ bash sashacrlf.sh
Sasha
Goddess!
콘솔에서 예기치 않은 출력을 얻을 수 없습니다.
5.2. 여러 파일 확장자
예를 들어, 확장자 .sh
가 .bashrc
및 인 모든 파일에서 UNIX 줄 끝을 원합니다 .bash_profile
. .editorconfig
파일 에 다음 줄을 추가 합니다.
[*.{sh,bashrc,bash_profile}]
end_of_line = lf
내가 어떤을 가진 파일을 저장하면 지금 .sh
, .bashrc
또는 .bash_profile
확장을, EditorConfig는 자동으로이 파일의 끝 UNIX 라인을 설정합니다.
6. 추가 링크
Cygwin 설치에 vim 패키지가 설치되어 있으면 vim을 사용하여 찾기 및 바꾸기없이이 문제를 해결할 수 있습니다. 다음과 같이 vim을 시작하십시오 vim filename.sh
(종종 vi에도 별명이 지정됨). 그런 다음을 입력 :set fileformat=unix
하고 :wq
(쓰기 및 종료) 변경 내용을 저장하십시오. ( :
vim의 편집 모드가됩니다.)
vim이 더 일반적으로 설치되기 때문에 dos2unix보다 이것을 권장합니다.
그러나 Unix / Linux 환경에서 사용하려는 파일을 Unix 텍스트 형식으로 저장하도록 텍스트 편집기를 설정하는 것이 가장 좋습니다. Notepad ++에 대한 위의 답변이 좋은 예입니다.
추가 사항 : 파일 형식 (DOS 또는 Unix)이 확실하지 않은 경우을 사용할 수 있습니다 file filename.sh
. 이는 특히 Windows에서 제공되는 SQL 덤프를 가져올 때 인코딩 문제와 같이 더 모호한 문제를 디버깅하는 데 도움이 될 수 있습니다.
텍스트 파일 형식을 수정하는 방법에 대한 다른 옵션은 이 IU 기술 자료 문서를 참조하십시오.
Bash 스크립트 및 줄 끝에 대한 자세한 배경 정보는 이 StackOverflow 질문 에서 찾을 수 있습니다.
참고 URL : https://stackoverflow.com/questions/11616835/r-command-not-found-bashrc-bash-profile
'development' 카테고리의 다른 글
List 또는 Set의 첫 번째 요소를 얻는 방법은 무엇입니까? (0) | 2020.04.01 |
---|---|
모든 배열 요소를 0으로 초기화하는 단축키가 있습니까? (0) | 2020.04.01 |
MySQL의 모든 쿼리를 기록 (0) | 2020.04.01 |
NSLocalizedString이 특정 언어를 사용하도록하는 방법 (0) | 2020.04.01 |
IntelliJ IDEA를 사용하여 Java 코드 라인을 계산하는 방법은 무엇입니까? (0) | 2020.03.31 |