【问题标题】:Every time I install ruby and start a new shell window, my install dissappears每次我安装 ruby​​ 并启动一个新的 shell 窗口时,我的安装都会消失
【发布时间】:2014-11-06 21:42:27
【问题描述】:

我不明白这里发生了什么。在使用 RVM 安装 ruby​​/rails/rspec/cucumber 然后 3x gem install __ 之后,我可以在我的 shell 脚本中执行此操作。

[name@server subapp]$ which ruby
~/.rvm/rubies/ruby-2.0.0-p481/bin/ruby
[name@server subapp]$ which rails
~/.rvm/gems/ruby-2.0.0-p481/bin/rails
[name@server subapp]$ which rspec
~/.rvm/gems/ruby-2.0.0-p481/bin/rspec
[name@server subapp]$ which cucumber
~/.rvm/gems/ruby-2.0.0-p481/bin/cucumber
[name@server subapp]$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux]
[name@server subapp]$ rails -v
Rails 4.1.6
[name@server subapp]$ rspec -v
3.1.2
[name@server subapp]$ cucumber --version
1.3.16

然后我打开一个新的 shell 窗口,我 source ~/.bashrc 并说出哪个 ruby​​。

[name@server rubyDev]$ source ~/.bashrc
[name@server rubyDev]$ which ruby
/usr/bin/which: no ruby in (/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/name/.rvm/bin:/home/name/.rvm/bin:/home/name/.rvm/bin:/home/name/.rvm/bin)
[name@deliv rubyDev]$ ruby -v
-bash: ruby: command not found

哦,黄瓜不起作用,甚至在我打开一个新的 shell 窗口之前。看起来像这样:http://pastebin.com/WvMy6gQu ...我觉得我的安装出现了很多问题,但我不知道是什么或如何修复它。我昨天安装了这个,黄瓜正在工作,我打开外壳,它就像从来没有安装过黄瓜甚至红宝石一样。

通过 ssh 获取系统信息 Centos 6.5。

rvm信息: 红宝石2.1.2: 系统: uname:“Linux deliv.dev.corp.lyris.com 2.6.32-431.17.1.el6.x86_64 #1 SMP Wed May 7 23:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux" 系统:“centos/6/x86_64” bash: "/bin/bash => GNU bash,版本 4.1.2(1)-release (x86_64-redhat-linux-gnu) " zsh: " => 未安装" 转速: 版本:“rvm 1.25.30 (stable) by Wayne E. Seguin, Michal 帕皮斯 [https://rvm.io/]" 更新:“1 小时 12 分 42 秒前” 路径:“/home/name/.rvm” 红宝石: 翻译:“红宝石” 版本:“2.1.2p95” 日期:“2014-05-08” 平台:“x86_64-linux” 补丁级别:“2014-05-08 修订版 45877” full_version:“ruby 2.1.2p95(2014-05-08 修订版 45877)[x86_64-linux]” 家园: 宝石:“/home/name/.rvm/gems/ruby-2.1.2” 红宝石:“/home/name/.rvm/rubies/ruby-2.1.2” 二进制文件: 红宝石:“/home/name/.rvm/rubies/ruby-2.1.2/bin/ruby” irb:“/home/name/.rvm/rubies/ruby-2.1.2/bin/irb” 宝石:“/home/name/.rvm/rubies/ruby-2.1.2/bin/gem” 耙子:“/home/name/.rvm/gems/ruby-2.1.2/bin/rake” 环境: 路径:“/home/name/.rvm/gems/ruby-2.1.2/bin:/home/name/.rvm/gems/ruby-2。 1.2@global/bin:/home/name/.rvm/rubies/ruby-2.1.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/hom e/name/.rvm/bin:/home/name/.rvm/bin:/usr/local/sbin:/home/name/.rvm/bin" GEM_HOME: "/home/name/.rvm/gems/ruby-2.1.2" GEM_PATH: "/home/name/.rvm/gems/ruby-2.1.2:/home/name/.rvm/gems/ruby-2.1.2@ 全球的” MY_RUBY_HOME:“/home/name/.rvm/rubies/ruby-2.1.2” IRBRC:“/home/name/.rvm/rubies/ruby-2.1.2/.irbrc” 红宝石:“” 宝石:“”
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
export PATH="$HOME/.rvm/rubies/ruby-2.0.0-p481/bin:$PATH" #hack-fix
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

