24

Фон

Я вхожу в Ruby 2.x и Rails 4.x на MacBook с OS X El Capitan (10.11.3), используя оболочку fish, используя интеграцию, указанную на этой странице: RVM - Fish Shell (интеграция)

проблема

При выполнении различных команд, таких как rvm version rvm install ... , rvm use ... , rvm --default ... и т.д., Я получаю следующее сообщение об ошибке:

/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found

Быстрый поиск в Google не возвращает никаких связанных результатов, которые могли бы помочь мне определить и / или устранить проблему, как это помогло решить многие другие мои проблемы с настройкой разработки.

Я выполнил быстрый текстовый поиск в файле функций rvm.fish , в каталоге .config/fish , а также в главном исполняемом файле $HOME/.rvm/bin/rvm , и не увидел, чтобы такая команда, как shell_session_update напрямую. в этом файле.

Вопрос

Кто-нибудь знает, почему это происходит, и как я могу это исправить? Я - человек, который любит исправлять вещи передо мной, так что передо мной появляются только те вещи, над которыми нужно действовать, поэтому я хотел бы удалить это сообщение об ошибке / предупреждение. :)

PS Конкретная версия Ruby (2.0.0), которую я пытался установить и использовать, похоже, работает должным образом, даже в том же сеансе терминала (iTerm (2)), без необходимости его перезапуска. С тех пор я закрыл тот и создал новый сеанс терминала, и все еще вижу сообщение, появляющееся при выполнении различных вышеупомянутых команд.

2 ответа2

40

TL; DR: убедитесь, что RVM обновлен по крайней мере до 1.26.11, переустановив или выполнив команду rvm get head , и инициализируется только один раз для среды терминала.

Результат

В конце концов я смог исправить свое окружение. Я опубликую некоторую информацию, относящуюся к моей конкретной проблеме, чтобы помочь некоторым, даже если у других может быть тот же симптом, но другая основная причина.

причина

Одна часть основной проблемы исходила от RVM и от того, как она инициализировалась для моей среды командной строки. Я нашел несколько разных способов сделать это, тем более что один дополнительный метод был специально разработан для среды обитания fish раковин.

Кажется, основной причиной было либо:

  • инициализировать RVM более одного раза, потому что у меня было несколько операторов, по одному на файл конфигурации терминала, и из-за того, как они были связаны, я не знал о других, которые были автоматически добавлены.
  • Или, так или иначе, были добавлены операторы, которые смешивали инициализацию для одной терминальной среды, скажем, fish , и выполнялись в моей другой терминальной среде, bash или наоборот. Это можно увидеть в моих подробностях ниже, где в PATH для разбитого bash есть некоторые пути, разделенные : s, но затем другие также включаются пробелами, что является неверным синтаксисом для bash , но правильным для fish .
  • Или оба происходили!

Тогда другая часть корневой проблемы заключалась в том, что, похоже, недавно появилась ошибка, связанная с RVM/direnv, в отношении функции trap. Я, вероятно, столкнулся с этим снова, имея один из других проблемных выпусков RVM, который мог быть вызван:

  • Переустановка : curl -sSL https://get.rvm.io | bash
  • Обновление вручную: rvm get head
  • Автоматическое обновление (которое я только что сделал) путем добавления rvm_autoupdate_flag=2 в ~/.rvmrc

Эта проблема должна быть исправлена по состоянию на 30 марта 2016 г. или выпуск 1.26.11:

История

После борьбы с утилитами GNU для полного поиска файловой системы, просмотра содержимого файла, я использовал Atom, чтобы добиться большего успеха, и обнаружил, что единственное вхождение shell_session_update было найдено в /etc/bashrc_Apple_Terminal упомянутом Занчей (помимо файлов истории и тому подобного). Я также не уверен, почему это выполнялось, потому что я использовал iTerm (2), и в этом случае значение $TERM_PROGRAM - это iTerm.app а не Apple_Terminal .

Также не помогло то, что мне, по какой-то причине, пришлось управлять установкой RVM более одного раза, проходя процесс установки, который, по-видимому, уже добавляет конфигурацию к нескольким «точечным файлам», где я также вручную добавил некоторые или строки ,

Наряду с этим я создал файл .bashrc и связался с ним из .bash_profile на моем Mac, поскольку он, по-видимому, по умолчанию не существует. Ранее я читал в системе Linux, что, по соглашению, .bash_profile подходит для некоторых настроек, а .bashrc - для других, таких как определение псевдонимов и функций пользователя или наоборот. Поэтому я не привык заглядывать в файл .bash_profile , особенно в файл .profile , в каталог пользователя, который также копирует аналогичная система. Давайте также не будем забывать, что path_helper находится в миксе (!), Но, похоже, не способствует возникновению каких-либо проблем.

Возможные способы настройки среды, которые могут быть правильными или нет, следующие:

Подробнее

Для большей невероятности, вот несколько примеров путей, которые я нашел в разных средах при отладке проблемы:

Оригинальная (сломанная) рыба PATH

/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin /Users/username/.rvm/rubies/ruby-2.0.0-p648 /bin /Users/username/.rvm/bin /usr /local /bin /usr /bin /bin /usr /sbin /sbin /usr /local /munki /Users/username/.rvm/ бункер

«Естественно» лучше рыбы ПУТЬ

/usr/local/opt/coreutils/libexec/gnubin /usr/local/opt/findutils /bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /usr/local/munki

Оригинальный (сломанный) Баш ПУТЬ

/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin /Users /username/.rvm/rubies/ruby-2.0.0-p648/bin /Users/username/.rvm/bin /usr /local /bin /usr /bin /bin /usr /sbin /sbin /usr /local /munki:/Users/username/.rvm/bin

«Вручную» Исправлена ошибка PATH

/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin:/Users/username/.rvm/rubies/ruby-2.0.0-p648/bin:/Users/username/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/munki:/Users/username/.rvm/bin:/Users/username/.rvm/bin

«Естественно» лучше Баш Путь

/ USR / местные / Opt / Coreutils / libexec / gnubin:/ USR / местные / Opt / Findutils / бен:/ USR / местные / Opt / Coreutils / libexec / gnubin:/ USR / местные / Opt / Findutils / бен:/ USR / местные / бен:/ USR / бен:/ бен:/ USR / SBIN:/ SBIN:/ USR / местные / munki

Заметки:

  • «Оригинал» был от запуска новой среды в любом интерпретаторе командной строки при наличии проблемы.
  • «Руководство» - это, конечно, когда я взял неправильную строку пути, исправил синтаксические ошибки и увидел более правильную работу интерпретатора, поэтому я знал, чего ожидать, продолжая устранять основную причину.
  • «Естественные» были с тех пор, когда я впервые пропустил загрузку файлов конфигурации среды терминала, таких как .bashrc и т.д., А затем в конечном итоге запустил их после того, как проблема была решена.
6

У меня тоже была такая же проблема. Позже я обнаружил, что в репозитории rvm уже есть проблема. И они исправили это в одном из запросов на удаление.

Чтобы это исправить, либо обновите rvm до последней версии, либо укажите текущую версию разработки.

rvm get head

Для более подробной информации обратитесь к этому посту.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .