Я пытаюсь интегрировать RVM с терминалом gnome .
По умолчанию gnome-терминал не запускает bash в качестве оболочки для входа. Я включил run command as a login shell
, как предлагалось в , в этом ответе о той же теме, посвященной настройке RVM, но когда я делаю это, файл .bashrc
не читается.
Например, я создаю переменную окружения в .bashrc
, а затем, когда я запускаю новый терминал gnome, я не могу прочитать его. Мне нужно явно запустить source .bashrc
, чтобы прочитать файл.
Это ожидаемое поведение?
Да, это - ожидаемое поведение.
Поведение, короче говоря, следующие:
~/.profile
~/.bashrc
Прочитайте руководство удара о файлах запуска для получения дополнительной информации.
Лично, я думаю, что это поведение является странным, и я еще не нашел рационализацию для этого проектного решения.
Некоторое объяснение терминологии:
Большинство оболочек, которые Вы видите, является интерактивными оболочками невхода в систему. Это особенно верно при выполнении графической среды как гном потому что затем гном является "оболочкой входа в систему". Любая сессия удара запустилась, внутренний гном является оболочкой невхода в систему. Если Вы хотите видеть, что реальная интерактивная оболочка входа в систему затем переходит к виртуальной консоли (использование Ctrl+Alt+F1
) и затем войдите в систему с помощью имени пользователя и пароля. Это - реальная интерактивная оболочка удара входа в систему. Можно вернуться к графическому использованию оболочки Ctrl+Alt+F7
.
Существует опция --login
который заставит удар вести себя, как будто это - оболочка входа в систему, даже если запущенный после Вашего вошли в систему. Конфигурирование терминала гнома для запуска удара как оболочки входа в систему означает, что запустит удар с помощью --login
опция.
Обычно Вы хотите, чтобы удар всегда читал ~/.bashrc
в интерактивной оболочке. Вот то, как я рекомендую сделать это:
Создайте a ~/.bash_profile
файл. Если удар будет запущен как оболочка входа в систему, то он будет сначала искать ~/.bash_profile
перед поиском ~/.profile
. Если удар находит ~/.bash_profile
затем это не будет читать ~/.profile
.
Вставьте следующие строки ~/.bash_profile
:
[ -f "$HOME/.profile" ] && source "$HOME/.profile"
[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"
Теперь, если удар будет запущен как интерактивная оболочка входа в систему, то он считает следующие файлы:
~/.bash_profile
~/.profile
~/.bashrc
и если удар запускается как интерактивная оболочка невхода в систему:
~/.bashrc
Необходимо поместить материал, который является ударом, конкретным в ~/.bashrc
и материал, который не является ударом, конкретным в ~/.profile
. Например, PATH
входит ~/.profile
и HISTCONTROL
входит ~/.bashrc
.
Отметьте это ~/.profile
не конкретный удар. Другие основанные на тексте оболочки (например, sh или ksh) и графические оболочки (гном) также чтение ~/.profile
. Именно поэтому Вы не должны помещать, избивают определенный материал ~/.profile
.
Это ни плохое проектное решение, ни ошибка, ни ожидаемое поведение оболочек и терминалов
, Это - просто неудачное значение по умолчанию параметра конфигурации на профиль в Терминале Gnome, который можно легко починить.
Переходят в Редактирование -> Предпочтения Профиля .
Выбор вкладка Title и Command .
Уведомление, как Команда выполнения как оболочка входа в систему флажок неконтролируем! Проверьте его.
Вот именно. Если Вы делаете это к эти Default
, профиль, или к любому профилю настроен, чтобы использоваться при создании новых терминалов, Вы получаете оболочку входа в систему.
я предполагаю, что под капотом, эта опция, вероятно, заставляет это передавать -l
опция к оболочке.
Это характерно для при использовании удара для размещения инициализации профиля в .bash_profile
, который только для чтения ударом на входе в систему, тогда как другие оболочки исторически совместно использовали .profile
. Это позволяет Вам помещать определенные для удара команды в .bash_profile
.
Использование следующего обычно делается для получения по запросу в псевдонимах, которые определяются в .bashrc
:
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Я имел тот же вопрос и нашел решение: Просто используйте SSH для реальной оболочки входа в систему!
1. Как суперпользователь, создайте преданного rvm пользователя системы для полной изоляции и присвойте пароль:
sudo su
useradd -m rvmuser
passwd rvmuser
2. Зависимости от установки так, чтобы rvm мог создать рубины, не прося пароль суперпользователя:
apt-get install curl gawk libreadline6-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 autoconf libgdbm-dev libncurses5-dev automake bison libffi-dev
3. SSH в localhost для реальной оболочки входа в систему (Вы можете иметь к apt-get install ssh
)
ssh rvmuser@localhost
4. Установка rvm
\curl -sSL https://get.rvm.io | bash -s stable
5. Выйдите из системы и въезжайте задним ходом снова так, чтобы все функции rvm были загружены
exit
ssh rvmuser@localhost
6. Используйте rvm :)