【问题讨论】:

  • 你为什么要“source ~/.bashrc”?这是由 shell 在登录时自动完成的。通过编辑并复制/粘贴该信息,将rvm info 的输出附加到您的问题中。您是如何安装 RVM 的?您遵循了哪些说明?您是否阅读了the official RVM installation page 并遵循了故障排除提示?
  • 它看起来像 /etc/profile.d/rvm.sh 或类似的东西在你的 shell 启动时没有被加载。没有那个 RVM 就无法工作。
  • 不,不要使用粘贴箱来提供您的问题所必需的信息。链接会腐烂,然后断开,使您的问题在未来人们搜索类似答案时难以使用。此外,您会阻止潜在的回答者通过让他们寻找所需信息来帮助您。

标签: ruby-on-rails ruby shell rspec cucumber


【解决方案1】:

登录与交互式 Shell 启动

IIRC,RVM 对于它在你的 shell 启动脚本中的安装位置相当固执。它曾经(并且可能仍然会)做的一件事是安装到 ~/.bash_profile 而不是 ~/.profile 或 ~/.bashrc。

这对我个人来说不起作用,所以我在安装 RVM 后做的第一件事是删除任何新创建的 ~/.bash_profile(以便 Bash 使用 ~/.profile 代替)并粘贴:

PATH=$HOME/.rvm/bin:$PATH
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

在我的 ~/.bashrc 文件的底部,以便 RVM 在每个交互式 shell 中运行,而不仅仅是在登录 shell 中。

这也可能有助于更多地了解您的 shell 的startup file precedence。您的里程可能会有所不同。

【讨论】:

  • @J-Dizzle 如果 RVM 创建 ~/.bash_profile,则它优先于 ~/.profile。如果你使用 ~/.bash_profile,不要删除它;当您意识到您的外壳不再采购 ~/.profile 如果这是您所期望的行为时,您可能会感到惊讶。这是 YMMV 的众多原因之一。有关优先级的更多信息,请参阅gnu.org/software/bash/manual/html_node/Bash-Startup-Files.html
  • 详尽且内容丰富。现在,每次我启动一个 shell 时,我都掌握了一切,并且可以指挥黄瓜。
【解决方案2】:

一种可能的解决方案是不维护两个不同的配置文件.bash_profile.bashrc

this excellent post 中关于.bash_profile.bashrc 之间区别的建议的解决方案是从您的.bash_profile 文件中获取.bashrc,然后将PATH 和常用设置放入.bashrc

引用,“将以下行添加到 .bash_profile:

if [ -f ~/.bashrc ]; then source ~/.bashrc fi"

【讨论】:

    【解决方案3】:

    如果默认 shell 是 bash,则将二进制可执行路径(即 ~/.rvm/rubies/ruby-2.0.0-p481/bin)添加到 $PATH 环境中,如果默认 shell 是 bash,或者如果 ksh 是默认,则在 .profile 中。

     PATH="$HOME/.rvm/rubies/ruby-2.0.0-p481/bin:$PATH"
    

    【讨论】:

    • 这解决了 ruby​​ 问题.. 我要冲洗并重复以解决 rails、rspec 和 cucumber 问题吗?
    • 这是一个非常混乱的解决方案,而且还会将您锁定在特定版本中,从而破坏了 RVM 的全部要点。
    • @J-Dizzle :是的,它会解决你的问题,但正如 tadman 所说,它会将你锁定到特定版本的 ruby​​。但是,如果我们看到您的问题,它仅与您需要手动设置的路径变量有关,或者您的二进制文件应该具有指向现有路径变量的软链接(在大多数情况下是 /usr/bin 或 /usr/local/bin)。
    • 我不太在乎被锁定在一个 ruby​​ 版本中,我只想已经在使用 cucumber
    • 然后您可以使用该解决方案,它将毫无疑问地有效。享受 !!!更不用说,如果它对您有用,请标记为已回答。
    猜你喜欢
    • 2019-03-20
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多