![在 Debian 中尝试执行启动脚本时,没有出现这样的文件或目录错误](https://linux22.com/image/632226/%E5%9C%A8%20Debian%20%E4%B8%AD%E5%B0%9D%E8%AF%95%E6%89%A7%E8%A1%8C%E5%90%AF%E5%8A%A8%E8%84%9A%E6%9C%AC%E6%97%B6%EF%BC%8C%E6%B2%A1%E6%9C%89%E5%87%BA%E7%8E%B0%E8%BF%99%E6%A0%B7%E7%9A%84%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95%E9%94%99%E8%AF%AF.png)
刚接触 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
谢谢你的帮助
答案1
^M
您的行尾可能有一个回车符 ( ) #!
。
该行的格式#!
非常严格,并且不允许回车,除非实际调用了你的解释器/bin/bash^M
使用适当的 UNIX 编辑器创建的文件中永远不会有回车符,除非您特意添加它们。
编辑已使用 CRLF 行尾的现有文件时,回车符可能会对您隐藏。例如,vim 就是这样做的。但它还会[dos]
在状态行中警告您该文件是 DOS 格式。然后您可以输入:set fileformat=unix
并保存文件以进行转换。