/usr/bin/ruby2.3: 解释器错误:找不到该文件或目录

5
我正在运行Ubuntu 16.04,打开控制台并输入rails s启动我的Rails服务器时,会出现以下错误:bash: /usr/local/bin/rails: /usr/bin/ruby2.3: bad interpreter: No such file or directory。但是如果我使用命令bash -l然后使用rails s,一切都可以正常工作。为什么我总是需要使用bash -l命令才能使用rails s?我如何避免始终编写bash -l带来的额外负担?

运行 awk -F: -v usr=$(whoami) '$1==usr { print $7 }' /etc/passwd 并验证您的默认 shell 是否为 /bin/bash。如果不是,请使用 chsh 进行更改。 - Raman Sailopal
2个回答

4

首先找到你的 Ruby 安装位置:

which ruby

将路径添加到环境变量:

vi ~/.bashrc
export PATH=$PATH:/usr/local/ruby-2.6.5/bin

接下来,位置包是哪个包

编辑的第一行

vi  /usr/local/bin/bundle

#!/usr/bin/ruby2.3
TO
/usr/local/ruby-2.6.5/bin/ruby

1
你标题问题的答案是,你试图使用为另一个操作系统制作的Rails分发版,其中存在/usr/bin/ruby2.3。虽然您可以将该分发版修改为在您的操作系统上工作,但更简单的方法是使用专门为您的操作系统打包的Rails版本。大多数Linux操作系统已经在其软件包存储库中具有版本。
至于您的第二个问题(bash -l),您没有提供足够的信息来回答它。然而,高度可能的是,按照我建议的方式解决标题问题也将解决此问题,因为基本问题必须是某种用户环境配置错误,如果您使用操作系统提供的Rails版本,则不会发生这种情况。底线是,您永远不应该强制使用Bash登录shell的方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接