Я определил несколько переменных среды в / etc / environment, но процесс (сборка, запущенная TeamCity) не может видеть их значения. Я не знаю, что я делаю здесь неправильно ... это содержимое моего файла / etc / environment:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
CATALINA_BASE="/var/lib/tomcat7"
CATALINA_HOME="/usr/share/tomcat7"
ACTIVEMQ_HOME="var/lib/activemq"
ACTIVEMQ_BASE="var/lib/activemq"
ACTIVEMQ_CONF="var/lib/activemq/conf"
ACTIVEMQ_DATA="var/lib/activemq/data"
ACTIVEMQ_OPTS_MEMORY="-Xms128m -Xmx192m"
M2_HOME="/usr/share/maven3"
MAVEN_HOME="/usr/share/maven3"
JAVA_HOME="/usr/lib/jvm/java-8-oracle"
Сборка, запущенная TeamCity, использует бегун Maven, и который в какой-то момент пинает сборку муравья. Поскольку сборка не удалась, я использовал Ant для печати всех переменных среды в системе:
<!-- Provides all environment variables as Ant properties prefixed by "env.".
For example, CLASSPATH would be accessible in Ant as ${env.CLASSPATH} -->
<property environment="env"/>
<echo>List of all Environment Variables found in the system:</echo>
<echoproperties>
<propertyset>
<propertyref prefix="env."/>
</propertyset>
</echoproperties>
Конечно, те, которые я установил в / etc / environment, не отображаются.
Агент сборки, работающий с этим, запускается с помощью приложения запуска Ubuntu, где я настроил его для запуска команды:
sudo -H -u administrator /bin/bash --login -c "~administrator/BuildAgent/bin/agent.sh start"
Может ли быть, что эта строка запускается до установки / etc / environment?
Если я сделаю echo $CATALINA_HOME
, я увижу, что значение установлено правильно, но сборка по какой-то причине не видит его ...
ПРИМЕЧАНИЕ : Хотя я знаю, что это неправильный способ, я также попытался добавить export
к объявлениям внутри /etc/environment
, но безуспешно. Затем я удалил его.
ПРИМЕЧАНИЕ 2 : Конечно, я перезагрузил компьютер после внесения изменений в файл / etc / environment.
Я работаю на сервере 14.04 LTS с минимально установленным рабочим столом (ubuntu-desktop --no - install-рекомендует) и несколькими дополнительными функциями.
Любая помощь приветствуется, спасибо!
Читайте тщательно страница справочника раздел командной среды sudoers .
попытка-i опция: если -i опция sudo (начальный вход в систему) будет определена, то sudoers инициализирует среду независимо от значения env_reset. ДИСПЛЕЙ, ПУТЬ и переменные ТЕРМИНА остаются неизменными; ДОМОЙ, ПОЧТА, SHELL, ПОЛЬЗОВАТЕЛЬ и LOGNAME установлены на основе целевого пользователя. На AIX (и системы Linux без PAM), также включено содержание/etc/environment. Все другие переменные среды удалены. .
sudo -u administrator -i "~administrator/BuildAgent/bin/agent.sh start"
при использовании аутентификации PAM, вот полезная ссылка: Различие между/etc/security/pam_env.conf и/etc/environment + делающий sudo pam_env.conf
чтения