You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenWrt开机自启脚本启用报错': No such file or directory.common'求助

OpenWrt开机脚本enable命令报错原因及解决方法

问题描述

在OpenWrt系统中配置开机自启动脚本时,执行以下操作后出现异常错误:

  1. 在/etc/init.d目录创建my_script文件,内容如下:
#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org
 
START=10
STOP=15
 
start() {        
        echo start
        # commands to launch application
}                 
 
stop() {          
        echo stop
        # commands to kill application 
}
  1. 执行权限设置与启用命令:
chmod +x /etc/init.d/my_script 
/etc/init.d/my_script enable

执行enable命令后输出错误:

root@OpenWrt:/etc/init.d# /etc/init.d/my_script enable
': No such file or directory.common

错误原因

该错误的核心原因是脚本文件采用了Windows系统的CRLF(\r\n)换行格式,而非Linux系统的LF(\n)格式。

Linux系统解析脚本时,会将Windows换行符中的\r视为命令路径的一部分。例如脚本第一行的#!/bin/sh /etc/rc.common,在CRLF格式下末尾会附带\r字符,系统会错误地将路径识别为/etc/rc.common\r——这个路径并不存在,因此触发文件找不到的错误。而\r会让终端光标回到行首,覆盖部分字符,最终导致错误信息显示为异常的': No such file or directory.common。

你提到更换其他脚本也出现相同问题,说明你创建脚本时使用了Windows编辑器(如记事本),或通过Windows系统传输文件时保留了CRLF换行格式。

解决方法

方法1:在OpenWrt中转换换行格式

使用dos2unix工具将脚本转换为Linux兼容的LF格式:

# 若系统未安装dos2unix,先执行安装
opkg update
opkg install dos2unix

# 转换目标脚本文件
dos2unix /etc/init.d/my_script

转换完成后重新执行/etc/init.d/my_script enable即可。

方法2:直接在OpenWrt中创建脚本

使用OpenWrt自带的vi或nano编辑器创建脚本,这类工具默认采用LF换行格式:

vi /etc/init.d/my_script

输入脚本内容后保存退出,再执行权限设置与启用命令。

方法3:在Windows编辑器中切换换行格式

如果必须在Windows下编辑脚本,需将编辑器的换行格式设置为Unix/Linux风格(LF):

  • Notepad++:点击菜单栏「编辑」→「文档格式转换」→「转换为UNIX格式」
  • VS Code:点击右下角的「CRLF」标识,选择「LF」

内容的提问来源于stack exchange,提问作者RDP1998

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:15:42