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

WSL运行Chatwoot/Rails报shebang\r警告及ruby\r报错如何解决

问题原因

两个异常完全同源:所有报错、警告都来自文件被错误写入了Windows风格的CRLF换行符(行尾多了\r字符)。shebang解析时会把行尾的\r算进解释器路径,就出现了ruby\r不存在的报错,以及shebang行尾带\r的警告。
之前执行git config --global core.autocrlf true是错误配置:该参数设为true时,git会在检出文件时强制把LF换行转为CRLF,完全不适合WSL/Linux环境,且修改配置不会自动修复已经检出的错误换行文件,所以警告一直存在。

修复步骤
  • 先修正git换行配置,在WSL终端执行:
    git config --global core.autocrlf input
    该配置下,git提交文件时会自动把CRLF转为LF,检出时不做换行转换,适配WSL/Linux环境使用。
  • 进入本地Chatwoot仓库根目录,清除git本地缓存,按新配置重置工作区文件:
git rm --cached -r .
git reset --hard HEAD

该操作会丢弃所有未提交的本地修改,如有自定义改动请提前备份。

  • 安装换行转换工具,批量清理残留的CRLF字符:
    先执行sudo apt update && sudo apt install dos2unix -y安装工具,再执行:
    find . -type f \( -name "*.rb" -o -name "*.sh" -o -name "Procfile*" -o -path "./bin/*" \) -exec dos2unix {} \;
    该命令会把所有ruby脚本、shell脚本、Procfile配置、bin目录下的可执行文件的换行统一转为Linux标准的LF格式。
  • 校验依赖后重启服务:
    执行bundle install重新校验ruby依赖完整性,之后再运行rails s或foreman start -f Procfile.dev即可正常启动,之前的警告、报错都会消失。
注意事项
  • 如果需要同时在Windows资源管理器和WSL中操作同一个仓库,Windows侧的git配置保持core.autocrlf true即可,WSL侧固定为input,两边不会出现换行冲突。
  • 不要尝试手动修改rbenv下的ruby二进制shebang行,属于治标不治本,后续其他脚本出现CRLF问题依然会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:45:31