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
[어느 쪽인가] 어느 쪽인가?
Eclipse 사용자의 경우 메뉴에서 파일 인코딩을 직접 변경할 수 있습니다.File > Convert Line Delimiters To > Unix (LF, \n, 0Α, ¶)
:
'바꾸다'를 바꿀 도 있어요.New text file line delimiter
로로 합니다.Other: Unix
Window > Preferences > General > Workspace
표시:
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
'programing' 카테고리의 다른 글
셸 스크립트의 kill -0 $pid는 무엇을 합니까? (0) | 2023.04.11 |
---|---|
Windows에서 . (도트) 접두사를 가진 파일을 수동으로 작성하려면 어떻게 해야 합니까?예를 들어 .htaccess 입니다. (0) | 2023.04.11 |
Git Stash를 한 번에 모두 삭제하려면 어떻게 해야 하나요? (0) | 2023.04.11 |
Microsoft SQL Server에서 10진수 열의 정밀도를 변경하려면 어떻게 해야 합니까? (0) | 2023.04.11 |
C# 문자열 비교 방식의 차이 (0) | 2023.04.11 |