Không có lỗi tệp hoặc thư mục như vậy khi cố gắng thực thi tập lệnh khởi động trong Debian


11

Rất mới đối với Debian (Raspbian) và tôi đang vật lộn với cái này trong vài ngày. Tôi có một kịch bản khởi động mà tôi muốn thực hiện khi khởi động.

Tôi đã thực hiện các lệnh sau, để làm cho tập lệnh thực thi và thêm nó với các tham số mặc định vào chuỗi khởi động.

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

Khi thử kiểm tra tập lệnh, tôi thực hiện như sau:

sudo /etc/init.d/testsam start

Nhưng khi làm như vậy, tôi gặp lỗi: không thể thực thi /etc/init.d/testsam: Không có tệp hoặc thư mục như vậy.

Tôi đã thu nhỏ kịch bản đến mức rất cơ bản, nhưng vẫn không có manh mối về lý do thực tế. Tôi hy vọng ai đó có thể chỉ cho tôi giải pháp đúng? Đây là kịch bản hiện tại.

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

Cảm ơn vì bất kì sự giúp đỡ

Câu trả lời:


22

Bạn có thể có một trở lại vận chuyển ( ^M) ở cuối #!dòng của bạn .

Định dạng của #!dòng rất nghiêm ngặt và không được phép trả lại vận chuyển, trừ khi thông dịch viên của bạn thực sự được gọi/bin/bash^M

Sẽ không bao giờ có trả lại vận chuyển trong một tệp được tạo bằng trình soạn thảo unix thích hợp, trừ khi bạn đi ra ngoài để thêm chúng.

Khi chỉnh sửa tệp hiện có đã sử dụng kết thúc dòng CRLF, trả về vận chuyển có thể bị ẩn khỏi bạn. Ví dụ, vim làm điều đó. Nhưng nó cũng cho biết [dos]trong dòng trạng thái để cảnh báo bạn rằng tệp có định dạng DOS. Sau đó, bạn có thể nói :set fileformat=unixvà lưu tệp để chuyển đổi nó.


5
Để xác minh xem đây thực sự là vấn đề, hãy làm cat -v /etc/inti.d/testsam. Nếu bạn có một sự trở lại vận chuyển sai, nó sẽ hiển thị như ^M.
Jenny D

cảm ơn sự giúp đỡ nhanh chóng tôi đã nhận được tệp thông qua lệnh wget và nó thực sự là một tệp dựa trên windows.
Sam Vanhoutte

Trên một số máy chủ tôi có thể sử dụng dos2unixnhưng bạn sẽ làm gì khi máy chủ không cho phép lệnh đó xóa sạch tất cả các phiên bản ^M?
dùng33777

1
Một cách khác để khắc phục sự cố:sed -i -e 's/\r//g' /path/file
Al Belsky
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.