데비안에서 시작 스크립트를 실행하려고 할 때 그러한 파일이나 디렉토리 오류가 없습니다


11

데비안 (Raspbian)을 처음 접했고 며칠 동안이 문제를 해결하려고 애 쓰고 있습니다. 시작할 때 실행할 시작 스크립트가 있습니다.

스크립트를 실행 가능하게 만들고 기본 매개 변수를 사용하여 시작 순서에 추가하기 위해 다음 명령을 실행했습니다.

sudo chmod 755 /etc/init.d/testsam
sudo update-rc.d testsam defaults

스크립트를 테스트하려고 할 때 다음을 실행합니다.

sudo /etc/init.d/testsam start

그러나 그렇게 할 때 오류가 발생합니다. /etc/init.d/testsam을 실행할 수 없습니다 : 해당 파일이나 디렉토리가 없습니다.

스크립트를 매우 기본적으로 최소화했지만 실제 이유에 대한 단서는 없습니다. 누군가가 올바른 해결책을 알려줄 수 있기를 바랍니다. 이것은 현재 스크립트입니다.

#! /bin/bash

# /etc/init.d/testsam

case "$1" in
 start)
        #echo "starting script"
        ;;
 stop)
        #echo "stopping script"
        ;;
 *)
        #echo "Usage: /etc/init.d/testsam {start|stop}"
        exit 1
         ;;
esac

exit 0

도움을 주셔서 감사합니다

답변:


22

^M끝에 캐리지 리턴 ( )이있을 수 #!있습니다.

행의 형식 #!은 매우 엄격하며 통역사가 실제로 호출되지 않는 한 캐리지 리턴은 허용되지 않습니다./bin/bash^M

적절한 유닉스 에디터로 만든 파일에는 캐리지 리턴이 없습니다.

이미 CRLF 줄 끝을 사용하는 기존 파일을 편집 할 때 캐리지 리턴이 숨겨 질 수 있습니다. 예를 들어, vim은 그렇게합니다. 그러나 [dos]상태 표시 줄에 파일이 DOS 형식이라는 경고 메시지가 표시됩니다. 그런 다음 :set fileformat=unix파일을 말하고 저장하여 변환 할 수 있습니다.


5
이것이 실제로 문제인지 확인하려면을 수행하십시오 cat -v /etc/inti.d/testsam. 잘못된 캐리지 리턴이 있으면로 표시됩니다 ^M.
Jenny D

빠른 도움에 감사드립니다! 나는 wget 명령을 통해 파일을 받았으며 실제로 Windows 기반 파일이었습니다.
Sam Vanhoutte

일부 서버에서는 사용할 수 dos2unix있지만 호스트가 해당 명령이 모든 인스턴스를 지우도록 허용하지 않으면 어떻게해야 ^M합니까?
user33777

1
문제를 해결하는 또 다른 방법 :sed -i -e 's/\r//g' /path/file
Al Belsky
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.