Задний план
Я вхожу в 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)), без необходимости его перезапуска. С тех пор я закрыл тот и создал новый сеанс терминала, и все еще вижу сообщение, появляющееся при выполнении различных вышеупомянутых команд.
shell_session_update
является функцией Bash, установленной OS X в/etc/bashrc_Apple_Terminal
, так что, вероятно, что-то в командах Bash, которые запускает RVM, производит ее в качестве вывода.Ответы:
TL; DR: убедитесь, что RVM обновлен как минимум до 1.26.11, переустановив или выполнив команду
rvm get head
, и инициализируется только один раз для среды терминала.Результат
В конце концов я смог исправить свое окружение. Я опубликую некоторую информацию, относящуюся к моей конкретной проблеме, чтобы помочь некоторым, даже если у других может быть тот же симптом, но другая основная причина.
причина
Одна часть основной проблемы исходила от RVM и от того, как она инициализировалась для моей среды командной строки. Я нашел несколько разных способов сделать это, тем более что один дополнительный метод был специально разработан для
fish
среды оболочки.Кажется, основной причиной было либо:
fish
, смешивали инициализацию для одной терминальной среды и выполнялись в другой терминальной средеbash
, или наоборот. Это можно увидеть в моих подробностях ниже, где сломанныйbash
PATH имеет некоторые пути, разделенные символом:
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
файле, упомянутом Zanchey (кроме файлов истории). и тому подобное). Я также не уверен, почему это выполнялось, потому что я использовал iTerm (2), а значение$TERM_PROGRAM
в этом случае естьiTerm.app
и нетApple_Terminal
.Также не помогло то, что мне по какой-то причине пришлось управлять установкой RVM более одного раза, проходя процесс установки, который, очевидно, уже добавляет конфигурацию к нескольким «точечным файлам», где я также вручную добавил некоторые или строки ,
Наряду с этим я создал
.bashrc
файл и связался с ним.bash_profile
на моем Mac, поскольку он, по-видимому, не существует по умолчанию. Ранее я читал о системе Linux, которая, по соглашению,.bash_profile
хороша для некоторых настроек и.bashrc
хороша для других, таких как определение псевдонимов и функций пользователя, или наоборот. Поэтому я не привык заглядывать в.bash_profile
файл, особенно в.profile
файл, в каталог пользователя, который также копирует аналогичная система. Давайте также не будем забывать, чтоpath_helper
есть в миксе (!), Но, похоже, никаких проблем не возникло .Возможные способы настройки среды, которые могут быть правильными или нет, следующие:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin"
(как последняя строка, которая изменяетPATH
переменную непосредственно перед передачей управления пользователю.rvm default
(Также должна быть последняяPATH
изменяющая строка. From: StackOverflow - Получение «Предупреждение! PATH неправильно настроен» при использовании rvm use 2.0.0 --default )Подробнее
Для более невероятного многословия, вот несколько примеров путей, которые я нашел в разных средах при отладке проблемы:
Оригинальная (сломанная) рыба PATH
«Естественно» лучше рыбы ПУТЬ
Оригинальный (сломанный) Баш ПУТЬ
«Вручную» Исправлена ошибка PATH
«Естественно» лучше Баш ПУТЬ
Заметки:
.bashrc
и т. Д., А затем в конечном итоге запустил их после того, как проблема была решена.источник
rvm get head
а потомrvm reinstall {version}
для каждой версии заканчивалось исправление для меняcurl -sSL https://get.rvm.io | bash -s head --ruby
<rvm sourcing line>
в мой конец.bash_profile
. Исправлена.У меня тоже была такая же проблема. Позже я обнаружил, что в репозитории rvm уже есть проблема. И они исправили это в одном из запросов на удаление.
Чтобы это исправить, либо обновите rvm до последней версии, либо укажите текущую версию разработки.
Для более подробной информации обратитесь к этому посту .
источник