为什么进程看不到/ etc / environment中设置的环境变量?

我在/ 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构建。 由于构建失败,我使用Ant打印系统中的所有环境变量:

   List of all Environment Variables found in the system:      

果然,我在/ etc / environment中设置的那些没有显示出来。

运行它的构建代理是使用Ubuntu的Startup应用程序启动的,我将其配置为运行命令:

 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-recommended)以及一些附加function。

任何帮助表示赞赏,谢谢!

仔细阅读sudoers man page命令环境部分。

try -i选项:如果指定了sudo的-i选项(初始登录),则无论env_reset的值如何,sudoers都将初始化环境。 DISPLAY,PATH和TERM变量保持不变; HOME,MAIL,SHELL,USER和LOGNAME基于目标用户进行设置。 在AIX(以及没有PAM的Linux系统)上,还包括/ etc / environment的内容。 将删除所有其他环境变量。

  sudo -u administrator -i "~administrator/BuildAgent/bin/agent.sh start" 

如果您正在使用PAM身份validation,这是一个有用的链接: /etc/security/pam_env.conf和/ etc / environment之间的区别+使sudo读取pam_env.conf