【问题标题】:"rvm is not a function" with root user on ubuntu desktopubuntu 桌面上的 root 用户“rvm 不是功能”
【发布时间】:2014-07-15 15:40:47
【问题描述】:

对于给定的 ubuntu 用户,我能够让单用户安装正常工作。对于单用户安装,在安装 rvm 后,您只需将源代码添加到主文件夹中的 .bash_profile 中,然后在 Ubuntu 桌面上,转到终端的 Edit > Profile Preferences > Title and Command > Run Command as a登录外壳。现在您可以开始切换红宝石并添加宝石:

rvm list
rvm install 1.9.3
rvm use 1.9.3
rvm gemset create MyGemSet
rvm use 1.9.3@MyGemset
rvm gemdir
gem install passenger

但是。我正在使用带有生产服务器设置的乘客,所以我更喜欢使用 rvm 系统范围的安装。所以我在系统范围内安装了 rvm 和 ruby​​:

sudo -i
curl -L https://get.rvm.io | bash -s stable --ruby
# echo '[[ -f "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm"' >> ~/.bash_profile
# echo 'PATH=$PATH:/usr/local/rvm/bin' >> ~/.bashrc
# rvm list
rvm rubies

   ruby-1.9.3-p547 [ i686 ]
=* ruby-2.1.2 [ i686 ]

# rvm use 1.9.3

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for a example.

我需要以 root 身份运行“rvm use 1.9.3”的原因是因为我想为 1.9.3 创建一个 gemset,但我不能作为普通用户执行此操作,因为我使用的是系统范围的安装。错误提示“您需要更改终端模拟器首选项以允许登录 shell。”。但我在 Ubuntu 上,默认情况下未启用 root 用户,出于安全原因,我也不想解锁 root 用户帐户。那么我们如何处理想要在 Ubuntu Desktop 上进行系统范围安装的情况(在这种情况下我使用的是 12.04)?

【问题讨论】:

  • 在登录 shell 中运行它有帮助吗? "/bash/bin --login"
  • @MIdhunKrishna santosh 将 bash 脚本添加到 .bashrc 而不是 .bash_profile 的解决方案实际上使它起作用。在我进行此更改之前,即使从远程 ssh 也无法正常工作。

标签: ruby rvm


【解决方案1】:

除了Santosh的回答(每次都加载rvm),只加载一次,你也可以试试:

source ~/.rvm/scripts/rvm

另外,如果您想按照 Santosh 的建议,在添加后每次都自​​动加载:

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

到你的 bashrc,你需要重新加载你的 bashrc。这里:

source ~/.bashrc

【讨论】:

    【解决方案2】:

    将此添加到您的.bashrc

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

    如果 rvm 不在您的主文件夹中,您可以使用绝对路径

    [[ -f "<path-to-rvm>/scripts/rvm" ]] && source "<path-to-rvm>/scripts/rvm"
    

    【讨论】:

    • 这没有任何影响。
    • 添加后是否尝试关闭和打开终端?
    • 是的,我做了,但没有效果。我已经在 .bash_profile 中为 root 设置了类似的行。
    • 您的主文件夹中有.rvm 文件夹吗? echo $HOME 的输出是什么?
    • echo $HOME 的输出是“/root”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多