ไม่มีไฟล์หรือไดเรกทอรีผิดพลาดเมื่อพยายามเรียกใช้สคริปต์เริ่มต้นใน Debian


11

ใหม่มากสำหรับ Debian (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

คุณอาจได้รับ carriage return ( ^M) ที่ท้าย#!บรรทัดของคุณ

รูปแบบของ#!บรรทัดเข้มงวดมากและไม่อนุญาตให้ส่งคืนสินค้าที่นั่นเว้นแต่ล่ามของคุณจะถูกเรียกใช้/bin/bash^M

จะไม่มีการคืนค่าขนส่งในไฟล์ที่สร้างด้วยเอดิเตอร์ยูนิกซ์ที่เหมาะสมเว้นแต่ว่าคุณจะเพิ่มวิธีการออกไป

เมื่อแก้ไขไฟล์ที่มีอยู่ซึ่งใช้ตอนท้ายของบรรทัด CRLF อยู่แล้วการขึ้นบรรทัดใหม่อาจถูกซ่อนจากคุณ ตัวอย่างเช่นกลุ่มที่ทำเช่นนั้น แต่มันยังบอกว่า[dos]ในบรรทัดสถานะเพื่อเตือนคุณว่าไฟล์อยู่ในรูปแบบ DOS จากนั้นคุณสามารถพูด:set fileformat=unixและบันทึกไฟล์เพื่อแปลง


5
cat -v /etc/inti.d/testsamหากต้องการตรวจสอบว่านี่คือในความเป็นจริงปัญหาทำ ^Mหากคุณมีการกลับรถที่ผิดพลาดก็จะแสดงขึ้นเป็น
เจนนี่ 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.