Sourcing rvm из моего Ubuntu .profile работает только вручную, но не при входе в систему. - PullRequest
8 голосов
/ 23 октября 2010

У меня проблемы с получением исходного кода Ruby Version Manager из моего Ubuntu 10.04 .profile. Код:

[[ -s "$HOME/.rvm/scripts/rvm" ] && . "$HOME/.rvm/scripts/rvm"

... никогда не делает то, что я от него ожидаю (т.е. выдает мне программу rvm, когда я открываю новую оболочку или начинаю новый сеанс); но если я выполню

source .profile

в новой оболочке после входа в систему, она работает! Почему это будет работать, когда я получаю его вручную, но не автоматически при входе в систему?

Ответы [ 4 ]

6 голосов
/ 17 января 2011

Может показаться, что Ubuntu обрабатывает свои сценарии входа в систему иначе, чем большинство других дистрибутивов Linux

http://ubuntuforums.org/showpost.php?p=9127226&postcount=6

В приведенном выше посте есть подсказки, что входы GDM в Ubuntu не обрабатывают .bash_profile или .profile, как это делают большинство других дистрибутивов Linux. Мне пришлось поместить RVM загрузки линии в ~ / .bashrc, и это еще не вызвало никаких проблем.

3 голосов
/ 29 апреля 2011

Sourcing $ HOME / .rvm предполагает, что вы установили RVM для одного пользователя, особенно для пользователя, домашний каталог которого - $ HOME. Вероятно, в вашей системе Ubuntu RVM установлен во всей системе, и, следовательно, вы должны использовать сценарии RVM как таковые:

В вашем файле .bashrc добавьте:

\# Set rvm path

[[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm"

до этой строки; эта строка выйдет и не выполнит ничего после нее, что хорошо для интерактивных входов в систему, но может возникнуть проблема, если вы используете неинтерактивные входы SSH для целей автоматизации.

\# If not running interactively, don't do anything

[ -z "$PS1" ] && return
0 голосов
/ 28 августа 2016

У меня была проблема с тем, что редактор Atom не воспринимает среду RVM и, следовательно, не находит команду rubocop в Ubuntu 16.04.Но проблемы не было, когда я запустил Atom из терминала gnome.Я обнаружил, что RVM-скрипт ~/.rvm/scripts/rvm, который вы должны загружать в свой .profile, в начале имеет следующие строки:

if
  builtin test -n "${BASH_VERSION:-}" -o -n "${ZSH_VERSION:-}" -o -n "${KSH_VERSION:-}"
then
  ...
else
  return 0
fi

Странно, но при выполнении при входе в систему ямы обнаружили, что $BASH_VERSION пусто (в то время как в терминале gnome это что-то вроде 4.3.46(1)-release), поэтому сценарий вернется рано, оставив RVM не загруженным должным образом.Я пытался установить BASH_VERSION на что угодно, и все работало нормально.

Вот полный код моего .profile, который загружает RVM:

local rvm_home="${HOME}/.rvm"
export PATH="$PATH:${rvm_home}/bin"
if [ -z "$BASH_VERSION" ]; then
    export BASH_VERSION=4
fi
source "${rvm_home}/scripts/rvm"
0 голосов
/ 24 октября 2010

На странице установки RVM есть ряд вещей, которые нужно проверить, чтобы проверить инициализацию RVM. Прочитайте раздел «Устранение неполадок при установке» в конце страницы установки RVM .

Кроме того, вот описание того, как Bash считывает свои файлы запуска , которые могут помочь с такой проблемой.

...