В течение 11.04 я сделал новую установку моей системы. Часть этой установки должна была установить rvm , который вставляет rvm.sh
в /etc/profile.d/
. Это не работает, поскольку /etc/profile
(который загружает каждый + r в /etc/profile.d/*.sh
) не загружается. Согласно документации, профиль создается только при запуске bash при входе в систему. Чтобы убедиться в этом, я вызвал bash --login
, после чего rvm
стало доступно.
Это работало для меня в предыдущих версиях Ubuntu без какой-либо конфигурации. То есть при новой установке 10.10 будет правильно создан профиль / .d.
Мой вопрос: есть ли что-то, что я делаю неправильно, или есть какие-то новые предположения, сделанные в Нетти, которые нарушили это? Мой текущий обходной путь - source /etc/profile
in ~/.bashrc
(что ужасно, так как профиль предназначен для загрузки до bashrc, но делает свое дело).
/etc/profile
(и, следовательно, .d). Спасибо за объяснение - кажется, что это требует продолжения с народом rvm./etc/profile
и~/.profile
во время входа в систему. Это странно, потому что это всегда работало со старыми версиями. Я думаю, что это не решение, а обходной путь.Однако существует файл,
/etc/bash.bashrc
который читается gnome-терминал и является «общесистемным файлом .bashrc для интерактивных оболочек bash (1)».Мой вызов функции rvm
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"
, пошел туда, и прекрасно работает для пары пользователей в этой системе.источник
/etc/bash.bashrc
. Ну, по крайней мере, на Debian / Ubuntu. Bash обычно не читает общесистемный bashrc; Debian исправил это, чтобы сделать это.Установка RVM как многопользовательского требует от пользователя выполнения этой команды:
(потому что Ubuntu не использует /etc/profile.d при входе в систему)
источник
/etc/profile.d/
время входа в систему, потому что по умолчанию выполняется/etc/profile
циклический просмотр и источники файлов/etc/profile.d/
. Однако, если онrvm.sh
содержит код для интерактивных оболочек, таких как функции или псевдонимы, их получение/etc/profile
бессмысленно. Настройка для интерактивных сеансов Bash должна быть в.bashrc
.если у вас есть ZSH или OH-MY-ZSH, ваш профиль будет / etc / zprofile
источник
Я действительно нашел для тех, кто не любит полностью перезагружать свои коробки, если это абсолютно необходимо следующее ...
Вам не нужно перезагружать всю машину, чтобы изменения
/etc/profile
вступили в силу. Все, что вам нужно, это перезапустить графический интерфейс XWindows Desktop, чтобы он перечитывал настройки (как если бы он запускался как часть общесистемного перезапуска).Для меня я использую xUbuntu, который использует LightDM, но вы можете использовать любой исполняемый файл, который называется вашим текущим рабочим столом.
Во-первых, вы не можете использовать эмулятор терминала из самого графического интерфейса рабочего стола, чтобы сделать это (по крайней мере, с LightDM), вам нужно использовать SSH или дополнительную консоль (если вы удерживаете Ctrl + Alt и нажимаете клавишу F или цифровую клавишу Вы должны отойти от вашего графического рабочего стола или экрана в обычное окно терминала). Я также предлагаю вам закрыть все удаленные рабочие столы, такие как VNC, если вы используете SSH (очевидно, SSH может быть подключен, вы просто не хотите, чтобы открытое окно VNC опрашивало отображение 0, когда оно пытается перезапуститься, поскольку это может привести к зависанию перезапуска, пока он ждет, когда вы прекратите сеанс VNC).
Я делаю это все время с SSH, и это очень спасает жизнь, особенно когда вы физически не находитесь на своей машине и не хотите ждать полного перезапуска и повторного подключения :-D
Теперь легко разобраться во «вторичном» терминале или проблеме SSH: (Да, это убьет ваш текущий сеанс, убедитесь, что вы не возражаете, сохраните все открытые документы или работу)
подождите минуту, так как он убивает рабочий стол, а затем запускает его снова (это может занять несколько хороших секунд, поскольку все останавливается, а затем выполняется снова при запуске)
Вот и все, теперь, когда вы возвращаетесь к любой из консолей 0 или переходите к использованию VNC для повторного подключения, вас приветствует приглашение для входа в систему и вход в систему в обычном режиме, и если вы откроете эмулятор терминала и перейдете к выполнению команды, вы должны сделать это сейчас. У меня нет проблем, так как все ресурсы были получены так же, как если бы вы сделали полный перезапуск машины.
Просто помните, что если вы выполняете
sudo service lightdm restart
[илиstop
,start
что угодно] из самой среды рабочего стола, используя эмулятор терминала, команда просто зависнет там, и, похоже, ничего не происходит. Это связано с тем, что в данный момент вы используете эту консоль (он же дисплей) 0, и поэтому она не может полностью выключиться и вернуться обратно, поскольку ожидает, пока рабочий стол не будет использоваться, прежде чем он выполнит команду.Последнее примечание: я не пытался выполнить перезапуск среды из рабочего стола в эмуляторе терминала, а затем переключиться на другую консоль, которая может затем перезапустить ее, но если вы уже собираетесь переключать консоль, то почему бы просто не выполнить команду оттуда как и должно быть в любом случае?
источник
echo ". .profile" >> ~ / .bashrc
А затем откройте другое окно. Я думаю, что это легкий подход.
источник
.profile
источники по умолчанию.bashrc
, это приведет к циклу для большинства пользователей.