【问题标题】:How to make fish shell use an rvm ruby by default如何让鱼壳默认使用 rvm ruby
【发布时间】:2014-01-24 13:49:06
【问题描述】:

我在 Mac OS X 10.9.1 上使用 fish shell 2.10。我想在我的终端中使用我使用 RVM 作为默认安装的 Ruby,但是我似乎无法完成这项工作。

我已经尝试过rvm use 2.1.0 --default,但在打开一个新终端后,我仍然得到以下信息:

> which ruby
/usr/bin/ruby

运行 rvm 命令会导致 ruby​​ 被加载:

> which ruby
/usr/bin/ruby
> rvm
[...]
> which ruby
/Users/alex/.rvm/rubies/ruby-2.1.0/bin/ruby

但是每次打开新终端时都必须这样做很烦人。

【问题讨论】:

  • 你用 rvm 安装了 ruby​​ 2.1.0 吗?
  • 是的,我有。尽管在尝试将其他已安装的 Ruby 设置为默认值时也会发生同样的事情。
  • issue:/usr/bin/ruby -v,请看.bash_profile,看线路:source "$HOME/.rvm/scripts/rvm"
  • 如问题中所述,我使用的是鱼壳,所以我认为更改我的.bash_profile 不会有任何不同?
  • 好的,所以必须在 .fish 的初始化脚本调用中添加对 rvm 的调用,将所需的 ruby​​ 更改为默认值。但是在鱼中rvm 有效吗?

标签: ruby macos rvm fish


【解决方案1】:

首先从rvm.io安装rvm fish函数

curl -L --create-dirs -o ~/.config/fish/functions/rvm.fish https://raw.github.com/lunks/fish-nuggets/master/functions/rvm.fish

您现在应该可以在重新打开终端后在 fish 中使用 rvm 命令了。

运行以下命令将rvm default 行添加到您的鱼配置文件中。

echo 'rvm default' >> ~/.config/fish/config.fish

您现在应该可以在重新打开终端后使用与 ruby​​ 相关的二进制文件和 gem。

【讨论】:

  • 当我将最后一个命令添加到我的配置文件时,每次我打开一个新终端时,rvm default 行都会添加到配置文件中,并且每个新终端打开的加载时间都会越来越长。
  • @CalamityAdam 我更改了答案中的措辞。您应该使用 echo 运行该行,而不是将其附加到 config.fish
【解决方案2】:

安装 oh-my-fish 非常有用的工具,有 rvm 插件和许多很酷的插件。

管理鱼壳配置的框架

【讨论】:

  • 我已经安装了这个(并启用了 RVM 插件),但我不确定如何让它默认加载我的 RVM Ruby。目前的行为与我的问题中描述的相同。
  • 这个插件提供了 ruby​​ 环境管理器,我有同样的问题并使用这个解决方案。显然你的配置或路径变量有问题
  • 那个项目似乎被放弃了。改用渔夫github.com/fisherman/fisherman
【解决方案3】:

我认为为了更容易,您可以通过fisherrvm 插件添加到fish shell。

安装fisher:

curl -Lo ~/.config/fish/functions/fisher.fish --create-dirs git.io/fisher

之后,为 Fish Shell 安装 rvm 插件:

fisher add jorgebucaran/fish-nvm

之后,rvm 运行完美。

(以前是fisher rvm

【讨论】:

    【解决方案4】:

    这是因为开箱即用的通过 RVM 安装的 Rubies 并未添加到您的路径中。当您运行任何 RVM 命令时,它会将相对于您正在使用的 ruby​​ 版本的路径添加到 $PATH。 RVM 似乎可以处理 bash 和 zsh,但没有内置支持更正点文件的路径。

    这是我在 RVM 命令之前的路径示例:

    /Users/grant/pear/bin /usr/local/sbin/ /Users/grant/.rvm/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/git/bin /usr/local/go/bin
    

    这是我运行 'rvm' 后的路径示例:

    /Users/grant/.rvm/gems/ruby-2.2.0/bin /Users/grant/.rvm/gems/ruby-2.2.0@global/bin /Users/grant/.rvm/rubies/ruby-2.2.0/bin /Users/grant/pear/bin /usr/local/sbin/ /Users/grant/.rvm/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/git/bin /usr/local/go/bin
    

    最重要的是,您需要将 .rvm 文件添加到您的路径中,具体取决于您默认使用的版本。 This post 帮助我弄清楚如何做到这一点。您可以将 RVM 添加到您的鱼配置文件的路径附加到:

    set -g -x PATH $PATH <paths_to_add>
    

    上面的例子:

    set -g -x PATH $PATH /Users/grant/.rvm/gems/ruby-2.2.0/bin /Users/grant/.rvm/gems/ruby-2.2.0@global/bin /Users/grant/.rvm/rubies/ruby-2.2.0/bin
    

    要在每次加载鱼时运行此命令,请将上述命令添加到 ~/.config/fish/config.fish。或者,您可以将 rvm 命令添加到您的 fish 配置中并让它为您加载。

    希望这会有所帮助! -授予

    【讨论】:

      【解决方案5】:

      这在fish google group forum对我有用。 将此解决方案归功于 Eggegg:

      最初对fish shell 的支持需要将bash 脚本转换为fish 脚本。 正如这里提到的:https://rvm.io/integration/fish

      我发现有一个更简单的解决方案:让 bash 做 bash 脚本,我们只需要环境变量的结果。

      代码: https://gist.github.com/eggegg/6077153

      只需将第一个插入到您自己的 config.fish 中,然后将 rvm.fish 复制到 ~/.config/fish/functions/ 即可。

      【讨论】:

      • 鼓励链接到外部资源,但请在链接周围添加上下文,以便您的其他用户了解它是什么以及为什么存在。始终引用重要链接中最相关的部分,以防目标站点无法访问或永久离线。
      【解决方案6】:

      在你的 config.fish 中加载 rvm 插件并静默调用它:

      . ~/oh-my-fish/plugins/rvm/rvm rvm >/dev/null

      如果您使用的是 bob-the-fish 主题,您的提示符中会有一个 ruby​​ 版本,如下所示:

      ruby-2.1.2 &gt; ~/d/web &gt; master &gt;

      如果您愿意,可以通过删除 bobthefish/fish_prompt.fish 中的以下行来抑制它:

      __bobthefish_prompt_rubies

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-03
        • 1970-01-01
        • 1970-01-01
        • 2022-07-05
        • 1970-01-01
        • 2018-11-17
        相关资源
        最近更新 更多