/ etc / profile не используется

Для 11.04 я сделал новую установку своей системы. Часть этой установки заключалась в установке rvm, который прикрепляет rvm.sh в /etc/profile.d/. Это не работает, так как /etc/profile (который загружает каждый + r в /etc/profile.d/*.sh) не загружается. Согласно документации, профиль используется только в том случае, если bash запускается при входе в систему. Чтобы проверить это, я вызвал bash --login, после чего rvm был доступен.

Это работало для меня в предыдущих версиях Ubuntu без какой-либо конфигурации. То есть, новая установка 10.10 будет корректно иметь исходный профиль / .d.

. Мой вопрос: есть ли что-то, что я делаю неправильно, или есть какие-то новые предположения, сделанные в Natty, которые нарушили это ? Мое текущее обходное решение - source /etc/profile в ~/.bashrc (что ужасно, поскольку профиль предназначен для загрузки перед bashrc, но делает трюк).

1
задан 3 May 2013 в 19:03

5 ответов

Существует, однако, файл /etc/bash.bashrc, который читается gnome-terminal и является «общесистемным .bashrc-файлом для интерактивных оболочек bash (1)».

Мой звонок к функции rvm, [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm", пошел туда и отлично работает для пары пользователей в этой системе.

5
ответ дан 25 May 2018 в 21:27
  • 1
    gnome-terminal ничего не делает. gnome-terminal запускает bash (или независимо от того, установлен ли ваша оболочка входа в базу данных passwd) в интерактивном режиме, и bash начал интерактивно читать /etc/bash.bashrc. Ну, по крайней мере, на Debian / Ubuntu. Обычно Bash не читает системную систему bashrc; debian исправил это, чтобы сделать это. – geirha 14 March 2012 в 02:24
  • 2
    @geirha: dmitri @ Eos: ~ $ uname -a Linux Eos 3.0.0-16-generic # 29-Ubuntu SMP Вт Фев 14 12:48:51 UTC 2012 x86_64 x86_64 x86_64 GNU / Linux dmitri @ Eos: ~ $ cat / etc / bash.bashrc # Общесистемный файл .bashrc для интерактивных оболочек bash (1). # Чтобы включить настройки / команды в этом файле для систем входа в систему, # этот файл должен быть найден в файле / etc / profile. # Если вы не работаете в интерактивном режиме, ничего не делайте [-z " $ PS1 " ] & amp; & amp; вернуть ..... – Dmitri 14 March 2012 в 21:56
  • 3
    Да, очевидно, gnome-terminal вызывает bash для чтения этого файла: если ваша оболочка ksh, то gnome-terminal не будет читать этот файл, не так ли? Могу ли я предложить искать слово «педант»? в словаре, прежде чем продолжать использовать провокационные фразы типа «ничего не делает». – Dmitri 14 March 2012 в 22:05

Установка RVM в качестве многопользовательского требует, чтобы пользователь выполнил эту команду:

(поскольку Ubuntu не запускает /etc/profile.d при входе в систему)

echo '[[ -s "/etc/profile.d/rvm.sh" ]] && . "/etc/profile.d/rvm.sh" # Load RVM function' >> ~/.bashrc
4
ответ дан 25 May 2018 в 21:27
  • 1
    Ubuntu создает исходные файлы в /etc/profile.d/ во время входа в систему, потому что по умолчанию /etc/profile перебирает и источники, файлы в /etc/profile.d/. Однако, если этот rvm.sh содержит код для интерактивных оболочек, таких как функции или псевдонимы, наличие источников, полученных с помощью /etc/profile, бессмысленно. Настройка для интерактивных сессий bash должна быть в .bashrc. – geirha 14 March 2012 в 02:28

, если у вас есть ZSH или OH-MY-ZSH, ваш профиль / etc / zprofile

0
ответ дан 25 May 2018 в 21:27

Я действительно нашел для тех, кто не любит полностью перезапускать свои боксы, если не требуется абсолютно ...

Вам не нужно перезапускать всю машину, чтобы иметь изменения в /etc/profile вступают в силу. Все, что вам нужно, это перезапустить перезапуск XWindows Desktop GUI, чтобы он перечитывал конфигурацию (как если бы он был запущен как часть системного перезапуска).

Для меня я использую xUbuntu, который использует LightDM, но вы можете использовать любой исполняемый файл для вашего текущего рабочего стола.

Во-первых, вы не можете использовать эмулятор терминала из самого GUI рабочего стола, чтобы сделать это (по крайней мере, не с LightDM), вам нужно либо используйте SSH или дополнительную консоль (если вы удерживаете Ctrl + Alt и нажимаете клавишу F или номер ключа, вы должны уйти от своего графического входа или экрана в обычное окно терминала). Я также предлагаю вам закрыть любой удаленный рабочий стол, например VNC, если вы используете SSH (очевидно, SSH может быть подключен, вы просто не хотите, чтобы открытое окно VNC отображалось на дисплее 0, когда оно пытается перезагрузить, так как это может повесить перезапуск, а он ждет вас, чтобы завершить сеанс VNC).

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

Теперь простую часть раз в «вторичном» терминале или SSH-проблеме: Я делаю это все время с SSH, и это большой спасатель, особенно когда вы не физически с помощью вашей машины и не ожидайте полного перезапуска и повторного подключения: -D

sudo service lightdm restart

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

Вот и все, теперь, когда вы возвращаетесь на любую консоль 0, или вы идете использовать VNC чтобы снова подключиться, вас встретит приглашение для входа в систему и войдет в систему как обычно, и если вы откроете эмулятор терминала и перейдете к выпуску своей команды, теперь у вас не будет проблем, поскольку все было повторно отправлено так же, как если бы вы полностью перезапустили компьютер.

Просто помните, что если вы выдаете sudo service lightdm restart [или stop, start, независимо] из самой среды рабочего стола, используя эмулятор терминала, команда будет просто висеть там, и ничто не будет выглядеть происходит. Это связано с тем, что в настоящее время вы используете эту консоль (ака дисплей) 0, и поэтому она не может полностью опуститься и вернуться обратно, поскольку она ждет, пока рабочий стол не будет использоваться до запуска этой команды.

[d11 ] Последнее примечание: я не пытался перезапускать среду с рабочего стола в эмуляторе терминала, а затем переключиться на другую консоль, которая может ее перезапустить, но если вы уже собираетесь переключать консоль, то почему бы просто не запустить отсюда, как и должно быть?

0
ответ дан 25 May 2018 в 21:27

echo ".profile" >> ~ / .bashrc

И затем откройте другое окно. Я думаю, что это простой подход.

-3
ответ дан 25 May 2018 в 21:27
  • 1
    Поскольку по умолчанию .profile sources .bashrc, это приведет к циклу для большинства пользователей. – muru 16 November 2014 в 12:20

Другие вопросы по тегам:

Похожие вопросы: