./configure : / bin / sh ^ M : 잘못된 인터프리터
이 질문에는 이미 답변이 있습니다.
- 쉘 스크립트는 인코딩과 줄 끝에 민감합니까? 답변 5 개
내 12 시스템에 lpng142를 설치하려고했습니다. 나에게 문제처럼 보인다. 이 오류가 발생합니다
[root@localhost lpng142]# ./configure
bash: ./configure: /bin/sh^M: bad interpreter: No such file or directory
[root@localhost lpng142]#
이 문제를 어떻게 해결합니까? /etc/fstab
파일 :
#
# /etc/fstab
# Created by anaconda on Wed May 26 18:12:05 2010
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=ce67cf79-22c3-45d4-8374-bd0075617cc8 /boot ext4
defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
수정하려면 vi 또는 vim으로 스크립트를 열고 vi 명령 모드 (key Esc)로 들어가서 다음을 입력하십시오.
:set fileformat=unix
마지막으로 저장
:x!
또는 :wq!
dos 줄 끝 파일이있는 것 같습니다. 단서는 ^M
입니다.
Unix 줄 끝을 사용하여 파일을 다시 저장해야합니다.
이 작업을 수행하는 dos2unix
명령 줄 유틸리티가있을 수 있습니다.
또는 스크립트를 사용하여이 작업을 수행하려는 경우 :
sed -i 's/\r//' filename
구성 파일에는 간단한 LF 줄 끝 (유닉스 스타일) 대신 CRLF 줄 끝 (Windows 스타일)이 포함되어 있습니다 . Windows에서 FTP 모드 ASCII를 사용하여 전송 했습니까?
당신이 사용할 수있는
dos2unix configure
이 문제를 해결하거나 VI에서 열어 사용하기 :%s/^M//g;
모두 교체하기 (사용 CTRL+ V, CTRL+ M^ M을 얻기 위해)
다음 명령을 사용하여 수정할 수 있습니다
cat file_name.sh | tr -d '\r' > file_name.sh.new
찾을 수 없으면 명령을 실행하십시오.
CentOS :
# yum install dos2unix*
# dos2unix filename.sh
dos2unix: converting file filename.sh to Unix format ...
우분투 / 데비안 :
# apt-get install dos2unix
이것은 일반적으로 Windows에서 파일을 편집하고 일부 유닉스 기반 시스템에서 파일을 실행하려고 할 때 발생합니다.
Linux 포럼 에 제시된 솔루션은 저에게 효과적이었습니다.
perl -i -pe's/\r$//;' <file name here>
도움이 되었기를 바랍니다.
추신 : 유닉스 / 리눅스 머신에 perl이 설치되어 있어야합니다.
OS X를 사용하는 경우 파일을 열고 다음을 선택하여 XCode에서 줄 끝을 변경할 수 있습니다
보기-> 텍스트-> 줄 끝-> 유닉스
메뉴 항목을 클릭 한 다음 저장을 클릭하십시오. XCode 3.x 용입니다. 아마도 XCode 4와 비슷한 것입니다.
Richard의 의견에 따라. 다음은 파일을 UNIX 줄 끝으로 변환하는 쉬운 방법입니다. 나와 같은 경우 Windows 메모장에서 만든 다음 Linux에서 실행하려고했습니다.
- 메모장 ++ 사본을 무료로 다운로드하여 설치하십시오 (무료).
- 메모장 ++에서 스크립트 파일을 엽니 다.
- 파일 메뉴 -> 다른 이름으로 저장 ->
- 유형으로 저장 :
Unix script file (*.sh;*.bsh)
- 새 .sh 파일을 Linux 시스템에 복사하십시오.
- 다음을 사용하여 실행 파일을 최대화하십시오.
chmod 755 the_script_filename
- 다음과 같이 실행하십시오.
./the_script_filename
다른 문제 는이 링크를 시도하십시오 .
Linux에서 dos2unix 명령을 사용하여 저장된 파일을 변환하십시오. 예 :
dos2unix file_name
이 게시물 에 대한 pwc101의 의견 덕분 에이 명령은 Kali Linux에서 작동했습니다.
sed -i s/{ctrl+v}{ctrl+m}// {filename}
괄호 안의 비트를 교체하십시오 {}
. 즉 , 키와 키를 함께 {ctrl+m}
누르는 것을 의미 합니다.CtrlM
Kate에서도이 작업을 수행 할 수 있습니다.
- 파일을여십시오
- 도구 메뉴를 엽니 다
- 줄 끝 하위 메뉴를 펼치십시오.
- 유닉스 선택
- 파일을 저장하십시오 .
Windows 환경에서 스크립트를 작성하고 UNIX 환경에서 스크립트를 실행하려면 encodage에주의해야합니다.
dos2unix $ filePath
TextMate 또는 유사한 프로그램을 사용하는 경우 다른 이름으로 저장 한 다음 인코딩 LF
대신을 선택하십시오 CRLF
.
스크립트 이름 앞에 sh를 추가하면 제 경우에는 작동합니다.
참고 URL : https://stackoverflow.com/questions/2920416/configure-bin-shm-bad-interpreter
'Programming' 카테고리의 다른 글
JavaScript의 For..In 루프-키 값 쌍 (0) | 2020.02.26 |
---|---|
목록에서 max () / min ()을 사용하여 반환 된 최대 또는 최소 항목의 인덱스 가져 오기 (0) | 2020.02.26 |
문자 행렬에서 가능한 단어 목록을 찾는 방법 [Boggle Solver] (0) | 2020.02.26 |
SQL Server에서 임시 테이블과 테이블 변수의 차이점은 무엇입니까? (0) | 2020.02.26 |
창에 맞게 HTML5 캔버스 크기 조정 (0) | 2020.02.26 |