3

Я должен установить переменную окружения под названием GDK_NATIVE_WINDOWS чтобы исправить проблему с кнопками Eclipse в Ubuntu. Чтобы установить переменную окружения, я добавил следующую строку в ~/.pam_environment .

GDK_NATIVE_WINDOWS DEFAULT = true

Удивительно, но переменная окружения не устанавливается, когда я echo $GDK_NATIVE_WINDOWS в терминале. Однако все остальные переменные окружения, которые я перечислил в ~/.pam_environment , установлены правильно. Кроме того, когда я переключаюсь на tty, например, Alt+Ctrl+F1 , переменная окружения устанавливается правильно. Может кто-нибудь сказать, что не так с установкой этой переменной среды в ~/.pam_environment?

5 ответов5

3

Придерживайтесь простого синтаксиса «ключ = значение» в файле ~/.pam_environment. Нет DEFAULT, OVERRIDE, $ {HOME}, нет ничего. Просто ключ = значение. Справочная страница, на которую вы ссылаетесь, предназначена только для pam_env.conf. Смотрите "man 8 pam_env", который больше ничего не обещает. "Этот модуль также может анализировать файл с простыми парами KEY = VAL в отдельных строках."

Между прочим, размещение что-то вроде PATH = $ {PATH}:more/paths в ./pam_environment является отличным способом прервать практически любую попытку входа в систему, поскольку PATH устанавливается в $ {PATH}:more/paths буквально (не сильно быть найденным там). Чтобы спасти, "/bin/mv .pam_environment out_of_the_way" и заново войдите в систему.

2

Как вы уже определили, ваши переменные среды должны быть установлены в ~/.pam_environment как рекомендовано на https://help.ubuntu.com/community/EnvironmentVariables. Проще сказать, чем сделать ;)

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

Моя ~/.pam_environment:

PATH            DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK        DEFAULT=${HOME}/Applications/jdk

Почему безобразный статический путь? ${PATH} не будет работать для меня. Я несколько раз пытался обойти свой логин, пытаясь обойти его, поэтому я придерживался уродливой статической копии значений по умолчанию :)

Обходной путь для зашифрованных домашних папок

В выпусках Ubuntu вплоть до Precise 12.04 Beta 2 включительно, если вы используете зашифрованный домашний каталог, вам нужно изменить /etc/pam.d/common-session чтобы он загрузил ~/.pam_environment . Это решение, очевидно, работает для более ранних выпусков, но я не проверял его.

Гюнтер Монтег (g-montag) написал 2010-08-19:

Это похоже на проблему с зашифрованными домашними каталогами. я добавил

требуется сеанс pam_env.so

в конце /etc/pam.d/common-session и теперь ~ /.pam_environment читается. В другой системе без зашифрованных домашних каталогов (также 10.04) обходной путь не требуется. Возможно, в моем случае система пытается прочитать ~ /.pam_environment, прежде чем она будет расшифрована.

1

Между GDK_NATIVE_WINDOWS и DEFAULT = true есть пробел. Это отличается от приведенного вами примера.

Пытаться:

GDK_NATIVE_WINDOWS = верно

0

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

-1

Похоже, это просто ошибка, что моя переменная окружения не установлена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .