programing

Bash 스크립트 – "/bin/bash^M: 잘못된 인터프리터:해당 파일 또는 디렉터리 없음"

i4 2023. 4. 11. 21:39
반응형

Bash 스크립트 – "/bin/bash^M: 잘못된 인터프리터:해당 파일 또는 디렉터리 없음"

튜토리얼을 사용하여 몇 가지 작업을 자동화하는 bash 스크립트를 배우고 있습니다.
퍼티를 사용하여 서버에 접속하고 있습니다.

스크립트는 다음 위치에 있습니다..../Documents/LOG는 다음과 같습니다.

#!/bin/bash
# My first script
echo "Hello World!"

그리고 다음 작업을 수행했습니다.read/write/execute permissions

chmod 755 my_script

그러면 제가 들어갈 때./my_script제목에 오류가 표시됩니다.

비슷한 질문이 몇 가지 있어서 도움이 될 것 같습니다.

$ which bash
/bin/bash

그리고.

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/bin/mh

현재 디렉토리를 에 추가하려고 했습니다.PATH근데 그게 안 돼...

터미널에서 다음 명령을 실행합니다.

sed -i -e 's/\r$//' scriptname.sh

그럼 해봐

./scriptname.sh

그건 작동할 거야.

Windows env에서 스크립트를 작성한 후 Unix 환경에서 실행하도록 포팅할 때 이 문제가 발생하였습니다.

실행해 보다dos2unix스크립트:

http://dos2unix.sourceforge.net/

또는 Unix 환경에서 스크립트를 다시 작성하기만 하면 됩니다.vi테스트를 실시합니다.

Unix 에서는 다른 행의 엔딩을 사용하고 있기 때문에, Windows 로 작성한 파일을 읽을 수 없습니다.따라서 ^M을 부정한 문자로 보고 있습니다.

Windows 에 파일을 써넣고 나서 포토 오버 하는 경우는, UNIX 형식의 파일을 작성하도록 에디터가 설정되어 있는 것을 확인해 주세요.

화면 오른쪽 하단의 메모장++에 문서 형식이 표시됩니다.디폴트로는 다음과 같이 표시됩니다.Dos\Windows변경하려면 으로 이동합니다.

  • 설정 -> 프리퍼런스
  • 새 문서/기본 디렉토리 탭
  • 형식을 unix로 선택하고 닫기
  • 새 문서를 작성하다

Windows 또는 Mac에서 Sublime Text를 사용하여 스크립트를 편집하는 경우:

를 클릭합니다.View > Line Endings > Unix파일을 다시 저장합니다.

여기에 이미지 설명 입력

notepad++에서는 을 눌러 파일에 대해 설정할 수 있습니다.

편집 --> EOL 변환 --> UNIX/OSX 형식

여기에 이미지 설명 입력

이는 윈도에서 파일을 편집하고 unix에서 Import 및 실행함으로써 발생합니다.

dos2unix -k -o filename효과가 있을 거야

DOS 행의 종료에 문제가 있다.다음을 수행하면 unix용으로 변환됩니다.

dos2unix file_name

주의: 먼저 dos2unix를 설치해야 할 수 있습니다.yum install dos2unix

그것을 하는 또 다른 방법은 사용하는 것이다sed명령어를 사용하여 dos 행 끝 문자를 검색하여 unix 형식으로 바꿉니다.

$sed -i -e 's/\r$//' your_script.sh

파일의 행이 Windows 로 되어 있어 Linux 를 혼란스럽게 합니다.

스플리어스 CR 문자를 삭제합니다.다음 명령을 사용하여 수행할 수 있습니다.

 $ sed -i -e 's/\r$//' setup.sh

gedit에서 스크립트를 열고 적절한 위치에 저장함으로써 문제를 해결할 수 있었습니다.Line Ending★★★★

[ File ] > [ Save As ]...

[ ] 의 .Save As[문자 인코딩] [회선 엔딩]변경하다Windows로로 합니다.Unix/Linux[어느 쪽인가] 어느 쪽인가?

gedit "Save As" 프롬프트에서 "Line Ending" 옵션을 "Linux/Unix"로 선택

Eclipse 사용자의 경우 메뉴에서 파일 인코딩을 직접 변경할 수 있습니다.File > Convert Line Delimiters To > Unix (LF, \n, 0Α, ¶):

Eclipse 변경 파일 인코딩

'바꾸다'를 바꿀 도 있어요.New text file line delimiter로로 합니다.Other: UnixWindow > Preferences > General > Workspace 표시:

Eclipse 작업 영역 설정

ATOM에는 라인 엔딩 셀렉터 패키지가 내장되어 있습니다.

상세한 것에 대하여는, https://github.com/atom/line-ending-selector 를 참조해 주세요.

Windows와 Mac/Linux를 동시에 개발하고 있으며 Windows에서와 같이 스크립트를 실행하는 것만으로 이 ^M 오류를 회피할 수 있습니다.

$ php ./my_script

행의 끝을 변경할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/14219092/bash-script-bin-bashm-bad-interpreter-no-such-file-or-directory

반응형