WSL2升级Rails 6.1.7后无法运行Ruby/Rails等工具的问题求助
解决WSL2中调用Windows Ruby导致Rails/Bundler无法运行的问题
问题根源
你的WSL2系统优先调用了Windows C盘安装的Ruby 2.6(路径/mnt/c/ruby26-x64/bin),而非通过rvm安装的WSL本地Ruby 2.7。WSL无法直接兼容Windows Ruby脚本的执行环境,再加上Windows脚本默认使用的CRLF换行符与Linux的LF格式冲突,最终触发bad interpreter: No such file or directory错误。
解决方案
调整PATH环境变量,让WSL本地Ruby优先
- 查看当前PATH顺序,确认Windows Ruby路径是否排在前面:
echo $PATH - 编辑shell配置文件(如
~/.bashrc或~/.zshrc),加入以下内容确保rvm管理的Ruby路径优先级最高:
注意替换# 加载rvm环境(若未自动加载) [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # 将rvm Ruby路径置于PATH最前端 export PATH="$HOME/.rvm/rubies/ruby-2.7.x/bin:$PATH"ruby-2.7.x为你实际安装的Ruby 2.7具体版本号。 - 使配置生效:
source ~/.bashrc # 若用zsh则执行source ~/.zshrc - 验证配置:执行
which ruby和which rails,输出应指向rvm路径下的对应文件,而非/mnt/c开头的Windows路径。
- 查看当前PATH顺序,确认Windows Ruby路径是否排在前面:
彻底避免调用Windows Ruby(可选)
如果不需要在WSL中访问Windows的Ruby工具,可以直接从PATH中移除Windows Ruby的路径。编辑~/.bashrc或~/.zshrc,找到包含/mnt/c/ruby26-x64/bin的行并删除,然后重新加载配置。修复项目依赖环境
完成PATH调整后,进入你的Rails项目目录,执行以下命令确保依赖与本地Ruby版本匹配:rvm use 2.7.x # 切换到目标Ruby版本 gem install bundler bundle install之后尝试启动Rails服务:
rails s
内容的提问来源于stack exchange,提问作者KeithP
相关产品推荐
相关产品推荐

