/ etc / профиль не получен

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

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

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

45
задан 3 May 2013 в 18:03

6 ответов

По умолчанию gnome-терминал не запускает bash в качестве оболочки входа в систему (я предполагаю, что вы имеете в виду, что bash запущен внутри gnome-терминала). Это означает, что bash не будет читать /etc/profile или ~/.profile. Как вы правильно заметили, bash будет читать эти файлы, если запущен как оболочка входа в систему.

Быстрое решение вашей проблемы - настроить gnome-терминал для запуска bash в качестве оболочки входа в систему, чтобы он читал /etc/profile. Для этого вы должны включить «Выполнить команду как оболочку входа» в терминале gnome «Настройки профиля», доступном из меню «Правка».

Я не рекомендую делать это, потому что это портит различие между ~/.profile и ~/.bashrc. В идеале ~/.profile должен делать вещи, которые требуются только один раз, во время входа в систему, тогда как ~/.bashrc должен делать вещи, которые требуются при каждом запуске bash.

В суперпользователе есть вопрос и ответ , говорящий о разнице между bashrc и профилем . Читайте там для получения дополнительной информации.

Из вашего описания проблемы кажется, что скрипт rvm необходимо загрузить только один раз, во время входа в систему. Насколько я знаю, Ubuntu настроил графический вход в систему для чтения /etc/profile/ и ~/.profile. Это означает, что после выхода и однократного входа скрипт rvm должен быть активным. Если это все еще не работает, то, возможно, скрипт rvm должен быть загружен для каждого сеанса bash. Если это так, то bashrc является более подходящим местом для сценария.

0
ответ дан 3 May 2013 в 18:03

Для установки RVM в качестве многопользовательского режима пользователь должен выполнить следующую команду:

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

echo '[[ -s "/etc/profile.d/rvm.sh" ]] && . "/etc/profile.d/rvm.sh" # Load RVM function' >> ~/.bashrc
0
ответ дан 3 May 2013 в 18:03

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

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

0
ответ дан 3 May 2013 в 18:03

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

0
ответ дан 3 May 2013 в 18:03

echo ".profile" >> ~ / .bashrc

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

0
ответ дан 3 May 2013 в 18:03

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

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

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

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

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

Теперь легкая часть однажды во "вторичном" терминале или проблеме SSH: (Да, это уничтожит Вашу текущую сессию, будет уверено, что Вы не возражаете, сохраняете любые открытые документы или работу),

sudo service lightdm restart

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

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

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

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

0
ответ дан 3 May 2013 в 18:03

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

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