Как заставить рыбную оболочку использовать рубин rvm по умолчанию

Я использую fish shell 2.10 в Mac OS X 10.9.1. Я хотел бы использовать 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

Но это раздражает делать это каждый раз, когда я открываю новый терминал.


person Alex    schedule 24.01.2014    source источник
comment
Вы установили ruby ​​​​2.1.0 с rvm?   -  person Малъ Скрылевъ    schedule 24.01.2014
comment
Да, у меня есть. Хотя то же самое происходит и при попытке установить другие установленные Rubies по умолчанию.   -  person Alex    schedule 24.01.2014
comment
проблема: /usr/bin/ruby -v, и, пожалуйста, посмотрите на .bash_profile, чтобы увидеть строку: source "$HOME/.rvm/scripts/rvm"   -  person Малъ Скрылевъ    schedule 24.01.2014
comment
Как указано в вопросе, я использую рыбью скорлупу, поэтому я не думаю, что изменения в моем .bash_profile будут иметь какое-либо значение?   -  person Alex    schedule 24.01.2014
comment
хорошо, поэтому нужно добавить к вызову сценария инициализации .fish rvm, который меняет требуемый рубин на значение по умолчанию. Но работает ли rvm у рыб?   -  person Малъ Скрылевъ    schedule 24.01.2014
comment
Я начал работать над официальной поддержкой в ​​этом тикете github.com/wayneeseguin/rvm/issues/2516 - он должен загрузить ruby ​​по умолчанию, но не имеет обработчика cd, если он работает, и вам нужен обработчик cd, откройте новый запрос, запрашивающий его   -  person mpapis    schedule 24.01.2014
comment
Не очень помогает вашей конкретной проблеме. Но если вы не используете какие-либо специальные функции rvm, такие как gemsets, вы можете выбрать что-то попроще. Когда я впервые переключился на рыбу, я удивился, почему все решения такие сложные, когда речь идет всего лишь о прокладке пути. Поэтому я сделал свой собственный: github.com/terlar/fry   -  person terje    schedule 01.02.2014


Ответы (6)


Сначала установите функции rvm fish с rvm.io.

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

Теперь вы сможете использовать команду rvm в fish после повторного открытия терминала.

Запустите следующее, чтобы добавить строку rvm default в файл конфигурации рыбы.

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

Теперь вы сможете использовать двоичные файлы и драгоценные камни, связанные с ruby, после повторного открытия терминала.

person wieczorek1990    schedule 10.11.2014
comment
Когда я добавляю эту последнюю команду в свой файл конфигурации, каждый раз, когда я открываю новый терминал, строка rvm default добавляется в файл конфигурации, и каждый новый открытый терминал загружается все дольше и дольше. - person CalamityAdam; 05.06.2019
comment
@CalamityAdam Я изменил формулировку в ответе. Вы должны запустить строку с эхом один раз, а не добавлять ее к config.fish. - person wieczorek1990; 06.06.2019

Установите очень полезные инструменты oh-my-fish, плагин rvm и многие круто другое.

Фреймворк для управления конфигурацией вашей рыбной оболочки

person Зелёный    schedule 24.01.2014
comment
Я установил это (и включил плагин RVM), но не знаю, как заставить его загружать мой RVM Ruby по умолчанию. В настоящее время поведение такое же, как описано в моем вопросе. - person Alex; 24.01.2014
comment
этот плагин предоставляет менеджер среды ruby, у меня такая же проблема, и я использую это решение. Видимо что-то не так с вашей конфигурацией или переменной пути - person Зелёный; 24.01.2014
comment
Этот проект кажется заброшенным. Вместо этого используйте рыбака github.com/fisherman/fisherman - person Jorge Bucaran; 06.05.2016

Я думаю, чтобы упростить задачу, вы можете добавить плагин rvm в fish shell через фишер.

Для установки рыбака:

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

После этого установите плагин rvm для Fish Shell:

fisher add jorgebucaran/fish-nvm

После этого rvm работает идеально.

(ранее было fisher rvm)

person Diogo Leal    schedule 05.05.2017

Это происходит из-за того, что по умолчанию Rubies, установленные через RVM, не добавляются к вашему пути. Когда вы запускаете любую команду RVM, она добавляет пути, относящиеся к рубиновой версии, которую вы используете, в $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 в свой путь в зависимости от версии, которую вы используете по умолчанию. Это сообщение помогло мне понять, как это сделать. Вы можете добавить пути, которые 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

Чтобы это выполнялось каждый раз, когда вы загружаете fish, добавьте указанную выше команду в ~/.config/fish/config.fish. В качестве альтернативы вы можете добавить команду rvm в конфигурацию вашей рыбы, и она загрузит ее для вас.

Надеюсь это поможет! -Грант

person grant    schedule 16.02.2015

Это ниже сработало для меня на форуме группы fish google. кредит eggegg для этого решения ниже:

Первоначальная поддержка оболочки fish требует преобразования скрипта bash в скрипт fish. Как упоминалось здесь: https://rvm.io/integration/fish.

Я нашел более простое решение: пусть bash выполняет сценарии bash, нам нужен только результат переменных среды.

Код: https://gist.github.com/eggegg/6077153

Просто вставьте первый в свой собственный config.fish, затем скопируйте rvm.fish в ~/.config/fish/functions/ и все получится.

person jeffthestampede    schedule 21.07.2014
comment
Ссылки на внешние ресурсы приветствуются, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели некоторое представление о том, что это такое и почему оно там. Всегда цитируйте наиболее релевантную часть важной ссылки на случай, если целевой сайт недоступен или навсегда отключится. - person Andrew Stubbs; 21.07.2014

В вашем config.fish загрузите плагин rvm и вызовите его молча:

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

Если вы используете тему bob-the-fish, у вас будет рубиновая версия в приглашении, например:

ruby-2.1.2 > ~/d/web > master >

Который можно подавить, если хотите, удалив строку ниже в bobthefish/fish_prompt.fish:

__bobthefish_prompt_rubies

person Scott Antipa    schedule 25.04.2015