尝试在 Debian 中执行启动脚本时没有此类文件或目录错误

Sam*_*tte 11 debian bash startup-scripts

Debian(Raspbian)的新手,我在这个问题上挣扎了几天。我有一个要在启动时执行的启动脚本。

我执行了以下命令,以使脚本可执行并将其与默认参数一起添加到启动序列中。

sudo chmod 755 /etc/init.d/testsam
sudo update-rc.d testsam defaults
Run Code Online (Sandbox Code Playgroud)

尝试测试脚本时,我执行以下操作:

sudo /etc/init.d/testsam start
Run Code Online (Sandbox Code Playgroud)

但是这样做时,我收到一个错误:无法执行 /etc/init.d/testsam: No such file or directory。

我将脚本最小化为非常基本的,但仍然不知道实际原因。我希望有人能指出我正确的解决方案?这是当前的脚本。

#! /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
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

小智 22

您的行尾可能有一个回车符 ( ^M) #!

行的格式#!非常严格,不允许回车,除非你的解释器实际上被调用/bin/bash^M

使用适当的 unix 编辑器创建的文件中永远不会有回车符,除非您特意添加它们。

编辑已使用 CRLF 行结尾的现有文件时,回车符可能对您隐藏。例如,vim 就是这样做的。但它也在[dos]状态行中警告您该文件是 DOS 格式。然后:set fileformat=unix,您可以说出并保存文件以进行转换。

  • 要验证这是否确实是问题所在,请执行`cat -v /etc/inti.d/testsam`。如果你有一个错误的回车,它会显示为`^M`。 (5认同)