PATH не зависит от.pam_environment
Запускаю 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 поскольку это не правильная область, плюс, будет трудно поддерживать без переменных.
Как указано здесь, другие могут затронуть эту проблему, но пока никто не предоставил решения.
Как заставить это работать?
2 ответа
Я думаю, что с помощью $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.