Por que um processo não pode ver variáveis de ambiente definidas em / etc / environment?

3

Eu defini várias variáveis de ambiente em / etc / environment, mas um processo (construção iniciada pelo TeamCity) não pode ver seus valores. Eu não sei o que estou fazendo errado aqui .. este é o conteúdo do meu arquivo / 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"

A construção iniciada pelo TeamCity usa um corredor Maven e, em algum momento, ativa uma construção Ant. Como a construção estava falhando, usei o Ant para imprimir todas as variáveis de ambiente no sistema:

<!-- 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>

Com certeza, os que eu configurei em / etc / environment não aparecem.

O agente de compilação rodando isso é iniciado usando o aplicativo Startup do Ubuntu, onde eu configurei para executar o comando:

sudo -H -u administrator /bin/bash --login -c "~administrator/BuildAgent/bin/agent.sh start"

Poderia ser que esta linha seja executada antes do / etc / environment ser definido?

Se eu fizer um echo $CATALINA_HOME , vejo o valor definido corretamente, mas a compilação, por algum motivo, não pode vê-lo ...

NOTA : Embora eu saiba que é a maneira errada de fazer isso, eu também tentei adicionar export às declarações dentro de /etc/environment , sem sucesso algum. Então eu removi.

NOTA 2 : Eu reiniciei a máquina depois de fazer alterações no arquivo / etc / environment, é claro.

Estou no 14.04 LTS Server com o mínimo de área de trabalho instalado (ubuntu-desktop --no-install-recommends) além de alguns extras.

Qualquer ajuda é apreciada, obrigado!

    
por Edy Bourne 24.06.2014 / 22:59

1 resposta

2

Leia atentamente a seção sudoers página de comando do manual.

opção try -i: se a opção -i do sudo (login inicial) for especificada, os sudoers inicializarão o ambiente, independentemente do valor de env_reset. As variáveis DISPLAY, PATH e TERM permanecem inalteradas; HOME, MAIL, SHELL, USER e LOGNAME são definidos com base no usuário de destino. No AIX (e sistemas Linux sem PAM), o conteúdo de / etc / environment também está incluído. Todas as outras variáveis de ambiente são removidas. .

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

Se você estiver usando autenticação PAM, aqui está um link útil: Diferença entre /etc/security/pam_env.conf e / etc / environment + fazendo o sudo ler o pam_env.conf

    
por Lety 25.06.2014 / 23:27