Debian'da başlangıç ​​komut dosyası yürütmeye çalışırken böyle bir dosya veya dizin hatası yok


11

Debian (Raspbian) için çok yeni ve birkaç gün boyunca bunun için mücadele ediyorum. Başlangıçta yürütmek istediğim bir başlangıç ​​komut dosyası var.

Komut dosyasını yürütülebilir yapmak ve başlangıç ​​parametreleri için varsayılan parametrelerle eklemek için aşağıdaki komutları yürüttüm.

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

Komut dosyasını test etmeye çalışırken aşağıdakileri yürütürüm:

sudo /etc/init.d/testsam start

Ancak bunu yaparken bir hata alıyorum: /etc/init.d/testsam yürütülemiyor: Böyle bir dosya veya dizin yok.

Senaryoyu çok basit bir şekilde minimize ettim, ama yine de asıl nedenin bir ipucu yok. Umarım birisi beni doğru çözüme yönlendirebilir mi? Bu, şu anda komut dosyasıdır.

#! /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

Herhangi bir yardım için teşekkürler

Yanıtlar:


22

Muhtemelen çizginizin ^Msonunda bir satır başı ( ) vardır #!.

#!Hattın formatı çok katıdır ve tercümanınız gerçekten çağrılmadıkça taşıyıcı dönüşüne izin verilmez./bin/bash^M

Eklemek için kendi yolunuzdan çıkmadıkça, uygun bir unix düzenleyici ile oluşturulan bir dosyada asla satır başı olmaz.

Zaten CRLF satır sonlarını kullanan mevcut bir dosyayı düzenlerken, satır başları sizden gizlenmiş olabilir. Örneğin, vim bunu yapar. Ancak [dos]durum satırında dosyanın DOS biçiminde olduğu konusunda sizi uyarması da söylenir. Daha sonra :set fileformat=unixdosyayı dönüştürmek için söyleyebilir ve kaydedebilirsiniz.


5
Bunun aslında sorun olup olmadığını doğrulamak için yapın cat -v /etc/inti.d/testsam. Hatalı bir taşıyıcı dönüşünüz varsa, olarak görünecektir ^M.
Jenny D

hızlı yardım için teşekkürler! wget komutu ile dosyayı almıştı ve gerçekten de windows tabanlı bir dosyaydı.
Sam Vanhoutte

Bazı sunucularda kullanabilirim, dos2unixancak ana bilgisayar bu komutun tüm örneklerini silmesine izin vermediğinde ne yaparsınız ^M?
user33777

1
Sorunu çözmenin başka bir yolu:sed -i -e 's/\r//g' /path/file
Al Belsky
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.