Запустив Ubuntu 13.04, я пытаюсь добавить переменные в PATH
для сеанса, который рекомендуется делать внутри .pam_environment
, но, похоже, ничего не работает. Вот как это выглядит:
JAVA_HOME DEFAULT=/usr/lib/jvm/java-7-oracle
IDEA_HOME DEFAULT=/usr/local/idea-IU-129.451/bin
LIGHTTABLE_HOME DEFAULT=/usr/local/LightTable
CLOUDIFY_HOME DEFAULT=/home/eliranm/builds/gigaspaces-cloudify
PATH DEFAULT=${PATH} OVERRIDE=${PATH}:${JAVA_HOME}:${IDEA_HOME}:${LIGHTTABLE_HOME}:${CLOUDIFY_HOME}
Кажется, что все переменные установлены, кроме PATH
, или что он каким-то образом переопределен. Я пытался добавить или добавить переменную ${PATH}
, чтобы использовать только DEFAULT
, только OVERRIDE
, пытался просто указать жестко закодированный путь в качестве значения, но все безрезультатно.
Я следую рекомендациям сообщества помощи Ubuntu и хочу избежать конкатенации жестко запрограммированных путей к PATH
внутри /etc/environment
, так как это неправильная область действия, плюс, его будет сложно поддерживать с помощью без переменных.
Другие могут быть затронуты этой проблемой, , как указано здесь , но пока никто не дал решения.
Как заставить это работать?
Я думаю, что использование переменной $PATH
внутри области видимости /etc/environment
или ~/.pam_environment
не разрешается, а присваивается точно так же, как и буквально.
На самом деле я вижу, что использование $PATH
или любой переменной внутри ~/.pam_environment
не рекомендуется в большинстве постов, которые я читаю, как здесь: Почему моя переменная среды не устанавливается .
Так что я действительно не знаю, почему здесь ( переменные среды всего сеанса ) они говорят использовать $PATH
в нем.
Я знаю, что Debian удалил разбор локального ~/.pam_environment
, так как это представляет большой риск для безопасности.
В любом случае, для моего понимания два файла /etc/environment
и ~/.pam_environment
используют более простой синтаксис (простые пары KEY=VAL
для каждой строки), чем /etc/security/pam_env.conf
(VARIABLE [DEFAULT=[value]] [OVERRIDE=[value]]
). Так что, возможно, внутри них вообще нельзя сделать ссылку на переменную.
Я тоже сталкивался с этим, потому что пытался сделать так, как сказано в документации (я традиционно использую системы на базе Redhat).
Я думаю, что использование $ {PATH} работает, только если ваш путь был изначально задан в файле /etc/security/pam_env.conf. Мне кажется, что исходный путь указан в /etc/login.defs, а затем недоступен.
Я вернулся к установке значений в ~ / .profile, я потратил слишком много времени на отладку этой, казалось бы, простой вещи. Это заставляет меня задуматься о том, что делают другие пользователи Ubuntu, мы не можем быть первыми, кто хотел добавить к переменной path. Я предполагаю, что они сделали то же самое и проигнорировали ~ / .pam_environment.