如何让fish shell默认使用rvm ruby

qzlgjiam  于 12个月前  发布在  Ruby
关注(0)|答案(6)|浏览(108)

我在Mac OS X 10.9.1上使用的是Fish Shell 2.10。我想使用一个Ruby,我已经安装了使用RVM作为默认在我的终端,但我似乎不能使这一工作。
我试过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

但是每次打开一个新的终端都要这样做,这很烦人。

d7v8vwbk

d7v8vwbk1#

首先从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行添加到fish配置文件中。

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

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

kiayqfof

kiayqfof2#

我认为为了更简单,你可以通过[fisher] 1向fish shell添加一个[rvm] 2插件。
对于安装fisher:

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

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

fisher add jorgebucaran/fish-nvm

fisher install oh-my-fish/plugin-rvm

在那之后,rvm运行得很完美。
(was fisher rvm以前)

5m1hhzi4

5m1hhzi43#

安装oh-my-fish非常有用的工具,有rvm插件和许多很酷的另一个.
用于管理fishshell配置的框架

pcrecxhr

pcrecxhr4#

这是因为,通过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添加到您的fish配置文件中的路径附加到:

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

要在每次加载fish时运行此命令,请将上述命令添加到~/.config/fish/fish.fish。或者,您可以将rvm命令添加到fish配置中,让它为您加载。
希望这对你有帮助!- 格兰特

oyxsuwqo

oyxsuwqo5#

这下面为我从鱼谷歌组论坛工作。下面是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/就可以了。

d6kp6zgx

d6kp6zgx6#

在您的config.fish中加载rvm插件并静默调用它:
. ~/oh-my-fish/plugins/rvm/rvm rvm >/dev/null
如果你使用的是bob-the-fish主题,你会在提示符中看到一个ruby版本,像这样:
ruby-2.1.2 > ~/d/web > master >
如果您愿意,可以通过删除bobthefish/fish_prompt.fish中的以下行来抑制它:
__bobthefish_prompt_rubies

相关问题