Было бы очень полезно, если бы rbenv предоставила прокладки, которые также были бы совместимы с раковиной рыбы. Это не будет большим изменением, но это будет означать, что rbenv можно использовать в оболочке, отличной от bash / zsh. Синтаксис для fish на самом деле намного разумнее, чем для bash.
Я хотел бы выразить свою поддержку этому.
Похоже, с прокладками все в порядке, нужно доработать руководство по установке. Добавьте это в config.fish для поддержки rbenv:
set PATH $HOME/.rbenv/bin $PATH
set PATH $HOME/.rbenv/shims $PATH
rbenv rehash >/dev/null ^&1
Спасибо, Эд! :)
Работает как шарм.
Вы джентльмен и ученый.
Как @emcmanus отметил, регулировочные шайбы rbenv работают отлично с рыбой или любой другой оболочкой. Для их использования вам нужен только _installed_ Bash - он не обязательно должен быть вашей оболочкой. Прокладки представляют собой сценарии Bash, и вы можете запускать их из Fish так же, как вы можете запускать скрипты Ruby или Python из Fish.
Добавление rbenv в ваш PATH
- это все, что необходимо для его работы. Я бы согласился с патчем, который добавляет совместимость с Fish для rbenv init
поэтому вам не нужно вручную создавать пути.
Похоже, что этого недостаточно, поскольку rbenv shell
не сработает.
rbenv shell
- это просто ярлык для установки переменной окружения RBENV_VERSION
. Без него вы не потеряете никакой функциональности.
Я использовал это, чтобы заставить оболочку rbenv работать с рыбой: https://coderwall.com/p/6hja1w
При вызове rbenv из оболочки fish не передаются никакие переменные среды, установленные в вашей оболочке. Более того, ни ~/.bashrc
ни ~/.bash_profile
не читаются. Если вы хотите настроить rbenv, см. # 375.
@espen упомянул мой Protip Coderwall, но есть обновленная версия, которая разрешает частичное имя Ruby (по умолчанию будет выбрана самая новая версия, но без завершения). Gist можно найти здесь https://gist.github.com/5631243 (дайте ему немного любви, если можете).
Я понимаю, что эта проблема теперь закрыта, но мне все еще интересно, сможем ли мы правильно реализовать эту функцию. Правильно ли я думаю, что нам нужно только убедиться, что при вызове rbenv init -
он должен повторять синтаксис, дружественный к рыбной оболочке, чтобы рыба могла это оценить? В этом случае я бы предпочел, чтобы это было реализовано как часть исходного репозитория rbenv, чем наличие внешних _workarounds_, которые могут не синхронизироваться с исходными внутренними компонентами rbenv ...
Я также понимаю, что @sstephenson, возможно, не захочет активно поддерживать рыбную оболочку, но, возможно, мы могли бы попытаться реализовать экспериментальную совместимость вначале, и я уверен, что сможем получить поддержку от самого сообщества рыбных панцирей (они кажутся довольно дружелюбными и довольно отзывчивый).
Предположительно, нам нужно изменить файл https://github.com/sstephenson/rbenv/blob/master/libexec/rbenv-init.
Я прав? Я не волшебник сценариев оболочки, но я бы предпочел попытаться сделать это правильно в сотрудничестве с кем-нибудь, если он сделает это правильно.
Ваше здоровье
Любой пользователь рыбы может улучшить вывод rbenv init
чтобы он поддерживал оболочку рыбы, и отправить нам запрос на перенос.
Проблема в том, что fish не является оболочкой POSIX, и будет сложно реализовать rbenv init
правильным способом, чтобы обеспечить поддержку fish (я предполагаю, что тогда некоторым понадобится поддержка для csh
или tcsh
). Я думаю, что следует отметить, что если кто-то использует оболочку, отличную от POSIX, он может использовать одну из функций сообщества (и давать ссылки) или (-ы) он должен написать ее сам.
@hauleth Я думаю, что вы ошибаетесь. Основываясь на комментариях @emcmanus и @sstephenson, все, что нам нужно сделать, это получить rbenv init
для создания синтаксиса, совместимого с рыбой, чтобы он мог быть eval
d by fish. Оболочка, совместимая с POSIX (например, bash в этом случае), просто должна быть установлена и не обязательно должна быть выбранной вами оболочкой. См. Комментарии @sstephenson выше.
Я отправлю электронное письмо в список рассылки рыбного сообщества и начну разговор, постараюсь получить некоторую помощь от тамошних ребят.
Исходная команда rbenv shell
вызывает rbenv sh-shell
, которая возвращает строку, которая также является eval
d. Мы могли бы обойти это и проанализировать код возврата этого вызова вместо исключения возвращаемой строки. Было бы хорошо? Если да, я мог бы создать что-нибудь, что бы это делало.
@bitboxer Fish shell должен полностью поддерживаться мастером rbenv. Если вы обнаружите, что это не так, откройте новый выпуск. Спасибо!
Спасибо "emcmanus"
Пользуюсь рыбой и искал ответ.
Как упомянул emcmanus, если вы используете рыбную раковину, то у меня сработало следующее.
ИСПЫТАНА В
vi ~ / .config / fish / config.fish установить PATH $ HOME / .rbenv / bin $ PATH установить PATH $ HOME / .rbenv / shims $ PATH rbenv rehash> / dev / null ^ & 1
Затем выйдите из рыбы и перезагрузите рыбу или просто выйдите из системы и снова включите. Если не можете найти файл, это означает, что вы только что установили Fish и ни разу не запускали его. Просто запустите fish, и эта папка будет создана (файл может и не быть).
Это рыба, а не рыба.
http://fishshell.com/
Спасибо @emcmanus и @sstephenson.
По-видимому, в будущем синтаксис ^ будет устаревшим и в некоторых версиях не работает ( см. Эту проблему здесь ).
Поэтому лучше использовать следующий синтаксис: rbenv rehash >/dev/null >2&1
.
Поэтому лучше использовать следующий синтаксис: rbenv rehash> / dev / null> 2 & 1.
Там опечатка 2
и >
нужно поменять местами:
rbenv rehash >/dev/null 2>&1
Самый полезный комментарий
Похоже, с прокладками все в порядке, нужно доработать руководство по установке. Добавьте это в config.fish для поддержки rbenv: