잘못된 인터프리터가 나타나는 이유:해당 파일이나 디렉토리가 나타나지 않는 이유는 파일 형식 문제입니다. 이 파일은 Windows에서 작성되었습니다. 뉴라인 방식은 유닉스와 다르지만 vim에서 설정하지 않으면 전혀 보이지 않는다.
문제 분석:
1. Windows에서 작성된 SHELL 파일을 Linux로 전송하여 실행하면 오류 메시지가 나타납니다.
2. 오류 메시지: 잘못된 해석기: 해당 파일이나 디렉터리가 없습니다.
문제 원인:
운영 체제가 Windows이고 스크립트를 Windows에서 편집하기 때문에 보이지 않는 문자가 있을 수 있습니다. 스크립트 파일은 DOS 형식
입니다. 즉, 각 줄의 끝은 rn으로 식별되고 해당 ASCII 코드는 0x0D, 0x0A입니다.
해결 방법:
보는 방법은 다양합니다. DOS 형식, UNIX 형식 또는 MAC 형식
(1) vim filename
명령을 사용하여 dos 또는 unix라는 단어를 확인합니다. Set ff=unix를 사용하면 Unix 형식이 되도록 강제한 다음 저장하고 종료하여 실행됩니다.
1. unix2dos 또는 dos2unix 두 개의 작은 프로그램을 사용하여 서로 다른 플랫폼에서 텍스트 파일 형식을 변환할 수 있습니다. djgpp에서 이 두 프로그램의 이름은 u를 나타냅니다. unix, d는 dos를 나타냅니다
2. sed와 같은 도구를 사용하여 이를 수행할 수도 있습니다:
sed ‘s/^M//' filename > tmp_filename mv -f tmp_filename filename
또한 SHELL 프로그램에서 명령을 찾을 수 없다고 보고하는 경우 항상 PATH를 확인하십시오. 프로그램에서 사용하는 모든 명령(절대 경로를 지정하지 않는 종류)이 있습니까? 그렇게 작은 프로그램에서는 한 줄씩 확인할 수 있습니다.
첨부파일 : 하나 적게 써서 발생한 파일이나 디렉토리 문제는 없습니다 /
오늘 예전에 작성했던 간단한 쉘 스크립트를 보다가 문제를 발견했습니다 :
실행 시 ./가 항상 메시지를 표시하는 경우: (bash: ./hello.sh: bin/bash: 잘못된 해석기: 해당 파일이나 디렉터리 없음), sh로 실행할 때는 올바르게 작동합니다. :
(한 눈에 틀린 부분을 찾아보세요)
여러번 확인해보니 제가 쓴 글에서 뭔가 빠진 것을 발견했습니다. 첫 번째 줄을 넣어야 합니다. #!/bin/bash로 줄을 변경하고 하나 줄입니다. /#!bin/bash echo "Hello Linux!"
아아, 아주 간단한 질문인데, 쉘 스크립트에서는 이런 오류를 발견한 적이 없습니다! 정말 사용하기 쉽지만 유일한 어려움은 형식입니다. 요구 사항이 너무 높습니다!
쉘 스크립트에서 실행할 때 "해당 파일이나 디렉터리가 없습니다"라는 문제에 대한 더 많은 해결 방법을 보려면 주의하세요. 관련 기사를 보려면 PHP 중국어 웹사이트를 방문하세요!