rvm不是函数,因为gnome-terminal将bash作为无登录shell运行?

时间:2015-01-10 10:10:53

标签: ruby bash shell rvm

我正在使用

安装rvm
curl -L https://get.rvm.io | bash -s stable

但是在安装时,运行rvm return rvm不是一个函数,因为gnome-terminal默认运行为no-login shell,因此跳过/ etc / pro文件*。

那么有没有办法在我的远程服务器上运行bash作为登录shell?或者其他任何方法来解决这个问题?

1 个答案:

答案 0 :(得分:3)

您需要在Gnome终端的设置中选中“以登录shell运行”选项。 这里:https://rvm.io/integration/gnome-terminal

另请参阅rvm is not a function

快速解决方案:

source ~/.rvm/scripts/rvm

一次修复,在你的bashrc中添加:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

修改/更新

我已经看到过很多次问过这个(类型的)问题,而且解决方案仍然相同。我将尝试解释错误背后的原因以及修复实际做了什么:

  • 当作为登录shell运行时,Bash将在启动时读取~/.bash_profile(或者,如果不存在,~/.profile)。
  • 当作为非登录shell运行时,Bash将阅读~/.bashrc

正如上面链接到rvm的网站所解释的那样:

  

多用户RVM在/etc/profile.d中创建一个脚本   在启动时采购。此外,大多数人将用于加载RVM所需的RVM采购线放在他们的〜/ .bash_profile中以进行单用户安装。默认情况下,gnome-terminal像往常一样运行Bash   一个非登录shell,因此跳过/ etc / profile *并仅执行   用户的〜/ .bashrc。

因此,通过编辑,run as login shell~/.bashrc加载rvm两种解决方案。