OpenWrt开机自启脚本启用报错': No such file or directory.common'求助
OpenWrt开机脚本enable命令报错原因及解决方法
问题描述
在OpenWrt系统中配置开机自启动脚本时,执行以下操作后出现异常错误:
- 在
/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 }
- 执行权限设置与启用命令:
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
相关产品推荐
相关产品推荐

