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.